Version Description
- 09 November 2016 =
- Made fixes to pass PHP 7 compatibility checks.
- Image Widget: Get alt and title text from chosen image.
- Replaced markup parser with more actively maintained one.
- Simple Masonry: ensure resize on load
- Image Grid: Allow 0 as valid spacing value.
- Editor Widget: Call
WP_Embed::run_shortcode
on Editor widget content - Maps: Added missing
typeof
causing maps api not to load properly. - Icon: Fixed URL output.
- Fixed double slash in URLs.
- Features: Use Measurement fields.
- Apply modify_form to form arrays created in the constructor.
- Contact Form: add email default email subject if no subject defined.
Download this release
Release Info
Developer | gpriday |
Plugin | SiteOrigin Widgets Bundle |
Version | 1.7.2 |
Comparing to | |
See all releases |
Code changes from version 1.7.1 to 1.7.2
- base/inc/Parsedown.php +1548 -0
- base/inc/fields/code.class.php +2 -2
- base/inc/fields/icon.class.php +2 -2
- base/inc/fields/media.class.php +2 -2
- base/inc/lessc.inc.php +5 -5
- base/inc/markdown.php +0 -1577
- base/inc/post-selector.php +8 -2
- base/siteorigin-widget.class.php +46 -33
- icons/fontawesome/filter.php +6 -2
- icons/fontawesome/font/FontAwesome.otf +0 -0
- icons/fontawesome/font/fontawesome-webfont.eot +0 -0
- icons/fontawesome/font/fontawesome-webfont.svg +73 -28
- icons/fontawesome/font/fontawesome-webfont.ttf +0 -0
- icons/fontawesome/font/fontawesome-webfont.woff +0 -0
- icons/fontawesome/font/fontawesome-webfont.woff2 +0 -0
- icons/fontawesome/style.css +7 -7
- readme.txt +17 -3
- so-widgets-bundle.php +2 -2
- widgets/button/button.php +45 -21
- widgets/button/tpl/default.php +5 -2
- widgets/contact/contact.php +9 -4
- widgets/editor/editor.php +1 -0
- widgets/features/tpl/default.php +2 -2
- widgets/google-map/google-map.php +7 -0
- widgets/google-map/js/js-map.js +24 -10
- widgets/google-map/js/js-map.min.js +1 -1
- widgets/icon/tpl/default.php +7 -9
- widgets/image-grid/image-grid.php +1 -1
- widgets/image/image.php +3 -2
- widgets/image/tpl/default.php +4 -4
- widgets/simple-masonry/js/simple-masonry.js +7 -1
- widgets/simple-masonry/js/simple-masonry.min.js +1 -1
- widgets/social-media-buttons/data/networks.php +7 -1
- widgets/social-media-buttons/tpl/default.php +3 -3
base/inc/Parsedown.php
ADDED
@@ -0,0 +1,1548 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
#
|
4 |
+
#
|
5 |
+
# Parsedown
|
6 |
+
# http://parsedown.org
|
7 |
+
#
|
8 |
+
# (c) Emanuil Rusev
|
9 |
+
# http://erusev.com
|
10 |
+
#
|
11 |
+
# For the full license information, view the LICENSE file that was distributed
|
12 |
+
# with this source code.
|
13 |
+
#
|
14 |
+
#
|
15 |
+
|
16 |
+
class Parsedown
|
17 |
+
{
|
18 |
+
# ~
|
19 |
+
|
20 |
+
const version = '1.6.0';
|
21 |
+
|
22 |
+
# ~
|
23 |
+
|
24 |
+
function text($text)
|
25 |
+
{
|
26 |
+
# make sure no definitions are set
|
27 |
+
$this->DefinitionData = array();
|
28 |
+
|
29 |
+
# standardize line breaks
|
30 |
+
$text = str_replace(array("\r\n", "\r"), "\n", $text);
|
31 |
+
|
32 |
+
# remove surrounding line breaks
|
33 |
+
$text = trim($text, "\n");
|
34 |
+
|
35 |
+
# split text into lines
|
36 |
+
$lines = explode("\n", $text);
|
37 |
+
|
38 |
+
# iterate through lines to identify blocks
|
39 |
+
$markup = $this->lines($lines);
|
40 |
+
|
41 |
+
# trim line breaks
|
42 |
+
$markup = trim($markup, "\n");
|
43 |
+
|
44 |
+
return $markup;
|
45 |
+
}
|
46 |
+
|
47 |
+
#
|
48 |
+
# Setters
|
49 |
+
#
|
50 |
+
|
51 |
+
function setBreaksEnabled($breaksEnabled)
|
52 |
+
{
|
53 |
+
$this->breaksEnabled = $breaksEnabled;
|
54 |
+
|
55 |
+
return $this;
|
56 |
+
}
|
57 |
+
|
58 |
+
protected $breaksEnabled;
|
59 |
+
|
60 |
+
function setMarkupEscaped($markupEscaped)
|
61 |
+
{
|
62 |
+
$this->markupEscaped = $markupEscaped;
|
63 |
+
|
64 |
+
return $this;
|
65 |
+
}
|
66 |
+
|
67 |
+
protected $markupEscaped;
|
68 |
+
|
69 |
+
function setUrlsLinked($urlsLinked)
|
70 |
+
{
|
71 |
+
$this->urlsLinked = $urlsLinked;
|
72 |
+
|
73 |
+
return $this;
|
74 |
+
}
|
75 |
+
|
76 |
+
protected $urlsLinked = true;
|
77 |
+
|
78 |
+
#
|
79 |
+
# Lines
|
80 |
+
#
|
81 |
+
|
82 |
+
protected $BlockTypes = array(
|
83 |
+
'#' => array('Header'),
|
84 |
+
'*' => array('Rule', 'List'),
|
85 |
+
'+' => array('List'),
|
86 |
+
'-' => array('SetextHeader', 'Table', 'Rule', 'List'),
|
87 |
+
'0' => array('List'),
|
88 |
+
'1' => array('List'),
|
89 |
+
'2' => array('List'),
|
90 |
+
'3' => array('List'),
|
91 |
+
'4' => array('List'),
|
92 |
+
'5' => array('List'),
|
93 |
+
'6' => array('List'),
|
94 |
+
'7' => array('List'),
|
95 |
+
'8' => array('List'),
|
96 |
+
'9' => array('List'),
|
97 |
+
':' => array('Table'),
|
98 |
+
'<' => array('Comment', 'Markup'),
|
99 |
+
'=' => array('SetextHeader'),
|
100 |
+
'>' => array('Quote'),
|
101 |
+
'[' => array('Reference'),
|
102 |
+
'_' => array('Rule'),
|
103 |
+
'`' => array('FencedCode'),
|
104 |
+
'|' => array('Table'),
|
105 |
+
'~' => array('FencedCode'),
|
106 |
+
);
|
107 |
+
|
108 |
+
# ~
|
109 |
+
|
110 |
+
protected $unmarkedBlockTypes = array(
|
111 |
+
'Code',
|
112 |
+
);
|
113 |
+
|
114 |
+
#
|
115 |
+
# Blocks
|
116 |
+
#
|
117 |
+
|
118 |
+
protected function lines(array $lines)
|
119 |
+
{
|
120 |
+
$CurrentBlock = null;
|
121 |
+
|
122 |
+
foreach ($lines as $line)
|
123 |
+
{
|
124 |
+
if (chop($line) === '')
|
125 |
+
{
|
126 |
+
if (isset($CurrentBlock))
|
127 |
+
{
|
128 |
+
$CurrentBlock['interrupted'] = true;
|
129 |
+
}
|
130 |
+
|
131 |
+
continue;
|
132 |
+
}
|
133 |
+
|
134 |
+
if (strpos($line, "\t") !== false)
|
135 |
+
{
|
136 |
+
$parts = explode("\t", $line);
|
137 |
+
|
138 |
+
$line = $parts[0];
|
139 |
+
|
140 |
+
unset($parts[0]);
|
141 |
+
|
142 |
+
foreach ($parts as $part)
|
143 |
+
{
|
144 |
+
$shortage = 4 - mb_strlen($line, 'utf-8') % 4;
|
145 |
+
|
146 |
+
$line .= str_repeat(' ', $shortage);
|
147 |
+
$line .= $part;
|
148 |
+
}
|
149 |
+
}
|
150 |
+
|
151 |
+
$indent = 0;
|
152 |
+
|
153 |
+
while (isset($line[$indent]) and $line[$indent] === ' ')
|
154 |
+
{
|
155 |
+
$indent ++;
|
156 |
+
}
|
157 |
+
|
158 |
+
$text = $indent > 0 ? substr($line, $indent) : $line;
|
159 |
+
|
160 |
+
# ~
|
161 |
+
|
162 |
+
$Line = array('body' => $line, 'indent' => $indent, 'text' => $text);
|
163 |
+
|
164 |
+
# ~
|
165 |
+
|
166 |
+
if (isset($CurrentBlock['continuable']))
|
167 |
+
{
|
168 |
+
$Block = $this->{'block'.$CurrentBlock['type'].'Continue'}($Line, $CurrentBlock);
|
169 |
+
|
170 |
+
if (isset($Block))
|
171 |
+
{
|
172 |
+
$CurrentBlock = $Block;
|
173 |
+
|
174 |
+
continue;
|
175 |
+
}
|
176 |
+
else
|
177 |
+
{
|
178 |
+
if ($this->isBlockCompletable($CurrentBlock['type']))
|
179 |
+
{
|
180 |
+
$CurrentBlock = $this->{'block'.$CurrentBlock['type'].'Complete'}($CurrentBlock);
|
181 |
+
}
|
182 |
+
}
|
183 |
+
}
|
184 |
+
|
185 |
+
# ~
|
186 |
+
|
187 |
+
$marker = $text[0];
|
188 |
+
|
189 |
+
# ~
|
190 |
+
|
191 |
+
$blockTypes = $this->unmarkedBlockTypes;
|
192 |
+
|
193 |
+
if (isset($this->BlockTypes[$marker]))
|
194 |
+
{
|
195 |
+
foreach ($this->BlockTypes[$marker] as $blockType)
|
196 |
+
{
|
197 |
+
$blockTypes []= $blockType;
|
198 |
+
}
|
199 |
+
}
|
200 |
+
|
201 |
+
#
|
202 |
+
# ~
|
203 |
+
|
204 |
+
foreach ($blockTypes as $blockType)
|
205 |
+
{
|
206 |
+
$Block = $this->{'block'.$blockType}($Line, $CurrentBlock);
|
207 |
+
|
208 |
+
if (isset($Block))
|
209 |
+
{
|
210 |
+
$Block['type'] = $blockType;
|
211 |
+
|
212 |
+
if ( ! isset($Block['identified']))
|
213 |
+
{
|
214 |
+
$Blocks []= $CurrentBlock;
|
215 |
+
|
216 |
+
$Block['identified'] = true;
|
217 |
+
}
|
218 |
+
|
219 |
+
if ($this->isBlockContinuable($blockType))
|
220 |
+
{
|
221 |
+
$Block['continuable'] = true;
|
222 |
+
}
|
223 |
+
|
224 |
+
$CurrentBlock = $Block;
|
225 |
+
|
226 |
+
continue 2;
|
227 |
+
}
|
228 |
+
}
|
229 |
+
|
230 |
+
# ~
|
231 |
+
|
232 |
+
if (isset($CurrentBlock) and ! isset($CurrentBlock['type']) and ! isset($CurrentBlock['interrupted']))
|
233 |
+
{
|
234 |
+
$CurrentBlock['element']['text'] .= "\n".$text;
|
235 |
+
}
|
236 |
+
else
|
237 |
+
{
|
238 |
+
$Blocks []= $CurrentBlock;
|
239 |
+
|
240 |
+
$CurrentBlock = $this->paragraph($Line);
|
241 |
+
|
242 |
+
$CurrentBlock['identified'] = true;
|
243 |
+
}
|
244 |
+
}
|
245 |
+
|
246 |
+
# ~
|
247 |
+
|
248 |
+
if (isset($CurrentBlock['continuable']) and $this->isBlockCompletable($CurrentBlock['type']))
|
249 |
+
{
|
250 |
+
$CurrentBlock = $this->{'block'.$CurrentBlock['type'].'Complete'}($CurrentBlock);
|
251 |
+
}
|
252 |
+
|
253 |
+
# ~
|
254 |
+
|
255 |
+
$Blocks []= $CurrentBlock;
|
256 |
+
|
257 |
+
unset($Blocks[0]);
|
258 |
+
|
259 |
+
# ~
|
260 |
+
|
261 |
+
$markup = '';
|
262 |
+
|
263 |
+
foreach ($Blocks as $Block)
|
264 |
+
{
|
265 |
+
if (isset($Block['hidden']))
|
266 |
+
{
|
267 |
+
continue;
|
268 |
+
}
|
269 |
+
|
270 |
+
$markup .= "\n";
|
271 |
+
$markup .= isset($Block['markup']) ? $Block['markup'] : $this->element($Block['element']);
|
272 |
+
}
|
273 |
+
|
274 |
+
$markup .= "\n";
|
275 |
+
|
276 |
+
# ~
|
277 |
+
|
278 |
+
return $markup;
|
279 |
+
}
|
280 |
+
|
281 |
+
protected function isBlockContinuable($Type)
|
282 |
+
{
|
283 |
+
return method_exists($this, 'block'.$Type.'Continue');
|
284 |
+
}
|
285 |
+
|
286 |
+
protected function isBlockCompletable($Type)
|
287 |
+
{
|
288 |
+
return method_exists($this, 'block'.$Type.'Complete');
|
289 |
+
}
|
290 |
+
|
291 |
+
#
|
292 |
+
# Code
|
293 |
+
|
294 |
+
protected function blockCode($Line, $Block = null)
|
295 |
+
{
|
296 |
+
if (isset($Block) and ! isset($Block['type']) and ! isset($Block['interrupted']))
|
297 |
+
{
|
298 |
+
return;
|
299 |
+
}
|
300 |
+
|
301 |
+
if ($Line['indent'] >= 4)
|
302 |
+
{
|
303 |
+
$text = substr($Line['body'], 4);
|
304 |
+
|
305 |
+
$Block = array(
|
306 |
+
'element' => array(
|
307 |
+
'name' => 'pre',
|
308 |
+
'handler' => 'element',
|
309 |
+
'text' => array(
|
310 |
+
'name' => 'code',
|
311 |
+
'text' => $text,
|
312 |
+
),
|
313 |
+
),
|
314 |
+
);
|
315 |
+
|
316 |
+
return $Block;
|
317 |
+
}
|
318 |
+
}
|
319 |
+
|
320 |
+
protected function blockCodeContinue($Line, $Block)
|
321 |
+
{
|
322 |
+
if ($Line['indent'] >= 4)
|
323 |
+
{
|
324 |
+
if (isset($Block['interrupted']))
|
325 |
+
{
|
326 |
+
$Block['element']['text']['text'] .= "\n";
|
327 |
+
|
328 |
+
unset($Block['interrupted']);
|
329 |
+
}
|
330 |
+
|
331 |
+
$Block['element']['text']['text'] .= "\n";
|
332 |
+
|
333 |
+
$text = substr($Line['body'], 4);
|
334 |
+
|
335 |
+
$Block['element']['text']['text'] .= $text;
|
336 |
+
|
337 |
+
return $Block;
|
338 |
+
}
|
339 |
+
}
|
340 |
+
|
341 |
+
protected function blockCodeComplete($Block)
|
342 |
+
{
|
343 |
+
$text = $Block['element']['text']['text'];
|
344 |
+
|
345 |
+
$text = htmlspecialchars($text, ENT_NOQUOTES, 'UTF-8');
|
346 |
+
|
347 |
+
$Block['element']['text']['text'] = $text;
|
348 |
+
|
349 |
+
return $Block;
|
350 |
+
}
|
351 |
+
|
352 |
+
#
|
353 |
+
# Comment
|
354 |
+
|
355 |
+
protected function blockComment($Line)
|
356 |
+
{
|
357 |
+
if ($this->markupEscaped)
|
358 |
+
{
|
359 |
+
return;
|
360 |
+
}
|
361 |
+
|
362 |
+
if (isset($Line['text'][3]) and $Line['text'][3] === '-' and $Line['text'][2] === '-' and $Line['text'][1] === '!')
|
363 |
+
{
|
364 |
+
$Block = array(
|
365 |
+
'markup' => $Line['body'],
|
366 |
+
);
|
367 |
+
|
368 |
+
if (preg_match('/-->$/', $Line['text']))
|
369 |
+
{
|
370 |
+
$Block['closed'] = true;
|
371 |
+
}
|
372 |
+
|
373 |
+
return $Block;
|
374 |
+
}
|
375 |
+
}
|
376 |
+
|
377 |
+
protected function blockCommentContinue($Line, array $Block)
|
378 |
+
{
|
379 |
+
if (isset($Block['closed']))
|
380 |
+
{
|
381 |
+
return;
|
382 |
+
}
|
383 |
+
|
384 |
+
$Block['markup'] .= "\n" . $Line['body'];
|
385 |
+
|
386 |
+
if (preg_match('/-->$/', $Line['text']))
|
387 |
+
{
|
388 |
+
$Block['closed'] = true;
|
389 |
+
}
|
390 |
+
|
391 |
+
return $Block;
|
392 |
+
}
|
393 |
+
|
394 |
+
#
|
395 |
+
# Fenced Code
|
396 |
+
|
397 |
+
protected function blockFencedCode($Line)
|
398 |
+
{
|
399 |
+
if (preg_match('/^['.$Line['text'][0].']{3,}[ ]*([\w-]+)?[ ]*$/', $Line['text'], $matches))
|
400 |
+
{
|
401 |
+
$Element = array(
|
402 |
+
'name' => 'code',
|
403 |
+
'text' => '',
|
404 |
+
);
|
405 |
+
|
406 |
+
if (isset($matches[1]))
|
407 |
+
{
|
408 |
+
$class = 'language-'.$matches[1];
|
409 |
+
|
410 |
+
$Element['attributes'] = array(
|
411 |
+
'class' => $class,
|
412 |
+
);
|
413 |
+
}
|
414 |
+
|
415 |
+
$Block = array(
|
416 |
+
'char' => $Line['text'][0],
|
417 |
+
'element' => array(
|
418 |
+
'name' => 'pre',
|
419 |
+
'handler' => 'element',
|
420 |
+
'text' => $Element,
|
421 |
+
),
|
422 |
+
);
|
423 |
+
|
424 |
+
return $Block;
|
425 |
+
}
|
426 |
+
}
|
427 |
+
|
428 |
+
protected function blockFencedCodeContinue($Line, $Block)
|
429 |
+
{
|
430 |
+
if (isset($Block['complete']))
|
431 |
+
{
|
432 |
+
return;
|
433 |
+
}
|
434 |
+
|
435 |
+
if (isset($Block['interrupted']))
|
436 |
+
{
|
437 |
+
$Block['element']['text']['text'] .= "\n";
|
438 |
+
|
439 |
+
unset($Block['interrupted']);
|
440 |
+
}
|
441 |
+
|
442 |
+
if (preg_match('/^'.$Block['char'].'{3,}[ ]*$/', $Line['text']))
|
443 |
+
{
|
444 |
+
$Block['element']['text']['text'] = substr($Block['element']['text']['text'], 1);
|
445 |
+
|
446 |
+
$Block['complete'] = true;
|
447 |
+
|
448 |
+
return $Block;
|
449 |
+
}
|
450 |
+
|
451 |
+
$Block['element']['text']['text'] .= "\n".$Line['body'];;
|
452 |
+
|
453 |
+
return $Block;
|
454 |
+
}
|
455 |
+
|
456 |
+
protected function blockFencedCodeComplete($Block)
|
457 |
+
{
|
458 |
+
$text = $Block['element']['text']['text'];
|
459 |
+
|
460 |
+
$text = htmlspecialchars($text, ENT_NOQUOTES, 'UTF-8');
|
461 |
+
|
462 |
+
$Block['element']['text']['text'] = $text;
|
463 |
+
|
464 |
+
return $Block;
|
465 |
+
}
|
466 |
+
|
467 |
+
#
|
468 |
+
# Header
|
469 |
+
|
470 |
+
protected function blockHeader($Line)
|
471 |
+
{
|
472 |
+
if (isset($Line['text'][1]))
|
473 |
+
{
|
474 |
+
$level = 1;
|
475 |
+
|
476 |
+
while (isset($Line['text'][$level]) and $Line['text'][$level] === '#')
|
477 |
+
{
|
478 |
+
$level ++;
|
479 |
+
}
|
480 |
+
|
481 |
+
if ($level > 6)
|
482 |
+
{
|
483 |
+
return;
|
484 |
+
}
|
485 |
+
|
486 |
+
$text = trim($Line['text'], '# ');
|
487 |
+
|
488 |
+
$Block = array(
|
489 |
+
'element' => array(
|
490 |
+
'name' => 'h' . min(6, $level),
|
491 |
+
'text' => $text,
|
492 |
+
'handler' => 'line',
|
493 |
+
),
|
494 |
+
);
|
495 |
+
|
496 |
+
return $Block;
|
497 |
+
}
|
498 |
+
}
|
499 |
+
|
500 |
+
#
|
501 |
+
# List
|
502 |
+
|
503 |
+
protected function blockList($Line)
|
504 |
+
{
|
505 |
+
list($name, $pattern) = $Line['text'][0] <= '-' ? array('ul', '[*+-]') : array('ol', '[0-9]+[.]');
|
506 |
+
|
507 |
+
if (preg_match('/^('.$pattern.'[ ]+)(.*)/', $Line['text'], $matches))
|
508 |
+
{
|
509 |
+
$Block = array(
|
510 |
+
'indent' => $Line['indent'],
|
511 |
+
'pattern' => $pattern,
|
512 |
+
'element' => array(
|
513 |
+
'name' => $name,
|
514 |
+
'handler' => 'elements',
|
515 |
+
),
|
516 |
+
);
|
517 |
+
|
518 |
+
if($name === 'ol')
|
519 |
+
{
|
520 |
+
$listStart = stristr($matches[0], '.', true);
|
521 |
+
|
522 |
+
if($listStart !== '1')
|
523 |
+
{
|
524 |
+
$Block['element']['attributes'] = array('start' => $listStart);
|
525 |
+
}
|
526 |
+
}
|
527 |
+
|
528 |
+
$Block['li'] = array(
|
529 |
+
'name' => 'li',
|
530 |
+
'handler' => 'li',
|
531 |
+
'text' => array(
|
532 |
+
$matches[2],
|
533 |
+
),
|
534 |
+
);
|
535 |
+
|
536 |
+
$Block['element']['text'] []= & $Block['li'];
|
537 |
+
|
538 |
+
return $Block;
|
539 |
+
}
|
540 |
+
}
|
541 |
+
|
542 |
+
protected function blockListContinue($Line, array $Block)
|
543 |
+
{
|
544 |
+
if ($Block['indent'] === $Line['indent'] and preg_match('/^'.$Block['pattern'].'(?:[ ]+(.*)|$)/', $Line['text'], $matches))
|
545 |
+
{
|
546 |
+
if (isset($Block['interrupted']))
|
547 |
+
{
|
548 |
+
$Block['li']['text'] []= '';
|
549 |
+
|
550 |
+
unset($Block['interrupted']);
|
551 |
+
}
|
552 |
+
|
553 |
+
unset($Block['li']);
|
554 |
+
|
555 |
+
$text = isset($matches[1]) ? $matches[1] : '';
|
556 |
+
|
557 |
+
$Block['li'] = array(
|
558 |
+
'name' => 'li',
|
559 |
+
'handler' => 'li',
|
560 |
+
'text' => array(
|
561 |
+
$text,
|
562 |
+
),
|
563 |
+
);
|
564 |
+
|
565 |
+
$Block['element']['text'] []= & $Block['li'];
|
566 |
+
|
567 |
+
return $Block;
|
568 |
+
}
|
569 |
+
|
570 |
+
if ($Line['text'][0] === '[' and $this->blockReference($Line))
|
571 |
+
{
|
572 |
+
return $Block;
|
573 |
+
}
|
574 |
+
|
575 |
+
if ( ! isset($Block['interrupted']))
|
576 |
+
{
|
577 |
+
$text = preg_replace('/^[ ]{0,4}/', '', $Line['body']);
|
578 |
+
|
579 |
+
$Block['li']['text'] []= $text;
|
580 |
+
|
581 |
+
return $Block;
|
582 |
+
}
|
583 |
+
|
584 |
+
if ($Line['indent'] > 0)
|
585 |
+
{
|
586 |
+
$Block['li']['text'] []= '';
|
587 |
+
|
588 |
+
$text = preg_replace('/^[ ]{0,4}/', '', $Line['body']);
|
589 |
+
|
590 |
+
$Block['li']['text'] []= $text;
|
591 |
+
|
592 |
+
unset($Block['interrupted']);
|
593 |
+
|
594 |
+
return $Block;
|
595 |
+
}
|
596 |
+
}
|
597 |
+
|
598 |
+
#
|
599 |
+
# Quote
|
600 |
+
|
601 |
+
protected function blockQuote($Line)
|
602 |
+
{
|
603 |
+
if (preg_match('/^>[ ]?(.*)/', $Line['text'], $matches))
|
604 |
+
{
|
605 |
+
$Block = array(
|
606 |
+
'element' => array(
|
607 |
+
'name' => 'blockquote',
|
608 |
+
'handler' => 'lines',
|
609 |
+
'text' => (array) $matches[1],
|
610 |
+
),
|
611 |
+
);
|
612 |
+
|
613 |
+
return $Block;
|
614 |
+
}
|
615 |
+
}
|
616 |
+
|
617 |
+
protected function blockQuoteContinue($Line, array $Block)
|
618 |
+
{
|
619 |
+
if ($Line['text'][0] === '>' and preg_match('/^>[ ]?(.*)/', $Line['text'], $matches))
|
620 |
+
{
|
621 |
+
if (isset($Block['interrupted']))
|
622 |
+
{
|
623 |
+
$Block['element']['text'] []= '';
|
624 |
+
|
625 |
+
unset($Block['interrupted']);
|
626 |
+
}
|
627 |
+
|
628 |
+
$Block['element']['text'] []= $matches[1];
|
629 |
+
|
630 |
+
return $Block;
|
631 |
+
}
|
632 |
+
|
633 |
+
if ( ! isset($Block['interrupted']))
|
634 |
+
{
|
635 |
+
$Block['element']['text'] []= $Line['text'];
|
636 |
+
|
637 |
+
return $Block;
|
638 |
+
}
|
639 |
+
}
|
640 |
+
|
641 |
+
#
|
642 |
+
# Rule
|
643 |
+
|
644 |
+
protected function blockRule($Line)
|
645 |
+
{
|
646 |
+
if (preg_match('/^(['.$Line['text'][0].'])([ ]*\1){2,}[ ]*$/', $Line['text']))
|
647 |
+
{
|
648 |
+
$Block = array(
|
649 |
+
'element' => array(
|
650 |
+
'name' => 'hr'
|
651 |
+
),
|
652 |
+
);
|
653 |
+
|
654 |
+
return $Block;
|
655 |
+
}
|
656 |
+
}
|
657 |
+
|
658 |
+
#
|
659 |
+
# Setext
|
660 |
+
|
661 |
+
protected function blockSetextHeader($Line, array $Block = null)
|
662 |
+
{
|
663 |
+
if ( ! isset($Block) or isset($Block['type']) or isset($Block['interrupted']))
|
664 |
+
{
|
665 |
+
return;
|
666 |
+
}
|
667 |
+
|
668 |
+
if (chop($Line['text'], $Line['text'][0]) === '')
|
669 |
+
{
|
670 |
+
$Block['element']['name'] = $Line['text'][0] === '=' ? 'h1' : 'h2';
|
671 |
+
|
672 |
+
return $Block;
|
673 |
+
}
|
674 |
+
}
|
675 |
+
|
676 |
+
#
|
677 |
+
# Markup
|
678 |
+
|
679 |
+
protected function blockMarkup($Line)
|
680 |
+
{
|
681 |
+
if ($this->markupEscaped)
|
682 |
+
{
|
683 |
+
return;
|
684 |
+
}
|
685 |
+
|
686 |
+
if (preg_match('/^<(\w*)(?:[ ]*'.$this->regexHtmlAttribute.')*[ ]*(\/)?>/', $Line['text'], $matches))
|
687 |
+
{
|
688 |
+
$element = strtolower($matches[1]);
|
689 |
+
|
690 |
+
if (in_array($element, $this->textLevelElements))
|
691 |
+
{
|
692 |
+
return;
|
693 |
+
}
|
694 |
+
|
695 |
+
$Block = array(
|
696 |
+
'name' => $matches[1],
|
697 |
+
'depth' => 0,
|
698 |
+
'markup' => $Line['text'],
|
699 |
+
);
|
700 |
+
|
701 |
+
$length = strlen($matches[0]);
|
702 |
+
|
703 |
+
$remainder = substr($Line['text'], $length);
|
704 |
+
|
705 |
+
if (trim($remainder) === '')
|
706 |
+
{
|
707 |
+
if (isset($matches[2]) or in_array($matches[1], $this->voidElements))
|
708 |
+
{
|
709 |
+
$Block['closed'] = true;
|
710 |
+
|
711 |
+
$Block['void'] = true;
|
712 |
+
}
|
713 |
+
}
|
714 |
+
else
|
715 |
+
{
|
716 |
+
if (isset($matches[2]) or in_array($matches[1], $this->voidElements))
|
717 |
+
{
|
718 |
+
return;
|
719 |
+
}
|
720 |
+
|
721 |
+
if (preg_match('/<\/'.$matches[1].'>[ ]*$/i', $remainder))
|
722 |
+
{
|
723 |
+
$Block['closed'] = true;
|
724 |
+
}
|
725 |
+
}
|
726 |
+
|
727 |
+
return $Block;
|
728 |
+
}
|
729 |
+
}
|
730 |
+
|
731 |
+
protected function blockMarkupContinue($Line, array $Block)
|
732 |
+
{
|
733 |
+
if (isset($Block['closed']))
|
734 |
+
{
|
735 |
+
return;
|
736 |
+
}
|
737 |
+
|
738 |
+
if (preg_match('/^<'.$Block['name'].'(?:[ ]*'.$this->regexHtmlAttribute.')*[ ]*>/i', $Line['text'])) # open
|
739 |
+
{
|
740 |
+
$Block['depth'] ++;
|
741 |
+
}
|
742 |
+
|
743 |
+
if (preg_match('/(.*?)<\/'.$Block['name'].'>[ ]*$/i', $Line['text'], $matches)) # close
|
744 |
+
{
|
745 |
+
if ($Block['depth'] > 0)
|
746 |
+
{
|
747 |
+
$Block['depth'] --;
|
748 |
+
}
|
749 |
+
else
|
750 |
+
{
|
751 |
+
$Block['closed'] = true;
|
752 |
+
}
|
753 |
+
}
|
754 |
+
|
755 |
+
if (isset($Block['interrupted']))
|
756 |
+
{
|
757 |
+
$Block['markup'] .= "\n";
|
758 |
+
|
759 |
+
unset($Block['interrupted']);
|
760 |
+
}
|
761 |
+
|
762 |
+
$Block['markup'] .= "\n".$Line['body'];
|
763 |
+
|
764 |
+
return $Block;
|
765 |
+
}
|
766 |
+
|
767 |
+
#
|
768 |
+
# Reference
|
769 |
+
|
770 |
+
protected function blockReference($Line)
|
771 |
+
{
|
772 |
+
if (preg_match('/^\[(.+?)\]:[ ]*<?(\S+?)>?(?:[ ]+["\'(](.+)["\')])?[ ]*$/', $Line['text'], $matches))
|
773 |
+
{
|
774 |
+
$id = strtolower($matches[1]);
|
775 |
+
|
776 |
+
$Data = array(
|
777 |
+
'url' => $matches[2],
|
778 |
+
'title' => null,
|
779 |
+
);
|
780 |
+
|
781 |
+
if (isset($matches[3]))
|
782 |
+
{
|
783 |
+
$Data['title'] = $matches[3];
|
784 |
+
}
|
785 |
+
|
786 |
+
$this->DefinitionData['Reference'][$id] = $Data;
|
787 |
+
|
788 |
+
$Block = array(
|
789 |
+
'hidden' => true,
|
790 |
+
);
|
791 |
+
|
792 |
+
return $Block;
|
793 |
+
}
|
794 |
+
}
|
795 |
+
|
796 |
+
#
|
797 |
+
# Table
|
798 |
+
|
799 |
+
protected function blockTable($Line, array $Block = null)
|
800 |
+
{
|
801 |
+
if ( ! isset($Block) or isset($Block['type']) or isset($Block['interrupted']))
|
802 |
+
{
|
803 |
+
return;
|
804 |
+
}
|
805 |
+
|
806 |
+
if (strpos($Block['element']['text'], '|') !== false and chop($Line['text'], ' -:|') === '')
|
807 |
+
{
|
808 |
+
$alignments = array();
|
809 |
+
|
810 |
+
$divider = $Line['text'];
|
811 |
+
|
812 |
+
$divider = trim($divider);
|
813 |
+
$divider = trim($divider, '|');
|
814 |
+
|
815 |
+
$dividerCells = explode('|', $divider);
|
816 |
+
|
817 |
+
foreach ($dividerCells as $dividerCell)
|
818 |
+
{
|
819 |
+
$dividerCell = trim($dividerCell);
|
820 |
+
|
821 |
+
if ($dividerCell === '')
|
822 |
+
{
|
823 |
+
continue;
|
824 |
+
}
|
825 |
+
|
826 |
+
$alignment = null;
|
827 |
+
|
828 |
+
if ($dividerCell[0] === ':')
|
829 |
+
{
|
830 |
+
$alignment = 'left';
|
831 |
+
}
|
832 |
+
|
833 |
+
if (substr($dividerCell, - 1) === ':')
|
834 |
+
{
|
835 |
+
$alignment = $alignment === 'left' ? 'center' : 'right';
|
836 |
+
}
|
837 |
+
|
838 |
+
$alignments []= $alignment;
|
839 |
+
}
|
840 |
+
|
841 |
+
# ~
|
842 |
+
|
843 |
+
$HeaderElements = array();
|
844 |
+
|
845 |
+
$header = $Block['element']['text'];
|
846 |
+
|
847 |
+
$header = trim($header);
|
848 |
+
$header = trim($header, '|');
|
849 |
+
|
850 |
+
$headerCells = explode('|', $header);
|
851 |
+
|
852 |
+
foreach ($headerCells as $index => $headerCell)
|
853 |
+
{
|
854 |
+
$headerCell = trim($headerCell);
|
855 |
+
|
856 |
+
$HeaderElement = array(
|
857 |
+
'name' => 'th',
|
858 |
+
'text' => $headerCell,
|
859 |
+
'handler' => 'line',
|
860 |
+
);
|
861 |
+
|
862 |
+
if (isset($alignments[$index]))
|
863 |
+
{
|
864 |
+
$alignment = $alignments[$index];
|
865 |
+
|
866 |
+
$HeaderElement['attributes'] = array(
|
867 |
+
'style' => 'text-align: '.$alignment.';',
|
868 |
+
);
|
869 |
+
}
|
870 |
+
|
871 |
+
$HeaderElements []= $HeaderElement;
|
872 |
+
}
|
873 |
+
|
874 |
+
# ~
|
875 |
+
|
876 |
+
$Block = array(
|
877 |
+
'alignments' => $alignments,
|
878 |
+
'identified' => true,
|
879 |
+
'element' => array(
|
880 |
+
'name' => 'table',
|
881 |
+
'handler' => 'elements',
|
882 |
+
),
|
883 |
+
);
|
884 |
+
|
885 |
+
$Block['element']['text'] []= array(
|
886 |
+
'name' => 'thead',
|
887 |
+
'handler' => 'elements',
|
888 |
+
);
|
889 |
+
|
890 |
+
$Block['element']['text'] []= array(
|
891 |
+
'name' => 'tbody',
|
892 |
+
'handler' => 'elements',
|
893 |
+
'text' => array(),
|
894 |
+
);
|
895 |
+
|
896 |
+
$Block['element']['text'][0]['text'] []= array(
|
897 |
+
'name' => 'tr',
|
898 |
+
'handler' => 'elements',
|
899 |
+
'text' => $HeaderElements,
|
900 |
+
);
|
901 |
+
|
902 |
+
return $Block;
|
903 |
+
}
|
904 |
+
}
|
905 |
+
|
906 |
+
protected function blockTableContinue($Line, array $Block)
|
907 |
+
{
|
908 |
+
if (isset($Block['interrupted']))
|
909 |
+
{
|
910 |
+
return;
|
911 |
+
}
|
912 |
+
|
913 |
+
if ($Line['text'][0] === '|' or strpos($Line['text'], '|'))
|
914 |
+
{
|
915 |
+
$Elements = array();
|
916 |
+
|
917 |
+
$row = $Line['text'];
|
918 |
+
|
919 |
+
$row = trim($row);
|
920 |
+
$row = trim($row, '|');
|
921 |
+
|
922 |
+
preg_match_all('/(?:(\\\\[|])|[^|`]|`[^`]+`|`)+/', $row, $matches);
|
923 |
+
|
924 |
+
foreach ($matches[0] as $index => $cell)
|
925 |
+
{
|
926 |
+
$cell = trim($cell);
|
927 |
+
|
928 |
+
$Element = array(
|
929 |
+
'name' => 'td',
|
930 |
+
'handler' => 'line',
|
931 |
+
'text' => $cell,
|
932 |
+
);
|
933 |
+
|
934 |
+
if (isset($Block['alignments'][$index]))
|
935 |
+
{
|
936 |
+
$Element['attributes'] = array(
|
937 |
+
'style' => 'text-align: '.$Block['alignments'][$index].';',
|
938 |
+
);
|
939 |
+
}
|
940 |
+
|
941 |
+
$Elements []= $Element;
|
942 |
+
}
|
943 |
+
|
944 |
+
$Element = array(
|
945 |
+
'name' => 'tr',
|
946 |
+
'handler' => 'elements',
|
947 |
+
'text' => $Elements,
|
948 |
+
);
|
949 |
+
|
950 |
+
$Block['element']['text'][1]['text'] []= $Element;
|
951 |
+
|
952 |
+
return $Block;
|
953 |
+
}
|
954 |
+
}
|
955 |
+
|
956 |
+
#
|
957 |
+
# ~
|
958 |
+
#
|
959 |
+
|
960 |
+
protected function paragraph($Line)
|
961 |
+
{
|
962 |
+
$Block = array(
|
963 |
+
'element' => array(
|
964 |
+
'name' => 'p',
|
965 |
+
'text' => $Line['text'],
|
966 |
+
'handler' => 'line',
|
967 |
+
),
|
968 |
+
);
|
969 |
+
|
970 |
+
return $Block;
|
971 |
+
}
|
972 |
+
|
973 |
+
#
|
974 |
+
# Inline Elements
|
975 |
+
#
|
976 |
+
|
977 |
+
protected $InlineTypes = array(
|
978 |
+
'"' => array('SpecialCharacter'),
|
979 |
+
'!' => array('Image'),
|
980 |
+
'&' => array('SpecialCharacter'),
|
981 |
+
'*' => array('Emphasis'),
|
982 |
+
':' => array('Url'),
|
983 |
+
'<' => array('UrlTag', 'EmailTag', 'Markup', 'SpecialCharacter'),
|
984 |
+
'>' => array('SpecialCharacter'),
|
985 |
+
'[' => array('Link'),
|
986 |
+
'_' => array('Emphasis'),
|
987 |
+
'`' => array('Code'),
|
988 |
+
'~' => array('Strikethrough'),
|
989 |
+
'\\' => array('EscapeSequence'),
|
990 |
+
);
|
991 |
+
|
992 |
+
# ~
|
993 |
+
|
994 |
+
protected $inlineMarkerList = '!"*_&[:<>`~\\';
|
995 |
+
|
996 |
+
#
|
997 |
+
# ~
|
998 |
+
#
|
999 |
+
|
1000 |
+
public function line($text)
|
1001 |
+
{
|
1002 |
+
$markup = '';
|
1003 |
+
|
1004 |
+
# $excerpt is based on the first occurrence of a marker
|
1005 |
+
|
1006 |
+
while ($excerpt = strpbrk($text, $this->inlineMarkerList))
|
1007 |
+
{
|
1008 |
+
$marker = $excerpt[0];
|
1009 |
+
|
1010 |
+
$markerPosition = strpos($text, $marker);
|
1011 |
+
|
1012 |
+
$Excerpt = array('text' => $excerpt, 'context' => $text);
|
1013 |
+
|
1014 |
+
foreach ($this->InlineTypes[$marker] as $inlineType)
|
1015 |
+
{
|
1016 |
+
$Inline = $this->{'inline'.$inlineType}($Excerpt);
|
1017 |
+
|
1018 |
+
if ( ! isset($Inline))
|
1019 |
+
{
|
1020 |
+
continue;
|
1021 |
+
}
|
1022 |
+
|
1023 |
+
# makes sure that the inline belongs to "our" marker
|
1024 |
+
|
1025 |
+
if (isset($Inline['position']) and $Inline['position'] > $markerPosition)
|
1026 |
+
{
|
1027 |
+
continue;
|
1028 |
+
}
|
1029 |
+
|
1030 |
+
# sets a default inline position
|
1031 |
+
|
1032 |
+
if ( ! isset($Inline['position']))
|
1033 |
+
{
|
1034 |
+
$Inline['position'] = $markerPosition;
|
1035 |
+
}
|
1036 |
+
|
1037 |
+
# the text that comes before the inline
|
1038 |
+
$unmarkedText = substr($text, 0, $Inline['position']);
|
1039 |
+
|
1040 |
+
# compile the unmarked text
|
1041 |
+
$markup .= $this->unmarkedText($unmarkedText);
|
1042 |
+
|
1043 |
+
# compile the inline
|
1044 |
+
$markup .= isset($Inline['markup']) ? $Inline['markup'] : $this->element($Inline['element']);
|
1045 |
+
|
1046 |
+
# remove the examined text
|
1047 |
+
$text = substr($text, $Inline['position'] + $Inline['extent']);
|
1048 |
+
|
1049 |
+
continue 2;
|
1050 |
+
}
|
1051 |
+
|
1052 |
+
# the marker does not belong to an inline
|
1053 |
+
|
1054 |
+
$unmarkedText = substr($text, 0, $markerPosition + 1);
|
1055 |
+
|
1056 |
+
$markup .= $this->unmarkedText($unmarkedText);
|
1057 |
+
|
1058 |
+
$text = substr($text, $markerPosition + 1);
|
1059 |
+
}
|
1060 |
+
|
1061 |
+
$markup .= $this->unmarkedText($text);
|
1062 |
+
|
1063 |
+
return $markup;
|
1064 |
+
}
|
1065 |
+
|
1066 |
+
#
|
1067 |
+
# ~
|
1068 |
+
#
|
1069 |
+
|
1070 |
+
protected function inlineCode($Excerpt)
|
1071 |
+
{
|
1072 |
+
$marker = $Excerpt['text'][0];
|
1073 |
+
|
1074 |
+
if (preg_match('/^('.$marker.'+)[ ]*(.+?)[ ]*(?<!'.$marker.')\1(?!'.$marker.')/s', $Excerpt['text'], $matches))
|
1075 |
+
{
|
1076 |
+
$text = $matches[2];
|
1077 |
+
$text = htmlspecialchars($text, ENT_NOQUOTES, 'UTF-8');
|
1078 |
+
$text = preg_replace("/[ ]*\n/", ' ', $text);
|
1079 |
+
|
1080 |
+
return array(
|
1081 |
+
'extent' => strlen($matches[0]),
|
1082 |
+
'element' => array(
|
1083 |
+
'name' => 'code',
|
1084 |
+
'text' => $text,
|
1085 |
+
),
|
1086 |
+
);
|
1087 |
+
}
|
1088 |
+
}
|
1089 |
+
|
1090 |
+
protected function inlineEmailTag($Excerpt)
|
1091 |
+
{
|
1092 |
+
if (strpos($Excerpt['text'], '>') !== false and preg_match('/^<((mailto:)?\S+?@\S+?)>/i', $Excerpt['text'], $matches))
|
1093 |
+
{
|
1094 |
+
$url = $matches[1];
|
1095 |
+
|
1096 |
+
if ( ! isset($matches[2]))
|
1097 |
+
{
|
1098 |
+
$url = 'mailto:' . $url;
|
1099 |
+
}
|
1100 |
+
|
1101 |
+
return array(
|
1102 |
+
'extent' => strlen($matches[0]),
|
1103 |
+
'element' => array(
|
1104 |
+
'name' => 'a',
|
1105 |
+
'text' => $matches[1],
|
1106 |
+
'attributes' => array(
|
1107 |
+
'href' => $url,
|
1108 |
+
),
|
1109 |
+
),
|
1110 |
+
);
|
1111 |
+
}
|
1112 |
+
}
|
1113 |
+
|
1114 |
+
protected function inlineEmphasis($Excerpt)
|
1115 |
+
{
|
1116 |
+
if ( ! isset($Excerpt['text'][1]))
|
1117 |
+
{
|
1118 |
+
return;
|
1119 |
+
}
|
1120 |
+
|
1121 |
+
$marker = $Excerpt['text'][0];
|
1122 |
+
|
1123 |
+
if ($Excerpt['text'][1] === $marker and preg_match($this->StrongRegex[$marker], $Excerpt['text'], $matches))
|
1124 |
+
{
|
1125 |
+
$emphasis = 'strong';
|
1126 |
+
}
|
1127 |
+
elseif (preg_match($this->EmRegex[$marker], $Excerpt['text'], $matches))
|
1128 |
+
{
|
1129 |
+
$emphasis = 'em';
|
1130 |
+
}
|
1131 |
+
else
|
1132 |
+
{
|
1133 |
+
return;
|
1134 |
+
}
|
1135 |
+
|
1136 |
+
return array(
|
1137 |
+
'extent' => strlen($matches[0]),
|
1138 |
+
'element' => array(
|
1139 |
+
'name' => $emphasis,
|
1140 |
+
'handler' => 'line',
|
1141 |
+
'text' => $matches[1],
|
1142 |
+
),
|
1143 |
+
);
|
1144 |
+
}
|
1145 |
+
|
1146 |
+
protected function inlineEscapeSequence($Excerpt)
|
1147 |
+
{
|
1148 |
+
if (isset($Excerpt['text'][1]) and in_array($Excerpt['text'][1], $this->specialCharacters))
|
1149 |
+
{
|
1150 |
+
return array(
|
1151 |
+
'markup' => $Excerpt['text'][1],
|
1152 |
+
'extent' => 2,
|
1153 |
+
);
|
1154 |
+
}
|
1155 |
+
}
|
1156 |
+
|
1157 |
+
protected function inlineImage($Excerpt)
|
1158 |
+
{
|
1159 |
+
if ( ! isset($Excerpt['text'][1]) or $Excerpt['text'][1] !== '[')
|
1160 |
+
{
|
1161 |
+
return;
|
1162 |
+
}
|
1163 |
+
|
1164 |
+
$Excerpt['text']= substr($Excerpt['text'], 1);
|
1165 |
+
|
1166 |
+
$Link = $this->inlineLink($Excerpt);
|
1167 |
+
|
1168 |
+
if ($Link === null)
|
1169 |
+
{
|
1170 |
+
return;
|
1171 |
+
}
|
1172 |
+
|
1173 |
+
$Inline = array(
|
1174 |
+
'extent' => $Link['extent'] + 1,
|
1175 |
+
'element' => array(
|
1176 |
+
'name' => 'img',
|
1177 |
+
'attributes' => array(
|
1178 |
+
'src' => $Link['element']['attributes']['href'],
|
1179 |
+
'alt' => $Link['element']['text'],
|
1180 |
+
),
|
1181 |
+
),
|
1182 |
+
);
|
1183 |
+
|
1184 |
+
$Inline['element']['attributes'] += $Link['element']['attributes'];
|
1185 |
+
|
1186 |
+
unset($Inline['element']['attributes']['href']);
|
1187 |
+
|
1188 |
+
return $Inline;
|
1189 |
+
}
|
1190 |
+
|
1191 |
+
protected function inlineLink($Excerpt)
|
1192 |
+
{
|
1193 |
+
$Element = array(
|
1194 |
+
'name' => 'a',
|
1195 |
+
'handler' => 'line',
|
1196 |
+
'text' => null,
|
1197 |
+
'attributes' => array(
|
1198 |
+
'href' => null,
|
1199 |
+
'title' => null,
|
1200 |
+
),
|
1201 |
+
);
|
1202 |
+
|
1203 |
+
$extent = 0;
|
1204 |
+
|
1205 |
+
$remainder = $Excerpt['text'];
|
1206 |
+
|
1207 |
+
if (preg_match('/\[((?:[^][]|(?R))*)\]/', $remainder, $matches))
|
1208 |
+
{
|
1209 |
+
$Element['text'] = $matches[1];
|
1210 |
+
|
1211 |
+
$extent += strlen($matches[0]);
|
1212 |
+
|
1213 |
+
$remainder = substr($remainder, $extent);
|
1214 |
+
}
|
1215 |
+
else
|
1216 |
+
{
|
1217 |
+
return;
|
1218 |
+
}
|
1219 |
+
|
1220 |
+
if (preg_match('/^[(]((?:[^ ()]|[(][^ )]+[)])+)(?:[ ]+("[^"]*"|\'[^\']*\'))?[)]/', $remainder, $matches))
|
1221 |
+
{
|
1222 |
+
$Element['attributes']['href'] = $matches[1];
|
1223 |
+
|
1224 |
+
if (isset($matches[2]))
|
1225 |
+
{
|
1226 |
+
$Element['attributes']['title'] = substr($matches[2], 1, - 1);
|
1227 |
+
}
|
1228 |
+
|
1229 |
+
$extent += strlen($matches[0]);
|
1230 |
+
}
|
1231 |
+
else
|
1232 |
+
{
|
1233 |
+
if (preg_match('/^\s*\[(.*?)\]/', $remainder, $matches))
|
1234 |
+
{
|
1235 |
+
$definition = strlen($matches[1]) ? $matches[1] : $Element['text'];
|
1236 |
+
$definition = strtolower($definition);
|
1237 |
+
|
1238 |
+
$extent += strlen($matches[0]);
|
1239 |
+
}
|
1240 |
+
else
|
1241 |
+
{
|
1242 |
+
$definition = strtolower($Element['text']);
|
1243 |
+
}
|
1244 |
+
|
1245 |
+
if ( ! isset($this->DefinitionData['Reference'][$definition]))
|
1246 |
+
{
|
1247 |
+
return;
|
1248 |
+
}
|
1249 |
+
|
1250 |
+
$Definition = $this->DefinitionData['Reference'][$definition];
|
1251 |
+
|
1252 |
+
$Element['attributes']['href'] = $Definition['url'];
|
1253 |
+
$Element['attributes']['title'] = $Definition['title'];
|
1254 |
+
}
|
1255 |
+
|
1256 |
+
$Element['attributes']['href'] = str_replace(array('&', '<'), array('&', '<'), $Element['attributes']['href']);
|
1257 |
+
|
1258 |
+
return array(
|
1259 |
+
'extent' => $extent,
|
1260 |
+
'element' => $Element,
|
1261 |
+
);
|
1262 |
+
}
|
1263 |
+
|
1264 |
+
protected function inlineMarkup($Excerpt)
|
1265 |
+
{
|
1266 |
+
if ($this->markupEscaped or strpos($Excerpt['text'], '>') === false)
|
1267 |
+
{
|
1268 |
+
return;
|
1269 |
+
}
|
1270 |
+
|
1271 |
+
if ($Excerpt['text'][1] === '/' and preg_match('/^<\/\w*[ ]*>/s', $Excerpt['text'], $matches))
|
1272 |
+
{
|
1273 |
+
return array(
|
1274 |
+
'markup' => $matches[0],
|
1275 |
+
'extent' => strlen($matches[0]),
|
1276 |
+
);
|
1277 |
+
}
|
1278 |
+
|
1279 |
+
if ($Excerpt['text'][1] === '!' and preg_match('/^<!---?[^>-](?:-?[^-])*-->/s', $Excerpt['text'], $matches))
|
1280 |
+
{
|
1281 |
+
return array(
|
1282 |
+
'markup' => $matches[0],
|
1283 |
+
'extent' => strlen($matches[0]),
|
1284 |
+
);
|
1285 |
+
}
|
1286 |
+
|
1287 |
+
if ($Excerpt['text'][1] !== ' ' and preg_match('/^<\w*(?:[ ]*'.$this->regexHtmlAttribute.')*[ ]*\/?>/s', $Excerpt['text'], $matches))
|
1288 |
+
{
|
1289 |
+
return array(
|
1290 |
+
'markup' => $matches[0],
|
1291 |
+
'extent' => strlen($matches[0]),
|
1292 |
+
);
|
1293 |
+
}
|
1294 |
+
}
|
1295 |
+
|
1296 |
+
protected function inlineSpecialCharacter($Excerpt)
|
1297 |
+
{
|
1298 |
+
if ($Excerpt['text'][0] === '&' and ! preg_match('/^&#?\w+;/', $Excerpt['text']))
|
1299 |
+
{
|
1300 |
+
return array(
|
1301 |
+
'markup' => '&',
|
1302 |
+
'extent' => 1,
|
1303 |
+
);
|
1304 |
+
}
|
1305 |
+
|
1306 |
+
$SpecialCharacter = array('>' => 'gt', '<' => 'lt', '"' => 'quot');
|
1307 |
+
|
1308 |
+
if (isset($SpecialCharacter[$Excerpt['text'][0]]))
|
1309 |
+
{
|
1310 |
+
return array(
|
1311 |
+
'markup' => '&'.$SpecialCharacter[$Excerpt['text'][0]].';',
|
1312 |
+
'extent' => 1,
|
1313 |
+
);
|
1314 |
+
}
|
1315 |
+
}
|
1316 |
+
|
1317 |
+
protected function inlineStrikethrough($Excerpt)
|
1318 |
+
{
|
1319 |
+
if ( ! isset($Excerpt['text'][1]))
|
1320 |
+
{
|
1321 |
+
return;
|
1322 |
+
}
|
1323 |
+
|
1324 |
+
if ($Excerpt['text'][1] === '~' and preg_match('/^~~(?=\S)(.+?)(?<=\S)~~/', $Excerpt['text'], $matches))
|
1325 |
+
{
|
1326 |
+
return array(
|
1327 |
+
'extent' => strlen($matches[0]),
|
1328 |
+
'element' => array(
|
1329 |
+
'name' => 'del',
|
1330 |
+
'text' => $matches[1],
|
1331 |
+
'handler' => 'line',
|
1332 |
+
),
|
1333 |
+
);
|
1334 |
+
}
|
1335 |
+
}
|
1336 |
+
|
1337 |
+
protected function inlineUrl($Excerpt)
|
1338 |
+
{
|
1339 |
+
if ($this->urlsLinked !== true or ! isset($Excerpt['text'][2]) or $Excerpt['text'][2] !== '/')
|
1340 |
+
{
|
1341 |
+
return;
|
1342 |
+
}
|
1343 |
+
|
1344 |
+
if (preg_match('/\bhttps?:[\/]{2}[^\s<]+\b\/*/ui', $Excerpt['context'], $matches, PREG_OFFSET_CAPTURE))
|
1345 |
+
{
|
1346 |
+
$Inline = array(
|
1347 |
+
'extent' => strlen($matches[0][0]),
|
1348 |
+
'position' => $matches[0][1],
|
1349 |
+
'element' => array(
|
1350 |
+
'name' => 'a',
|
1351 |
+
'text' => $matches[0][0],
|
1352 |
+
'attributes' => array(
|
1353 |
+
'href' => $matches[0][0],
|
1354 |
+
),
|
1355 |
+
),
|
1356 |
+
);
|
1357 |
+
|
1358 |
+
return $Inline;
|
1359 |
+
}
|
1360 |
+
}
|
1361 |
+
|
1362 |
+
protected function inlineUrlTag($Excerpt)
|
1363 |
+
{
|
1364 |
+
if (strpos($Excerpt['text'], '>') !== false and preg_match('/^<(\w+:\/{2}[^ >]+)>/i', $Excerpt['text'], $matches))
|
1365 |
+
{
|
1366 |
+
$url = str_replace(array('&', '<'), array('&', '<'), $matches[1]);
|
1367 |
+
|
1368 |
+
return array(
|
1369 |
+
'extent' => strlen($matches[0]),
|
1370 |
+
'element' => array(
|
1371 |
+
'name' => 'a',
|
1372 |
+
'text' => $url,
|
1373 |
+
'attributes' => array(
|
1374 |
+
'href' => $url,
|
1375 |
+
),
|
1376 |
+
),
|
1377 |
+
);
|
1378 |
+
}
|
1379 |
+
}
|
1380 |
+
|
1381 |
+
# ~
|
1382 |
+
|
1383 |
+
protected function unmarkedText($text)
|
1384 |
+
{
|
1385 |
+
if ($this->breaksEnabled)
|
1386 |
+
{
|
1387 |
+
$text = preg_replace('/[ ]*\n/', "<br />\n", $text);
|
1388 |
+
}
|
1389 |
+
else
|
1390 |
+
{
|
1391 |
+
$text = preg_replace('/(?:[ ][ ]+|[ ]*\\\\)\n/', "<br />\n", $text);
|
1392 |
+
$text = str_replace(" \n", "\n", $text);
|
1393 |
+
}
|
1394 |
+
|
1395 |
+
return $text;
|
1396 |
+
}
|
1397 |
+
|
1398 |
+
#
|
1399 |
+
# Handlers
|
1400 |
+
#
|
1401 |
+
|
1402 |
+
protected function element(array $Element)
|
1403 |
+
{
|
1404 |
+
$markup = '<'.$Element['name'];
|
1405 |
+
|
1406 |
+
if (isset($Element['attributes']))
|
1407 |
+
{
|
1408 |
+
foreach ($Element['attributes'] as $name => $value)
|
1409 |
+
{
|
1410 |
+
if ($value === null)
|
1411 |
+
{
|
1412 |
+
continue;
|
1413 |
+
}
|
1414 |
+
|
1415 |
+
$markup .= ' '.$name.'="'.$value.'"';
|
1416 |
+
}
|
1417 |
+
}
|
1418 |
+
|
1419 |
+
if (isset($Element['text']))
|
1420 |
+
{
|
1421 |
+
$markup .= '>';
|
1422 |
+
|
1423 |
+
if (isset($Element['handler']))
|
1424 |
+
{
|
1425 |
+
$markup .= $this->{$Element['handler']}($Element['text']);
|
1426 |
+
}
|
1427 |
+
else
|
1428 |
+
{
|
1429 |
+
$markup .= $Element['text'];
|
1430 |
+
}
|
1431 |
+
|
1432 |
+
$markup .= '</'.$Element['name'].'>';
|
1433 |
+
}
|
1434 |
+
else
|
1435 |
+
{
|
1436 |
+
$markup .= ' />';
|
1437 |
+
}
|
1438 |
+
|
1439 |
+
return $markup;
|
1440 |
+
}
|
1441 |
+
|
1442 |
+
protected function elements(array $Elements)
|
1443 |
+
{
|
1444 |
+
$markup = '';
|
1445 |
+
|
1446 |
+
foreach ($Elements as $Element)
|
1447 |
+
{
|
1448 |
+
$markup .= "\n" . $this->element($Element);
|
1449 |
+
}
|
1450 |
+
|
1451 |
+
$markup .= "\n";
|
1452 |
+
|
1453 |
+
return $markup;
|
1454 |
+
}
|
1455 |
+
|
1456 |
+
# ~
|
1457 |
+
|
1458 |
+
protected function li($lines)
|
1459 |
+
{
|
1460 |
+
$markup = $this->lines($lines);
|
1461 |
+
|
1462 |
+
$trimmedMarkup = trim($markup);
|
1463 |
+
|
1464 |
+
if ( ! in_array('', $lines) and substr($trimmedMarkup, 0, 3) === '<p>')
|
1465 |
+
{
|
1466 |
+
$markup = $trimmedMarkup;
|
1467 |
+
$markup = substr($markup, 3);
|
1468 |
+
|
1469 |
+
$position = strpos($markup, "</p>");
|
1470 |
+
|
1471 |
+
$markup = substr_replace($markup, '', $position, 4);
|
1472 |
+
}
|
1473 |
+
|
1474 |
+
return $markup;
|
1475 |
+
}
|
1476 |
+
|
1477 |
+
#
|
1478 |
+
# Deprecated Methods
|
1479 |
+
#
|
1480 |
+
|
1481 |
+
function parse($text)
|
1482 |
+
{
|
1483 |
+
$markup = $this->text($text);
|
1484 |
+
|
1485 |
+
return $markup;
|
1486 |
+
}
|
1487 |
+
|
1488 |
+
#
|
1489 |
+
# Static Methods
|
1490 |
+
#
|
1491 |
+
|
1492 |
+
static function instance($name = 'default')
|
1493 |
+
{
|
1494 |
+
if (isset(self::$instances[$name]))
|
1495 |
+
{
|
1496 |
+
return self::$instances[$name];
|
1497 |
+
}
|
1498 |
+
|
1499 |
+
$instance = new static();
|
1500 |
+
|
1501 |
+
self::$instances[$name] = $instance;
|
1502 |
+
|
1503 |
+
return $instance;
|
1504 |
+
}
|
1505 |
+
|
1506 |
+
private static $instances = array();
|
1507 |
+
|
1508 |
+
#
|
1509 |
+
# Fields
|
1510 |
+
#
|
1511 |
+
|
1512 |
+
protected $DefinitionData;
|
1513 |
+
|
1514 |
+
#
|
1515 |
+
# Read-Only
|
1516 |
+
|
1517 |
+
protected $specialCharacters = array(
|
1518 |
+
'\\', '`', '*', '_', '{', '}', '[', ']', '(', ')', '>', '#', '+', '-', '.', '!', '|',
|
1519 |
+
);
|
1520 |
+
|
1521 |
+
protected $StrongRegex = array(
|
1522 |
+
'*' => '/^[*]{2}((?:\\\\\*|[^*]|[*][^*]*[*])+?)[*]{2}(?![*])/s',
|
1523 |
+
'_' => '/^__((?:\\\\_|[^_]|_[^_]*_)+?)__(?!_)/us',
|
1524 |
+
);
|
1525 |
+
|
1526 |
+
protected $EmRegex = array(
|
1527 |
+
'*' => '/^[*]((?:\\\\\*|[^*]|[*][*][^*]+?[*][*])+?)[*](?![*])/s',
|
1528 |
+
'_' => '/^_((?:\\\\_|[^_]|__[^_]*__)+?)_(?!_)\b/us',
|
1529 |
+
);
|
1530 |
+
|
1531 |
+
protected $regexHtmlAttribute = '[a-zA-Z_:][\w:.-]*(?:\s*=\s*(?:[^"\'=<>`\s]+|"[^"]*"|\'[^\']*\'))?';
|
1532 |
+
|
1533 |
+
protected $voidElements = array(
|
1534 |
+
'area', 'base', 'br', 'col', 'command', 'embed', 'hr', 'img', 'input', 'link', 'meta', 'param', 'source',
|
1535 |
+
);
|
1536 |
+
|
1537 |
+
protected $textLevelElements = array(
|
1538 |
+
'a', 'br', 'bdo', 'abbr', 'blink', 'nextid', 'acronym', 'basefont',
|
1539 |
+
'b', 'em', 'big', 'cite', 'small', 'spacer', 'listing',
|
1540 |
+
'i', 'rp', 'del', 'code', 'strike', 'marquee',
|
1541 |
+
'q', 'rt', 'ins', 'font', 'strong',
|
1542 |
+
's', 'tt', 'sub', 'mark',
|
1543 |
+
'u', 'xm', 'sup', 'nobr',
|
1544 |
+
'var', 'ruby',
|
1545 |
+
'wbr', 'span',
|
1546 |
+
'time',
|
1547 |
+
);
|
1548 |
+
}
|
base/inc/fields/code.class.php
CHANGED
@@ -31,6 +31,6 @@ class SiteOrigin_Widget_Field_Code extends SiteOrigin_Widget_Field_Text_Input_Ba
|
|
31 |
}
|
32 |
|
33 |
function enqueue_scripts(){
|
34 |
-
wp_enqueue_script( 'so-code-field', plugin_dir_url( __FILE__ ) . '
|
35 |
}
|
36 |
-
}
|
31 |
}
|
32 |
|
33 |
function enqueue_scripts(){
|
34 |
+
wp_enqueue_script( 'so-code-field', plugin_dir_url( __FILE__ ) . 'js/code-field' . SOW_BUNDLE_JS_SUFFIX . '.js', array( 'jquery' ), SOW_BUNDLE_VERSION );
|
35 |
}
|
36 |
+
}
|
base/inc/fields/icon.class.php
CHANGED
@@ -78,8 +78,8 @@ class SiteOrigin_Widget_Field_Icon extends SiteOrigin_Widget_Field_Base {
|
|
78 |
}
|
79 |
|
80 |
public function enqueue_scripts(){
|
81 |
-
wp_enqueue_script( 'so-icon-field', plugin_dir_url( __FILE__ ) . '
|
82 |
-
wp_enqueue_style( 'so-icon-field', plugin_dir_url( __FILE__ ) . '
|
83 |
}
|
84 |
|
85 |
}
|
78 |
}
|
79 |
|
80 |
public function enqueue_scripts(){
|
81 |
+
wp_enqueue_script( 'so-icon-field', plugin_dir_url( __FILE__ ) . 'js/icon-field' . SOW_BUNDLE_JS_SUFFIX . '.js', array( 'jquery' ), SOW_BUNDLE_VERSION );
|
82 |
+
wp_enqueue_style( 'so-icon-field', plugin_dir_url( __FILE__ ) . 'css/icon-field.css', array( ), SOW_BUNDLE_VERSION );
|
83 |
}
|
84 |
|
85 |
}
|
base/inc/fields/media.class.php
CHANGED
@@ -153,8 +153,8 @@ class SiteOrigin_Widget_Field_Media extends SiteOrigin_Widget_Field_Base {
|
|
153 |
}
|
154 |
|
155 |
function enqueue_scripts(){
|
156 |
-
wp_enqueue_script( 'so-media-field', plugin_dir_url( __FILE__ ) . '
|
157 |
-
wp_enqueue_style( 'so-media-field', plugin_dir_url( __FILE__ ) . '
|
158 |
}
|
159 |
|
160 |
function image_search_dialog(){
|
153 |
}
|
154 |
|
155 |
function enqueue_scripts(){
|
156 |
+
wp_enqueue_script( 'so-media-field', plugin_dir_url( __FILE__ ) . 'js/media-field' . SOW_BUNDLE_JS_SUFFIX . '.js', array( 'jquery' ), SOW_BUNDLE_VERSION );
|
157 |
+
wp_enqueue_style( 'so-media-field', plugin_dir_url( __FILE__ ) . 'css/media-field.css', array( ), SOW_BUNDLE_VERSION );
|
158 |
}
|
159 |
|
160 |
function image_search_dialog(){
|
base/inc/lessc.inc.php
CHANGED
@@ -2640,7 +2640,7 @@ class lessc_parser {
|
|
2640 |
if ($this->unit($value)) return true;
|
2641 |
if ($this->color($value)) return true;
|
2642 |
if ($this->func($value)) return true;
|
2643 |
-
if ($this->
|
2644 |
|
2645 |
if ($this->keyword($word)) {
|
2646 |
$value = array('keyword', $word);
|
@@ -2654,7 +2654,7 @@ class lessc_parser {
|
|
2654 |
}
|
2655 |
|
2656 |
// unquote string (should this work on any type?
|
2657 |
-
if ($this->literal("~") && $this->
|
2658 |
$value = array("escape", $str);
|
2659 |
return true;
|
2660 |
} else {
|
@@ -2785,7 +2785,7 @@ class lessc_parser {
|
|
2785 |
}
|
2786 |
}
|
2787 |
|
2788 |
-
if (($tok == "'" || $tok == '"') && $this->
|
2789 |
$content[] = $str;
|
2790 |
continue;
|
2791 |
}
|
@@ -2816,7 +2816,7 @@ class lessc_parser {
|
|
2816 |
return true;
|
2817 |
}
|
2818 |
|
2819 |
-
protected function
|
2820 |
$s = $this->seek();
|
2821 |
if ($this->literal('"', false)) {
|
2822 |
$delim = '"';
|
@@ -3070,7 +3070,7 @@ class lessc_parser {
|
|
3070 |
$attrParts[] = " ";
|
3071 |
continue;
|
3072 |
}
|
3073 |
-
if ($this->
|
3074 |
// escape parent selector, (yuck)
|
3075 |
foreach ($str[2] as &$chunk) {
|
3076 |
$chunk = str_replace($this->lessc->parentSelector, "$&$", $chunk);
|
2640 |
if ($this->unit($value)) return true;
|
2641 |
if ($this->color($value)) return true;
|
2642 |
if ($this->func($value)) return true;
|
2643 |
+
if ($this->_string($value)) return true;
|
2644 |
|
2645 |
if ($this->keyword($word)) {
|
2646 |
$value = array('keyword', $word);
|
2654 |
}
|
2655 |
|
2656 |
// unquote string (should this work on any type?
|
2657 |
+
if ($this->literal("~") && $this->_string($str)) {
|
2658 |
$value = array("escape", $str);
|
2659 |
return true;
|
2660 |
} else {
|
2785 |
}
|
2786 |
}
|
2787 |
|
2788 |
+
if (($tok == "'" || $tok == '"') && $this->_string($str)) {
|
2789 |
$content[] = $str;
|
2790 |
continue;
|
2791 |
}
|
2816 |
return true;
|
2817 |
}
|
2818 |
|
2819 |
+
protected function _string(&$out) {
|
2820 |
$s = $this->seek();
|
2821 |
if ($this->literal('"', false)) {
|
2822 |
$delim = '"';
|
3070 |
$attrParts[] = " ";
|
3071 |
continue;
|
3072 |
}
|
3073 |
+
if ($this->_string($str)) {
|
3074 |
// escape parent selector, (yuck)
|
3075 |
foreach ($str[2] as &$chunk) {
|
3076 |
$chunk = str_replace($this->lessc->parentSelector, "$&$", $chunk);
|
base/inc/markdown.php
DELETED
@@ -1,1577 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
#
|
3 |
-
# Markdown - A text-to-HTML conversion tool for web writers
|
4 |
-
#
|
5 |
-
# PHP Markdown
|
6 |
-
# Copyright (c) 2004-2013 Michel Fortin
|
7 |
-
# <http://michelf.ca/projects/php-markdown/>
|
8 |
-
#
|
9 |
-
# Original Markdown
|
10 |
-
# Copyright (c) 2004-2006 John Gruber
|
11 |
-
# <http://daringfireball.net/projects/markdown/>
|
12 |
-
#
|
13 |
-
|
14 |
-
|
15 |
-
#
|
16 |
-
# Markdown Parser Class
|
17 |
-
#
|
18 |
-
class Markdown_Parser {
|
19 |
-
|
20 |
-
### Configuration Variables ###
|
21 |
-
|
22 |
-
# Change to ">" for HTML output.
|
23 |
-
var $empty_element_suffix = " />";
|
24 |
-
var $tab_width = 4;
|
25 |
-
|
26 |
-
# Change to `true` to disallow markup or entities.
|
27 |
-
var $no_markup = false;
|
28 |
-
var $no_entities = false;
|
29 |
-
|
30 |
-
# Predefined urls and titles for reference links and images.
|
31 |
-
var $predef_urls = array();
|
32 |
-
var $predef_titles = array();
|
33 |
-
|
34 |
-
|
35 |
-
### Parser Implementation ###
|
36 |
-
|
37 |
-
# Regex to match balanced [brackets].
|
38 |
-
# Needed to insert a maximum bracked depth while converting to PHP.
|
39 |
-
var $nested_brackets_depth = 6;
|
40 |
-
var $nested_brackets_re;
|
41 |
-
|
42 |
-
var $nested_url_parenthesis_depth = 4;
|
43 |
-
var $nested_url_parenthesis_re;
|
44 |
-
|
45 |
-
# Table of hash values for escaped characters:
|
46 |
-
var $escape_chars = '\`*_{}[]()>#+-.!';
|
47 |
-
var $escape_chars_re;
|
48 |
-
|
49 |
-
|
50 |
-
function Markdown_Parser() {
|
51 |
-
#
|
52 |
-
# Constructor function. Initialize appropriate member variables.
|
53 |
-
#
|
54 |
-
$this->_initDetab();
|
55 |
-
$this->prepareItalicsAndBold();
|
56 |
-
|
57 |
-
$this->nested_brackets_re =
|
58 |
-
str_repeat('(?>[^\[\]]+|\[', $this->nested_brackets_depth).
|
59 |
-
str_repeat('\])*', $this->nested_brackets_depth);
|
60 |
-
|
61 |
-
$this->nested_url_parenthesis_re =
|
62 |
-
str_repeat('(?>[^()\s]+|\(', $this->nested_url_parenthesis_depth).
|
63 |
-
str_repeat('(?>\)))*', $this->nested_url_parenthesis_depth);
|
64 |
-
|
65 |
-
$this->escape_chars_re = '['.preg_quote($this->escape_chars).']';
|
66 |
-
|
67 |
-
# Sort document, block, and span gamut in ascendent priority order.
|
68 |
-
asort($this->document_gamut);
|
69 |
-
asort($this->block_gamut);
|
70 |
-
asort($this->span_gamut);
|
71 |
-
}
|
72 |
-
|
73 |
-
|
74 |
-
# Internal hashes used during transformation.
|
75 |
-
var $urls = array();
|
76 |
-
var $titles = array();
|
77 |
-
var $html_hashes = array();
|
78 |
-
|
79 |
-
# Status flag to avoid invalid nesting.
|
80 |
-
var $in_anchor = false;
|
81 |
-
|
82 |
-
|
83 |
-
function setup() {
|
84 |
-
#
|
85 |
-
# Called before the transformation process starts to setup parser
|
86 |
-
# states.
|
87 |
-
#
|
88 |
-
# Clear global hashes.
|
89 |
-
$this->urls = $this->predef_urls;
|
90 |
-
$this->titles = $this->predef_titles;
|
91 |
-
$this->html_hashes = array();
|
92 |
-
|
93 |
-
$this->in_anchor = false;
|
94 |
-
}
|
95 |
-
|
96 |
-
function teardown() {
|
97 |
-
#
|
98 |
-
# Called after the transformation process to clear any variable
|
99 |
-
# which may be taking up memory unnecessarly.
|
100 |
-
#
|
101 |
-
$this->urls = array();
|
102 |
-
$this->titles = array();
|
103 |
-
$this->html_hashes = array();
|
104 |
-
}
|
105 |
-
|
106 |
-
|
107 |
-
function transform($text) {
|
108 |
-
#
|
109 |
-
# Main function. Performs some preprocessing on the input text
|
110 |
-
# and pass it through the document gamut.
|
111 |
-
#
|
112 |
-
$this->setup();
|
113 |
-
|
114 |
-
# Remove UTF-8 BOM and marker character in input, if present.
|
115 |
-
$text = preg_replace('{^\xEF\xBB\xBF|\x1A}', '', $text);
|
116 |
-
|
117 |
-
# Standardize line endings:
|
118 |
-
# DOS to Unix and Mac to Unix
|
119 |
-
$text = preg_replace('{\r\n?}', "\n", $text);
|
120 |
-
|
121 |
-
# Make sure $text ends with a couple of newlines:
|
122 |
-
$text .= "\n\n";
|
123 |
-
|
124 |
-
# Convert all tabs to spaces.
|
125 |
-
$text = $this->detab($text);
|
126 |
-
|
127 |
-
# Turn block-level HTML blocks into hash entries
|
128 |
-
$text = $this->hashHTMLBlocks($text);
|
129 |
-
|
130 |
-
# Strip any lines consisting only of spaces and tabs.
|
131 |
-
# This makes subsequent regexen easier to write, because we can
|
132 |
-
# match consecutive blank lines with /\n+/ instead of something
|
133 |
-
# contorted like /[ ]*\n+/ .
|
134 |
-
$text = preg_replace('/^[ ]+$/m', '', $text);
|
135 |
-
|
136 |
-
# Run document gamut methods.
|
137 |
-
foreach ($this->document_gamut as $method => $priority) {
|
138 |
-
$text = $this->$method($text);
|
139 |
-
}
|
140 |
-
|
141 |
-
$this->teardown();
|
142 |
-
|
143 |
-
return $text . "\n";
|
144 |
-
}
|
145 |
-
|
146 |
-
var $document_gamut = array(
|
147 |
-
# Strip link definitions, store in hashes.
|
148 |
-
"stripLinkDefinitions" => 20,
|
149 |
-
|
150 |
-
"runBasicBlockGamut" => 30,
|
151 |
-
);
|
152 |
-
|
153 |
-
|
154 |
-
function stripLinkDefinitions($text) {
|
155 |
-
#
|
156 |
-
# Strips link definitions from text, stores the URLs and titles in
|
157 |
-
# hash references.
|
158 |
-
#
|
159 |
-
$less_than_tab = $this->tab_width - 1;
|
160 |
-
|
161 |
-
# Link defs are in the form: ^[id]: url "optional title"
|
162 |
-
$text = preg_replace_callback('{
|
163 |
-
^[ ]{0,'.$less_than_tab.'}\[(.+)\][ ]?: # id = $1
|
164 |
-
[ ]*
|
165 |
-
\n? # maybe *one* newline
|
166 |
-
[ ]*
|
167 |
-
(?:
|
168 |
-
<(.+?)> # url = $2
|
169 |
-
|
|
170 |
-
(\S+?) # url = $3
|
171 |
-
)
|
172 |
-
[ ]*
|
173 |
-
\n? # maybe one newline
|
174 |
-
[ ]*
|
175 |
-
(?:
|
176 |
-
(?<=\s) # lookbehind for whitespace
|
177 |
-
["(]
|
178 |
-
(.*?) # title = $4
|
179 |
-
[")]
|
180 |
-
[ ]*
|
181 |
-
)? # title is optional
|
182 |
-
(?:\n+|\Z)
|
183 |
-
}xm',
|
184 |
-
array(&$this, '_stripLinkDefinitions_callback'),
|
185 |
-
$text);
|
186 |
-
return $text;
|
187 |
-
}
|
188 |
-
function _stripLinkDefinitions_callback($matches) {
|
189 |
-
$link_id = strtolower($matches[1]);
|
190 |
-
$url = $matches[2] == '' ? $matches[3] : $matches[2];
|
191 |
-
$this->urls[$link_id] = $url;
|
192 |
-
$this->titles[$link_id] =& $matches[4];
|
193 |
-
return ''; # String that will replace the block
|
194 |
-
}
|
195 |
-
|
196 |
-
|
197 |
-
function hashHTMLBlocks($text) {
|
198 |
-
if ($this->no_markup) return $text;
|
199 |
-
|
200 |
-
$less_than_tab = $this->tab_width - 1;
|
201 |
-
|
202 |
-
# Hashify HTML blocks:
|
203 |
-
# We only want to do this for block-level HTML tags, such as headers,
|
204 |
-
# lists, and tables. That's because we still want to wrap <p>s around
|
205 |
-
# "paragraphs" that are wrapped in non-block-level tags, such as anchors,
|
206 |
-
# phrase emphasis, and spans. The list of tags we're looking for is
|
207 |
-
# hard-coded:
|
208 |
-
#
|
209 |
-
# * List "a" is made of tags which can be both inline or block-level.
|
210 |
-
# These will be treated block-level when the start tag is alone on
|
211 |
-
# its line, otherwise they're not matched here and will be taken as
|
212 |
-
# inline later.
|
213 |
-
# * List "b" is made of tags which are always block-level;
|
214 |
-
#
|
215 |
-
$block_tags_a_re = 'ins|del';
|
216 |
-
$block_tags_b_re = 'p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|address|'.
|
217 |
-
'script|noscript|form|fieldset|iframe|math|svg|'.
|
218 |
-
'article|section|nav|aside|hgroup|header|footer|'.
|
219 |
-
'figure';
|
220 |
-
|
221 |
-
# Regular expression for the content of a block tag.
|
222 |
-
$nested_tags_level = 4;
|
223 |
-
$attr = '
|
224 |
-
(?> # optional tag attributes
|
225 |
-
\s # starts with whitespace
|
226 |
-
(?>
|
227 |
-
[^>"/]+ # text outside quotes
|
228 |
-
|
|
229 |
-
/+(?!>) # slash not followed by ">"
|
230 |
-
|
|
231 |
-
"[^"]*" # text inside double quotes (tolerate ">")
|
232 |
-
|
|
233 |
-
\'[^\']*\' # text inside single quotes (tolerate ">")
|
234 |
-
)*
|
235 |
-
)?
|
236 |
-
';
|
237 |
-
$content =
|
238 |
-
str_repeat('
|
239 |
-
(?>
|
240 |
-
[^<]+ # content without tag
|
241 |
-
|
|
242 |
-
<\2 # nested opening tag
|
243 |
-
'.$attr.' # attributes
|
244 |
-
(?>
|
245 |
-
/>
|
246 |
-
|
|
247 |
-
>', $nested_tags_level). # end of opening tag
|
248 |
-
'.*?'. # last level nested tag content
|
249 |
-
str_repeat('
|
250 |
-
</\2\s*> # closing nested tag
|
251 |
-
)
|
252 |
-
|
|
253 |
-
<(?!/\2\s*> # other tags with a different name
|
254 |
-
)
|
255 |
-
)*',
|
256 |
-
$nested_tags_level);
|
257 |
-
$content2 = str_replace('\2', '\3', $content);
|
258 |
-
|
259 |
-
# First, look for nested blocks, e.g.:
|
260 |
-
# <div>
|
261 |
-
# <div>
|
262 |
-
# tags for inner block must be indented.
|
263 |
-
# </div>
|
264 |
-
# </div>
|
265 |
-
#
|
266 |
-
# The outermost tags must start at the left margin for this to match, and
|
267 |
-
# the inner nested divs must be indented.
|
268 |
-
# We need to do this before the next, more liberal match, because the next
|
269 |
-
# match will start at the first `<div>` and stop at the first `</div>`.
|
270 |
-
$text = preg_replace_callback('{(?>
|
271 |
-
(?>
|
272 |
-
(?<=\n\n) # Starting after a blank line
|
273 |
-
| # or
|
274 |
-
\A\n? # the beginning of the doc
|
275 |
-
)
|
276 |
-
( # save in $1
|
277 |
-
|
278 |
-
# Match from `\n<tag>` to `</tag>\n`, handling nested tags
|
279 |
-
# in between.
|
280 |
-
|
281 |
-
[ ]{0,'.$less_than_tab.'}
|
282 |
-
<('.$block_tags_b_re.')# start tag = $2
|
283 |
-
'.$attr.'> # attributes followed by > and \n
|
284 |
-
'.$content.' # content, support nesting
|
285 |
-
</\2> # the matching end tag
|
286 |
-
[ ]* # trailing spaces/tabs
|
287 |
-
(?=\n+|\Z) # followed by a newline or end of document
|
288 |
-
|
289 |
-
| # Special version for tags of group a.
|
290 |
-
|
291 |
-
[ ]{0,'.$less_than_tab.'}
|
292 |
-
<('.$block_tags_a_re.')# start tag = $3
|
293 |
-
'.$attr.'>[ ]*\n # attributes followed by >
|
294 |
-
'.$content2.' # content, support nesting
|
295 |
-
</\3> # the matching end tag
|
296 |
-
[ ]* # trailing spaces/tabs
|
297 |
-
(?=\n+|\Z) # followed by a newline or end of document
|
298 |
-
|
299 |
-
| # Special case just for <hr />. It was easier to make a special
|
300 |
-
# case than to make the other regex more complicated.
|
301 |
-
|
302 |
-
[ ]{0,'.$less_than_tab.'}
|
303 |
-
<(hr) # start tag = $2
|
304 |
-
'.$attr.' # attributes
|
305 |
-
/?> # the matching end tag
|
306 |
-
[ ]*
|
307 |
-
(?=\n{2,}|\Z) # followed by a blank line or end of document
|
308 |
-
|
309 |
-
| # Special case for standalone HTML comments:
|
310 |
-
|
311 |
-
[ ]{0,'.$less_than_tab.'}
|
312 |
-
(?s:
|
313 |
-
<!-- .*? -->
|
314 |
-
)
|
315 |
-
[ ]*
|
316 |
-
(?=\n{2,}|\Z) # followed by a blank line or end of document
|
317 |
-
|
318 |
-
| # PHP and ASP-style processor instructions (<? and <%)
|
319 |
-
|
320 |
-
[ ]{0,'.$less_than_tab.'}
|
321 |
-
(?s:
|
322 |
-
<([?%]) # $2
|
323 |
-
.*?
|
324 |
-
\2>
|
325 |
-
)
|
326 |
-
[ ]*
|
327 |
-
(?=\n{2,}|\Z) # followed by a blank line or end of document
|
328 |
-
|
329 |
-
)
|
330 |
-
)}Sxmi',
|
331 |
-
array(&$this, '_hashHTMLBlocks_callback'),
|
332 |
-
$text);
|
333 |
-
|
334 |
-
return $text;
|
335 |
-
}
|
336 |
-
function _hashHTMLBlocks_callback($matches) {
|
337 |
-
$text = $matches[1];
|
338 |
-
$key = $this->hashBlock($text);
|
339 |
-
return "\n\n$key\n\n";
|
340 |
-
}
|
341 |
-
|
342 |
-
|
343 |
-
function hashPart($text, $boundary = 'X') {
|
344 |
-
#
|
345 |
-
# Called whenever a tag must be hashed when a function insert an atomic
|
346 |
-
# element in the text stream. Passing $text to through this function gives
|
347 |
-
# a unique text-token which will be reverted back when calling unhash.
|
348 |
-
#
|
349 |
-
# The $boundary argument specify what character should be used to surround
|
350 |
-
# the token. By convension, "B" is used for block elements that needs not
|
351 |
-
# to be wrapped into paragraph tags at the end, ":" is used for elements
|
352 |
-
# that are word separators and "X" is used in the general case.
|
353 |
-
#
|
354 |
-
# Swap back any tag hash found in $text so we do not have to `unhash`
|
355 |
-
# multiple times at the end.
|
356 |
-
$text = $this->unhash($text);
|
357 |
-
|
358 |
-
# Then hash the block.
|
359 |
-
static $i = 0;
|
360 |
-
$key = "$boundary\x1A" . ++$i . $boundary;
|
361 |
-
$this->html_hashes[$key] = $text;
|
362 |
-
return $key; # String that will replace the tag.
|
363 |
-
}
|
364 |
-
|
365 |
-
|
366 |
-
function hashBlock($text) {
|
367 |
-
#
|
368 |
-
# Shortcut function for hashPart with block-level boundaries.
|
369 |
-
#
|
370 |
-
return $this->hashPart($text, 'B');
|
371 |
-
}
|
372 |
-
|
373 |
-
|
374 |
-
var $block_gamut = array(
|
375 |
-
#
|
376 |
-
# These are all the transformations that form block-level
|
377 |
-
# tags like paragraphs, headers, and list items.
|
378 |
-
#
|
379 |
-
"doHeaders" => 10,
|
380 |
-
"doHorizontalRules" => 20,
|
381 |
-
|
382 |
-
"doLists" => 40,
|
383 |
-
"doCodeBlocks" => 50,
|
384 |
-
"doBlockQuotes" => 60,
|
385 |
-
);
|
386 |
-
|
387 |
-
function runBlockGamut($text) {
|
388 |
-
#
|
389 |
-
# Run block gamut tranformations.
|
390 |
-
#
|
391 |
-
# We need to escape raw HTML in Markdown source before doing anything
|
392 |
-
# else. This need to be done for each block, and not only at the
|
393 |
-
# begining in the Markdown function since hashed blocks can be part of
|
394 |
-
# list items and could have been indented. Indented blocks would have
|
395 |
-
# been seen as a code block in a previous pass of hashHTMLBlocks.
|
396 |
-
$text = $this->hashHTMLBlocks($text);
|
397 |
-
|
398 |
-
return $this->runBasicBlockGamut($text);
|
399 |
-
}
|
400 |
-
|
401 |
-
function runBasicBlockGamut($text) {
|
402 |
-
#
|
403 |
-
# Run block gamut tranformations, without hashing HTML blocks. This is
|
404 |
-
# useful when HTML blocks are known to be already hashed, like in the first
|
405 |
-
# whole-document pass.
|
406 |
-
#
|
407 |
-
foreach ($this->block_gamut as $method => $priority) {
|
408 |
-
$text = $this->$method($text);
|
409 |
-
}
|
410 |
-
|
411 |
-
# Finally form paragraph and restore hashed blocks.
|
412 |
-
$text = $this->formParagraphs($text);
|
413 |
-
|
414 |
-
return $text;
|
415 |
-
}
|
416 |
-
|
417 |
-
|
418 |
-
function doHorizontalRules($text) {
|
419 |
-
# Do Horizontal Rules:
|
420 |
-
return preg_replace(
|
421 |
-
'{
|
422 |
-
^[ ]{0,3} # Leading space
|
423 |
-
([-*_]) # $1: First marker
|
424 |
-
(?> # Repeated marker group
|
425 |
-
[ ]{0,2} # Zero, one, or two spaces.
|
426 |
-
\1 # Marker character
|
427 |
-
){2,} # Group repeated at least twice
|
428 |
-
[ ]* # Tailing spaces
|
429 |
-
$ # End of line.
|
430 |
-
}mx',
|
431 |
-
"\n".$this->hashBlock("<hr$this->empty_element_suffix")."\n",
|
432 |
-
$text);
|
433 |
-
}
|
434 |
-
|
435 |
-
|
436 |
-
var $span_gamut = array(
|
437 |
-
#
|
438 |
-
# These are all the transformations that occur *within* block-level
|
439 |
-
# tags like paragraphs, headers, and list items.
|
440 |
-
#
|
441 |
-
# Process character escapes, code spans, and inline HTML
|
442 |
-
# in one shot.
|
443 |
-
"parseSpan" => -30,
|
444 |
-
|
445 |
-
# Process anchor and image tags. Images must come first,
|
446 |
-
# because ![foo][f] looks like an anchor.
|
447 |
-
"doImages" => 10,
|
448 |
-
"doAnchors" => 20,
|
449 |
-
|
450 |
-
# Make links out of things like `<http://example.com/>`
|
451 |
-
# Must come after doAnchors, because you can use < and >
|
452 |
-
# delimiters in inline links like [this](<url>).
|
453 |
-
"doAutoLinks" => 30,
|
454 |
-
"encodeAmpsAndAngles" => 40,
|
455 |
-
|
456 |
-
"doItalicsAndBold" => 50,
|
457 |
-
"doHardBreaks" => 60,
|
458 |
-
);
|
459 |
-
|
460 |
-
function runSpanGamut($text) {
|
461 |
-
#
|
462 |
-
# Run span gamut tranformations.
|
463 |
-
#
|
464 |
-
foreach ($this->span_gamut as $method => $priority) {
|
465 |
-
$text = $this->$method($text);
|
466 |
-
}
|
467 |
-
|
468 |
-
return $text;
|
469 |
-
}
|
470 |
-
|
471 |
-
|
472 |
-
function doHardBreaks($text) {
|
473 |
-
# Do hard breaks:
|
474 |
-
return preg_replace_callback('/ {2,}\n/',
|
475 |
-
array(&$this, '_doHardBreaks_callback'), $text);
|
476 |
-
}
|
477 |
-
function _doHardBreaks_callback($matches) {
|
478 |
-
return $this->hashPart("<br$this->empty_element_suffix\n");
|
479 |
-
}
|
480 |
-
|
481 |
-
|
482 |
-
function doAnchors($text) {
|
483 |
-
#
|
484 |
-
# Turn Markdown link shortcuts into XHTML <a> tags.
|
485 |
-
#
|
486 |
-
if ($this->in_anchor) return $text;
|
487 |
-
$this->in_anchor = true;
|
488 |
-
|
489 |
-
#
|
490 |
-
# First, handle reference-style links: [link text] [id]
|
491 |
-
#
|
492 |
-
$text = preg_replace_callback('{
|
493 |
-
( # wrap whole match in $1
|
494 |
-
\[
|
495 |
-
('.$this->nested_brackets_re.') # link text = $2
|
496 |
-
\]
|
497 |
-
|
498 |
-
[ ]? # one optional space
|
499 |
-
(?:\n[ ]*)? # one optional newline followed by spaces
|
500 |
-
|
501 |
-
\[
|
502 |
-
(.*?) # id = $3
|
503 |
-
\]
|
504 |
-
)
|
505 |
-
}xs',
|
506 |
-
array(&$this, '_doAnchors_reference_callback'), $text);
|
507 |
-
|
508 |
-
#
|
509 |
-
# Next, inline-style links: [link text](url "optional title")
|
510 |
-
#
|
511 |
-
$text = preg_replace_callback('{
|
512 |
-
( # wrap whole match in $1
|
513 |
-
\[
|
514 |
-
('.$this->nested_brackets_re.') # link text = $2
|
515 |
-
\]
|
516 |
-
\( # literal paren
|
517 |
-
[ \n]*
|
518 |
-
(?:
|
519 |
-
<(.+?)> # href = $3
|
520 |
-
|
|
521 |
-
('.$this->nested_url_parenthesis_re.') # href = $4
|
522 |
-
)
|
523 |
-
[ \n]*
|
524 |
-
( # $5
|
525 |
-
([\'"]) # quote char = $6
|
526 |
-
(.*?) # Title = $7
|
527 |
-
\6 # matching quote
|
528 |
-
[ \n]* # ignore any spaces/tabs between closing quote and )
|
529 |
-
)? # title is optional
|
530 |
-
\)
|
531 |
-
)
|
532 |
-
}xs',
|
533 |
-
array(&$this, '_doAnchors_inline_callback'), $text);
|
534 |
-
|
535 |
-
#
|
536 |
-
# Last, handle reference-style shortcuts: [link text]
|
537 |
-
# These must come last in case you've also got [link text][1]
|
538 |
-
# or [link text](/foo)
|
539 |
-
#
|
540 |
-
$text = preg_replace_callback('{
|
541 |
-
( # wrap whole match in $1
|
542 |
-
\[
|
543 |
-
([^\[\]]+) # link text = $2; can\'t contain [ or ]
|
544 |
-
\]
|
545 |
-
)
|
546 |
-
}xs',
|
547 |
-
array(&$this, '_doAnchors_reference_callback'), $text);
|
548 |
-
|
549 |
-
$this->in_anchor = false;
|
550 |
-
return $text;
|
551 |
-
}
|
552 |
-
function _doAnchors_reference_callback($matches) {
|
553 |
-
$whole_match = $matches[1];
|
554 |
-
$link_text = $matches[2];
|
555 |
-
$link_id =& $matches[3];
|
556 |
-
|
557 |
-
if ($link_id == "") {
|
558 |
-
# for shortcut links like [this][] or [this].
|
559 |
-
$link_id = $link_text;
|
560 |
-
}
|
561 |
-
|
562 |
-
# lower-case and turn embedded newlines into spaces
|
563 |
-
$link_id = strtolower($link_id);
|
564 |
-
$link_id = preg_replace('{[ ]?\n}', ' ', $link_id);
|
565 |
-
|
566 |
-
if (isset($this->urls[$link_id])) {
|
567 |
-
$url = $this->urls[$link_id];
|
568 |
-
$url = $this->encodeAttribute($url);
|
569 |
-
|
570 |
-
$result = "<a href=\"$url\"";
|
571 |
-
if ( isset( $this->titles[$link_id] ) ) {
|
572 |
-
$title = $this->titles[$link_id];
|
573 |
-
$title = $this->encodeAttribute($title);
|
574 |
-
$result .= " title=\"$title\"";
|
575 |
-
}
|
576 |
-
|
577 |
-
$link_text = $this->runSpanGamut($link_text);
|
578 |
-
$result .= ">$link_text</a>";
|
579 |
-
$result = $this->hashPart($result);
|
580 |
-
}
|
581 |
-
else {
|
582 |
-
$result = $whole_match;
|
583 |
-
}
|
584 |
-
return $result;
|
585 |
-
}
|
586 |
-
function _doAnchors_inline_callback($matches) {
|
587 |
-
$whole_match = $matches[1];
|
588 |
-
$link_text = $this->runSpanGamut($matches[2]);
|
589 |
-
$url = $matches[3] == '' ? $matches[4] : $matches[3];
|
590 |
-
$title =& $matches[7];
|
591 |
-
|
592 |
-
$url = $this->encodeAttribute($url);
|
593 |
-
|
594 |
-
$result = "<a href=\"$url\"";
|
595 |
-
if (isset($title)) {
|
596 |
-
$title = $this->encodeAttribute($title);
|
597 |
-
$result .= " title=\"$title\"";
|
598 |
-
}
|
599 |
-
|
600 |
-
$link_text = $this->runSpanGamut($link_text);
|
601 |
-
$result .= ">$link_text</a>";
|
602 |
-
|
603 |
-
return $this->hashPart($result);
|
604 |
-
}
|
605 |
-
|
606 |
-
|
607 |
-
function doImages($text) {
|
608 |
-
#
|
609 |
-
# Turn Markdown image shortcuts into <img> tags.
|
610 |
-
#
|
611 |
-
#
|
612 |
-
# First, handle reference-style labeled images: ![alt text][id]
|
613 |
-
#
|
614 |
-
$text = preg_replace_callback('{
|
615 |
-
( # wrap whole match in $1
|
616 |
-
!\[
|
617 |
-
('.$this->nested_brackets_re.') # alt text = $2
|
618 |
-
\]
|
619 |
-
|
620 |
-
[ ]? # one optional space
|
621 |
-
(?:\n[ ]*)? # one optional newline followed by spaces
|
622 |
-
|
623 |
-
\[
|
624 |
-
(.*?) # id = $3
|
625 |
-
\]
|
626 |
-
|
627 |
-
)
|
628 |
-
}xs',
|
629 |
-
array(&$this, '_doImages_reference_callback'), $text);
|
630 |
-
|
631 |
-
#
|
632 |
-
# Next, handle inline images: ![alt text](url "optional title")
|
633 |
-
# Don't forget: encode * and _
|
634 |
-
#
|
635 |
-
$text = preg_replace_callback('{
|
636 |
-
( # wrap whole match in $1
|
637 |
-
!\[
|
638 |
-
('.$this->nested_brackets_re.') # alt text = $2
|
639 |
-
\]
|
640 |
-
\s? # One optional whitespace character
|
641 |
-
\( # literal paren
|
642 |
-
[ \n]*
|
643 |
-
(?:
|
644 |
-
<(\S*)> # src url = $3
|
645 |
-
|
|
646 |
-
('.$this->nested_url_parenthesis_re.') # src url = $4
|
647 |
-
)
|
648 |
-
[ \n]*
|
649 |
-
( # $5
|
650 |
-
([\'"]) # quote char = $6
|
651 |
-
(.*?) # title = $7
|
652 |
-
\6 # matching quote
|
653 |
-
[ \n]*
|
654 |
-
)? # title is optional
|
655 |
-
\)
|
656 |
-
)
|
657 |
-
}xs',
|
658 |
-
array(&$this, '_doImages_inline_callback'), $text);
|
659 |
-
|
660 |
-
return $text;
|
661 |
-
}
|
662 |
-
function _doImages_reference_callback($matches) {
|
663 |
-
$whole_match = $matches[1];
|
664 |
-
$alt_text = $matches[2];
|
665 |
-
$link_id = strtolower($matches[3]);
|
666 |
-
|
667 |
-
if ($link_id == "") {
|
668 |
-
$link_id = strtolower($alt_text); # for shortcut links like ![this][].
|
669 |
-
}
|
670 |
-
|
671 |
-
$alt_text = $this->encodeAttribute($alt_text);
|
672 |
-
if (isset($this->urls[$link_id])) {
|
673 |
-
$url = $this->encodeAttribute($this->urls[$link_id]);
|
674 |
-
$result = "<img src=\"$url\" alt=\"$alt_text\"";
|
675 |
-
if (isset($this->titles[$link_id])) {
|
676 |
-
$title = $this->titles[$link_id];
|
677 |
-
$title = $this->encodeAttribute($title);
|
678 |
-
$result .= " title=\"$title\"";
|
679 |
-
}
|
680 |
-
$result .= $this->empty_element_suffix;
|
681 |
-
$result = $this->hashPart($result);
|
682 |
-
}
|
683 |
-
else {
|
684 |
-
# If there's no such link ID, leave intact:
|
685 |
-
$result = $whole_match;
|
686 |
-
}
|
687 |
-
|
688 |
-
return $result;
|
689 |
-
}
|
690 |
-
function _doImages_inline_callback($matches) {
|
691 |
-
$whole_match = $matches[1];
|
692 |
-
$alt_text = $matches[2];
|
693 |
-
$url = $matches[3] == '' ? $matches[4] : $matches[3];
|
694 |
-
$title =& $matches[7];
|
695 |
-
|
696 |
-
$alt_text = $this->encodeAttribute($alt_text);
|
697 |
-
$url = $this->encodeAttribute($url);
|
698 |
-
$result = "<img src=\"$url\" alt=\"$alt_text\"";
|
699 |
-
if (isset($title)) {
|
700 |
-
$title = $this->encodeAttribute($title);
|
701 |
-
$result .= " title=\"$title\""; # $title already quoted
|
702 |
-
}
|
703 |
-
$result .= $this->empty_element_suffix;
|
704 |
-
|
705 |
-
return $this->hashPart($result);
|
706 |
-
}
|
707 |
-
|
708 |
-
|
709 |
-
function doHeaders($text) {
|
710 |
-
# Setext-style headers:
|
711 |
-
# Header 1
|
712 |
-
# ========
|
713 |
-
#
|
714 |
-
# Header 2
|
715 |
-
# --------
|
716 |
-
#
|
717 |
-
$text = preg_replace_callback('{ ^(.+?)[ ]*\n(=+|-+)[ ]*\n+ }mx',
|
718 |
-
array(&$this, '_doHeaders_callback_setext'), $text);
|
719 |
-
|
720 |
-
# atx-style headers:
|
721 |
-
# # Header 1
|
722 |
-
# ## Header 2
|
723 |
-
# ## Header 2 with closing hashes ##
|
724 |
-
# ...
|
725 |
-
# ###### Header 6
|
726 |
-
#
|
727 |
-
$text = preg_replace_callback('{
|
728 |
-
^(\#{1,6}) # $1 = string of #\'s
|
729 |
-
[ ]*
|
730 |
-
(.+?) # $2 = Header text
|
731 |
-
[ ]*
|
732 |
-
\#* # optional closing #\'s (not counted)
|
733 |
-
\n+
|
734 |
-
}xm',
|
735 |
-
array(&$this, '_doHeaders_callback_atx'), $text);
|
736 |
-
|
737 |
-
return $text;
|
738 |
-
}
|
739 |
-
function _doHeaders_callback_setext($matches) {
|
740 |
-
# Terrible hack to check we haven't found an empty list item.
|
741 |
-
if ($matches[2] == '-' && preg_match('{^-(?: |$)}', $matches[1]))
|
742 |
-
return $matches[0];
|
743 |
-
|
744 |
-
$level = $matches[2]{0} == '=' ? 1 : 2;
|
745 |
-
$block = "<h$level>".$this->runSpanGamut($matches[1])."</h$level>";
|
746 |
-
return "\n" . $this->hashBlock($block) . "\n\n";
|
747 |
-
}
|
748 |
-
function _doHeaders_callback_atx($matches) {
|
749 |
-
$level = strlen($matches[1]);
|
750 |
-
$block = "<h$level>".$this->runSpanGamut($matches[2])."</h$level>";
|
751 |
-
return "\n" . $this->hashBlock($block) . "\n\n";
|
752 |
-
}
|
753 |
-
|
754 |
-
|
755 |
-
function doLists($text) {
|
756 |
-
#
|
757 |
-
# Form HTML ordered (numbered) and unordered (bulleted) lists.
|
758 |
-
#
|
759 |
-
$less_than_tab = $this->tab_width - 1;
|
760 |
-
|
761 |
-
# Re-usable patterns to match list item bullets and number markers:
|
762 |
-
$marker_ul_re = '[*+-]';
|
763 |
-
$marker_ol_re = '\d+[\.]';
|
764 |
-
$marker_any_re = "(?:$marker_ul_re|$marker_ol_re)";
|
765 |
-
|
766 |
-
$markers_relist = array(
|
767 |
-
$marker_ul_re => $marker_ol_re,
|
768 |
-
$marker_ol_re => $marker_ul_re,
|
769 |
-
);
|
770 |
-
|
771 |
-
foreach ($markers_relist as $marker_re => $other_marker_re) {
|
772 |
-
# Re-usable pattern to match any entirel ul or ol list:
|
773 |
-
$whole_list_re = '
|
774 |
-
( # $1 = whole list
|
775 |
-
( # $2
|
776 |
-
([ ]{0,'.$less_than_tab.'}) # $3 = number of spaces
|
777 |
-
('.$marker_re.') # $4 = first list item marker
|
778 |
-
[ ]+
|
779 |
-
)
|
780 |
-
(?s:.+?)
|
781 |
-
( # $5
|
782 |
-
\z
|
783 |
-
|
|
784 |
-
\n{2,}
|
785 |
-
(?=\S)
|
786 |
-
(?! # Negative lookahead for another list item marker
|
787 |
-
[ ]*
|
788 |
-
'.$marker_re.'[ ]+
|
789 |
-
)
|
790 |
-
|
|
791 |
-
(?= # Lookahead for another kind of list
|
792 |
-
\n
|
793 |
-
\3 # Must have the same indentation
|
794 |
-
'.$other_marker_re.'[ ]+
|
795 |
-
)
|
796 |
-
)
|
797 |
-
)
|
798 |
-
'; // mx
|
799 |
-
|
800 |
-
# We use a different prefix before nested lists than top-level lists.
|
801 |
-
# See extended comment in _ProcessListItems().
|
802 |
-
|
803 |
-
if ($this->list_level) {
|
804 |
-
$text = preg_replace_callback('{
|
805 |
-
^
|
806 |
-
'.$whole_list_re.'
|
807 |
-
}mx',
|
808 |
-
array(&$this, '_doLists_callback'), $text);
|
809 |
-
}
|
810 |
-
else {
|
811 |
-
$text = preg_replace_callback('{
|
812 |
-
(?:(?<=\n)\n|\A\n?) # Must eat the newline
|
813 |
-
'.$whole_list_re.'
|
814 |
-
}mx',
|
815 |
-
array(&$this, '_doLists_callback'), $text);
|
816 |
-
}
|
817 |
-
}
|
818 |
-
|
819 |
-
return $text;
|
820 |
-
}
|
821 |
-
function _doLists_callback($matches) {
|
822 |
-
# Re-usable patterns to match list item bullets and number markers:
|
823 |
-
$marker_ul_re = '[*+-]';
|
824 |
-
$marker_ol_re = '\d+[\.]';
|
825 |
-
$marker_any_re = "(?:$marker_ul_re|$marker_ol_re)";
|
826 |
-
|
827 |
-
$list = $matches[1];
|
828 |
-
$list_type = preg_match("/$marker_ul_re/", $matches[4]) ? "ul" : "ol";
|
829 |
-
|
830 |
-
$marker_any_re = ( $list_type == "ul" ? $marker_ul_re : $marker_ol_re );
|
831 |
-
|
832 |
-
$list .= "\n";
|
833 |
-
$result = $this->processListItems($list, $marker_any_re);
|
834 |
-
|
835 |
-
$result = $this->hashBlock("<$list_type>\n" . $result . "</$list_type>");
|
836 |
-
return "\n". $result ."\n\n";
|
837 |
-
}
|
838 |
-
|
839 |
-
var $list_level = 0;
|
840 |
-
|
841 |
-
function processListItems($list_str, $marker_any_re) {
|
842 |
-
#
|
843 |
-
# Process the contents of a single ordered or unordered list, splitting it
|
844 |
-
# into individual list items.
|
845 |
-
#
|
846 |
-
# The $this->list_level global keeps track of when we're inside a list.
|
847 |
-
# Each time we enter a list, we increment it; when we leave a list,
|
848 |
-
# we decrement. If it's zero, we're not in a list anymore.
|
849 |
-
#
|
850 |
-
# We do this because when we're not inside a list, we want to treat
|
851 |
-
# something like this:
|
852 |
-
#
|
853 |
-
# I recommend upgrading to version
|
854 |
-
# 8. Oops, now this line is treated
|
855 |
-
# as a sub-list.
|
856 |
-
#
|
857 |
-
# As a single paragraph, despite the fact that the second line starts
|
858 |
-
# with a digit-period-space sequence.
|
859 |
-
#
|
860 |
-
# Whereas when we're inside a list (or sub-list), that line will be
|
861 |
-
# treated as the start of a sub-list. What a kludge, huh? This is
|
862 |
-
# an aspect of Markdown's syntax that's hard to parse perfectly
|
863 |
-
# without resorting to mind-reading. Perhaps the solution is to
|
864 |
-
# change the syntax rules such that sub-lists must start with a
|
865 |
-
# starting cardinal number; e.g. "1." or "a.".
|
866 |
-
|
867 |
-
$this->list_level++;
|
868 |
-
|
869 |
-
# trim trailing blank lines:
|
870 |
-
$list_str = preg_replace("/\n{2,}\\z/", "\n", $list_str);
|
871 |
-
|
872 |
-
$list_str = preg_replace_callback('{
|
873 |
-
(\n)? # leading line = $1
|
874 |
-
(^[ ]*) # leading whitespace = $2
|
875 |
-
('.$marker_any_re.' # list marker and space = $3
|
876 |
-
(?:[ ]+|(?=\n)) # space only required if item is not empty
|
877 |
-
)
|
878 |
-
((?s:.*?)) # list item text = $4
|
879 |
-
(?:(\n+(?=\n))|\n) # tailing blank line = $5
|
880 |
-
(?= \n* (\z | \2 ('.$marker_any_re.') (?:[ ]+|(?=\n))))
|
881 |
-
}xm',
|
882 |
-
array(&$this, '_processListItems_callback'), $list_str);
|
883 |
-
|
884 |
-
$this->list_level--;
|
885 |
-
return $list_str;
|
886 |
-
}
|
887 |
-
function _processListItems_callback($matches) {
|
888 |
-
$item = $matches[4];
|
889 |
-
$leading_line =& $matches[1];
|
890 |
-
$leading_space =& $matches[2];
|
891 |
-
$marker_space = $matches[3];
|
892 |
-
$tailing_blank_line =& $matches[5];
|
893 |
-
|
894 |
-
if ($leading_line || $tailing_blank_line ||
|
895 |
-
preg_match('/\n{2,}/', $item))
|
896 |
-
{
|
897 |
-
# Replace marker with the appropriate whitespace indentation
|
898 |
-
$item = $leading_space . str_repeat(' ', strlen($marker_space)) . $item;
|
899 |
-
$item = $this->runBlockGamut($this->outdent($item)."\n");
|
900 |
-
}
|
901 |
-
else {
|
902 |
-
# Recursion for sub-lists:
|
903 |
-
$item = $this->doLists($this->outdent($item));
|
904 |
-
$item = preg_replace('/\n+$/', '', $item);
|
905 |
-
$item = $this->runSpanGamut($item);
|
906 |
-
}
|
907 |
-
|
908 |
-
return "<li>" . $item . "</li>\n";
|
909 |
-
}
|
910 |
-
|
911 |
-
|
912 |
-
function doCodeBlocks($text) {
|
913 |
-
#
|
914 |
-
# Process Markdown `<pre><code>` blocks.
|
915 |
-
#
|
916 |
-
$text = preg_replace_callback('{
|
917 |
-
(?:\n\n|\A\n?)
|
918 |
-
( # $1 = the code block -- one or more lines, starting with a space/tab
|
919 |
-
(?>
|
920 |
-
[ ]{'.$this->tab_width.'} # Lines must start with a tab or a tab-width of spaces
|
921 |
-
.*\n+
|
922 |
-
)+
|
923 |
-
)
|
924 |
-
((?=^[ ]{0,'.$this->tab_width.'}\S)|\Z) # Lookahead for non-space at line-start, or end of doc
|
925 |
-
}xm',
|
926 |
-
array(&$this, '_doCodeBlocks_callback'), $text);
|
927 |
-
|
928 |
-
return $text;
|
929 |
-
}
|
930 |
-
function _doCodeBlocks_callback($matches) {
|
931 |
-
$codeblock = $matches[1];
|
932 |
-
|
933 |
-
$codeblock = $this->outdent($codeblock);
|
934 |
-
$codeblock = htmlspecialchars($codeblock, ENT_NOQUOTES);
|
935 |
-
|
936 |
-
# trim leading newlines and trailing newlines
|
937 |
-
$codeblock = preg_replace('/\A\n+|\n+\z/', '', $codeblock);
|
938 |
-
|
939 |
-
$codeblock = "<pre><code>$codeblock\n</code></pre>";
|
940 |
-
return "\n\n".$this->hashBlock($codeblock)."\n\n";
|
941 |
-
}
|
942 |
-
|
943 |
-
|
944 |
-
function makeCodeSpan($code) {
|
945 |
-
#
|
946 |
-
# Create a code span markup for $code. Called from handleSpanToken.
|
947 |
-
#
|
948 |
-
$code = htmlspecialchars(trim($code), ENT_NOQUOTES);
|
949 |
-
return $this->hashPart("<code>$code</code>");
|
950 |
-
}
|
951 |
-
|
952 |
-
|
953 |
-
var $em_relist = array(
|
954 |
-
'' => '(?:(?<!\*)\*(?!\*)|(?<!_)_(?!_))(?=\S|$)(?![\.,:;]\s)',
|
955 |
-
'*' => '(?<=\S|^)(?<!\*)\*(?!\*)',
|
956 |
-
'_' => '(?<=\S|^)(?<!_)_(?!_)',
|
957 |
-
);
|
958 |
-
var $strong_relist = array(
|
959 |
-
'' => '(?:(?<!\*)\*\*(?!\*)|(?<!_)__(?!_))(?=\S|$)(?![\.,:;]\s)',
|
960 |
-
'**' => '(?<=\S|^)(?<!\*)\*\*(?!\*)',
|
961 |
-
'__' => '(?<=\S|^)(?<!_)__(?!_)',
|
962 |
-
);
|
963 |
-
var $em_strong_relist = array(
|
964 |
-
'' => '(?:(?<!\*)\*\*\*(?!\*)|(?<!_)___(?!_))(?=\S|$)(?![\.,:;]\s)',
|
965 |
-
'***' => '(?<=\S|^)(?<!\*)\*\*\*(?!\*)',
|
966 |
-
'___' => '(?<=\S|^)(?<!_)___(?!_)',
|
967 |
-
);
|
968 |
-
var $em_strong_prepared_relist;
|
969 |
-
|
970 |
-
function prepareItalicsAndBold() {
|
971 |
-
#
|
972 |
-
# Prepare regular expressions for searching emphasis tokens in any
|
973 |
-
# context.
|
974 |
-
#
|
975 |
-
foreach ($this->em_relist as $em => $em_re) {
|
976 |
-
foreach ($this->strong_relist as $strong => $strong_re) {
|
977 |
-
# Construct list of allowed token expressions.
|
978 |
-
$token_relist = array();
|
979 |
-
if (isset($this->em_strong_relist["$em$strong"])) {
|
980 |
-
$token_relist[] = $this->em_strong_relist["$em$strong"];
|
981 |
-
}
|
982 |
-
$token_relist[] = $em_re;
|
983 |
-
$token_relist[] = $strong_re;
|
984 |
-
|
985 |
-
# Construct master expression from list.
|
986 |
-
$token_re = '{('. implode('|', $token_relist) .')}';
|
987 |
-
$this->em_strong_prepared_relist["$em$strong"] = $token_re;
|
988 |
-
}
|
989 |
-
}
|
990 |
-
}
|
991 |
-
|
992 |
-
function doItalicsAndBold($text) {
|
993 |
-
$token_stack = array('');
|
994 |
-
$text_stack = array('');
|
995 |
-
$em = '';
|
996 |
-
$strong = '';
|
997 |
-
$tree_char_em = false;
|
998 |
-
|
999 |
-
while (1) {
|
1000 |
-
#
|
1001 |
-
# Get prepared regular expression for seraching emphasis tokens
|
1002 |
-
# in current context.
|
1003 |
-
#
|
1004 |
-
$token_re = $this->em_strong_prepared_relist["$em$strong"];
|
1005 |
-
|
1006 |
-
#
|
1007 |
-
# Each loop iteration search for the next emphasis token.
|
1008 |
-
# Each token is then passed to handleSpanToken.
|
1009 |
-
#
|
1010 |
-
$parts = preg_split($token_re, $text, 2, PREG_SPLIT_DELIM_CAPTURE);
|
1011 |
-
$text_stack[0] .= $parts[0];
|
1012 |
-
$token =& $parts[1];
|
1013 |
-
$text =& $parts[2];
|
1014 |
-
|
1015 |
-
if (empty($token)) {
|
1016 |
-
# Reached end of text span: empty stack without emitting.
|
1017 |
-
# any more emphasis.
|
1018 |
-
while ($token_stack[0]) {
|
1019 |
-
$text_stack[1] .= array_shift($token_stack);
|
1020 |
-
$text_stack[0] .= array_shift($text_stack);
|
1021 |
-
}
|
1022 |
-
break;
|
1023 |
-
}
|
1024 |
-
|
1025 |
-
$token_len = strlen($token);
|
1026 |
-
if ($tree_char_em) {
|
1027 |
-
# Reached closing marker while inside a three-char emphasis.
|
1028 |
-
if ($token_len == 3) {
|
1029 |
-
# Three-char closing marker, close em and strong.
|
1030 |
-
array_shift($token_stack);
|
1031 |
-
$span = array_shift($text_stack);
|
1032 |
-
$span = $this->runSpanGamut($span);
|
1033 |
-
$span = "<strong><em>$span</em></strong>";
|
1034 |
-
$text_stack[0] .= $this->hashPart($span);
|
1035 |
-
$em = '';
|
1036 |
-
$strong = '';
|
1037 |
-
} else {
|
1038 |
-
# Other closing marker: close one em or strong and
|
1039 |
-
# change current token state to match the other
|
1040 |
-
$token_stack[0] = str_repeat($token{0}, 3-$token_len);
|
1041 |
-
$tag = $token_len == 2 ? "strong" : "em";
|
1042 |
-
$span = $text_stack[0];
|
1043 |
-
$span = $this->runSpanGamut($span);
|
1044 |
-
$span = "<$tag>$span</$tag>";
|
1045 |
-
$text_stack[0] = $this->hashPart($span);
|
1046 |
-
$$tag = ''; # $$tag stands for $em or $strong
|
1047 |
-
}
|
1048 |
-
$tree_char_em = false;
|
1049 |
-
} else if ($token_len == 3) {
|
1050 |
-
if ($em) {
|
1051 |
-
# Reached closing marker for both em and strong.
|
1052 |
-
# Closing strong marker:
|
1053 |
-
for ($i = 0; $i < 2; ++$i) {
|
1054 |
-
$shifted_token = array_shift($token_stack);
|
1055 |
-
$tag = strlen($shifted_token) == 2 ? "strong" : "em";
|
1056 |
-
$span = array_shift($text_stack);
|
1057 |
-
$span = $this->runSpanGamut($span);
|
1058 |
-
$span = "<$tag>$span</$tag>";
|
1059 |
-
$text_stack[0] .= $this->hashPart($span);
|
1060 |
-
$$tag = ''; # $$tag stands for $em or $strong
|
1061 |
-
}
|
1062 |
-
} else {
|
1063 |
-
# Reached opening three-char emphasis marker. Push on token
|
1064 |
-
# stack; will be handled by the special condition above.
|
1065 |
-
$em = $token{0};
|
1066 |
-
$strong = "$em$em";
|
1067 |
-
array_unshift($token_stack, $token);
|
1068 |
-
array_unshift($text_stack, '');
|
1069 |
-
$tree_char_em = true;
|
1070 |
-
}
|
1071 |
-
} else if ($token_len == 2) {
|
1072 |
-
if ($strong) {
|
1073 |
-
# Unwind any dangling emphasis marker:
|
1074 |
-
if (strlen($token_stack[0]) == 1) {
|
1075 |
-
$text_stack[1] .= array_shift($token_stack);
|
1076 |
-
$text_stack[0] .= array_shift($text_stack);
|
1077 |
-
}
|
1078 |
-
# Closing strong marker:
|
1079 |
-
array_shift($token_stack);
|
1080 |
-
$span = array_shift($text_stack);
|
1081 |
-
$span = $this->runSpanGamut($span);
|
1082 |
-
$span = "<strong>$span</strong>";
|
1083 |
-
$text_stack[0] .= $this->hashPart($span);
|
1084 |
-
$strong = '';
|
1085 |
-
} else {
|
1086 |
-
array_unshift($token_stack, $token);
|
1087 |
-
array_unshift($text_stack, '');
|
1088 |
-
$strong = $token;
|
1089 |
-
}
|
1090 |
-
} else {
|
1091 |
-
# Here $token_len == 1
|
1092 |
-
if ($em) {
|
1093 |
-
if (strlen($token_stack[0]) == 1) {
|
1094 |
-
# Closing emphasis marker:
|
1095 |
-
array_shift($token_stack);
|
1096 |
-
$span = array_shift($text_stack);
|
1097 |
-
$span = $this->runSpanGamut($span);
|
1098 |
-
$span = "<em>$span</em>";
|
1099 |
-
$text_stack[0] .= $this->hashPart($span);
|
1100 |
-
$em = '';
|
1101 |
-
} else {
|
1102 |
-
$text_stack[0] .= $token;
|
1103 |
-
}
|
1104 |
-
} else {
|
1105 |
-
array_unshift($token_stack, $token);
|
1106 |
-
array_unshift($text_stack, '');
|
1107 |
-
$em = $token;
|
1108 |
-
}
|
1109 |
-
}
|
1110 |
-
}
|
1111 |
-
return $text_stack[0];
|
1112 |
-
}
|
1113 |
-
|
1114 |
-
|
1115 |
-
function doBlockQuotes($text) {
|
1116 |
-
$text = preg_replace_callback('/
|
1117 |
-
( # Wrap whole match in $1
|
1118 |
-
(?>
|
1119 |
-
^[ ]*>[ ]? # ">" at the start of a line
|
1120 |
-
.+\n # rest of the first line
|
1121 |
-
(.+\n)* # subsequent consecutive lines
|
1122 |
-
\n* # blanks
|
1123 |
-
)+
|
1124 |
-
)
|
1125 |
-
/xm',
|
1126 |
-
array(&$this, '_doBlockQuotes_callback'), $text);
|
1127 |
-
|
1128 |
-
return $text;
|
1129 |
-
}
|
1130 |
-
function _doBlockQuotes_callback($matches) {
|
1131 |
-
$bq = $matches[1];
|
1132 |
-
# trim one level of quoting - trim whitespace-only lines
|
1133 |
-
$bq = preg_replace('/^[ ]*>[ ]?|^[ ]+$/m', '', $bq);
|
1134 |
-
$bq = $this->runBlockGamut($bq); # recurse
|
1135 |
-
|
1136 |
-
$bq = preg_replace('/^/m', " ", $bq);
|
1137 |
-
# These leading spaces cause problem with <pre> content,
|
1138 |
-
# so we need to fix that:
|
1139 |
-
$bq = preg_replace_callback('{(\s*<pre>.+?</pre>)}sx',
|
1140 |
-
array(&$this, '_doBlockQuotes_callback2'), $bq);
|
1141 |
-
|
1142 |
-
return "\n". $this->hashBlock("<blockquote>\n$bq\n</blockquote>")."\n\n";
|
1143 |
-
}
|
1144 |
-
function _doBlockQuotes_callback2($matches) {
|
1145 |
-
$pre = $matches[1];
|
1146 |
-
$pre = preg_replace('/^ /m', '', $pre);
|
1147 |
-
return $pre;
|
1148 |
-
}
|
1149 |
-
|
1150 |
-
|
1151 |
-
function formParagraphs($text) {
|
1152 |
-
#
|
1153 |
-
# Params:
|
1154 |
-
# $text - string to process with html <p> tags
|
1155 |
-
#
|
1156 |
-
# Strip leading and trailing lines:
|
1157 |
-
$text = preg_replace('/\A\n+|\n+\z/', '', $text);
|
1158 |
-
|
1159 |
-
$grafs = preg_split('/\n{2,}/', $text, -1, PREG_SPLIT_NO_EMPTY);
|
1160 |
-
|
1161 |
-
#
|
1162 |
-
# Wrap <p> tags and unhashify HTML blocks
|
1163 |
-
#
|
1164 |
-
foreach ($grafs as $key => $value) {
|
1165 |
-
if (!preg_match('/^B\x1A[0-9]+B$/', $value)) {
|
1166 |
-
# Is a paragraph.
|
1167 |
-
$value = $this->runSpanGamut($value);
|
1168 |
-
$value = preg_replace('/^([ ]*)/', "<p>", $value);
|
1169 |
-
$value .= "</p>";
|
1170 |
-
$grafs[$key] = $this->unhash($value);
|
1171 |
-
}
|
1172 |
-
else {
|
1173 |
-
# Is a block.
|
1174 |
-
# Modify elements of @grafs in-place...
|
1175 |
-
$graf = $value;
|
1176 |
-
$block = $this->html_hashes[$graf];
|
1177 |
-
$graf = $block;
|
1178 |
-
// if (preg_match('{
|
1179 |
-
// \A
|
1180 |
-
// ( # $1 = <div> tag
|
1181 |
-
// <div \s+
|
1182 |
-
// [^>]*
|
1183 |
-
// \b
|
1184 |
-
// markdown\s*=\s* ([\'"]) # $2 = attr quote char
|
1185 |
-
// 1
|
1186 |
-
// \2
|
1187 |
-
// [^>]*
|
1188 |
-
// >
|
1189 |
-
// )
|
1190 |
-
// ( # $3 = contents
|
1191 |
-
// .*
|
1192 |
-
// )
|
1193 |
-
// (</div>) # $4 = closing tag
|
1194 |
-
// \z
|
1195 |
-
// }xs', $block, $matches))
|
1196 |
-
// {
|
1197 |
-
// list(, $div_open, , $div_content, $div_close) = $matches;
|
1198 |
-
//
|
1199 |
-
// # We can't call Markdown(), because that resets the hash;
|
1200 |
-
// # that initialization code should be pulled into its own sub, though.
|
1201 |
-
// $div_content = $this->hashHTMLBlocks($div_content);
|
1202 |
-
//
|
1203 |
-
// # Run document gamut methods on the content.
|
1204 |
-
// foreach ($this->document_gamut as $method => $priority) {
|
1205 |
-
// $div_content = $this->$method($div_content);
|
1206 |
-
// }
|
1207 |
-
//
|
1208 |
-
// $div_open = preg_replace(
|
1209 |
-
// '{\smarkdown\s*=\s*([\'"]).+?\1}', '', $div_open);
|
1210 |
-
//
|
1211 |
-
// $graf = $div_open . "\n" . $div_content . "\n" . $div_close;
|
1212 |
-
// }
|
1213 |
-
$grafs[$key] = $graf;
|
1214 |
-
}
|
1215 |
-
}
|
1216 |
-
|
1217 |
-
return implode("\n\n", $grafs);
|
1218 |
-
}
|
1219 |
-
|
1220 |
-
|
1221 |
-
function encodeAttribute($text) {
|
1222 |
-
#
|
1223 |
-
# Encode text for a double-quoted HTML attribute. This function
|
1224 |
-
# is *not* suitable for attributes enclosed in single quotes.
|
1225 |
-
#
|
1226 |
-
$text = $this->encodeAmpsAndAngles($text);
|
1227 |
-
$text = str_replace('"', '"', $text);
|
1228 |
-
return $text;
|
1229 |
-
}
|
1230 |
-
|
1231 |
-
|
1232 |
-
function encodeAmpsAndAngles($text) {
|
1233 |
-
#
|
1234 |
-
# Smart processing for ampersands and angle brackets that need to
|
1235 |
-
# be encoded. Valid character entities are left alone unless the
|
1236 |
-
# no-entities mode is set.
|
1237 |
-
#
|
1238 |
-
if ($this->no_entities) {
|
1239 |
-
$text = str_replace('&', '&', $text);
|
1240 |
-
} else {
|
1241 |
-
# Ampersand-encoding based entirely on Nat Irons's Amputator
|
1242 |
-
# MT plugin: <http://bumppo.net/projects/amputator/>
|
1243 |
-
$text = preg_replace('/&(?!#?[xX]?(?:[0-9a-fA-F]+|\w+);)/',
|
1244 |
-
'&', $text);;
|
1245 |
-
}
|
1246 |
-
# Encode remaining <'s
|
1247 |
-
$text = str_replace('<', '<', $text);
|
1248 |
-
|
1249 |
-
return $text;
|
1250 |
-
}
|
1251 |
-
|
1252 |
-
|
1253 |
-
function doAutoLinks($text) {
|
1254 |
-
$text = preg_replace_callback('{<((https?|ftp|dict):[^\'">\s]+)>}i',
|
1255 |
-
array(&$this, '_doAutoLinks_url_callback'), $text);
|
1256 |
-
|
1257 |
-
# Email addresses: <address@domain.foo>
|
1258 |
-
$text = preg_replace_callback('{
|
1259 |
-
<
|
1260 |
-
(?:mailto:)?
|
1261 |
-
(
|
1262 |
-
(?:
|
1263 |
-
[-!#$%&\'*+/=?^_`.{|}~\w\x80-\xFF]+
|
1264 |
-
|
|
1265 |
-
".*?"
|
1266 |
-
)
|
1267 |
-
\@
|
1268 |
-
(?:
|
1269 |
-
[-a-z0-9\x80-\xFF]+(\.[-a-z0-9\x80-\xFF]+)*\.[a-z]+
|
1270 |
-
|
|
1271 |
-
\[[\d.a-fA-F:]+\] # IPv4 & IPv6
|
1272 |
-
)
|
1273 |
-
)
|
1274 |
-
>
|
1275 |
-
}xi',
|
1276 |
-
array(&$this, '_doAutoLinks_email_callback'), $text);
|
1277 |
-
$text = preg_replace_callback('{<(tel:([^\'">\s]+))>}i',array(&$this, '_doAutoLinks_tel_callback'), $text);
|
1278 |
-
|
1279 |
-
return $text;
|
1280 |
-
}
|
1281 |
-
function _doAutoLinks_tel_callback($matches) {
|
1282 |
-
$url = $this->encodeAttribute($matches[1]);
|
1283 |
-
$tel = $this->encodeAttribute($matches[2]);
|
1284 |
-
$link = "<a href=\"$url\">$tel</a>";
|
1285 |
-
return $this->hashPart($link);
|
1286 |
-
}
|
1287 |
-
function _doAutoLinks_url_callback($matches) {
|
1288 |
-
$url = $this->encodeAttribute($matches[1]);
|
1289 |
-
$link = "<a href=\"$url\">$url</a>";
|
1290 |
-
return $this->hashPart($link);
|
1291 |
-
}
|
1292 |
-
function _doAutoLinks_email_callback($matches) {
|
1293 |
-
$address = $matches[1];
|
1294 |
-
$link = $this->encodeEmailAddress($address);
|
1295 |
-
return $this->hashPart($link);
|
1296 |
-
}
|
1297 |
-
|
1298 |
-
|
1299 |
-
function encodeEmailAddress($addr) {
|
1300 |
-
#
|
1301 |
-
# Input: an email address, e.g. "foo@example.com"
|
1302 |
-
#
|
1303 |
-
# Output: the email address as a mailto link, with each character
|
1304 |
-
# of the address encoded as either a decimal or hex entity, in
|
1305 |
-
# the hopes of foiling most address harvesting spam bots. E.g.:
|
1306 |
-
#
|
1307 |
-
# <p><a href="mailto:foo
|
1308 |
-
# @example.co
|
1309 |
-
# m">foo@exampl
|
1310 |
-
# e.com</a></p>
|
1311 |
-
#
|
1312 |
-
# Based by a filter by Matthew Wickline, posted to BBEdit-Talk.
|
1313 |
-
# With some optimizations by Milian Wolff.
|
1314 |
-
#
|
1315 |
-
$addr = "mailto:" . $addr;
|
1316 |
-
$chars = preg_split('/(?<!^)(?!$)/', $addr);
|
1317 |
-
$seed = (int)abs(crc32($addr) / strlen($addr)); # Deterministic seed.
|
1318 |
-
|
1319 |
-
foreach ($chars as $key => $char) {
|
1320 |
-
$ord = ord($char);
|
1321 |
-
# Ignore non-ascii chars.
|
1322 |
-
if ($ord < 128) {
|
1323 |
-
$r = ($seed * (1 + $key)) % 100; # Pseudo-random function.
|
1324 |
-
# roughly 10% raw, 45% hex, 45% dec
|
1325 |
-
# '@' *must* be encoded. I insist.
|
1326 |
-
if ($r > 90 && $char != '@') /* do nothing */;
|
1327 |
-
else if ($r < 45) $chars[$key] = '&#x'.dechex($ord).';';
|
1328 |
-
else $chars[$key] = '&#'.$ord.';';
|
1329 |
-
}
|
1330 |
-
}
|
1331 |
-
|
1332 |
-
$addr = implode('', $chars);
|
1333 |
-
$text = implode('', array_slice($chars, 7)); # text without `mailto:`
|
1334 |
-
$addr = "<a href=\"$addr\">$text</a>";
|
1335 |
-
|
1336 |
-
return $addr;
|
1337 |
-
}
|
1338 |
-
|
1339 |
-
|
1340 |
-
function parseSpan($str) {
|
1341 |
-
#
|
1342 |
-
# Take the string $str and parse it into tokens, hashing embeded HTML,
|
1343 |
-
# escaped characters and handling code spans.
|
1344 |
-
#
|
1345 |
-
$output = '';
|
1346 |
-
|
1347 |
-
$span_re = '{
|
1348 |
-
(
|
1349 |
-
\\\\'.$this->escape_chars_re.'
|
1350 |
-
|
|
1351 |
-
(?<![`\\\\])
|
1352 |
-
`+ # code span marker
|
1353 |
-
'.( $this->no_markup ? '' : '
|
1354 |
-
|
|
1355 |
-
<!-- .*? --> # comment
|
1356 |
-
|
|
1357 |
-
<\?.*?\?> | <%.*?%> # processing instruction
|
1358 |
-
|
|
1359 |
-
<[!$]?[-a-zA-Z0-9:_]+ # regular tags
|
1360 |
-
(?>
|
1361 |
-
\s
|
1362 |
-
(?>[^"\'>]+|"[^"]*"|\'[^\']*\')*
|
1363 |
-
)?
|
1364 |
-
>
|
1365 |
-
|
|
1366 |
-
<[-a-zA-Z0-9:_]+\s*/> # xml-style empty tag
|
1367 |
-
|
|
1368 |
-
</[-a-zA-Z0-9:_]+\s*> # closing tag
|
1369 |
-
').'
|
1370 |
-
)
|
1371 |
-
}xs';
|
1372 |
-
|
1373 |
-
while (1) {
|
1374 |
-
#
|
1375 |
-
# Each loop iteration seach for either the next tag, the next
|
1376 |
-
# openning code span marker, or the next escaped character.
|
1377 |
-
# Each token is then passed to handleSpanToken.
|
1378 |
-
#
|
1379 |
-
$parts = preg_split($span_re, $str, 2, PREG_SPLIT_DELIM_CAPTURE);
|
1380 |
-
|
1381 |
-
# Create token from text preceding tag.
|
1382 |
-
if ($parts[0] != "") {
|
1383 |
-
$output .= $parts[0];
|
1384 |
-
}
|
1385 |
-
|
1386 |
-
# Check if we reach the end.
|
1387 |
-
if (isset($parts[1])) {
|
1388 |
-
$output .= $this->handleSpanToken($parts[1], $parts[2]);
|
1389 |
-
$str = $parts[2];
|
1390 |
-
}
|
1391 |
-
else {
|
1392 |
-
break;
|
1393 |
-
}
|
1394 |
-
}
|
1395 |
-
|
1396 |
-
return $output;
|
1397 |
-
}
|
1398 |
-
|
1399 |
-
|
1400 |
-
function handleSpanToken($token, &$str) {
|
1401 |
-
#
|
1402 |
-
# Handle $token provided by parseSpan by determining its nature and
|
1403 |
-
# returning the corresponding value that should replace it.
|
1404 |
-
#
|
1405 |
-
switch ($token{0}) {
|
1406 |
-
case "\\":
|
1407 |
-
return $this->hashPart("&#". ord($token{1}). ";");
|
1408 |
-
case "`":
|
1409 |
-
# Search for end marker in remaining text.
|
1410 |
-
if (preg_match('/^(.*?[^`])'.preg_quote($token).'(?!`)(.*)$/sm',
|
1411 |
-
$str, $matches))
|
1412 |
-
{
|
1413 |
-
$str = $matches[2];
|
1414 |
-
$codespan = $this->makeCodeSpan($matches[1]);
|
1415 |
-
return $this->hashPart($codespan);
|
1416 |
-
}
|
1417 |
-
return $token; // return as text since no ending marker found.
|
1418 |
-
default:
|
1419 |
-
return $this->hashPart($token);
|
1420 |
-
}
|
1421 |
-
}
|
1422 |
-
|
1423 |
-
|
1424 |
-
function outdent($text) {
|
1425 |
-
#
|
1426 |
-
# Remove one level of line-leading tabs or spaces
|
1427 |
-
#
|
1428 |
-
return preg_replace('/^(\t|[ ]{1,'.$this->tab_width.'})/m', '', $text);
|
1429 |
-
}
|
1430 |
-
|
1431 |
-
|
1432 |
-
# String length function for detab. `_initDetab` will create a function to
|
1433 |
-
# hanlde UTF-8 if the default function does not exist.
|
1434 |
-
var $utf8_strlen = 'mb_strlen';
|
1435 |
-
|
1436 |
-
function detab($text) {
|
1437 |
-
#
|
1438 |
-
# Replace tabs with the appropriate amount of space.
|
1439 |
-
#
|
1440 |
-
# For each line we separate the line in blocks delemited by
|
1441 |
-
# tab characters. Then we reconstruct every line by adding the
|
1442 |
-
# appropriate number of space between each blocks.
|
1443 |
-
|
1444 |
-
$text = preg_replace_callback('/^.*\t.*$/m',
|
1445 |
-
array(&$this, '_detab_callback'), $text);
|
1446 |
-
|
1447 |
-
return $text;
|
1448 |
-
}
|
1449 |
-
function _detab_callback($matches) {
|
1450 |
-
$line = $matches[0];
|
1451 |
-
$strlen = $this->utf8_strlen; # strlen function for UTF-8.
|
1452 |
-
|
1453 |
-
# Split in blocks.
|
1454 |
-
$blocks = explode("\t", $line);
|
1455 |
-
# Add each blocks to the line.
|
1456 |
-
$line = $blocks[0];
|
1457 |
-
unset($blocks[0]); # Do not add first block twice.
|
1458 |
-
foreach ($blocks as $block) {
|
1459 |
-
# Calculate amount of space, insert spaces, insert block.
|
1460 |
-
$amount = $this->tab_width -
|
1461 |
-
$strlen($line, 'UTF-8') % $this->tab_width;
|
1462 |
-
$line .= str_repeat(" ", $amount) . $block;
|
1463 |
-
}
|
1464 |
-
return $line;
|
1465 |
-
}
|
1466 |
-
function _initDetab() {
|
1467 |
-
#
|
1468 |
-
# Check for the availability of the function in the `utf8_strlen` property
|
1469 |
-
# (initially `mb_strlen`). If the function is not available, create a
|
1470 |
-
# function that will loosely count the number of UTF-8 characters with a
|
1471 |
-
# regular expression.
|
1472 |
-
#
|
1473 |
-
if (function_exists($this->utf8_strlen)) return;
|
1474 |
-
$this->utf8_strlen = create_function('$text', 'return preg_match_all(
|
1475 |
-
"/[\\\\x00-\\\\xBF]|[\\\\xC0-\\\\xFF][\\\\x80-\\\\xBF]*/",
|
1476 |
-
$text, $m);');
|
1477 |
-
}
|
1478 |
-
|
1479 |
-
|
1480 |
-
function unhash($text) {
|
1481 |
-
#
|
1482 |
-
# Swap back in all the tags hashed by _HashHTMLBlocks.
|
1483 |
-
#
|
1484 |
-
return preg_replace_callback('/(.)\x1A[0-9]+\1/',
|
1485 |
-
array(&$this, '_unhash_callback'), $text);
|
1486 |
-
}
|
1487 |
-
function _unhash_callback($matches) {
|
1488 |
-
return $this->html_hashes[$matches[0]];
|
1489 |
-
}
|
1490 |
-
|
1491 |
-
}
|
1492 |
-
|
1493 |
-
/*
|
1494 |
-
|
1495 |
-
PHP Markdown
|
1496 |
-
============
|
1497 |
-
|
1498 |
-
Description
|
1499 |
-
-----------
|
1500 |
-
|
1501 |
-
This is a PHP translation of the original Markdown formatter written in
|
1502 |
-
Perl by John Gruber.
|
1503 |
-
|
1504 |
-
Markdown is a text-to-HTML filter; it translates an easy-to-read /
|
1505 |
-
easy-to-write structured text format into HTML. Markdown's text format
|
1506 |
-
is mostly similar to that of plain text email, and supports features such
|
1507 |
-
as headers, *emphasis*, code blocks, blockquotes, and links.
|
1508 |
-
|
1509 |
-
Markdown's syntax is designed not as a generic markup language, but
|
1510 |
-
specifically to serve as a front-end to (X)HTML. You can use span-level
|
1511 |
-
HTML tags anywhere in a Markdown document, and you can use block level
|
1512 |
-
HTML tags (like <div> and <table> as well).
|
1513 |
-
|
1514 |
-
For more information about Markdown's syntax, see:
|
1515 |
-
|
1516 |
-
<http://daringfireball.net/projects/markdown/>
|
1517 |
-
|
1518 |
-
|
1519 |
-
Bugs
|
1520 |
-
----
|
1521 |
-
|
1522 |
-
To file bug reports please send email to:
|
1523 |
-
|
1524 |
-
<michel.fortin@michelf.ca>
|
1525 |
-
|
1526 |
-
Please include with your report: (1) the example input; (2) the output you
|
1527 |
-
expected; (3) the output Markdown actually produced.
|
1528 |
-
|
1529 |
-
|
1530 |
-
Version History
|
1531 |
-
---------------
|
1532 |
-
|
1533 |
-
See the readme file for detailed release notes for this version.
|
1534 |
-
|
1535 |
-
|
1536 |
-
Copyright and License
|
1537 |
-
---------------------
|
1538 |
-
|
1539 |
-
PHP Markdown
|
1540 |
-
Copyright (c) 2004-2013 Michel Fortin
|
1541 |
-
<http://michelf.ca/>
|
1542 |
-
All rights reserved.
|
1543 |
-
|
1544 |
-
Based on Markdown
|
1545 |
-
Copyright (c) 2003-2006 John Gruber
|
1546 |
-
<http://daringfireball.net/>
|
1547 |
-
All rights reserved.
|
1548 |
-
|
1549 |
-
Redistribution and use in source and binary forms, with or without
|
1550 |
-
modification, are permitted provided that the following conditions are
|
1551 |
-
met:
|
1552 |
-
|
1553 |
-
* Redistributions of source code must retain the above copyright notice,
|
1554 |
-
this list of conditions and the following disclaimer.
|
1555 |
-
|
1556 |
-
* Redistributions in binary form must reproduce the above copyright
|
1557 |
-
notice, this list of conditions and the following disclaimer in the
|
1558 |
-
documentation and/or other materials provided with the distribution.
|
1559 |
-
|
1560 |
-
* Neither the name "Markdown" nor the names of its contributors may
|
1561 |
-
be used to endorse or promote products derived from this software
|
1562 |
-
without specific prior written permission.
|
1563 |
-
|
1564 |
-
This software is provided by the copyright holders and contributors "as
|
1565 |
-
is" and any express or implied warranties, including, but not limited
|
1566 |
-
to, the implied warranties of merchantability and fitness for a
|
1567 |
-
particular purpose are disclaimed. In no event shall the copyright owner
|
1568 |
-
or contributors be liable for any direct, indirect, incidental, special,
|
1569 |
-
exemplary, or consequential damages (including, but not limited to,
|
1570 |
-
procurement of substitute goods or services; loss of use, data, or
|
1571 |
-
profits; or business interruption) however caused and on any theory of
|
1572 |
-
liability, whether in contract, strict liability, or tort (including
|
1573 |
-
negligence or otherwise) arising in any way out of the use of this
|
1574 |
-
software, even if advised of the possibility of such damage.
|
1575 |
-
|
1576 |
-
*/
|
1577 |
-
?>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
base/inc/post-selector.php
CHANGED
@@ -50,7 +50,7 @@ function siteorigin_widget_post_selector_process_query($query){
|
|
50 |
|
51 |
if(!empty($query['post__in'])) {
|
52 |
$query['post__in'] = explode(',', $query['post__in']);
|
53 |
-
array_map('intval', $query['post__in']);
|
54 |
}
|
55 |
|
56 |
if(!empty($query['tax_query'])) {
|
@@ -97,6 +97,12 @@ function siteorigin_widget_post_selector_process_query($query){
|
|
97 |
if ( ! empty( $query['additional'] ) ) {
|
98 |
$query = wp_parse_args( $query['additional'], $query );
|
99 |
unset( $query['additional'] );
|
|
|
|
|
|
|
|
|
|
|
|
|
100 |
}
|
101 |
|
102 |
return $query;
|
@@ -181,7 +187,7 @@ function siteorigin_widget_post_selector_form_fields(){
|
|
181 |
'' => __('Default', 'so-widgets-bundle'),
|
182 |
'ignore' => __('Ignore sticky', 'so-widgets-bundle'),
|
183 |
'exclude' => __('Exclude sticky', 'so-widgets-bundle'),
|
184 |
-
'only' => __('
|
185 |
);
|
186 |
foreach($sticky as $id => $v) {
|
187 |
$return['sticky'] .= '<option value="' . $id . '">' . $v . '</option>';
|
50 |
|
51 |
if(!empty($query['post__in'])) {
|
52 |
$query['post__in'] = explode(',', $query['post__in']);
|
53 |
+
$query['post__in'] = array_map('intval', $query['post__in']);
|
54 |
}
|
55 |
|
56 |
if(!empty($query['tax_query'])) {
|
97 |
if ( ! empty( $query['additional'] ) ) {
|
98 |
$query = wp_parse_args( $query['additional'], $query );
|
99 |
unset( $query['additional'] );
|
100 |
+
|
101 |
+
// If post_not_in is set, we need to convert it to an array to avoid issues with the query.
|
102 |
+
if( !empty( $query['post__not_in'] ) && !is_array( $query['post__not_in'] ) ){
|
103 |
+
$query['post__not_in'] = explode( ',', $query['post__not_in'] );
|
104 |
+
$query['post__not_in'] = array_map( 'intval', $query['post__not_in'] );
|
105 |
+
}
|
106 |
}
|
107 |
|
108 |
return $query;
|
187 |
'' => __('Default', 'so-widgets-bundle'),
|
188 |
'ignore' => __('Ignore sticky', 'so-widgets-bundle'),
|
189 |
'exclude' => __('Exclude sticky', 'so-widgets-bundle'),
|
190 |
+
'only' => __('Only sticky', 'so-widgets-bundle'),
|
191 |
);
|
192 |
foreach($sticky as $id => $v) {
|
193 |
$return['sticky'] .= '<option value="' . $id . '">' . $v . '</option>';
|
base/siteorigin-widget.class.php
CHANGED
@@ -143,7 +143,10 @@ abstract class SiteOrigin_Widget extends WP_Widget {
|
|
143 |
*/
|
144 |
public function widget( $args, $instance ) {
|
145 |
if( empty( $this->form_options ) ) {
|
146 |
-
$
|
|
|
|
|
|
|
147 |
}
|
148 |
|
149 |
$instance = $this->modify_instance( $instance );
|
@@ -160,7 +163,7 @@ abstract class SiteOrigin_Widget extends WP_Widget {
|
|
160 |
) );
|
161 |
|
162 |
// Add any missing default values to the instance
|
163 |
-
$instance = $this->add_defaults( $
|
164 |
|
165 |
$css_name = $this->generate_and_enqueue_instance_styles( $instance );
|
166 |
$this->enqueue_frontend_scripts( $instance );
|
@@ -230,15 +233,18 @@ abstract class SiteOrigin_Widget extends WP_Widget {
|
|
230 |
* @return string The CSS name
|
231 |
*/
|
232 |
function generate_and_enqueue_instance_styles( $instance ) {
|
233 |
-
if( empty( $
|
234 |
-
$
|
|
|
|
|
|
|
235 |
}
|
236 |
|
237 |
// We'll assume empty instances don't have styles
|
238 |
if( empty($instance) ) return;
|
239 |
|
240 |
// Make sure all the default values are in place
|
241 |
-
$instance = $this->add_defaults( $
|
242 |
|
243 |
$this->current_instance = $instance;
|
244 |
$style = $this->get_style_name( $instance );
|
@@ -792,38 +798,45 @@ abstract class SiteOrigin_Widget extends WP_Widget {
|
|
792 |
$less = apply_filters( 'siteorigin_widgets_styles', $less, $this->widget_class, $instance );
|
793 |
$less = apply_filters( 'siteorigin_widgets_less_' . $this->id_base, $less, $instance, $this );
|
794 |
|
795 |
-
$
|
796 |
-
$hash = $this->get_style_hash( $instance );
|
797 |
-
$css_name = $this->id_base . '-' . $style . '-' . $hash;
|
798 |
|
799 |
-
|
800 |
-
|
801 |
-
|
802 |
-
$
|
803 |
-
$less = preg_replace( '/^@import.+/m', '', $less );
|
804 |
-
}
|
805 |
|
806 |
-
|
|
|
|
|
|
|
|
|
|
|
807 |
|
808 |
-
|
809 |
-
$lc_functions = new SiteOrigin_Widgets_Less_Functions($this, $instance);
|
810 |
-
$lc_functions->registerFunctions( $compiler );
|
811 |
|
812 |
-
|
813 |
-
|
814 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
815 |
}
|
816 |
-
}
|
817 |
-
catch ( Exception $e ) {
|
818 |
-
$css = '';
|
819 |
-
}
|
820 |
|
821 |
-
|
822 |
-
|
823 |
|
824 |
-
|
825 |
-
|
826 |
-
|
|
|
827 |
|
828 |
return apply_filters( 'siteorigin_widgets_instance_css', $css, $instance, $this );
|
829 |
}
|
@@ -1006,10 +1019,10 @@ abstract class SiteOrigin_Widget extends WP_Widget {
|
|
1006 |
* @deprecated Will be removed in version 2.0
|
1007 |
*/
|
1008 |
function parse_markdown( $markdown ){
|
1009 |
-
if( !class_exists('
|
1010 |
-
$parser = new
|
1011 |
|
1012 |
-
return $parser->
|
1013 |
}
|
1014 |
|
1015 |
/**
|
143 |
*/
|
144 |
public function widget( $args, $instance ) {
|
145 |
if( empty( $this->form_options ) ) {
|
146 |
+
$form_options = $this->get_widget_form();
|
147 |
+
}
|
148 |
+
else {
|
149 |
+
$form_options = $this->modify_form( $this->form_options );
|
150 |
}
|
151 |
|
152 |
$instance = $this->modify_instance( $instance );
|
163 |
) );
|
164 |
|
165 |
// Add any missing default values to the instance
|
166 |
+
$instance = $this->add_defaults( $form_options, $instance );
|
167 |
|
168 |
$css_name = $this->generate_and_enqueue_instance_styles( $instance );
|
169 |
$this->enqueue_frontend_scripts( $instance );
|
233 |
* @return string The CSS name
|
234 |
*/
|
235 |
function generate_and_enqueue_instance_styles( $instance ) {
|
236 |
+
if( empty( $form_options ) ) {
|
237 |
+
$form_options = $this->get_widget_form();
|
238 |
+
}
|
239 |
+
else {
|
240 |
+
$form_options = $this->modify_form( $this->form_options );
|
241 |
}
|
242 |
|
243 |
// We'll assume empty instances don't have styles
|
244 |
if( empty($instance) ) return;
|
245 |
|
246 |
// Make sure all the default values are in place
|
247 |
+
$instance = $this->add_defaults( $form_options, $instance );
|
248 |
|
249 |
$this->current_instance = $instance;
|
250 |
$style = $this->get_style_name( $instance );
|
798 |
$less = apply_filters( 'siteorigin_widgets_styles', $less, $this->widget_class, $instance );
|
799 |
$less = apply_filters( 'siteorigin_widgets_less_' . $this->id_base, $less, $instance, $this );
|
800 |
|
801 |
+
$css = '';
|
|
|
|
|
802 |
|
803 |
+
if( ! empty( $less ) ) {
|
804 |
+
$style = $this->get_style_name( $instance );
|
805 |
+
$hash = $this->get_style_hash( $instance );
|
806 |
+
$css_name = $this->id_base . '-' . $style . '-' . $hash;
|
|
|
|
|
807 |
|
808 |
+
//we assume that any remaining @imports are plain css imports and should be kept outside selectors
|
809 |
+
$css_imports = '';
|
810 |
+
if ( preg_match_all( '/^@import.+/m', $less, $imports ) ) {
|
811 |
+
$css_imports = implode( "\n", $imports[0] );
|
812 |
+
$less = preg_replace( '/^@import.+/m', '', $less );
|
813 |
+
}
|
814 |
|
815 |
+
$less = $css_imports . "\n\n" . '.so-widget-'.$css_name." { \n".$less."\n } ";
|
|
|
|
|
816 |
|
817 |
+
$compiler = new lessc();
|
818 |
+
$lc_functions = new SiteOrigin_Widgets_Less_Functions($this, $instance);
|
819 |
+
$lc_functions->registerFunctions( $compiler );
|
820 |
+
$compiler = apply_filters( 'siteorigin_widgets_less_compiler', $compiler, $instance, $this );
|
821 |
+
|
822 |
+
try {
|
823 |
+
if( method_exists( $compiler, 'compile' ) ) {
|
824 |
+
$css = $compiler->compile( $less );
|
825 |
+
}
|
826 |
+
}
|
827 |
+
catch ( Exception $e ) {
|
828 |
+
if( defined( 'SITEORIGIN_WIDGETS_DEBUG' ) && SITEORIGIN_WIDGETS_DEBUG ) {
|
829 |
+
throw $e;
|
830 |
+
}
|
831 |
}
|
|
|
|
|
|
|
|
|
832 |
|
833 |
+
// Remove any attributes with default as the value
|
834 |
+
$css = preg_replace('/[a-zA-Z\-]+ *: *default *;/', '', $css);
|
835 |
|
836 |
+
// Remove any empty CSS
|
837 |
+
$css = preg_replace('/[^{}]*\{\s*\}/m', '', $css);
|
838 |
+
$css = trim($css);
|
839 |
+
}
|
840 |
|
841 |
return apply_filters( 'siteorigin_widgets_instance_css', $css, $instance, $this );
|
842 |
}
|
1019 |
* @deprecated Will be removed in version 2.0
|
1020 |
*/
|
1021 |
function parse_markdown( $markdown ){
|
1022 |
+
if( !class_exists('Parsedown') ) include plugin_dir_path(__FILE__).'inc/Parsedown.php';
|
1023 |
+
$parser = new Parsedown();
|
1024 |
|
1025 |
+
return $parser->text($markdown);
|
1026 |
}
|
1027 |
|
1028 |
/**
|
icons/fontawesome/filter.php
CHANGED
@@ -447,8 +447,9 @@ function siteorigin_widgets_icons_fontawesome_filter( $icons ){
|
|
447 |
'photo' => '',
|
448 |
'picture-o' => '',
|
449 |
'pie-chart' => '',
|
450 |
-
'pied-piper' => '&#
|
451 |
'pied-piper-alt' => '',
|
|
|
452 |
'pinterest' => '',
|
453 |
'pinterest-p' => '',
|
454 |
'pinterest-square' => '',
|
@@ -528,6 +529,9 @@ function siteorigin_widgets_icons_fontawesome_filter( $icons ){
|
|
528 |
'sliders' => '',
|
529 |
'slideshare' => '',
|
530 |
'smile-o' => '',
|
|
|
|
|
|
|
531 |
'soccer-ball-o' => '',
|
532 |
'sort' => '',
|
533 |
'sort-alpha-asc' => '',
|
@@ -678,4 +682,4 @@ function siteorigin_widgets_icons_fontawesome_filter( $icons ){
|
|
678 |
'youtube-square' => '',
|
679 |
));
|
680 |
}
|
681 |
-
add_filter('siteorigin_widgets_icons_fontawesome', 'siteorigin_widgets_icons_fontawesome_filter');
|
447 |
'photo' => '',
|
448 |
'picture-o' => '',
|
449 |
'pie-chart' => '',
|
450 |
+
'pied-piper' => '',
|
451 |
'pied-piper-alt' => '',
|
452 |
+
'pied-piper-pp' => '',
|
453 |
'pinterest' => '',
|
454 |
'pinterest-p' => '',
|
455 |
'pinterest-square' => '',
|
529 |
'sliders' => '',
|
530 |
'slideshare' => '',
|
531 |
'smile-o' => '',
|
532 |
+
'snapchat' => '',
|
533 |
+
'snapchat-ghost' => '',
|
534 |
+
'snapchat-square' => '',
|
535 |
'soccer-ball-o' => '',
|
536 |
'sort' => '',
|
537 |
'sort-alpha-asc' => '',
|
682 |
'youtube-square' => '',
|
683 |
));
|
684 |
}
|
685 |
+
add_filter('siteorigin_widgets_icons_fontawesome', 'siteorigin_widgets_icons_fontawesome_filter');
|
icons/fontawesome/font/FontAwesome.otf
CHANGED
Binary file
|
icons/fontawesome/font/fontawesome-webfont.eot
CHANGED
Binary file
|
icons/fontawesome/font/fontawesome-webfont.svg
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
<?xml version="1.0" standalone="no"?>
|
2 |
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
|
3 |
-
<svg xmlns="http://www.w3.org/2000/svg"
|
4 |
<metadata></metadata>
|
5 |
<defs>
|
6 |
<font id="fontawesomeregular" horiz-adv-x="1536" >
|
@@ -169,7 +169,7 @@
|
|
169 |
<glyph unicode="" horiz-adv-x="1792" d="M1408 608v-320q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h704q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-704q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v320 q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM1792 1472v-512q0 -26 -19 -45t-45 -19t-45 19l-176 176l-652 -652q-10 -10 -23 -10t-23 10l-114 114q-10 10 -10 23t10 23l652 652l-176 176q-19 19 -19 45t19 45t45 19h512q26 0 45 -19t19 -45z" />
|
170 |
<glyph unicode="" d="M1184 640q0 -26 -19 -45l-544 -544q-19 -19 -45 -19t-45 19t-19 45v288h-448q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h448v288q0 26 19 45t45 19t45 -19l544 -544q19 -19 19 -45zM1536 992v-704q0 -119 -84.5 -203.5t-203.5 -84.5h-320q-13 0 -22.5 9.5t-9.5 22.5 q0 4 -1 20t-0.5 26.5t3 23.5t10 19.5t20.5 6.5h320q66 0 113 47t47 113v704q0 66 -47 113t-113 47h-288h-11h-13t-11.5 1t-11.5 3t-8 5.5t-7 9t-2 13.5q0 4 -1 20t-0.5 26.5t3 23.5t10 19.5t20.5 6.5h320q119 0 203.5 -84.5t84.5 -203.5z" />
|
171 |
<glyph unicode="" horiz-adv-x="1664" d="M458 653q-74 162 -74 371h-256v-96q0 -78 94.5 -162t235.5 -113zM1536 928v96h-256q0 -209 -74 -371q141 29 235.5 113t94.5 162zM1664 1056v-128q0 -71 -41.5 -143t-112 -130t-173 -97.5t-215.5 -44.5q-42 -54 -95 -95q-38 -34 -52.5 -72.5t-14.5 -89.5q0 -54 30.5 -91 t97.5 -37q75 0 133.5 -45.5t58.5 -114.5v-64q0 -14 -9 -23t-23 -9h-832q-14 0 -23 9t-9 23v64q0 69 58.5 114.5t133.5 45.5q67 0 97.5 37t30.5 91q0 51 -14.5 89.5t-52.5 72.5q-53 41 -95 95q-113 5 -215.5 44.5t-173 97.5t-112 130t-41.5 143v128q0 40 28 68t68 28h288v96 q0 66 47 113t113 47h576q66 0 113 -47t47 -113v-96h288q40 0 68 -28t28 -68z" />
|
172 |
-
<glyph unicode="" d="
|
173 |
<glyph unicode="" horiz-adv-x="1664" d="M1280 64q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1536 64q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1664 288v-320q0 -40 -28 -68t-68 -28h-1472q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h427q21 -56 70.5 -92 t110.5 -36h256q61 0 110.5 36t70.5 92h427q40 0 68 -28t28 -68zM1339 936q-17 -40 -59 -40h-256v-448q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v448h-256q-42 0 -59 40q-17 39 14 69l448 448q18 19 45 19t45 -19l448 -448q31 -30 14 -69z" />
|
174 |
<glyph unicode="" d="M1407 710q0 44 -7 113.5t-18 96.5q-12 30 -17 44t-9 36.5t-4 48.5q0 23 5 68.5t5 67.5q0 37 -10 55q-4 1 -13 1q-19 0 -58 -4.5t-59 -4.5q-60 0 -176 24t-175 24q-43 0 -94.5 -11.5t-85 -23.5t-89.5 -34q-137 -54 -202 -103q-96 -73 -159.5 -189.5t-88 -236t-24.5 -248.5 q0 -40 12.5 -120t12.5 -121q0 -23 -11 -66.5t-11 -65.5t12 -36.5t34 -14.5q24 0 72.5 11t73.5 11q57 0 169.5 -15.5t169.5 -15.5q181 0 284 36q129 45 235.5 152.5t166 245.5t59.5 275zM1535 712q0 -165 -70 -327.5t-196 -288t-281 -180.5q-124 -44 -326 -44 q-57 0 -170 14.5t-169 14.5q-24 0 -72.5 -14.5t-73.5 -14.5q-73 0 -123.5 55.5t-50.5 128.5q0 24 11 68t11 67q0 40 -12.5 120.5t-12.5 121.5q0 111 18 217.5t54.5 209.5t100.5 194t150 156q78 59 232 120q194 78 316 78q60 0 175.5 -24t173.5 -24q19 0 57 5t58 5 q81 0 118 -50.5t37 -134.5q0 -23 -5 -68t-5 -68q0 -10 1 -18.5t3 -17t4 -13.5t6.5 -16t6.5 -17q16 -40 25 -118.5t9 -136.5z" />
|
175 |
<glyph unicode="" horiz-adv-x="1408" d="M1408 296q0 -27 -10 -70.5t-21 -68.5q-21 -50 -122 -106q-94 -51 -186 -51q-27 0 -52.5 3.5t-57.5 12.5t-47.5 14.5t-55.5 20.5t-49 18q-98 35 -175 83q-128 79 -264.5 215.5t-215.5 264.5q-48 77 -83 175q-3 9 -18 49t-20.5 55.5t-14.5 47.5t-12.5 57.5t-3.5 52.5 q0 92 51 186q56 101 106 122q25 11 68.5 21t70.5 10q14 0 21 -3q18 -6 53 -76q11 -19 30 -54t35 -63.5t31 -53.5q3 -4 17.5 -25t21.5 -35.5t7 -28.5q0 -20 -28.5 -50t-62 -55t-62 -53t-28.5 -46q0 -9 5 -22.5t8.5 -20.5t14 -24t11.5 -19q76 -137 174 -235t235 -174 q2 -1 19 -11.5t24 -14t20.5 -8.5t22.5 -5q18 0 46 28.5t53 62t55 62t50 28.5q14 0 28.5 -7t35.5 -21.5t25 -17.5q25 -15 53.5 -31t63.5 -35t54 -30q70 -35 76 -53q3 -7 3 -21z" />
|
@@ -178,7 +178,7 @@
|
|
178 |
<glyph unicode="" d="M1280 343q0 11 -2 16q-3 8 -38.5 29.5t-88.5 49.5l-53 29q-5 3 -19 13t-25 15t-21 5q-18 0 -47 -32.5t-57 -65.5t-44 -33q-7 0 -16.5 3.5t-15.5 6.5t-17 9.5t-14 8.5q-99 55 -170.5 126.5t-126.5 170.5q-2 3 -8.5 14t-9.5 17t-6.5 15.5t-3.5 16.5q0 13 20.5 33.5t45 38.5 t45 39.5t20.5 36.5q0 10 -5 21t-15 25t-13 19q-3 6 -15 28.5t-25 45.5t-26.5 47.5t-25 40.5t-16.5 18t-16 2q-48 0 -101 -22q-46 -21 -80 -94.5t-34 -130.5q0 -16 2.5 -34t5 -30.5t9 -33t10 -29.5t12.5 -33t11 -30q60 -164 216.5 -320.5t320.5 -216.5q6 -2 30 -11t33 -12.5 t29.5 -10t33 -9t30.5 -5t34 -2.5q57 0 130.5 34t94.5 80q22 53 22 101zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
|
179 |
<glyph unicode="" horiz-adv-x="1664" d="M1620 1128q-67 -98 -162 -167q1 -14 1 -42q0 -130 -38 -259.5t-115.5 -248.5t-184.5 -210.5t-258 -146t-323 -54.5q-271 0 -496 145q35 -4 78 -4q225 0 401 138q-105 2 -188 64.5t-114 159.5q33 -5 61 -5q43 0 85 11q-112 23 -185.5 111.5t-73.5 205.5v4q68 -38 146 -41 q-66 44 -105 115t-39 154q0 88 44 163q121 -149 294.5 -238.5t371.5 -99.5q-8 38 -8 74q0 134 94.5 228.5t228.5 94.5q140 0 236 -102q109 21 205 78q-37 -115 -142 -178q93 10 186 50z" />
|
180 |
<glyph unicode="" horiz-adv-x="1024" d="M959 1524v-264h-157q-86 0 -116 -36t-30 -108v-189h293l-39 -296h-254v-759h-306v759h-255v296h255v218q0 186 104 288.5t277 102.5q147 0 228 -12z" />
|
181 |
-
<glyph unicode="" d="
|
182 |
<glyph unicode="" horiz-adv-x="1664" d="M1664 960v-256q0 -26 -19 -45t-45 -19h-64q-26 0 -45 19t-19 45v256q0 106 -75 181t-181 75t-181 -75t-75 -181v-192h96q40 0 68 -28t28 -68v-576q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v576q0 40 28 68t68 28h672v192q0 185 131.5 316.5t316.5 131.5 t316.5 -131.5t131.5 -316.5z" />
|
183 |
<glyph unicode="" horiz-adv-x="1920" d="M1760 1408q66 0 113 -47t47 -113v-1216q0 -66 -47 -113t-113 -47h-1600q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1600zM160 1280q-13 0 -22.5 -9.5t-9.5 -22.5v-224h1664v224q0 13 -9.5 22.5t-22.5 9.5h-1600zM1760 0q13 0 22.5 9.5t9.5 22.5v608h-1664v-608 q0 -13 9.5 -22.5t22.5 -9.5h1600zM256 128v128h256v-128h-256zM640 128v128h384v-128h-384z" />
|
184 |
<glyph unicode="" horiz-adv-x="1408" d="M384 192q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM896 69q2 -28 -17 -48q-18 -21 -47 -21h-135q-25 0 -43 16.5t-20 41.5q-22 229 -184.5 391.5t-391.5 184.5q-25 2 -41.5 20t-16.5 43v135q0 29 21 47q17 17 43 17h5q160 -13 306 -80.5 t259 -181.5q114 -113 181.5 -259t80.5 -306zM1408 67q2 -27 -18 -47q-18 -20 -46 -20h-143q-26 0 -44.5 17.5t-19.5 42.5q-12 215 -101 408.5t-231.5 336t-336 231.5t-408.5 102q-25 1 -42.5 19.5t-17.5 43.5v143q0 28 20 46q18 18 44 18h3q262 -13 501.5 -120t425.5 -294 q187 -186 294 -425.5t120 -501.5z" />
|
@@ -219,8 +219,8 @@
|
|
219 |
<glyph unicode="" horiz-adv-x="1792" d="M640 128q0 52 -38 90t-90 38t-90 -38t-38 -90t38 -90t90 -38t90 38t38 90zM256 640h384v256h-158q-13 0 -22 -9l-195 -195q-9 -9 -9 -22v-30zM1536 128q0 52 -38 90t-90 38t-90 -38t-38 -90t38 -90t90 -38t90 38t38 90zM1792 1216v-1024q0 -15 -4 -26.5t-13.5 -18.5 t-16.5 -11.5t-23.5 -6t-22.5 -2t-25.5 0t-22.5 0.5q0 -106 -75 -181t-181 -75t-181 75t-75 181h-384q0 -106 -75 -181t-181 -75t-181 75t-75 181h-64q-3 0 -22.5 -0.5t-25.5 0t-22.5 2t-23.5 6t-16.5 11.5t-13.5 18.5t-4 26.5q0 26 19 45t45 19v320q0 8 -0.5 35t0 38 t2.5 34.5t6.5 37t14 30.5t22.5 30l198 198q19 19 50.5 32t58.5 13h160v192q0 26 19 45t45 19h1024q26 0 45 -19t19 -45z" />
|
220 |
<glyph unicode="" d="M1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103q-111 0 -218 32q59 93 78 164q9 34 54 211q20 -39 73 -67.5t114 -28.5q121 0 216 68.5t147 188.5t52 270q0 114 -59.5 214t-172.5 163t-255 63q-105 0 -196 -29t-154.5 -77t-109 -110.5t-67 -129.5t-21.5 -134 q0 -104 40 -183t117 -111q30 -12 38 20q2 7 8 31t8 30q6 23 -11 43q-51 61 -51 151q0 151 104.5 259.5t273.5 108.5q151 0 235.5 -82t84.5 -213q0 -170 -68.5 -289t-175.5 -119q-61 0 -98 43.5t-23 104.5q8 35 26.5 93.5t30 103t11.5 75.5q0 50 -27 83t-77 33 q-62 0 -105 -57t-43 -142q0 -73 25 -122l-99 -418q-17 -70 -13 -177q-206 91 -333 281t-127 423q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
|
221 |
<glyph unicode="" d="M1248 1408q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-725q85 122 108 210q9 34 53 209q21 -39 73.5 -67t112.5 -28q181 0 295.5 147.5t114.5 373.5q0 84 -35 162.5t-96.5 139t-152.5 97t-197 36.5q-104 0 -194.5 -28.5t-153 -76.5 t-107.5 -109.5t-66.5 -128t-21.5 -132.5q0 -102 39.5 -180t116.5 -110q13 -5 23.5 0t14.5 19q10 44 15 61q6 23 -11 42q-50 62 -50 150q0 150 103.5 256.5t270.5 106.5q149 0 232.5 -81t83.5 -210q0 -168 -67.5 -286t-173.5 -118q-60 0 -97 43.5t-23 103.5q8 34 26.5 92.5 t29.5 102t11 74.5q0 49 -26.5 81.5t-75.5 32.5q-61 0 -103.5 -56.5t-42.5 -139.5q0 -72 24 -121l-98 -414q-24 -100 -7 -254h-183q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960z" />
|
222 |
-
<glyph unicode="" d="
|
223 |
-
<glyph unicode="" horiz-adv-x="
|
224 |
<glyph unicode="" horiz-adv-x="1920" d="M768 384h384v96h-128v448h-114l-148 -137l77 -80q42 37 55 57h2v-288h-128v-96zM1280 640q0 -70 -21 -142t-59.5 -134t-101.5 -101t-138 -39t-138 39t-101.5 101t-59.5 134t-21 142t21 142t59.5 134t101.5 101t138 39t138 -39t101.5 -101t59.5 -134t21 -142zM1792 384 v512q-106 0 -181 75t-75 181h-1152q0 -106 -75 -181t-181 -75v-512q106 0 181 -75t75 -181h1152q0 106 75 181t181 75zM1920 1216v-1152q0 -26 -19 -45t-45 -19h-1792q-26 0 -45 19t-19 45v1152q0 26 19 45t45 19h1792q26 0 45 -19t19 -45z" />
|
225 |
<glyph unicode="" horiz-adv-x="1024" d="M1024 832q0 -26 -19 -45l-448 -448q-19 -19 -45 -19t-45 19l-448 448q-19 19 -19 45t19 45t45 19h896q26 0 45 -19t19 -45z" />
|
226 |
<glyph unicode="" horiz-adv-x="1024" d="M1024 320q0 -26 -19 -45t-45 -19h-896q-26 0 -45 19t-19 45t19 45l448 448q19 19 45 19t45 -19l448 -448q19 -19 19 -45z" />
|
@@ -362,8 +362,8 @@
|
|
362 |
<glyph unicode="" d="M685 771q0 1 -126 222q-21 34 -52 34h-184q-18 0 -26 -11q-7 -12 1 -29l125 -216v-1l-196 -346q-9 -14 0 -28q8 -13 24 -13h185q31 0 50 36zM1309 1268q-7 12 -24 12h-187q-30 0 -49 -35l-411 -729q1 -2 262 -481q20 -35 52 -35h184q18 0 25 12q8 13 -1 28l-260 476v1 l409 723q8 16 0 28zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
|
363 |
<glyph unicode="" horiz-adv-x="1792" d="M1280 640q0 37 -30 54l-512 320q-31 20 -65 2q-33 -18 -33 -56v-640q0 -38 33 -56q16 -8 31 -8q20 0 34 10l512 320q30 17 30 54zM1792 640q0 -96 -1 -150t-8.5 -136.5t-22.5 -147.5q-16 -73 -69 -123t-124 -58q-222 -25 -671 -25t-671 25q-71 8 -124.5 58t-69.5 123 q-14 65 -21.5 147.5t-8.5 136.5t-1 150t1 150t8.5 136.5t22.5 147.5q16 73 69 123t124 58q222 25 671 25t671 -25q71 -8 124.5 -58t69.5 -123q14 -65 21.5 -147.5t8.5 -136.5t1 -150z" />
|
364 |
<glyph unicode="" horiz-adv-x="1792" d="M402 829l494 -305l-342 -285l-490 319zM1388 274v-108l-490 -293v-1l-1 1l-1 -1v1l-489 293v108l147 -96l342 284v2l1 -1l1 1v-2l343 -284zM554 1418l342 -285l-494 -304l-338 270zM1390 829l338 -271l-489 -319l-343 285zM1239 1418l489 -319l-338 -270l-494 304z" />
|
365 |
-
<glyph unicode=""
|
366 |
-
<glyph unicode="" d="
|
367 |
<glyph unicode="" d="M1248 1408q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960zM698 640q0 88 -62 150t-150 62t-150 -62t-62 -150t62 -150t150 -62t150 62t62 150zM1262 640q0 88 -62 150 t-150 62t-150 -62t-62 -150t62 -150t150 -62t150 62t62 150z" />
|
368 |
<glyph unicode="" d="M768 914l201 -306h-402zM1133 384h94l-459 691l-459 -691h94l104 160h522zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
|
369 |
<glyph unicode="" horiz-adv-x="1408" d="M815 677q8 -63 -50.5 -101t-111.5 -6q-39 17 -53.5 58t-0.5 82t52 58q36 18 72.5 12t64 -35.5t27.5 -67.5zM926 698q-14 107 -113 164t-197 13q-63 -28 -100.5 -88.5t-34.5 -129.5q4 -91 77.5 -155t165.5 -56q91 8 152 84t50 168zM1165 1240q-20 27 -56 44.5t-58 22 t-71 12.5q-291 47 -566 -2q-43 -7 -66 -12t-55 -22t-50 -43q30 -28 76 -45.5t73.5 -22t87.5 -11.5q228 -29 448 -1q63 8 89.5 12t72.5 21.5t75 46.5zM1222 205q-8 -26 -15.5 -76.5t-14 -84t-28.5 -70t-58 -56.5q-86 -48 -189.5 -71.5t-202 -22t-201.5 18.5q-46 8 -81.5 18 t-76.5 27t-73 43.5t-52 61.5q-25 96 -57 292l6 16l18 9q223 -148 506.5 -148t507.5 148q21 -6 24 -23t-5 -45t-8 -37zM1403 1166q-26 -167 -111 -655q-5 -30 -27 -56t-43.5 -40t-54.5 -31q-252 -126 -610 -88q-248 27 -394 139q-15 12 -25.5 26.5t-17 35t-9 34t-6 39.5 t-5.5 35q-9 50 -26.5 150t-28 161.5t-23.5 147.5t-22 158q3 26 17.5 48.5t31.5 37.5t45 30t46 22.5t48 18.5q125 46 313 64q379 37 676 -50q155 -46 215 -122q16 -20 16.5 -51t-5.5 -54z" />
|
@@ -410,7 +410,7 @@
|
|
410 |
<glyph unicode="" horiz-adv-x="2048" d="M960 1536l960 -384v-128h-128q0 -26 -20.5 -45t-48.5 -19h-1526q-28 0 -48.5 19t-20.5 45h-128v128zM256 896h256v-768h128v768h256v-768h128v768h256v-768h128v768h256v-768h59q28 0 48.5 -19t20.5 -45v-64h-1664v64q0 26 20.5 45t48.5 19h59v768zM1851 -64 q28 0 48.5 -19t20.5 -45v-128h-1920v128q0 26 20.5 45t48.5 19h1782z" />
|
411 |
<glyph unicode="" horiz-adv-x="2304" d="M1774 700l18 -316q4 -69 -82 -128t-235 -93.5t-323 -34.5t-323 34.5t-235 93.5t-82 128l18 316l574 -181q22 -7 48 -7t48 7zM2304 1024q0 -23 -22 -31l-1120 -352q-4 -1 -10 -1t-10 1l-652 206q-43 -34 -71 -111.5t-34 -178.5q63 -36 63 -109q0 -69 -58 -107l58 -433 q2 -14 -8 -25q-9 -11 -24 -11h-192q-15 0 -24 11q-10 11 -8 25l58 433q-58 38 -58 107q0 73 65 111q11 207 98 330l-333 104q-22 8 -22 31t22 31l1120 352q4 1 10 1t10 -1l1120 -352q22 -8 22 -31z" />
|
412 |
<glyph unicode="" d="M859 579l13 -707q-62 11 -105 11q-41 0 -105 -11l13 707q-40 69 -168.5 295.5t-216.5 374.5t-181 287q58 -15 108 -15q43 0 111 15q63 -111 133.5 -229.5t167 -276.5t138.5 -227q37 61 109.5 177.5t117.5 190t105 176t107 189.5q54 -14 107 -14q56 0 114 14v0 q-28 -39 -60 -88.5t-49.5 -78.5t-56.5 -96t-49 -84q-146 -248 -353 -610z" />
|
413 |
-
<glyph unicode=""
|
414 |
<glyph unicode="" horiz-adv-x="1792" d="M1095 369q16 -16 0 -31q-62 -62 -199 -62t-199 62q-16 15 0 31q6 6 15 6t15 -6q48 -49 169 -49q120 0 169 49q6 6 15 6t15 -6zM788 550q0 -37 -26 -63t-63 -26t-63.5 26t-26.5 63q0 38 26.5 64t63.5 26t63 -26.5t26 -63.5zM1183 550q0 -37 -26.5 -63t-63.5 -26t-63 26 t-26 63t26 63.5t63 26.5t63.5 -26t26.5 -64zM1434 670q0 49 -35 84t-85 35t-86 -36q-130 90 -311 96l63 283l200 -45q0 -37 26 -63t63 -26t63.5 26.5t26.5 63.5t-26.5 63.5t-63.5 26.5q-54 0 -80 -50l-221 49q-19 5 -25 -16l-69 -312q-180 -7 -309 -97q-35 37 -87 37 q-50 0 -85 -35t-35 -84q0 -35 18.5 -64t49.5 -44q-6 -27 -6 -56q0 -142 140 -243t337 -101q198 0 338 101t140 243q0 32 -7 57q30 15 48 43.5t18 63.5zM1792 640q0 -182 -71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191 t348 71t348 -71t286 -191t191 -286t71 -348z" />
|
415 |
<glyph unicode="" d="M939 407q13 -13 0 -26q-53 -53 -171 -53t-171 53q-13 13 0 26q5 6 13 6t13 -6q42 -42 145 -42t145 42q5 6 13 6t13 -6zM676 563q0 -31 -23 -54t-54 -23t-54 23t-23 54q0 32 22.5 54.5t54.5 22.5t54.5 -22.5t22.5 -54.5zM1014 563q0 -31 -23 -54t-54 -23t-54 23t-23 54 q0 32 22.5 54.5t54.5 22.5t54.5 -22.5t22.5 -54.5zM1229 666q0 42 -30 72t-73 30q-42 0 -73 -31q-113 78 -267 82l54 243l171 -39q1 -32 23.5 -54t53.5 -22q32 0 54.5 22.5t22.5 54.5t-22.5 54.5t-54.5 22.5q-48 0 -69 -43l-189 42q-17 5 -21 -13l-60 -268q-154 -6 -265 -83 q-30 32 -74 32q-43 0 -73 -30t-30 -72q0 -30 16 -55t42 -38q-5 -25 -5 -48q0 -122 120 -208.5t289 -86.5q170 0 290 86.5t120 208.5q0 25 -6 49q25 13 40.5 37.5t15.5 54.5zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960 q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
|
416 |
<glyph unicode="" d="M866 697l90 27v62q0 79 -58 135t-138 56t-138 -55.5t-58 -134.5v-283q0 -20 -14 -33.5t-33 -13.5t-32.5 13.5t-13.5 33.5v120h-151v-122q0 -82 57.5 -139t139.5 -57q81 0 138.5 56.5t57.5 136.5v280q0 19 13.5 33t33.5 14q19 0 32.5 -14t13.5 -33v-54zM1199 502v122h-150 v-126q0 -20 -13.5 -33.5t-33.5 -13.5q-19 0 -32.5 14t-13.5 33v123l-90 -26l-60 28v-123q0 -80 58 -137t139 -57t138.5 57t57.5 139zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103 t385.5 -103t279.5 -279.5t103 -385.5z" />
|
@@ -454,7 +454,7 @@
|
|
454 |
<glyph unicode="" horiz-adv-x="1792" d="M216 367l603 -402v359l-334 223zM154 511l193 129l-193 129v-258zM973 -35l603 402l-269 180l-334 -223v-359zM896 458l272 182l-272 182l-272 -182zM485 733l334 223v359l-603 -402zM1445 640l193 -129v258zM1307 733l269 180l-603 402v-359zM1792 913v-546 q0 -41 -34 -64l-819 -546q-21 -13 -43 -13t-43 13l-819 546q-34 23 -34 64v546q0 41 34 64l819 546q21 13 43 13t43 -13l819 -546q34 -23 34 -64z" />
|
455 |
<glyph unicode="" horiz-adv-x="2048" d="M1800 764q111 -46 179.5 -145.5t68.5 -221.5q0 -164 -118 -280.5t-285 -116.5q-4 0 -11.5 0.5t-10.5 0.5h-1209h-1h-2h-5q-170 10 -288 125.5t-118 280.5q0 110 55 203t147 147q-12 39 -12 82q0 115 82 196t199 81q95 0 172 -58q75 154 222.5 248t326.5 94 q166 0 306 -80.5t221.5 -218.5t81.5 -301q0 -6 -0.5 -18t-0.5 -18zM468 498q0 -122 84 -193t208 -71q137 0 240 99q-16 20 -47.5 56.5t-43.5 50.5q-67 -65 -144 -65q-55 0 -93.5 33.5t-38.5 87.5q0 53 38.5 87t91.5 34q44 0 84.5 -21t73 -55t65 -75t69 -82t77 -75t97 -55 t121.5 -21q121 0 204.5 71.5t83.5 190.5q0 121 -84 192t-207 71q-143 0 -241 -97q14 -16 29.5 -34t34.5 -40t29 -34q66 64 142 64q52 0 92 -33t40 -84q0 -57 -37 -91.5t-94 -34.5q-43 0 -82.5 21t-72 55t-65.5 75t-69.5 82t-77.5 75t-96.5 55t-118.5 21q-122 0 -207 -70.5 t-85 -189.5z" />
|
456 |
<glyph unicode="" horiz-adv-x="1792" d="M896 1536q182 0 348 -71t286 -191t191 -286t71 -348t-71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71zM896 1408q-190 0 -361 -90l194 -194q82 28 167 28t167 -28l194 194q-171 90 -361 90zM218 279l194 194 q-28 82 -28 167t28 167l-194 194q-90 -171 -90 -361t90 -361zM896 -128q190 0 361 90l-194 194q-82 -28 -167 -28t-167 28l-194 -194q171 -90 361 -90zM896 256q159 0 271.5 112.5t112.5 271.5t-112.5 271.5t-271.5 112.5t-271.5 -112.5t-112.5 -271.5t112.5 -271.5 t271.5 -112.5zM1380 473l194 -194q90 171 90 361t-90 361l-194 -194q28 -82 28 -167t-28 -167z" />
|
457 |
-
<glyph unicode="" horiz-adv-x="1792" d="
|
458 |
<glyph unicode="" horiz-adv-x="1792" d="M19 662q8 217 116 406t305 318h5q0 -1 -1 -3q-8 -8 -28 -33.5t-52 -76.5t-60 -110.5t-44.5 -135.5t-14 -150.5t39 -157.5t108.5 -154q50 -50 102 -69.5t90.5 -11.5t69.5 23.5t47 32.5l16 16q39 51 53 116.5t6.5 122.5t-21 107t-26.5 80l-14 29q-10 25 -30.5 49.5t-43 41 t-43.5 29.5t-35 19l-13 6l104 115q39 -17 78 -52t59 -61l19 -27q1 48 -18.5 103.5t-40.5 87.5l-20 31l161 183l160 -181q-33 -46 -52.5 -102.5t-22.5 -90.5l-4 -33q22 37 61.5 72.5t67.5 52.5l28 17l103 -115q-44 -14 -85 -50t-60 -65l-19 -29q-31 -56 -48 -133.5t-7 -170 t57 -156.5q33 -45 77.5 -60.5t85 -5.5t76 26.5t57.5 33.5l21 16q60 53 96.5 115t48.5 121.5t10 121.5t-18 118t-37 107.5t-45.5 93t-45 72t-34.5 47.5l-13 17q-14 13 -7 13l10 -3q40 -29 62.5 -46t62 -50t64 -58t58.5 -65t55.5 -77t45.5 -88t38 -103t23.5 -117t10.5 -136 q3 -259 -108 -465t-312 -321t-456 -115q-185 0 -351 74t-283.5 198t-184 293t-60.5 353z" />
|
459 |
<glyph unicode="" horiz-adv-x="1792" d="M874 -102v-66q-208 6 -385 109.5t-283 275.5l58 34q29 -49 73 -99l65 57q148 -168 368 -212l-17 -86q65 -12 121 -13zM276 428l-83 -28q22 -60 49 -112l-57 -33q-98 180 -98 385t98 385l57 -33q-30 -56 -49 -112l82 -28q-35 -100 -35 -212q0 -109 36 -212zM1528 251 l58 -34q-106 -172 -283 -275.5t-385 -109.5v66q56 1 121 13l-17 86q220 44 368 212l65 -57q44 50 73 99zM1377 805l-233 -80q14 -42 14 -85t-14 -85l232 -80q-31 -92 -98 -169l-185 162q-57 -67 -147 -85l48 -241q-52 -10 -98 -10t-98 10l48 241q-90 18 -147 85l-185 -162 q-67 77 -98 169l232 80q-14 42 -14 85t14 85l-233 80q33 93 99 169l185 -162q59 68 147 86l-48 240q44 10 98 10t98 -10l-48 -240q88 -18 147 -86l185 162q66 -76 99 -169zM874 1448v-66q-65 -2 -121 -13l17 -86q-220 -42 -368 -211l-65 56q-38 -42 -73 -98l-57 33 q106 172 282 275.5t385 109.5zM1705 640q0 -205 -98 -385l-57 33q27 52 49 112l-83 28q36 103 36 212q0 112 -35 212l82 28q-19 56 -49 112l57 33q98 -180 98 -385zM1585 1063l-57 -33q-35 56 -73 98l-65 -56q-148 169 -368 211l17 86q-56 11 -121 13v66q209 -6 385 -109.5 t282 -275.5zM1748 640q0 173 -67.5 331t-181.5 272t-272 181.5t-331 67.5t-331 -67.5t-272 -181.5t-181.5 -272t-67.5 -331t67.5 -331t181.5 -272t272 -181.5t331 -67.5t331 67.5t272 181.5t181.5 272t67.5 331zM1792 640q0 -182 -71 -348t-191 -286t-286 -191t-348 -71 t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348z" />
|
460 |
<glyph unicode="" d="M582 228q0 -66 -93 -66q-107 0 -107 63q0 64 98 64q102 0 102 -61zM546 694q0 -85 -74 -85q-77 0 -77 84q0 90 77 90q36 0 55 -25.5t19 -63.5zM712 769v125q-78 -29 -135 -29q-50 29 -110 29q-86 0 -145 -57t-59 -143q0 -50 29.5 -102t73.5 -67v-3q-38 -17 -38 -85 q0 -53 41 -77v-3q-113 -37 -113 -139q0 -45 20 -78.5t54 -51t72 -25.5t81 -8q224 0 224 188q0 67 -48 99t-126 46q-27 5 -51.5 20.5t-24.5 39.5q0 44 49 52q77 15 122 70t45 134q0 24 -10 52q37 9 49 13zM771 350h137q-2 27 -2 82v387q0 46 2 69h-137q3 -23 3 -71v-392 q0 -50 -3 -75zM1280 366v121q-30 -21 -68 -21q-53 0 -53 82v225h52q9 0 26.5 -1t26.5 -1v117h-105q0 82 3 102h-140q4 -24 4 -55v-47h-60v-117q36 3 37 3q3 0 11 -0.5t12 -0.5v-2h-2v-217q0 -37 2.5 -64t11.5 -56.5t24.5 -48.5t43.5 -31t66 -12q64 0 108 24zM924 1072 q0 36 -24 63.5t-60 27.5t-60.5 -27t-24.5 -64q0 -36 25 -62.5t60 -26.5t59.5 27t24.5 62zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
|
@@ -484,7 +484,7 @@
|
|
484 |
<glyph unicode="" horiz-adv-x="2048" d="M1024 13q-20 0 -93 73.5t-73 93.5q0 32 62.5 54t103.5 22t103.5 -22t62.5 -54q0 -20 -73 -93.5t-93 -73.5zM1294 284q-2 0 -40 25t-101.5 50t-128.5 25t-128.5 -25t-101 -50t-40.5 -25q-18 0 -93.5 75t-75.5 93q0 13 10 23q78 77 196 121t233 44t233 -44t196 -121 q10 -10 10 -23q0 -18 -75.5 -93t-93.5 -75zM1567 556q-11 0 -23 8q-136 105 -252 154.5t-268 49.5q-85 0 -170.5 -22t-149 -53t-113.5 -62t-79 -53t-31 -22q-17 0 -92 75t-75 93q0 12 10 22q132 132 320 205t380 73t380 -73t320 -205q10 -10 10 -22q0 -18 -75 -93t-92 -75z M1838 827q-11 0 -22 9q-179 157 -371.5 236.5t-420.5 79.5t-420.5 -79.5t-371.5 -236.5q-11 -9 -22 -9q-17 0 -92.5 75t-75.5 93q0 13 10 23q187 186 445 288t527 102t527 -102t445 -288q10 -10 10 -23q0 -18 -75.5 -93t-92.5 -75z" />
|
485 |
<glyph unicode="" horiz-adv-x="1792" d="M384 0q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM768 0q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM384 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5 t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1152 0q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM768 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5 t37.5 90.5zM384 768q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1152 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM768 768q0 53 -37.5 90.5t-90.5 37.5 t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1536 0v384q0 52 -38 90t-90 38t-90 -38t-38 -90v-384q0 -52 38 -90t90 -38t90 38t38 90zM1152 768q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5z M1536 1088v256q0 26 -19 45t-45 19h-1280q-26 0 -45 -19t-19 -45v-256q0 -26 19 -45t45 -19h1280q26 0 45 19t19 45zM1536 768q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1664 1408v-1536q0 -52 -38 -90t-90 -38 h-1408q-52 0 -90 38t-38 90v1536q0 52 38 90t90 38h1408q52 0 90 -38t38 -90z" />
|
486 |
<glyph unicode="" d="M1519 890q18 -84 -4 -204q-87 -444 -565 -444h-44q-25 0 -44 -16.5t-24 -42.5l-4 -19l-55 -346l-2 -15q-5 -26 -24.5 -42.5t-44.5 -16.5h-251q-21 0 -33 15t-9 36q9 56 26.5 168t26.5 168t27 167.5t27 167.5q5 37 43 37h131q133 -2 236 21q175 39 287 144q102 95 155 246 q24 70 35 133q1 6 2.5 7.5t3.5 1t6 -3.5q79 -59 98 -162zM1347 1172q0 -107 -46 -236q-80 -233 -302 -315q-113 -40 -252 -42q0 -1 -90 -1l-90 1q-100 0 -118 -96q-2 -8 -85 -530q-1 -10 -12 -10h-295q-22 0 -36.5 16.5t-11.5 38.5l232 1471q5 29 27.5 48t51.5 19h598 q34 0 97.5 -13t111.5 -32q107 -41 163.5 -123t56.5 -196z" />
|
487 |
-
<glyph unicode="" horiz-adv-x="1792" d="
|
488 |
<glyph unicode="" horiz-adv-x="2304" d="M1975 546h-138q14 37 66 179l3 9q4 10 10 26t9 26l12 -55zM531 611l-58 295q-11 54 -75 54h-268l-2 -13q311 -79 403 -336zM710 960l-162 -438l-17 89q-26 70 -85 129.5t-131 88.5l135 -510h175l261 641h-176zM849 318h166l104 642h-166zM1617 944q-69 27 -149 27 q-123 0 -201 -59t-79 -153q-1 -102 145 -174q48 -23 67 -41t19 -39q0 -30 -30 -46t-69 -16q-86 0 -156 33l-22 11l-23 -144q74 -34 185 -34q130 -1 208.5 59t80.5 160q0 106 -140 174q-49 25 -71 42t-22 38q0 22 24.5 38.5t70.5 16.5q70 1 124 -24l15 -8zM2042 960h-128 q-65 0 -87 -54l-246 -588h174l35 96h212q5 -22 20 -96h154zM2304 1280v-1280q0 -52 -38 -90t-90 -38h-2048q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h2048q52 0 90 -38t38 -90z" />
|
489 |
<glyph unicode="" horiz-adv-x="2304" d="M671 603h-13q-47 0 -47 -32q0 -22 20 -22q17 0 28 15t12 39zM1066 639h62v3q1 4 0.5 6.5t-1 7t-2 8t-4.5 6.5t-7.5 5t-11.5 2q-28 0 -36 -38zM1606 603h-12q-48 0 -48 -32q0 -22 20 -22q17 0 28 15t12 39zM1925 629q0 41 -30 41q-19 0 -31 -20t-12 -51q0 -42 28 -42 q20 0 32.5 20t12.5 52zM480 770h87l-44 -262h-56l32 201l-71 -201h-39l-4 200l-34 -200h-53l44 262h81l2 -163zM733 663q0 -6 -4 -42q-16 -101 -17 -113h-47l1 22q-20 -26 -58 -26q-23 0 -37.5 16t-14.5 42q0 39 26 60.5t73 21.5q14 0 23 -1q0 3 0.5 5.5t1 4.5t0.5 3 q0 20 -36 20q-29 0 -59 -10q0 4 7 48q38 11 67 11q74 0 74 -62zM889 721l-8 -49q-22 3 -41 3q-27 0 -27 -17q0 -8 4.5 -12t21.5 -11q40 -19 40 -60q0 -72 -87 -71q-34 0 -58 6q0 2 7 49q29 -8 51 -8q32 0 32 19q0 7 -4.5 11.5t-21.5 12.5q-43 20 -43 59q0 72 84 72 q30 0 50 -4zM977 721h28l-7 -52h-29q-2 -17 -6.5 -40.5t-7 -38.5t-2.5 -18q0 -16 19 -16q8 0 16 2l-8 -47q-21 -7 -40 -7q-43 0 -45 47q0 12 8 56q3 20 25 146h55zM1180 648q0 -23 -7 -52h-111q-3 -22 10 -33t38 -11q30 0 58 14l-9 -54q-30 -8 -57 -8q-95 0 -95 95 q0 55 27.5 90.5t69.5 35.5q35 0 55.5 -21t20.5 -56zM1319 722q-13 -23 -22 -62q-22 2 -31 -24t-25 -128h-56l3 14q22 130 29 199h51l-3 -33q14 21 25.5 29.5t28.5 4.5zM1506 763l-9 -57q-28 14 -50 14q-31 0 -51 -27.5t-20 -70.5q0 -30 13.5 -47t38.5 -17q21 0 48 13 l-10 -59q-28 -8 -50 -8q-45 0 -71.5 30.5t-26.5 82.5q0 70 35.5 114.5t91.5 44.5q26 0 61 -13zM1668 663q0 -18 -4 -42q-13 -79 -17 -113h-46l1 22q-20 -26 -59 -26q-23 0 -37 16t-14 42q0 39 25.5 60.5t72.5 21.5q15 0 23 -1q2 7 2 13q0 20 -36 20q-29 0 -59 -10q0 4 8 48 q38 11 67 11q73 0 73 -62zM1809 722q-14 -24 -21 -62q-23 2 -31.5 -23t-25.5 -129h-56l3 14q19 104 29 199h52q0 -11 -4 -33q15 21 26.5 29.5t27.5 4.5zM1950 770h56l-43 -262h-53l3 19q-23 -23 -52 -23q-31 0 -49.5 24t-18.5 64q0 53 27.5 92t64.5 39q31 0 53 -29z M2061 640q0 148 -72.5 273t-198 198t-273.5 73q-181 0 -328 -110q127 -116 171 -284h-50q-44 150 -158 253q-114 -103 -158 -253h-50q44 168 171 284q-147 110 -328 110q-148 0 -273.5 -73t-198 -198t-72.5 -273t72.5 -273t198 -198t273.5 -73q181 0 328 110 q-120 111 -165 264h50q46 -138 152 -233q106 95 152 233h50q-45 -153 -165 -264q147 -110 328 -110q148 0 273.5 73t198 198t72.5 273zM2304 1280v-1280q0 -52 -38 -90t-90 -38h-2048q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h2048q52 0 90 -38t38 -90z" />
|
490 |
<glyph unicode="" horiz-adv-x="2304" d="M313 759q0 -51 -36 -84q-29 -26 -89 -26h-17v220h17q61 0 89 -27q36 -31 36 -83zM2089 824q0 -52 -64 -52h-19v101h20q63 0 63 -49zM380 759q0 74 -50 120.5t-129 46.5h-95v-333h95q74 0 119 38q60 51 60 128zM410 593h65v333h-65v-333zM730 694q0 40 -20.5 62t-75.5 42 q-29 10 -39.5 19t-10.5 23q0 16 13.5 26.5t34.5 10.5q29 0 53 -27l34 44q-41 37 -98 37q-44 0 -74 -27.5t-30 -67.5q0 -35 18 -55.5t64 -36.5q37 -13 45 -19q19 -12 19 -34q0 -20 -14 -33.5t-36 -13.5q-48 0 -71 44l-42 -40q44 -64 115 -64q51 0 83 30.5t32 79.5zM1008 604 v77q-37 -37 -78 -37q-49 0 -80.5 32.5t-31.5 82.5q0 48 31.5 81.5t77.5 33.5q43 0 81 -38v77q-40 20 -80 20q-74 0 -125.5 -50.5t-51.5 -123.5t51 -123.5t125 -50.5q42 0 81 19zM2240 0v527q-65 -40 -144.5 -84t-237.5 -117t-329.5 -137.5t-417.5 -134.5t-504 -118h1569 q26 0 45 19t19 45zM1389 757q0 75 -53 128t-128 53t-128 -53t-53 -128t53 -128t128 -53t128 53t53 128zM1541 584l144 342h-71l-90 -224l-89 224h-71l142 -342h35zM1714 593h184v56h-119v90h115v56h-115v74h119v57h-184v-333zM2105 593h80l-105 140q76 16 76 94q0 47 -31 73 t-87 26h-97v-333h65v133h9zM2304 1274v-1268q0 -56 -38.5 -95t-93.5 -39h-2040q-55 0 -93.5 39t-38.5 95v1268q0 56 38.5 95t93.5 39h2040q55 0 93.5 -39t38.5 -95z" />
|
@@ -555,7 +555,7 @@
|
|
555 |
<glyph unicode="" d="M1536 1536l-192 -448h192v-192h-274l-55 -128h329v-192h-411l-357 -832l-357 832h-411v192h329l-55 128h-274v192h192l-192 448h256l323 -768h378l323 768h256zM768 320l108 256h-216z" />
|
556 |
<glyph unicode="" d="M1088 1536q185 0 316.5 -93.5t131.5 -226.5v-896q0 -130 -125.5 -222t-305.5 -97l213 -202q16 -15 8 -35t-30 -20h-1056q-22 0 -30 20t8 35l213 202q-180 5 -305.5 97t-125.5 222v896q0 133 131.5 226.5t316.5 93.5h640zM768 192q80 0 136 56t56 136t-56 136t-136 56 t-136 -56t-56 -136t56 -136t136 -56zM1344 768v512h-1152v-512h1152z" />
|
557 |
<glyph unicode="" d="M1088 1536q185 0 316.5 -93.5t131.5 -226.5v-896q0 -130 -125.5 -222t-305.5 -97l213 -202q16 -15 8 -35t-30 -20h-1056q-22 0 -30 20t8 35l213 202q-180 5 -305.5 97t-125.5 222v896q0 133 131.5 226.5t316.5 93.5h640zM288 224q66 0 113 47t47 113t-47 113t-113 47 t-113 -47t-47 -113t47 -113t113 -47zM704 768v512h-544v-512h544zM1248 224q66 0 113 47t47 113t-47 113t-113 47t-113 -47t-47 -113t47 -113t113 -47zM1408 768v512h-576v-512h576z" />
|
558 |
-
<glyph unicode="" horiz-adv-x="1792" d="
|
559 |
<glyph unicode="" d="M809 532l266 499h-112l-157 -312q-24 -48 -44 -92l-42 92l-155 312h-120l263 -493v-324h101v318zM1536 1408v-1536h-1536v1536h1536z" />
|
560 |
<glyph unicode="" horiz-adv-x="2296" d="M478 -139q-8 -16 -27 -34.5t-37 -25.5q-25 -9 -51.5 3.5t-28.5 31.5q-1 22 40 55t68 38q23 4 34 -21.5t2 -46.5zM1819 -139q7 -16 26 -34.5t38 -25.5q25 -9 51.5 3.5t27.5 31.5q2 22 -39.5 55t-68.5 38q-22 4 -33 -21.5t-2 -46.5zM1867 -30q13 -27 56.5 -59.5t77.5 -41.5 q45 -13 82 4.5t37 50.5q0 46 -67.5 100.5t-115.5 59.5q-40 5 -63.5 -37.5t-6.5 -76.5zM428 -30q-13 -27 -56 -59.5t-77 -41.5q-45 -13 -82 4.5t-37 50.5q0 46 67.5 100.5t115.5 59.5q40 5 63 -37.5t6 -76.5zM1158 1094h1q-41 0 -76 -15q27 -8 44 -30.5t17 -49.5 q0 -35 -27 -60t-65 -25q-52 0 -80 43q-5 -23 -5 -42q0 -74 56 -126.5t135 -52.5q80 0 136 52.5t56 126.5t-56 126.5t-136 52.5zM1462 1312q-99 109 -220.5 131.5t-245.5 -44.5q27 60 82.5 96.5t118 39.5t121.5 -17t99.5 -74.5t44.5 -131.5zM2212 73q8 -11 -11 -42 q7 -23 7 -40q1 -56 -44.5 -112.5t-109.5 -91.5t-118 -37q-48 -2 -92 21.5t-66 65.5q-687 -25 -1259 0q-23 -41 -66.5 -65t-92.5 -22q-86 3 -179.5 80.5t-92.5 160.5q2 22 7 40q-19 31 -11 42q6 10 31 1q14 22 41 51q-7 29 2 38q11 10 39 -4q29 20 59 34q0 29 13 37 q23 12 51 -16q35 5 61 -2q18 -4 38 -19v73q-11 0 -18 2q-53 10 -97 44.5t-55 87.5q-9 38 0 81q15 62 93 95q2 17 19 35.5t36 23.5t33 -7.5t19 -30.5h13q46 -5 60 -23q3 -3 5 -7q10 1 30.5 3.5t30.5 3.5q-15 11 -30 17q-23 40 -91 43q0 6 1 10q-62 2 -118.5 18.5t-84.5 47.5 q-32 36 -42.5 92t-2.5 112q16 126 90 179q23 16 52 4.5t32 -40.5q0 -1 1.5 -14t2.5 -21t3 -20t5.5 -19t8.5 -10q27 -14 76 -12q48 46 98 74q-40 4 -162 -14l47 46q61 58 163 111q145 73 282 86q-20 8 -41 15.5t-47 14t-42.5 10.5t-47.5 11t-43 10q595 126 904 -139 q98 -84 158 -222q85 -10 121 9h1q5 3 8.5 10t5.5 19t3 19.5t3 21.5l1 14q3 28 32 40t52 -5q73 -52 91 -178q7 -57 -3.5 -113t-42.5 -91q-28 -32 -83.5 -48.5t-115.5 -18.5v-10q-71 -2 -95 -43q-14 -5 -31 -17q11 -1 32 -3.5t30 -3.5q1 4 5 8q16 18 60 23h13q5 18 19 30t33 8 t36 -23t19 -36q79 -32 93 -95q9 -40 1 -81q-12 -53 -56 -88t-97 -44q-10 -2 -17 -2q0 -49 -1 -73q20 15 38 19q26 7 61 2q28 28 51 16q14 -9 14 -37q33 -16 59 -34q27 13 38 4q10 -10 2 -38q28 -30 41 -51q23 8 31 -1zM1937 1025q0 -29 -9 -54q82 -32 112 -132 q4 37 -9.5 98.5t-41.5 90.5q-20 19 -36 17t-16 -20zM1859 925q35 -42 47.5 -108.5t-0.5 -124.5q67 13 97 45q13 14 18 28q-3 64 -31 114.5t-79 66.5q-15 -15 -52 -21zM1822 921q-30 0 -44 1q42 -115 53 -239q21 0 43 3q16 68 1 135t-53 100zM258 839q30 100 112 132 q-9 25 -9 54q0 18 -16.5 20t-35.5 -17q-28 -29 -41.5 -90.5t-9.5 -98.5zM294 737q29 -31 97 -45q-13 58 -0.5 124.5t47.5 108.5v0q-37 6 -52 21q-51 -16 -78.5 -66t-31.5 -115q9 -17 18 -28zM471 683q14 124 73 235q-19 -4 -55 -18l-45 -19v1q-46 -89 -20 -196q25 -3 47 -3z M1434 644q8 -38 16.5 -108.5t11.5 -89.5q3 -18 9.5 -21.5t23.5 4.5q40 20 62 85.5t23 125.5q-24 2 -146 4zM1152 1285q-116 0 -199 -82.5t-83 -198.5q0 -117 83 -199.5t199 -82.5t199 82.5t83 199.5q0 116 -83 198.5t-199 82.5zM1380 646q-106 2 -211 0v1q-1 -27 2.5 -86 t13.5 -66q29 -14 93.5 -14.5t95.5 10.5q9 3 11 39t-0.5 69.5t-4.5 46.5zM1112 447q8 4 9.5 48t-0.5 88t-4 63v1q-212 -3 -214 -3q-4 -20 -7 -62t0 -83t14 -46q34 -15 101 -16t101 10zM718 636q-16 -59 4.5 -118.5t77.5 -84.5q15 -8 24 -5t12 21q3 16 8 90t10 103 q-69 -2 -136 -6zM591 510q3 -23 -34 -36q132 -141 271.5 -240t305.5 -154q172 49 310.5 146t293.5 250q-33 13 -30 34l3 9v1v-1q-17 2 -50 5.5t-48 4.5q-26 -90 -82 -132q-51 -38 -82 1q-5 6 -9 14q-7 13 -17 62q-2 -5 -5 -9t-7.5 -7t-8 -5.5t-9.5 -4l-10 -2.5t-12 -2 l-12 -1.5t-13.5 -1t-13.5 -0.5q-106 -9 -163 11q-4 -17 -10 -26.5t-21 -15t-23 -7t-36 -3.5q-2 0 -3 -0.5t-3 -0.5h-3q-179 -17 -203 40q-2 -63 -56 -54q-47 8 -91 54q-12 13 -20 26q-17 29 -26 65q-58 -6 -87 -10q1 -2 4 -10zM507 -118q3 14 3 30q-17 71 -51 130t-73 70 q-41 12 -101.5 -14.5t-104.5 -80t-39 -107.5q35 -53 100 -93t119 -42q51 -2 94 28t53 79zM510 53q23 -63 27 -119q195 113 392 174q-98 52 -180.5 120t-179.5 165q-6 -4 -29 -13q0 -2 -1 -5t-1 -4q31 -18 22 -37q-12 -23 -56 -34q-10 -13 -29 -24h-1q-2 -83 1 -150 q19 -34 35 -73zM579 -113q532 -21 1145 0q-254 147 -428 196q-76 -35 -156 -57q-8 -3 -16 0q-65 21 -129 49q-208 -60 -416 -188h-1v-1q1 0 1 1zM1763 -67q4 54 28 120q14 38 33 71l-1 -1q3 77 3 153q-15 8 -30 25q-42 9 -56 33q-9 20 22 38q-2 4 -2 9q-16 4 -28 12 q-204 -190 -383 -284q198 -59 414 -176zM2155 -90q5 54 -39 107.5t-104 80t-102 14.5q-38 -11 -72.5 -70.5t-51.5 -129.5q0 -16 3 -30q10 -49 53 -79t94 -28q54 2 119 42t100 93z" />
|
561 |
<glyph unicode="" horiz-adv-x="2304" d="M1524 -25q0 -68 -48 -116t-116 -48t-116.5 48t-48.5 116t48.5 116.5t116.5 48.5t116 -48.5t48 -116.5zM775 -25q0 -68 -48.5 -116t-116.5 -48t-116 48t-48 116t48 116.5t116 48.5t116.5 -48.5t48.5 -116.5zM0 1469q57 -60 110.5 -104.5t121 -82t136 -63t166 -45.5 t200 -31.5t250 -18.5t304 -9.5t372.5 -2.5q139 0 244.5 -5t181 -16.5t124 -27.5t71 -39.5t24 -51.5t-19.5 -64t-56.5 -76.5t-89.5 -91t-116 -104.5t-139 -119q-185 -157 -286 -247q29 51 76.5 109t94 105.5t94.5 98.5t83 91.5t54 80.5t13 70t-45.5 55.5t-116.5 41t-204 23.5 t-304 5q-168 -2 -314 6t-256 23t-204.5 41t-159.5 51.5t-122.5 62.5t-91.5 66.5t-68 71.5t-50.5 69.5t-40 68t-36.5 59.5z" />
|
@@ -600,11 +600,11 @@
|
|
600 |
<glyph unicode="" horiz-adv-x="1792" d="M949 643q0 -26 -16.5 -45t-41.5 -19q-26 0 -45 16.5t-19 41.5q0 26 17 45t42 19t44 -16.5t19 -41.5zM964 585l350 581q-9 -8 -67.5 -62.5t-125.5 -116.5t-136.5 -127t-117 -110.5t-50.5 -51.5l-349 -580q7 7 67 62t126 116.5t136 127t117 111t50 50.5zM1611 640 q0 -201 -104 -371q-3 2 -17 11t-26.5 16.5t-16.5 7.5q-13 0 -13 -13q0 -10 59 -44q-74 -112 -184.5 -190.5t-241.5 -110.5l-16 67q-1 10 -15 10q-5 0 -8 -5.5t-2 -9.5l16 -68q-72 -15 -146 -15q-199 0 -372 105q1 2 13 20.5t21.5 33.5t9.5 19q0 13 -13 13q-6 0 -17 -14.5 t-22.5 -34.5t-13.5 -23q-113 75 -192 187.5t-110 244.5l69 15q10 3 10 15q0 5 -5.5 8t-10.5 2l-68 -15q-14 72 -14 139q0 206 109 379q2 -1 18.5 -12t30 -19t17.5 -8q13 0 13 12q0 6 -12.5 15.5t-32.5 21.5l-20 12q77 112 189 189t244 107l15 -67q2 -10 15 -10q5 0 8 5.5 t2 10.5l-15 66q71 13 134 13q204 0 379 -109q-39 -56 -39 -65q0 -13 12 -13q11 0 48 64q111 -75 187.5 -186t107.5 -241l-56 -12q-10 -2 -10 -16q0 -5 5.5 -8t9.5 -2l57 13q14 -72 14 -140zM1696 640q0 163 -63.5 311t-170.5 255t-255 170.5t-311 63.5t-311 -63.5 t-255 -170.5t-170.5 -255t-63.5 -311t63.5 -311t170.5 -255t255 -170.5t311 -63.5t311 63.5t255 170.5t170.5 255t63.5 311zM1792 640q0 -182 -71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71t348 -71t286 -191 t191 -286t71 -348z" />
|
601 |
<glyph unicode="" horiz-adv-x="1792" d="M893 1536q240 2 451 -120q232 -134 352 -372l-742 39q-160 9 -294 -74.5t-185 -229.5l-276 424q128 159 311 245.5t383 87.5zM146 1131l337 -663q72 -143 211 -217t293 -45l-230 -451q-212 33 -385 157.5t-272.5 316t-99.5 411.5q0 267 146 491zM1732 962 q58 -150 59.5 -310.5t-48.5 -306t-153 -272t-246 -209.5q-230 -133 -498 -119l405 623q88 131 82.5 290.5t-106.5 277.5zM896 942q125 0 213.5 -88.5t88.5 -213.5t-88.5 -213.5t-213.5 -88.5t-213.5 88.5t-88.5 213.5t88.5 213.5t213.5 88.5z" />
|
602 |
<glyph unicode="" horiz-adv-x="1792" d="M903 -256q-283 0 -504.5 150.5t-329.5 398.5q-58 131 -67 301t26 332.5t111 312t179 242.5l-11 -281q11 14 68 15.5t70 -15.5q42 81 160.5 138t234.5 59q-54 -45 -119.5 -148.5t-58.5 -163.5q25 -8 62.5 -13.5t63 -7.5t68 -4t50.5 -3q15 -5 9.5 -45.5t-30.5 -75.5 q-5 -7 -16.5 -18.5t-56.5 -35.5t-101 -34l15 -189l-139 67q-18 -43 -7.5 -81.5t36 -66.5t65.5 -41.5t81 -6.5q51 9 98 34.5t83.5 45t73.5 17.5q61 -4 89.5 -33t19.5 -65q-1 -2 -2.5 -5.5t-8.5 -12.5t-18 -15.5t-31.5 -10.5t-46.5 -1q-60 -95 -144.5 -135.5t-209.5 -29.5 q74 -61 162.5 -82.5t168.5 -6t154.5 52t128 87.5t80.5 104q43 91 39 192.5t-37.5 188.5t-78.5 125q87 -38 137 -79.5t77 -112.5q15 170 -57.5 343t-209.5 284q265 -77 412 -279.5t151 -517.5q2 -127 -40.5 -255t-123.5 -238t-189 -196t-247.5 -135.5t-288.5 -49.5z" />
|
603 |
-
<glyph unicode="" d="
|
604 |
-
<glyph unicode="" horiz-adv-x="1792" d="
|
605 |
<glyph unicode="" horiz-adv-x="2048" d="M1792 288v960q0 13 -9.5 22.5t-22.5 9.5h-1600q-13 0 -22.5 -9.5t-9.5 -22.5v-960q0 -13 9.5 -22.5t22.5 -9.5h1600q13 0 22.5 9.5t9.5 22.5zM1920 1248v-960q0 -66 -47 -113t-113 -47h-736v-128h352q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-832q-14 0 -23 9t-9 23 v64q0 14 9 23t23 9h352v128h-736q-66 0 -113 47t-47 113v960q0 66 47 113t113 47h1600q66 0 113 -47t47 -113z" />
|
606 |
<glyph unicode="" horiz-adv-x="1792" d="M138 1408h197q-70 -64 -126 -149q-36 -56 -59 -115t-30 -125.5t-8.5 -120t10.5 -132t21 -126t28 -136.5q4 -19 6 -28q51 -238 81 -329q57 -171 152 -275h-272q-48 0 -82 34t-34 82v1304q0 48 34 82t82 34zM1346 1408h308q48 0 82 -34t34 -82v-1304q0 -48 -34 -82t-82 -34 h-178q212 210 196 565l-469 -101q-2 -45 -12 -82t-31 -72t-59.5 -59.5t-93.5 -36.5q-123 -26 -199 40q-32 27 -53 61t-51.5 129t-64.5 258q-35 163 -45.5 263t-5.5 139t23 77q20 41 62.5 73t102.5 45q45 12 83.5 6.5t67 -17t54 -35t43 -48t34.5 -56.5l468 100 q-68 175 -180 287z" />
|
607 |
-
<glyph unicode=""
|
608 |
<glyph unicode="" horiz-adv-x="1792" d="M1551 60q15 6 26 3t11 -17.5t-15 -33.5q-13 -16 -44 -43.5t-95.5 -68t-141 -74t-188 -58t-229.5 -24.5q-119 0 -238 31t-209 76.5t-172.5 104t-132.5 105t-84 87.5q-8 9 -10 16.5t1 12t8 7t11.5 2t11.5 -4.5q192 -117 300 -166q389 -176 799 -90q190 40 391 135z M1758 175q11 -16 2.5 -69.5t-28.5 -102.5q-34 -83 -85 -124q-17 -14 -26 -9t0 24q21 45 44.5 121.5t6.5 98.5q-5 7 -15.5 11.5t-27 6t-29.5 2.5t-35 0t-31.5 -2t-31 -3t-22.5 -2q-6 -1 -13 -1.5t-11 -1t-8.5 -1t-7 -0.5h-5.5h-4.5t-3 0.5t-2 1.5l-1.5 3q-6 16 47 40t103 30 q46 7 108 1t76 -24zM1364 618q0 -31 13.5 -64t32 -58t37.5 -46t33 -32l13 -11l-227 -224q-40 37 -79 75.5t-58 58.5l-19 20q-11 11 -25 33q-38 -59 -97.5 -102.5t-127.5 -63.5t-140 -23t-137.5 21t-117.5 65.5t-83 113t-31 162.5q0 84 28 154t72 116.5t106.5 83t122.5 57 t130 34.5t119.5 18.5t99.5 6.5v127q0 65 -21 97q-34 53 -121 53q-6 0 -16.5 -1t-40.5 -12t-56 -29.5t-56 -59.5t-48 -96l-294 27q0 60 22 119t67 113t108 95t151.5 65.5t190.5 24.5q100 0 181 -25t129.5 -61.5t81 -83t45 -86t12.5 -73.5v-589zM692 597q0 -86 70 -133 q66 -44 139 -22q84 25 114 123q14 45 14 101v162q-59 -2 -111 -12t-106.5 -33.5t-87 -71t-32.5 -114.5z" />
|
609 |
<glyph unicode="" horiz-adv-x="1792" d="M1536 1280q52 0 90 -38t38 -90v-1280q0 -52 -38 -90t-90 -38h-1408q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h128v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h384v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h128zM1152 1376v-288q0 -14 9 -23t23 -9 h64q14 0 23 9t9 23v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23zM384 1376v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23zM1536 -128v1024h-1408v-1024h1408zM896 448h224q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-224 v-224q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v224h-224q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h224v224q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-224z" />
|
610 |
<glyph unicode="" horiz-adv-x="1792" d="M1152 416v-64q0 -14 -9 -23t-23 -9h-576q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h576q14 0 23 -9t9 -23zM128 -128h1408v1024h-1408v-1024zM512 1088v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1280 1088v288q0 14 -9 23 t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1664 1152v-1280q0 -52 -38 -90t-90 -38h-1408q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h128v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h384v96q0 66 47 113t113 47h64q66 0 113 -47 t47 -113v-96h128q52 0 90 -38t38 -90z" />
|
@@ -621,20 +621,65 @@
|
|
621 |
<glyph unicode="" horiz-adv-x="1792" d="M1709 1018q-10 -236 -332 -651q-333 -431 -562 -431q-142 0 -240 263q-44 160 -132 482q-72 262 -157 262q-18 0 -127 -76l-77 98q24 21 108 96.5t130 115.5q156 138 241 146q95 9 153 -55.5t81 -203.5q44 -287 66 -373q55 -249 120 -249q51 0 154 161q101 161 109 246 q13 139 -109 139q-57 0 -121 -26q120 393 459 382q251 -8 236 -326z" />
|
622 |
<glyph unicode="" d="M0 1408h1536v-1536h-1536v1536zM1085 293l-221 631l221 297h-634l221 -297l-221 -631l317 -304z" />
|
623 |
<glyph unicode="" d="M0 1408h1536v-1536h-1536v1536zM908 1088l-12 -33l75 -83l-31 -114l25 -25l107 57l107 -57l25 25l-31 114l75 83l-12 33h-95l-53 96h-32l-53 -96h-95zM641 925q32 0 44.5 -16t11.5 -63l174 21q0 55 -17.5 92.5t-50.5 56t-69 25.5t-85 7q-133 0 -199 -57.5t-66 -182.5v-72 h-96v-128h76q20 0 20 -8v-382q0 -14 -5 -20t-18 -7l-73 -7v-88h448v86l-149 14q-6 1 -8.5 1.5t-3.5 2.5t-0.5 4t1 7t0.5 10v387h191l38 128h-231q-6 0 -2 6t4 9v80q0 27 1.5 40.5t7.5 28t19.5 20t36.5 5.5zM1248 96v86l-54 9q-7 1 -9.5 2.5t-2.5 3t1 7.5t1 12v520h-275 l-23 -101l83 -22q23 -7 23 -27v-370q0 -14 -6 -18.5t-20 -6.5l-70 -9v-86h352z" />
|
624 |
-
<glyph unicode="" horiz-adv-x="1792" />
|
625 |
-
<glyph unicode="" horiz-adv-x="1792" />
|
626 |
-
<glyph unicode="" horiz-adv-x="
|
627 |
-
<glyph unicode="" horiz-adv-x="1792" />
|
628 |
-
<glyph unicode="" horiz-adv-x="1792" />
|
629 |
-
<glyph unicode="" horiz-adv-x="1792" />
|
630 |
-
<glyph unicode="" horiz-adv-x="
|
631 |
-
<glyph unicode="" horiz-adv-x="1792" />
|
632 |
-
<glyph unicode="" horiz-adv-x="
|
633 |
-
<glyph unicode=""
|
634 |
-
<glyph unicode=""
|
635 |
-
<glyph unicode=""
|
636 |
-
<glyph unicode=""
|
637 |
-
<glyph unicode=""
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
638 |
<glyph unicode="" horiz-adv-x="1792" />
|
639 |
</font>
|
640 |
</defs></svg>
|
1 |
<?xml version="1.0" standalone="no"?>
|
2 |
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
|
3 |
+
<svg xmlns="http://www.w3.org/2000/svg">
|
4 |
<metadata></metadata>
|
5 |
<defs>
|
6 |
<font id="fontawesomeregular" horiz-adv-x="1536" >
|
169 |
<glyph unicode="" horiz-adv-x="1792" d="M1408 608v-320q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h704q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-704q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v320 q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM1792 1472v-512q0 -26 -19 -45t-45 -19t-45 19l-176 176l-652 -652q-10 -10 -23 -10t-23 10l-114 114q-10 10 -10 23t10 23l652 652l-176 176q-19 19 -19 45t19 45t45 19h512q26 0 45 -19t19 -45z" />
|
170 |
<glyph unicode="" d="M1184 640q0 -26 -19 -45l-544 -544q-19 -19 -45 -19t-45 19t-19 45v288h-448q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h448v288q0 26 19 45t45 19t45 -19l544 -544q19 -19 19 -45zM1536 992v-704q0 -119 -84.5 -203.5t-203.5 -84.5h-320q-13 0 -22.5 9.5t-9.5 22.5 q0 4 -1 20t-0.5 26.5t3 23.5t10 19.5t20.5 6.5h320q66 0 113 47t47 113v704q0 66 -47 113t-113 47h-288h-11h-13t-11.5 1t-11.5 3t-8 5.5t-7 9t-2 13.5q0 4 -1 20t-0.5 26.5t3 23.5t10 19.5t20.5 6.5h320q119 0 203.5 -84.5t84.5 -203.5z" />
|
171 |
<glyph unicode="" horiz-adv-x="1664" d="M458 653q-74 162 -74 371h-256v-96q0 -78 94.5 -162t235.5 -113zM1536 928v96h-256q0 -209 -74 -371q141 29 235.5 113t94.5 162zM1664 1056v-128q0 -71 -41.5 -143t-112 -130t-173 -97.5t-215.5 -44.5q-42 -54 -95 -95q-38 -34 -52.5 -72.5t-14.5 -89.5q0 -54 30.5 -91 t97.5 -37q75 0 133.5 -45.5t58.5 -114.5v-64q0 -14 -9 -23t-23 -9h-832q-14 0 -23 9t-9 23v64q0 69 58.5 114.5t133.5 45.5q67 0 97.5 37t30.5 91q0 51 -14.5 89.5t-52.5 72.5q-53 41 -95 95q-113 5 -215.5 44.5t-173 97.5t-112 130t-41.5 143v128q0 40 28 68t68 28h288v96 q0 66 47 113t113 47h576q66 0 113 -47t47 -113v-96h288q40 0 68 -28t28 -68z" />
|
172 |
+
<glyph unicode="" d="M519 336q4 6 -3 13q-9 7 -14 2q-4 -6 3 -13q9 -7 14 -2zM491 377q-5 7 -12 4q-6 -4 0 -12q7 -8 12 -5q6 4 0 13zM450 417q2 4 -5 8q-7 2 -8 -2q-3 -5 4 -8q8 -2 9 2zM471 394q2 1 1.5 4.5t-3.5 5.5q-6 7 -10 3t1 -11q6 -6 11 -2zM557 319q2 7 -9 11q-9 3 -13 -4 q-2 -7 9 -11q9 -3 13 4zM599 316q0 8 -12 8q-10 0 -10 -8t11 -8t11 8zM638 323q-2 7 -13 5t-9 -9q2 -8 12 -6t10 10zM1280 640q0 212 -150 362t-362 150t-362 -150t-150 -362q0 -167 98 -300.5t252 -185.5q18 -3 26.5 5t8.5 20q0 52 -1 95q-6 -1 -15.5 -2.5t-35.5 -2t-48 4 t-43.5 20t-29.5 41.5q-23 59 -57 74q-2 1 -4.5 3.5l-8 8t-7 9.5t4 7.5t19.5 3.5q6 0 15 -2t30 -15.5t33 -35.5q16 -28 37.5 -42t43.5 -14t38 3.5t30 9.5q7 47 33 69q-49 6 -86 18.5t-73 39t-55.5 76t-19.5 119.5q0 79 53 137q-24 62 5 136q19 6 54.5 -7.5t60.5 -29.5l26 -16 q58 17 128 17t128 -17q11 7 28.5 18t55.5 26t57 9q29 -74 5 -136q53 -58 53 -137q0 -57 -14 -100.5t-35.5 -70t-53.5 -44.5t-62.5 -26t-68.5 -12q35 -31 35 -95q0 -40 -0.5 -89t-0.5 -51q0 -12 8.5 -20t26.5 -5q154 52 252 185.5t98 300.5zM1536 1120v-960 q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
|
173 |
<glyph unicode="" horiz-adv-x="1664" d="M1280 64q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1536 64q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1664 288v-320q0 -40 -28 -68t-68 -28h-1472q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h427q21 -56 70.5 -92 t110.5 -36h256q61 0 110.5 36t70.5 92h427q40 0 68 -28t28 -68zM1339 936q-17 -40 -59 -40h-256v-448q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v448h-256q-42 0 -59 40q-17 39 14 69l448 448q18 19 45 19t45 -19l448 -448q31 -30 14 -69z" />
|
174 |
<glyph unicode="" d="M1407 710q0 44 -7 113.5t-18 96.5q-12 30 -17 44t-9 36.5t-4 48.5q0 23 5 68.5t5 67.5q0 37 -10 55q-4 1 -13 1q-19 0 -58 -4.5t-59 -4.5q-60 0 -176 24t-175 24q-43 0 -94.5 -11.5t-85 -23.5t-89.5 -34q-137 -54 -202 -103q-96 -73 -159.5 -189.5t-88 -236t-24.5 -248.5 q0 -40 12.5 -120t12.5 -121q0 -23 -11 -66.5t-11 -65.5t12 -36.5t34 -14.5q24 0 72.5 11t73.5 11q57 0 169.5 -15.5t169.5 -15.5q181 0 284 36q129 45 235.5 152.5t166 245.5t59.5 275zM1535 712q0 -165 -70 -327.5t-196 -288t-281 -180.5q-124 -44 -326 -44 q-57 0 -170 14.5t-169 14.5q-24 0 -72.5 -14.5t-73.5 -14.5q-73 0 -123.5 55.5t-50.5 128.5q0 24 11 68t11 67q0 40 -12.5 120.5t-12.5 121.5q0 111 18 217.5t54.5 209.5t100.5 194t150 156q78 59 232 120q194 78 316 78q60 0 175.5 -24t173.5 -24q19 0 57 5t58 5 q81 0 118 -50.5t37 -134.5q0 -23 -5 -68t-5 -68q0 -10 1 -18.5t3 -17t4 -13.5t6.5 -16t6.5 -17q16 -40 25 -118.5t9 -136.5z" />
|
175 |
<glyph unicode="" horiz-adv-x="1408" d="M1408 296q0 -27 -10 -70.5t-21 -68.5q-21 -50 -122 -106q-94 -51 -186 -51q-27 0 -52.5 3.5t-57.5 12.5t-47.5 14.5t-55.5 20.5t-49 18q-98 35 -175 83q-128 79 -264.5 215.5t-215.5 264.5q-48 77 -83 175q-3 9 -18 49t-20.5 55.5t-14.5 47.5t-12.5 57.5t-3.5 52.5 q0 92 51 186q56 101 106 122q25 11 68.5 21t70.5 10q14 0 21 -3q18 -6 53 -76q11 -19 30 -54t35 -63.5t31 -53.5q3 -4 17.5 -25t21.5 -35.5t7 -28.5q0 -20 -28.5 -50t-62 -55t-62 -53t-28.5 -46q0 -9 5 -22.5t8.5 -20.5t14 -24t11.5 -19q76 -137 174 -235t235 -174 q2 -1 19 -11.5t24 -14t20.5 -8.5t22.5 -5q18 0 46 28.5t53 62t55 62t50 28.5q14 0 28.5 -7t35.5 -21.5t25 -17.5q25 -15 53.5 -31t63.5 -35t54 -30q70 -35 76 -53q3 -7 3 -21z" />
|
178 |
<glyph unicode="" d="M1280 343q0 11 -2 16q-3 8 -38.5 29.5t-88.5 49.5l-53 29q-5 3 -19 13t-25 15t-21 5q-18 0 -47 -32.5t-57 -65.5t-44 -33q-7 0 -16.5 3.5t-15.5 6.5t-17 9.5t-14 8.5q-99 55 -170.5 126.5t-126.5 170.5q-2 3 -8.5 14t-9.5 17t-6.5 15.5t-3.5 16.5q0 13 20.5 33.5t45 38.5 t45 39.5t20.5 36.5q0 10 -5 21t-15 25t-13 19q-3 6 -15 28.5t-25 45.5t-26.5 47.5t-25 40.5t-16.5 18t-16 2q-48 0 -101 -22q-46 -21 -80 -94.5t-34 -130.5q0 -16 2.5 -34t5 -30.5t9 -33t10 -29.5t12.5 -33t11 -30q60 -164 216.5 -320.5t320.5 -216.5q6 -2 30 -11t33 -12.5 t29.5 -10t33 -9t30.5 -5t34 -2.5q57 0 130.5 34t94.5 80q22 53 22 101zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
|
179 |
<glyph unicode="" horiz-adv-x="1664" d="M1620 1128q-67 -98 -162 -167q1 -14 1 -42q0 -130 -38 -259.5t-115.5 -248.5t-184.5 -210.5t-258 -146t-323 -54.5q-271 0 -496 145q35 -4 78 -4q225 0 401 138q-105 2 -188 64.5t-114 159.5q33 -5 61 -5q43 0 85 11q-112 23 -185.5 111.5t-73.5 205.5v4q68 -38 146 -41 q-66 44 -105 115t-39 154q0 88 44 163q121 -149 294.5 -238.5t371.5 -99.5q-8 38 -8 74q0 134 94.5 228.5t228.5 94.5q140 0 236 -102q109 21 205 78q-37 -115 -142 -178q93 10 186 50z" />
|
180 |
<glyph unicode="" horiz-adv-x="1024" d="M959 1524v-264h-157q-86 0 -116 -36t-30 -108v-189h293l-39 -296h-254v-759h-306v759h-255v296h255v218q0 186 104 288.5t277 102.5q147 0 228 -12z" />
|
181 |
+
<glyph unicode="" d="M768 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5q0 -251 -146.5 -451.5t-378.5 -277.5q-27 -5 -40 7t-13 30q0 3 0.5 76.5t0.5 134.5q0 97 -52 142q57 6 102.5 18t94 39t81 66.5t53 105t20.5 150.5q0 119 -79 206q37 91 -8 204q-28 9 -81 -11t-92 -44l-38 -24 q-93 26 -192 26t-192 -26q-16 11 -42.5 27t-83.5 38.5t-85 13.5q-45 -113 -8 -204q-79 -87 -79 -206q0 -85 20.5 -150t52.5 -105t80.5 -67t94 -39t102.5 -18q-39 -36 -49 -103q-21 -10 -45 -15t-57 -5t-65.5 21.5t-55.5 62.5q-19 32 -48.5 52t-49.5 24l-20 3q-21 0 -29 -4.5 t-5 -11.5t9 -14t13 -12l7 -5q22 -10 43.5 -38t31.5 -51l10 -23q13 -38 44 -61.5t67 -30t69.5 -7t55.5 3.5l23 4q0 -38 0.5 -88.5t0.5 -54.5q0 -18 -13 -30t-40 -7q-232 77 -378.5 277.5t-146.5 451.5q0 209 103 385.5t279.5 279.5t385.5 103zM291 305q3 7 -7 12 q-10 3 -13 -2q-3 -7 7 -12q9 -6 13 2zM322 271q7 5 -2 16q-10 9 -16 3q-7 -5 2 -16q10 -10 16 -3zM352 226q9 7 0 19q-8 13 -17 6q-9 -5 0 -18t17 -7zM394 184q8 8 -4 19q-12 12 -20 3q-9 -8 4 -19q12 -12 20 -3zM451 159q3 11 -13 16q-15 4 -19 -7t13 -15q15 -6 19 6z M514 154q0 13 -17 11q-16 0 -16 -11q0 -13 17 -11q16 0 16 11zM572 164q-2 11 -18 9q-16 -3 -14 -15t18 -8t14 14z" />
|
182 |
<glyph unicode="" horiz-adv-x="1664" d="M1664 960v-256q0 -26 -19 -45t-45 -19h-64q-26 0 -45 19t-19 45v256q0 106 -75 181t-181 75t-181 -75t-75 -181v-192h96q40 0 68 -28t28 -68v-576q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v576q0 40 28 68t68 28h672v192q0 185 131.5 316.5t316.5 131.5 t316.5 -131.5t131.5 -316.5z" />
|
183 |
<glyph unicode="" horiz-adv-x="1920" d="M1760 1408q66 0 113 -47t47 -113v-1216q0 -66 -47 -113t-113 -47h-1600q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1600zM160 1280q-13 0 -22.5 -9.5t-9.5 -22.5v-224h1664v224q0 13 -9.5 22.5t-22.5 9.5h-1600zM1760 0q13 0 22.5 9.5t9.5 22.5v608h-1664v-608 q0 -13 9.5 -22.5t22.5 -9.5h1600zM256 128v128h256v-128h-256zM640 128v128h384v-128h-384z" />
|
184 |
<glyph unicode="" horiz-adv-x="1408" d="M384 192q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM896 69q2 -28 -17 -48q-18 -21 -47 -21h-135q-25 0 -43 16.5t-20 41.5q-22 229 -184.5 391.5t-391.5 184.5q-25 2 -41.5 20t-16.5 43v135q0 29 21 47q17 17 43 17h5q160 -13 306 -80.5 t259 -181.5q114 -113 181.5 -259t80.5 -306zM1408 67q2 -27 -18 -47q-18 -20 -46 -20h-143q-26 0 -44.5 17.5t-19.5 42.5q-12 215 -101 408.5t-231.5 336t-336 231.5t-408.5 102q-25 1 -42.5 19.5t-17.5 43.5v143q0 28 20 46q18 18 44 18h3q262 -13 501.5 -120t425.5 -294 q187 -186 294 -425.5t120 -501.5z" />
|
219 |
<glyph unicode="" horiz-adv-x="1792" d="M640 128q0 52 -38 90t-90 38t-90 -38t-38 -90t38 -90t90 -38t90 38t38 90zM256 640h384v256h-158q-13 0 -22 -9l-195 -195q-9 -9 -9 -22v-30zM1536 128q0 52 -38 90t-90 38t-90 -38t-38 -90t38 -90t90 -38t90 38t38 90zM1792 1216v-1024q0 -15 -4 -26.5t-13.5 -18.5 t-16.5 -11.5t-23.5 -6t-22.5 -2t-25.5 0t-22.5 0.5q0 -106 -75 -181t-181 -75t-181 75t-75 181h-384q0 -106 -75 -181t-181 -75t-181 75t-75 181h-64q-3 0 -22.5 -0.5t-25.5 0t-22.5 2t-23.5 6t-16.5 11.5t-13.5 18.5t-4 26.5q0 26 19 45t45 19v320q0 8 -0.5 35t0 38 t2.5 34.5t6.5 37t14 30.5t22.5 30l198 198q19 19 50.5 32t58.5 13h160v192q0 26 19 45t45 19h1024q26 0 45 -19t19 -45z" />
|
220 |
<glyph unicode="" d="M1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103q-111 0 -218 32q59 93 78 164q9 34 54 211q20 -39 73 -67.5t114 -28.5q121 0 216 68.5t147 188.5t52 270q0 114 -59.5 214t-172.5 163t-255 63q-105 0 -196 -29t-154.5 -77t-109 -110.5t-67 -129.5t-21.5 -134 q0 -104 40 -183t117 -111q30 -12 38 20q2 7 8 31t8 30q6 23 -11 43q-51 61 -51 151q0 151 104.5 259.5t273.5 108.5q151 0 235.5 -82t84.5 -213q0 -170 -68.5 -289t-175.5 -119q-61 0 -98 43.5t-23 104.5q8 35 26.5 93.5t30 103t11.5 75.5q0 50 -27 83t-77 33 q-62 0 -105 -57t-43 -142q0 -73 25 -122l-99 -418q-17 -70 -13 -177q-206 91 -333 281t-127 423q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
|
221 |
<glyph unicode="" d="M1248 1408q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-725q85 122 108 210q9 34 53 209q21 -39 73.5 -67t112.5 -28q181 0 295.5 147.5t114.5 373.5q0 84 -35 162.5t-96.5 139t-152.5 97t-197 36.5q-104 0 -194.5 -28.5t-153 -76.5 t-107.5 -109.5t-66.5 -128t-21.5 -132.5q0 -102 39.5 -180t116.5 -110q13 -5 23.5 0t14.5 19q10 44 15 61q6 23 -11 42q-50 62 -50 150q0 150 103.5 256.5t270.5 106.5q149 0 232.5 -81t83.5 -210q0 -168 -67.5 -286t-173.5 -118q-60 0 -97 43.5t-23 103.5q8 34 26.5 92.5 t29.5 102t11 74.5q0 49 -26.5 81.5t-75.5 32.5q-61 0 -103.5 -56.5t-42.5 -139.5q0 -72 24 -121l-98 -414q-24 -100 -7 -254h-183q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960z" />
|
222 |
+
<glyph unicode="" d="M917 631q0 26 -6 64h-362v-132h217q-3 -24 -16.5 -50t-37.5 -53t-66.5 -44.5t-96.5 -17.5q-99 0 -169 71t-70 171t70 171t169 71q92 0 153 -59l104 101q-108 100 -257 100q-160 0 -272 -112.5t-112 -271.5t112 -271.5t272 -112.5q165 0 266.5 105t101.5 270zM1262 585 h109v110h-109v110h-110v-110h-110v-110h110v-110h110v110zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
|
223 |
+
<glyph unicode="" horiz-adv-x="2304" d="M1437 623q0 -208 -87 -370.5t-248 -254t-369 -91.5q-149 0 -285 58t-234 156t-156 234t-58 285t58 285t156 234t234 156t285 58q286 0 491 -192l-199 -191q-117 113 -292 113q-123 0 -227.5 -62t-165.5 -168.5t-61 -232.5t61 -232.5t165.5 -168.5t227.5 -62 q83 0 152.5 23t114.5 57.5t78.5 78.5t49 83t21.5 74h-416v252h692q12 -63 12 -122zM2304 745v-210h-209v-209h-210v209h-209v210h209v209h210v-209h209z" />
|
224 |
<glyph unicode="" horiz-adv-x="1920" d="M768 384h384v96h-128v448h-114l-148 -137l77 -80q42 37 55 57h2v-288h-128v-96zM1280 640q0 -70 -21 -142t-59.5 -134t-101.5 -101t-138 -39t-138 39t-101.5 101t-59.5 134t-21 142t21 142t59.5 134t101.5 101t138 39t138 -39t101.5 -101t59.5 -134t21 -142zM1792 384 v512q-106 0 -181 75t-75 181h-1152q0 -106 -75 -181t-181 -75v-512q106 0 181 -75t75 -181h1152q0 106 75 181t181 75zM1920 1216v-1152q0 -26 -19 -45t-45 -19h-1792q-26 0 -45 19t-19 45v1152q0 26 19 45t45 19h1792q26 0 45 -19t19 -45z" />
|
225 |
<glyph unicode="" horiz-adv-x="1024" d="M1024 832q0 -26 -19 -45l-448 -448q-19 -19 -45 -19t-45 19l-448 448q-19 19 -19 45t19 45t45 19h896q26 0 45 -19t19 -45z" />
|
226 |
<glyph unicode="" horiz-adv-x="1024" d="M1024 320q0 -26 -19 -45t-45 -19h-896q-26 0 -45 19t-19 45t19 45l448 448q19 19 45 19t45 -19l448 -448q19 -19 19 -45z" />
|
362 |
<glyph unicode="" d="M685 771q0 1 -126 222q-21 34 -52 34h-184q-18 0 -26 -11q-7 -12 1 -29l125 -216v-1l-196 -346q-9 -14 0 -28q8 -13 24 -13h185q31 0 50 36zM1309 1268q-7 12 -24 12h-187q-30 0 -49 -35l-411 -729q1 -2 262 -481q20 -35 52 -35h184q18 0 25 12q8 13 -1 28l-260 476v1 l409 723q8 16 0 28zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
|
363 |
<glyph unicode="" horiz-adv-x="1792" d="M1280 640q0 37 -30 54l-512 320q-31 20 -65 2q-33 -18 -33 -56v-640q0 -38 33 -56q16 -8 31 -8q20 0 34 10l512 320q30 17 30 54zM1792 640q0 -96 -1 -150t-8.5 -136.5t-22.5 -147.5q-16 -73 -69 -123t-124 -58q-222 -25 -671 -25t-671 25q-71 8 -124.5 58t-69.5 123 q-14 65 -21.5 147.5t-8.5 136.5t-1 150t1 150t8.5 136.5t22.5 147.5q16 73 69 123t124 58q222 25 671 25t671 -25q71 -8 124.5 -58t69.5 -123q14 -65 21.5 -147.5t8.5 -136.5t1 -150z" />
|
364 |
<glyph unicode="" horiz-adv-x="1792" d="M402 829l494 -305l-342 -285l-490 319zM1388 274v-108l-490 -293v-1l-1 1l-1 -1v1l-489 293v108l147 -96l342 284v2l1 -1l1 1v-2l343 -284zM554 1418l342 -285l-494 -304l-338 270zM1390 829l338 -271l-489 -319l-343 285zM1239 1418l489 -319l-338 -270l-494 304z" />
|
365 |
+
<glyph unicode="" d="M1289 -96h-1118v480h-160v-640h1438v640h-160v-480zM347 428l33 157l783 -165l-33 -156zM450 802l67 146l725 -339l-67 -145zM651 1158l102 123l614 -513l-102 -123zM1048 1536l477 -641l-128 -96l-477 641zM330 65v159h800v-159h-800z" />
|
366 |
+
<glyph unicode="" d="M1024 640q0 106 -75 181t-181 75t-181 -75t-75 -181t75 -181t181 -75t181 75t75 181zM1162 640q0 -164 -115 -279t-279 -115t-279 115t-115 279t115 279t279 115t279 -115t115 -279zM1270 1050q0 -38 -27 -65t-65 -27t-65 27t-27 65t27 65t65 27t65 -27t27 -65zM768 1270 q-7 0 -76.5 0.5t-105.5 0t-96.5 -3t-103 -10t-71.5 -18.5q-50 -20 -88 -58t-58 -88q-11 -29 -18.5 -71.5t-10 -103t-3 -96.5t0 -105.5t0.5 -76.5t-0.5 -76.5t0 -105.5t3 -96.5t10 -103t18.5 -71.5q20 -50 58 -88t88 -58q29 -11 71.5 -18.5t103 -10t96.5 -3t105.5 0t76.5 0.5 t76.5 -0.5t105.5 0t96.5 3t103 10t71.5 18.5q50 20 88 58t58 88q11 29 18.5 71.5t10 103t3 96.5t0 105.5t-0.5 76.5t0.5 76.5t0 105.5t-3 96.5t-10 103t-18.5 71.5q-20 50 -58 88t-88 58q-29 11 -71.5 18.5t-103 10t-96.5 3t-105.5 0t-76.5 -0.5zM1536 640q0 -229 -5 -317 q-10 -208 -124 -322t-322 -124q-88 -5 -317 -5t-317 5q-208 10 -322 124t-124 322q-5 88 -5 317t5 317q10 208 124 322t322 124q88 5 317 5t317 -5q208 -10 322 -124t124 -322q5 -88 5 -317z" />
|
367 |
<glyph unicode="" d="M1248 1408q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960zM698 640q0 88 -62 150t-150 62t-150 -62t-62 -150t62 -150t150 -62t150 62t62 150zM1262 640q0 88 -62 150 t-150 62t-150 -62t-62 -150t62 -150t150 -62t150 62t62 150z" />
|
368 |
<glyph unicode="" d="M768 914l201 -306h-402zM1133 384h94l-459 691l-459 -691h94l104 160h522zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
|
369 |
<glyph unicode="" horiz-adv-x="1408" d="M815 677q8 -63 -50.5 -101t-111.5 -6q-39 17 -53.5 58t-0.5 82t52 58q36 18 72.5 12t64 -35.5t27.5 -67.5zM926 698q-14 107 -113 164t-197 13q-63 -28 -100.5 -88.5t-34.5 -129.5q4 -91 77.5 -155t165.5 -56q91 8 152 84t50 168zM1165 1240q-20 27 -56 44.5t-58 22 t-71 12.5q-291 47 -566 -2q-43 -7 -66 -12t-55 -22t-50 -43q30 -28 76 -45.5t73.5 -22t87.5 -11.5q228 -29 448 -1q63 8 89.5 12t72.5 21.5t75 46.5zM1222 205q-8 -26 -15.5 -76.5t-14 -84t-28.5 -70t-58 -56.5q-86 -48 -189.5 -71.5t-202 -22t-201.5 18.5q-46 8 -81.5 18 t-76.5 27t-73 43.5t-52 61.5q-25 96 -57 292l6 16l18 9q223 -148 506.5 -148t507.5 148q21 -6 24 -23t-5 -45t-8 -37zM1403 1166q-26 -167 -111 -655q-5 -30 -27 -56t-43.5 -40t-54.5 -31q-252 -126 -610 -88q-248 27 -394 139q-15 12 -25.5 26.5t-17 35t-9 34t-6 39.5 t-5.5 35q-9 50 -26.5 150t-28 161.5t-23.5 147.5t-22 158q3 26 17.5 48.5t31.5 37.5t45 30t46 22.5t48 18.5q125 46 313 64q379 37 676 -50q155 -46 215 -122q16 -20 16.5 -51t-5.5 -54z" />
|
410 |
<glyph unicode="" horiz-adv-x="2048" d="M960 1536l960 -384v-128h-128q0 -26 -20.5 -45t-48.5 -19h-1526q-28 0 -48.5 19t-20.5 45h-128v128zM256 896h256v-768h128v768h256v-768h128v768h256v-768h128v768h256v-768h59q28 0 48.5 -19t20.5 -45v-64h-1664v64q0 26 20.5 45t48.5 19h59v768zM1851 -64 q28 0 48.5 -19t20.5 -45v-128h-1920v128q0 26 20.5 45t48.5 19h1782z" />
|
411 |
<glyph unicode="" horiz-adv-x="2304" d="M1774 700l18 -316q4 -69 -82 -128t-235 -93.5t-323 -34.5t-323 34.5t-235 93.5t-82 128l18 316l574 -181q22 -7 48 -7t48 7zM2304 1024q0 -23 -22 -31l-1120 -352q-4 -1 -10 -1t-10 1l-652 206q-43 -34 -71 -111.5t-34 -178.5q63 -36 63 -109q0 -69 -58 -107l58 -433 q2 -14 -8 -25q-9 -11 -24 -11h-192q-15 0 -24 11q-10 11 -8 25l58 433q-58 38 -58 107q0 73 65 111q11 207 98 330l-333 104q-22 8 -22 31t22 31l1120 352q4 1 10 1t10 -1l1120 -352q22 -8 22 -31z" />
|
412 |
<glyph unicode="" d="M859 579l13 -707q-62 11 -105 11q-41 0 -105 -11l13 707q-40 69 -168.5 295.5t-216.5 374.5t-181 287q58 -15 108 -15q43 0 111 15q63 -111 133.5 -229.5t167 -276.5t138.5 -227q37 61 109.5 177.5t117.5 190t105 176t107 189.5q54 -14 107 -14q56 0 114 14v0 q-28 -39 -60 -88.5t-49.5 -78.5t-56.5 -96t-49 -84q-146 -248 -353 -610z" />
|
413 |
+
<glyph unicode="" d="M768 750h725q12 -67 12 -128q0 -217 -91 -387.5t-259.5 -266.5t-386.5 -96q-157 0 -299 60.5t-245 163.5t-163.5 245t-60.5 299t60.5 299t163.5 245t245 163.5t299 60.5q300 0 515 -201l-209 -201q-123 119 -306 119q-129 0 -238.5 -65t-173.5 -176.5t-64 -243.5 t64 -243.5t173.5 -176.5t238.5 -65q87 0 160 24t120 60t82 82t51.5 87t22.5 78h-436v264z" />
|
414 |
<glyph unicode="" horiz-adv-x="1792" d="M1095 369q16 -16 0 -31q-62 -62 -199 -62t-199 62q-16 15 0 31q6 6 15 6t15 -6q48 -49 169 -49q120 0 169 49q6 6 15 6t15 -6zM788 550q0 -37 -26 -63t-63 -26t-63.5 26t-26.5 63q0 38 26.5 64t63.5 26t63 -26.5t26 -63.5zM1183 550q0 -37 -26.5 -63t-63.5 -26t-63 26 t-26 63t26 63.5t63 26.5t63.5 -26t26.5 -64zM1434 670q0 49 -35 84t-85 35t-86 -36q-130 90 -311 96l63 283l200 -45q0 -37 26 -63t63 -26t63.5 26.5t26.5 63.5t-26.5 63.5t-63.5 26.5q-54 0 -80 -50l-221 49q-19 5 -25 -16l-69 -312q-180 -7 -309 -97q-35 37 -87 37 q-50 0 -85 -35t-35 -84q0 -35 18.5 -64t49.5 -44q-6 -27 -6 -56q0 -142 140 -243t337 -101q198 0 338 101t140 243q0 32 -7 57q30 15 48 43.5t18 63.5zM1792 640q0 -182 -71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191 t348 71t348 -71t286 -191t191 -286t71 -348z" />
|
415 |
<glyph unicode="" d="M939 407q13 -13 0 -26q-53 -53 -171 -53t-171 53q-13 13 0 26q5 6 13 6t13 -6q42 -42 145 -42t145 42q5 6 13 6t13 -6zM676 563q0 -31 -23 -54t-54 -23t-54 23t-23 54q0 32 22.5 54.5t54.5 22.5t54.5 -22.5t22.5 -54.5zM1014 563q0 -31 -23 -54t-54 -23t-54 23t-23 54 q0 32 22.5 54.5t54.5 22.5t54.5 -22.5t22.5 -54.5zM1229 666q0 42 -30 72t-73 30q-42 0 -73 -31q-113 78 -267 82l54 243l171 -39q1 -32 23.5 -54t53.5 -22q32 0 54.5 22.5t22.5 54.5t-22.5 54.5t-54.5 22.5q-48 0 -69 -43l-189 42q-17 5 -21 -13l-60 -268q-154 -6 -265 -83 q-30 32 -74 32q-43 0 -73 -30t-30 -72q0 -30 16 -55t42 -38q-5 -25 -5 -48q0 -122 120 -208.5t289 -86.5q170 0 290 86.5t120 208.5q0 25 -6 49q25 13 40.5 37.5t15.5 54.5zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960 q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
|
416 |
<glyph unicode="" d="M866 697l90 27v62q0 79 -58 135t-138 56t-138 -55.5t-58 -134.5v-283q0 -20 -14 -33.5t-33 -13.5t-32.5 13.5t-13.5 33.5v120h-151v-122q0 -82 57.5 -139t139.5 -57q81 0 138.5 56.5t57.5 136.5v280q0 19 13.5 33t33.5 14q19 0 32.5 -14t13.5 -33v-54zM1199 502v122h-150 v-126q0 -20 -13.5 -33.5t-33.5 -13.5q-19 0 -32.5 14t-13.5 33v123l-90 -26l-60 28v-123q0 -80 58 -137t139 -57t138.5 57t57.5 139zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103 t385.5 -103t279.5 -279.5t103 -385.5z" />
|
454 |
<glyph unicode="" horiz-adv-x="1792" d="M216 367l603 -402v359l-334 223zM154 511l193 129l-193 129v-258zM973 -35l603 402l-269 180l-334 -223v-359zM896 458l272 182l-272 182l-272 -182zM485 733l334 223v359l-603 -402zM1445 640l193 -129v258zM1307 733l269 180l-603 402v-359zM1792 913v-546 q0 -41 -34 -64l-819 -546q-21 -13 -43 -13t-43 13l-819 546q-34 23 -34 64v546q0 41 34 64l819 546q21 13 43 13t43 -13l819 -546q34 -23 34 -64z" />
|
455 |
<glyph unicode="" horiz-adv-x="2048" d="M1800 764q111 -46 179.5 -145.5t68.5 -221.5q0 -164 -118 -280.5t-285 -116.5q-4 0 -11.5 0.5t-10.5 0.5h-1209h-1h-2h-5q-170 10 -288 125.5t-118 280.5q0 110 55 203t147 147q-12 39 -12 82q0 115 82 196t199 81q95 0 172 -58q75 154 222.5 248t326.5 94 q166 0 306 -80.5t221.5 -218.5t81.5 -301q0 -6 -0.5 -18t-0.5 -18zM468 498q0 -122 84 -193t208 -71q137 0 240 99q-16 20 -47.5 56.5t-43.5 50.5q-67 -65 -144 -65q-55 0 -93.5 33.5t-38.5 87.5q0 53 38.5 87t91.5 34q44 0 84.5 -21t73 -55t65 -75t69 -82t77 -75t97 -55 t121.5 -21q121 0 204.5 71.5t83.5 190.5q0 121 -84 192t-207 71q-143 0 -241 -97q14 -16 29.5 -34t34.5 -40t29 -34q66 64 142 64q52 0 92 -33t40 -84q0 -57 -37 -91.5t-94 -34.5q-43 0 -82.5 21t-72 55t-65.5 75t-69.5 82t-77.5 75t-96.5 55t-118.5 21q-122 0 -207 -70.5 t-85 -189.5z" />
|
456 |
<glyph unicode="" horiz-adv-x="1792" d="M896 1536q182 0 348 -71t286 -191t191 -286t71 -348t-71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71zM896 1408q-190 0 -361 -90l194 -194q82 28 167 28t167 -28l194 194q-171 90 -361 90zM218 279l194 194 q-28 82 -28 167t28 167l-194 194q-90 -171 -90 -361t90 -361zM896 -128q190 0 361 90l-194 194q-82 -28 -167 -28t-167 28l-194 -194q171 -90 361 -90zM896 256q159 0 271.5 112.5t112.5 271.5t-112.5 271.5t-271.5 112.5t-271.5 -112.5t-112.5 -271.5t112.5 -271.5 t271.5 -112.5zM1380 473l194 -194q90 171 90 361t-90 361l-194 -194q28 -82 28 -167t-28 -167z" />
|
457 |
+
<glyph unicode="" horiz-adv-x="1792" d="M1760 640q0 -176 -68.5 -336t-184 -275.5t-275.5 -184t-336 -68.5t-336 68.5t-275.5 184t-184 275.5t-68.5 336q0 213 97 398.5t265 305.5t374 151v-228q-221 -45 -366.5 -221t-145.5 -406q0 -130 51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5 t136.5 204t51 248.5q0 230 -145.5 406t-366.5 221v228q206 -31 374 -151t265 -305.5t97 -398.5z" />
|
458 |
<glyph unicode="" horiz-adv-x="1792" d="M19 662q8 217 116 406t305 318h5q0 -1 -1 -3q-8 -8 -28 -33.5t-52 -76.5t-60 -110.5t-44.5 -135.5t-14 -150.5t39 -157.5t108.5 -154q50 -50 102 -69.5t90.5 -11.5t69.5 23.5t47 32.5l16 16q39 51 53 116.5t6.5 122.5t-21 107t-26.5 80l-14 29q-10 25 -30.5 49.5t-43 41 t-43.5 29.5t-35 19l-13 6l104 115q39 -17 78 -52t59 -61l19 -27q1 48 -18.5 103.5t-40.5 87.5l-20 31l161 183l160 -181q-33 -46 -52.5 -102.5t-22.5 -90.5l-4 -33q22 37 61.5 72.5t67.5 52.5l28 17l103 -115q-44 -14 -85 -50t-60 -65l-19 -29q-31 -56 -48 -133.5t-7 -170 t57 -156.5q33 -45 77.5 -60.5t85 -5.5t76 26.5t57.5 33.5l21 16q60 53 96.5 115t48.5 121.5t10 121.5t-18 118t-37 107.5t-45.5 93t-45 72t-34.5 47.5l-13 17q-14 13 -7 13l10 -3q40 -29 62.5 -46t62 -50t64 -58t58.5 -65t55.5 -77t45.5 -88t38 -103t23.5 -117t10.5 -136 q3 -259 -108 -465t-312 -321t-456 -115q-185 0 -351 74t-283.5 198t-184 293t-60.5 353z" />
|
459 |
<glyph unicode="" horiz-adv-x="1792" d="M874 -102v-66q-208 6 -385 109.5t-283 275.5l58 34q29 -49 73 -99l65 57q148 -168 368 -212l-17 -86q65 -12 121 -13zM276 428l-83 -28q22 -60 49 -112l-57 -33q-98 180 -98 385t98 385l57 -33q-30 -56 -49 -112l82 -28q-35 -100 -35 -212q0 -109 36 -212zM1528 251 l58 -34q-106 -172 -283 -275.5t-385 -109.5v66q56 1 121 13l-17 86q220 44 368 212l65 -57q44 50 73 99zM1377 805l-233 -80q14 -42 14 -85t-14 -85l232 -80q-31 -92 -98 -169l-185 162q-57 -67 -147 -85l48 -241q-52 -10 -98 -10t-98 10l48 241q-90 18 -147 85l-185 -162 q-67 77 -98 169l232 80q-14 42 -14 85t14 85l-233 80q33 93 99 169l185 -162q59 68 147 86l-48 240q44 10 98 10t98 -10l-48 -240q88 -18 147 -86l185 162q66 -76 99 -169zM874 1448v-66q-65 -2 -121 -13l17 -86q-220 -42 -368 -211l-65 56q-38 -42 -73 -98l-57 33 q106 172 282 275.5t385 109.5zM1705 640q0 -205 -98 -385l-57 33q27 52 49 112l-83 28q36 103 36 212q0 112 -35 212l82 28q-19 56 -49 112l57 33q98 -180 98 -385zM1585 1063l-57 -33q-35 56 -73 98l-65 -56q-148 169 -368 211l17 86q-56 11 -121 13v66q209 -6 385 -109.5 t282 -275.5zM1748 640q0 173 -67.5 331t-181.5 272t-272 181.5t-331 67.5t-331 -67.5t-272 -181.5t-181.5 -272t-67.5 -331t67.5 -331t181.5 -272t272 -181.5t331 -67.5t331 67.5t272 181.5t181.5 272t67.5 331zM1792 640q0 -182 -71 -348t-191 -286t-286 -191t-348 -71 t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348z" />
|
460 |
<glyph unicode="" d="M582 228q0 -66 -93 -66q-107 0 -107 63q0 64 98 64q102 0 102 -61zM546 694q0 -85 -74 -85q-77 0 -77 84q0 90 77 90q36 0 55 -25.5t19 -63.5zM712 769v125q-78 -29 -135 -29q-50 29 -110 29q-86 0 -145 -57t-59 -143q0 -50 29.5 -102t73.5 -67v-3q-38 -17 -38 -85 q0 -53 41 -77v-3q-113 -37 -113 -139q0 -45 20 -78.5t54 -51t72 -25.5t81 -8q224 0 224 188q0 67 -48 99t-126 46q-27 5 -51.5 20.5t-24.5 39.5q0 44 49 52q77 15 122 70t45 134q0 24 -10 52q37 9 49 13zM771 350h137q-2 27 -2 82v387q0 46 2 69h-137q3 -23 3 -71v-392 q0 -50 -3 -75zM1280 366v121q-30 -21 -68 -21q-53 0 -53 82v225h52q9 0 26.5 -1t26.5 -1v117h-105q0 82 3 102h-140q4 -24 4 -55v-47h-60v-117q36 3 37 3q3 0 11 -0.5t12 -0.5v-2h-2v-217q0 -37 2.5 -64t11.5 -56.5t24.5 -48.5t43.5 -31t66 -12q64 0 108 24zM924 1072 q0 36 -24 63.5t-60 27.5t-60.5 -27t-24.5 -64q0 -36 25 -62.5t60 -26.5t59.5 27t24.5 62zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
|
484 |
<glyph unicode="" horiz-adv-x="2048" d="M1024 13q-20 0 -93 73.5t-73 93.5q0 32 62.5 54t103.5 22t103.5 -22t62.5 -54q0 -20 -73 -93.5t-93 -73.5zM1294 284q-2 0 -40 25t-101.5 50t-128.5 25t-128.5 -25t-101 -50t-40.5 -25q-18 0 -93.5 75t-75.5 93q0 13 10 23q78 77 196 121t233 44t233 -44t196 -121 q10 -10 10 -23q0 -18 -75.5 -93t-93.5 -75zM1567 556q-11 0 -23 8q-136 105 -252 154.5t-268 49.5q-85 0 -170.5 -22t-149 -53t-113.5 -62t-79 -53t-31 -22q-17 0 -92 75t-75 93q0 12 10 22q132 132 320 205t380 73t380 -73t320 -205q10 -10 10 -22q0 -18 -75 -93t-92 -75z M1838 827q-11 0 -22 9q-179 157 -371.5 236.5t-420.5 79.5t-420.5 -79.5t-371.5 -236.5q-11 -9 -22 -9q-17 0 -92.5 75t-75.5 93q0 13 10 23q187 186 445 288t527 102t527 -102t445 -288q10 -10 10 -23q0 -18 -75.5 -93t-92.5 -75z" />
|
485 |
<glyph unicode="" horiz-adv-x="1792" d="M384 0q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM768 0q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM384 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5 t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1152 0q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM768 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5 t37.5 90.5zM384 768q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1152 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM768 768q0 53 -37.5 90.5t-90.5 37.5 t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1536 0v384q0 52 -38 90t-90 38t-90 -38t-38 -90v-384q0 -52 38 -90t90 -38t90 38t38 90zM1152 768q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5z M1536 1088v256q0 26 -19 45t-45 19h-1280q-26 0 -45 -19t-19 -45v-256q0 -26 19 -45t45 -19h1280q26 0 45 19t19 45zM1536 768q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1664 1408v-1536q0 -52 -38 -90t-90 -38 h-1408q-52 0 -90 38t-38 90v1536q0 52 38 90t90 38h1408q52 0 90 -38t38 -90z" />
|
486 |
<glyph unicode="" d="M1519 890q18 -84 -4 -204q-87 -444 -565 -444h-44q-25 0 -44 -16.5t-24 -42.5l-4 -19l-55 -346l-2 -15q-5 -26 -24.5 -42.5t-44.5 -16.5h-251q-21 0 -33 15t-9 36q9 56 26.5 168t26.5 168t27 167.5t27 167.5q5 37 43 37h131q133 -2 236 21q175 39 287 144q102 95 155 246 q24 70 35 133q1 6 2.5 7.5t3.5 1t6 -3.5q79 -59 98 -162zM1347 1172q0 -107 -46 -236q-80 -233 -302 -315q-113 -40 -252 -42q0 -1 -90 -1l-90 1q-100 0 -118 -96q-2 -8 -85 -530q-1 -10 -12 -10h-295q-22 0 -36.5 16.5t-11.5 38.5l232 1471q5 29 27.5 48t51.5 19h598 q34 0 97.5 -13t111.5 -32q107 -41 163.5 -123t56.5 -196z" />
|
487 |
+
<glyph unicode="" horiz-adv-x="1792" d="M441 864q32 0 52 -26q266 -364 362 -774h-446q-127 441 -367 749q-12 16 -3 33.5t29 17.5h373zM1000 507q-49 -199 -125 -393q-79 310 -256 594q40 221 44 449q211 -340 337 -650zM1099 1216q235 -324 384.5 -698.5t184.5 -773.5h-451q-41 665 -553 1472h435zM1792 640 q0 -424 -101 -812q-67 560 -359 1083q-25 301 -106 584q-4 16 5.5 28.5t25.5 12.5h359q21 0 38.5 -13t22.5 -33q115 -409 115 -850z" />
|
488 |
<glyph unicode="" horiz-adv-x="2304" d="M1975 546h-138q14 37 66 179l3 9q4 10 10 26t9 26l12 -55zM531 611l-58 295q-11 54 -75 54h-268l-2 -13q311 -79 403 -336zM710 960l-162 -438l-17 89q-26 70 -85 129.5t-131 88.5l135 -510h175l261 641h-176zM849 318h166l104 642h-166zM1617 944q-69 27 -149 27 q-123 0 -201 -59t-79 -153q-1 -102 145 -174q48 -23 67 -41t19 -39q0 -30 -30 -46t-69 -16q-86 0 -156 33l-22 11l-23 -144q74 -34 185 -34q130 -1 208.5 59t80.5 160q0 106 -140 174q-49 25 -71 42t-22 38q0 22 24.5 38.5t70.5 16.5q70 1 124 -24l15 -8zM2042 960h-128 q-65 0 -87 -54l-246 -588h174l35 96h212q5 -22 20 -96h154zM2304 1280v-1280q0 -52 -38 -90t-90 -38h-2048q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h2048q52 0 90 -38t38 -90z" />
|
489 |
<glyph unicode="" horiz-adv-x="2304" d="M671 603h-13q-47 0 -47 -32q0 -22 20 -22q17 0 28 15t12 39zM1066 639h62v3q1 4 0.5 6.5t-1 7t-2 8t-4.5 6.5t-7.5 5t-11.5 2q-28 0 -36 -38zM1606 603h-12q-48 0 -48 -32q0 -22 20 -22q17 0 28 15t12 39zM1925 629q0 41 -30 41q-19 0 -31 -20t-12 -51q0 -42 28 -42 q20 0 32.5 20t12.5 52zM480 770h87l-44 -262h-56l32 201l-71 -201h-39l-4 200l-34 -200h-53l44 262h81l2 -163zM733 663q0 -6 -4 -42q-16 -101 -17 -113h-47l1 22q-20 -26 -58 -26q-23 0 -37.5 16t-14.5 42q0 39 26 60.5t73 21.5q14 0 23 -1q0 3 0.5 5.5t1 4.5t0.5 3 q0 20 -36 20q-29 0 -59 -10q0 4 7 48q38 11 67 11q74 0 74 -62zM889 721l-8 -49q-22 3 -41 3q-27 0 -27 -17q0 -8 4.5 -12t21.5 -11q40 -19 40 -60q0 -72 -87 -71q-34 0 -58 6q0 2 7 49q29 -8 51 -8q32 0 32 19q0 7 -4.5 11.5t-21.5 12.5q-43 20 -43 59q0 72 84 72 q30 0 50 -4zM977 721h28l-7 -52h-29q-2 -17 -6.5 -40.5t-7 -38.5t-2.5 -18q0 -16 19 -16q8 0 16 2l-8 -47q-21 -7 -40 -7q-43 0 -45 47q0 12 8 56q3 20 25 146h55zM1180 648q0 -23 -7 -52h-111q-3 -22 10 -33t38 -11q30 0 58 14l-9 -54q-30 -8 -57 -8q-95 0 -95 95 q0 55 27.5 90.5t69.5 35.5q35 0 55.5 -21t20.5 -56zM1319 722q-13 -23 -22 -62q-22 2 -31 -24t-25 -128h-56l3 14q22 130 29 199h51l-3 -33q14 21 25.5 29.5t28.5 4.5zM1506 763l-9 -57q-28 14 -50 14q-31 0 -51 -27.5t-20 -70.5q0 -30 13.5 -47t38.5 -17q21 0 48 13 l-10 -59q-28 -8 -50 -8q-45 0 -71.5 30.5t-26.5 82.5q0 70 35.5 114.5t91.5 44.5q26 0 61 -13zM1668 663q0 -18 -4 -42q-13 -79 -17 -113h-46l1 22q-20 -26 -59 -26q-23 0 -37 16t-14 42q0 39 25.5 60.5t72.5 21.5q15 0 23 -1q2 7 2 13q0 20 -36 20q-29 0 -59 -10q0 4 8 48 q38 11 67 11q73 0 73 -62zM1809 722q-14 -24 -21 -62q-23 2 -31.5 -23t-25.5 -129h-56l3 14q19 104 29 199h52q0 -11 -4 -33q15 21 26.5 29.5t27.5 4.5zM1950 770h56l-43 -262h-53l3 19q-23 -23 -52 -23q-31 0 -49.5 24t-18.5 64q0 53 27.5 92t64.5 39q31 0 53 -29z M2061 640q0 148 -72.5 273t-198 198t-273.5 73q-181 0 -328 -110q127 -116 171 -284h-50q-44 150 -158 253q-114 -103 -158 -253h-50q44 168 171 284q-147 110 -328 110q-148 0 -273.5 -73t-198 -198t-72.5 -273t72.5 -273t198 -198t273.5 -73q181 0 328 110 q-120 111 -165 264h50q46 -138 152 -233q106 95 152 233h50q-45 -153 -165 -264q147 -110 328 -110q148 0 273.5 73t198 198t72.5 273zM2304 1280v-1280q0 -52 -38 -90t-90 -38h-2048q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h2048q52 0 90 -38t38 -90z" />
|
490 |
<glyph unicode="" horiz-adv-x="2304" d="M313 759q0 -51 -36 -84q-29 -26 -89 -26h-17v220h17q61 0 89 -27q36 -31 36 -83zM2089 824q0 -52 -64 -52h-19v101h20q63 0 63 -49zM380 759q0 74 -50 120.5t-129 46.5h-95v-333h95q74 0 119 38q60 51 60 128zM410 593h65v333h-65v-333zM730 694q0 40 -20.5 62t-75.5 42 q-29 10 -39.5 19t-10.5 23q0 16 13.5 26.5t34.5 10.5q29 0 53 -27l34 44q-41 37 -98 37q-44 0 -74 -27.5t-30 -67.5q0 -35 18 -55.5t64 -36.5q37 -13 45 -19q19 -12 19 -34q0 -20 -14 -33.5t-36 -13.5q-48 0 -71 44l-42 -40q44 -64 115 -64q51 0 83 30.5t32 79.5zM1008 604 v77q-37 -37 -78 -37q-49 0 -80.5 32.5t-31.5 82.5q0 48 31.5 81.5t77.5 33.5q43 0 81 -38v77q-40 20 -80 20q-74 0 -125.5 -50.5t-51.5 -123.5t51 -123.5t125 -50.5q42 0 81 19zM2240 0v527q-65 -40 -144.5 -84t-237.5 -117t-329.5 -137.5t-417.5 -134.5t-504 -118h1569 q26 0 45 19t19 45zM1389 757q0 75 -53 128t-128 53t-128 -53t-53 -128t53 -128t128 -53t128 53t53 128zM1541 584l144 342h-71l-90 -224l-89 224h-71l142 -342h35zM1714 593h184v56h-119v90h115v56h-115v74h119v57h-184v-333zM2105 593h80l-105 140q76 16 76 94q0 47 -31 73 t-87 26h-97v-333h65v133h9zM2304 1274v-1268q0 -56 -38.5 -95t-93.5 -39h-2040q-55 0 -93.5 39t-38.5 95v1268q0 56 38.5 95t93.5 39h2040q55 0 93.5 -39t38.5 -95z" />
|
555 |
<glyph unicode="" d="M1536 1536l-192 -448h192v-192h-274l-55 -128h329v-192h-411l-357 -832l-357 832h-411v192h329l-55 128h-274v192h192l-192 448h256l323 -768h378l323 768h256zM768 320l108 256h-216z" />
|
556 |
<glyph unicode="" d="M1088 1536q185 0 316.5 -93.5t131.5 -226.5v-896q0 -130 -125.5 -222t-305.5 -97l213 -202q16 -15 8 -35t-30 -20h-1056q-22 0 -30 20t8 35l213 202q-180 5 -305.5 97t-125.5 222v896q0 133 131.5 226.5t316.5 93.5h640zM768 192q80 0 136 56t56 136t-56 136t-136 56 t-136 -56t-56 -136t56 -136t136 -56zM1344 768v512h-1152v-512h1152z" />
|
557 |
<glyph unicode="" d="M1088 1536q185 0 316.5 -93.5t131.5 -226.5v-896q0 -130 -125.5 -222t-305.5 -97l213 -202q16 -15 8 -35t-30 -20h-1056q-22 0 -30 20t8 35l213 202q-180 5 -305.5 97t-125.5 222v896q0 133 131.5 226.5t316.5 93.5h640zM288 224q66 0 113 47t47 113t-47 113t-113 47 t-113 -47t-47 -113t47 -113t113 -47zM704 768v512h-544v-512h544zM1248 224q66 0 113 47t47 113t-47 113t-113 47t-113 -47t-47 -113t47 -113t113 -47zM1408 768v512h-576v-512h576z" />
|
558 |
+
<glyph unicode="" horiz-adv-x="1792" d="M597 1115v-1173q0 -25 -12.5 -42.5t-36.5 -17.5q-17 0 -33 8l-465 233q-21 10 -35.5 33.5t-14.5 46.5v1140q0 20 10 34t29 14q14 0 44 -15l511 -256q3 -3 3 -5zM661 1014l534 -866l-534 266v600zM1792 996v-1054q0 -25 -14 -40.5t-38 -15.5t-47 13l-441 220zM1789 1116 q0 -3 -256.5 -419.5t-300.5 -487.5l-390 634l324 527q17 28 52 28q14 0 26 -6l541 -270q4 -2 4 -6z" />
|
559 |
<glyph unicode="" d="M809 532l266 499h-112l-157 -312q-24 -48 -44 -92l-42 92l-155 312h-120l263 -493v-324h101v318zM1536 1408v-1536h-1536v1536h1536z" />
|
560 |
<glyph unicode="" horiz-adv-x="2296" d="M478 -139q-8 -16 -27 -34.5t-37 -25.5q-25 -9 -51.5 3.5t-28.5 31.5q-1 22 40 55t68 38q23 4 34 -21.5t2 -46.5zM1819 -139q7 -16 26 -34.5t38 -25.5q25 -9 51.5 3.5t27.5 31.5q2 22 -39.5 55t-68.5 38q-22 4 -33 -21.5t-2 -46.5zM1867 -30q13 -27 56.5 -59.5t77.5 -41.5 q45 -13 82 4.5t37 50.5q0 46 -67.5 100.5t-115.5 59.5q-40 5 -63.5 -37.5t-6.5 -76.5zM428 -30q-13 -27 -56 -59.5t-77 -41.5q-45 -13 -82 4.5t-37 50.5q0 46 67.5 100.5t115.5 59.5q40 5 63 -37.5t6 -76.5zM1158 1094h1q-41 0 -76 -15q27 -8 44 -30.5t17 -49.5 q0 -35 -27 -60t-65 -25q-52 0 -80 43q-5 -23 -5 -42q0 -74 56 -126.5t135 -52.5q80 0 136 52.5t56 126.5t-56 126.5t-136 52.5zM1462 1312q-99 109 -220.5 131.5t-245.5 -44.5q27 60 82.5 96.5t118 39.5t121.5 -17t99.5 -74.5t44.5 -131.5zM2212 73q8 -11 -11 -42 q7 -23 7 -40q1 -56 -44.5 -112.5t-109.5 -91.5t-118 -37q-48 -2 -92 21.5t-66 65.5q-687 -25 -1259 0q-23 -41 -66.5 -65t-92.5 -22q-86 3 -179.5 80.5t-92.5 160.5q2 22 7 40q-19 31 -11 42q6 10 31 1q14 22 41 51q-7 29 2 38q11 10 39 -4q29 20 59 34q0 29 13 37 q23 12 51 -16q35 5 61 -2q18 -4 38 -19v73q-11 0 -18 2q-53 10 -97 44.5t-55 87.5q-9 38 0 81q15 62 93 95q2 17 19 35.5t36 23.5t33 -7.5t19 -30.5h13q46 -5 60 -23q3 -3 5 -7q10 1 30.5 3.5t30.5 3.5q-15 11 -30 17q-23 40 -91 43q0 6 1 10q-62 2 -118.5 18.5t-84.5 47.5 q-32 36 -42.5 92t-2.5 112q16 126 90 179q23 16 52 4.5t32 -40.5q0 -1 1.5 -14t2.5 -21t3 -20t5.5 -19t8.5 -10q27 -14 76 -12q48 46 98 74q-40 4 -162 -14l47 46q61 58 163 111q145 73 282 86q-20 8 -41 15.5t-47 14t-42.5 10.5t-47.5 11t-43 10q595 126 904 -139 q98 -84 158 -222q85 -10 121 9h1q5 3 8.5 10t5.5 19t3 19.5t3 21.5l1 14q3 28 32 40t52 -5q73 -52 91 -178q7 -57 -3.5 -113t-42.5 -91q-28 -32 -83.5 -48.5t-115.5 -18.5v-10q-71 -2 -95 -43q-14 -5 -31 -17q11 -1 32 -3.5t30 -3.5q1 4 5 8q16 18 60 23h13q5 18 19 30t33 8 t36 -23t19 -36q79 -32 93 -95q9 -40 1 -81q-12 -53 -56 -88t-97 -44q-10 -2 -17 -2q0 -49 -1 -73q20 15 38 19q26 7 61 2q28 28 51 16q14 -9 14 -37q33 -16 59 -34q27 13 38 4q10 -10 2 -38q28 -30 41 -51q23 8 31 -1zM1937 1025q0 -29 -9 -54q82 -32 112 -132 q4 37 -9.5 98.5t-41.5 90.5q-20 19 -36 17t-16 -20zM1859 925q35 -42 47.5 -108.5t-0.5 -124.5q67 13 97 45q13 14 18 28q-3 64 -31 114.5t-79 66.5q-15 -15 -52 -21zM1822 921q-30 0 -44 1q42 -115 53 -239q21 0 43 3q16 68 1 135t-53 100zM258 839q30 100 112 132 q-9 25 -9 54q0 18 -16.5 20t-35.5 -17q-28 -29 -41.5 -90.5t-9.5 -98.5zM294 737q29 -31 97 -45q-13 58 -0.5 124.5t47.5 108.5v0q-37 6 -52 21q-51 -16 -78.5 -66t-31.5 -115q9 -17 18 -28zM471 683q14 124 73 235q-19 -4 -55 -18l-45 -19v1q-46 -89 -20 -196q25 -3 47 -3z M1434 644q8 -38 16.5 -108.5t11.5 -89.5q3 -18 9.5 -21.5t23.5 4.5q40 20 62 85.5t23 125.5q-24 2 -146 4zM1152 1285q-116 0 -199 -82.5t-83 -198.5q0 -117 83 -199.5t199 -82.5t199 82.5t83 199.5q0 116 -83 198.5t-199 82.5zM1380 646q-106 2 -211 0v1q-1 -27 2.5 -86 t13.5 -66q29 -14 93.5 -14.5t95.5 10.5q9 3 11 39t-0.5 69.5t-4.5 46.5zM1112 447q8 4 9.5 48t-0.5 88t-4 63v1q-212 -3 -214 -3q-4 -20 -7 -62t0 -83t14 -46q34 -15 101 -16t101 10zM718 636q-16 -59 4.5 -118.5t77.5 -84.5q15 -8 24 -5t12 21q3 16 8 90t10 103 q-69 -2 -136 -6zM591 510q3 -23 -34 -36q132 -141 271.5 -240t305.5 -154q172 49 310.5 146t293.5 250q-33 13 -30 34l3 9v1v-1q-17 2 -50 5.5t-48 4.5q-26 -90 -82 -132q-51 -38 -82 1q-5 6 -9 14q-7 13 -17 62q-2 -5 -5 -9t-7.5 -7t-8 -5.5t-9.5 -4l-10 -2.5t-12 -2 l-12 -1.5t-13.5 -1t-13.5 -0.5q-106 -9 -163 11q-4 -17 -10 -26.5t-21 -15t-23 -7t-36 -3.5q-2 0 -3 -0.5t-3 -0.5h-3q-179 -17 -203 40q-2 -63 -56 -54q-47 8 -91 54q-12 13 -20 26q-17 29 -26 65q-58 -6 -87 -10q1 -2 4 -10zM507 -118q3 14 3 30q-17 71 -51 130t-73 70 q-41 12 -101.5 -14.5t-104.5 -80t-39 -107.5q35 -53 100 -93t119 -42q51 -2 94 28t53 79zM510 53q23 -63 27 -119q195 113 392 174q-98 52 -180.5 120t-179.5 165q-6 -4 -29 -13q0 -2 -1 -5t-1 -4q31 -18 22 -37q-12 -23 -56 -34q-10 -13 -29 -24h-1q-2 -83 1 -150 q19 -34 35 -73zM579 -113q532 -21 1145 0q-254 147 -428 196q-76 -35 -156 -57q-8 -3 -16 0q-65 21 -129 49q-208 -60 -416 -188h-1v-1q1 0 1 1zM1763 -67q4 54 28 120q14 38 33 71l-1 -1q3 77 3 153q-15 8 -30 25q-42 9 -56 33q-9 20 22 38q-2 4 -2 9q-16 4 -28 12 q-204 -190 -383 -284q198 -59 414 -176zM2155 -90q5 54 -39 107.5t-104 80t-102 14.5q-38 -11 -72.5 -70.5t-51.5 -129.5q0 -16 3 -30q10 -49 53 -79t94 -28q54 2 119 42t100 93z" />
|
561 |
<glyph unicode="" horiz-adv-x="2304" d="M1524 -25q0 -68 -48 -116t-116 -48t-116.5 48t-48.5 116t48.5 116.5t116.5 48.5t116 -48.5t48 -116.5zM775 -25q0 -68 -48.5 -116t-116.5 -48t-116 48t-48 116t48 116.5t116 48.5t116.5 -48.5t48.5 -116.5zM0 1469q57 -60 110.5 -104.5t121 -82t136 -63t166 -45.5 t200 -31.5t250 -18.5t304 -9.5t372.5 -2.5q139 0 244.5 -5t181 -16.5t124 -27.5t71 -39.5t24 -51.5t-19.5 -64t-56.5 -76.5t-89.5 -91t-116 -104.5t-139 -119q-185 -157 -286 -247q29 51 76.5 109t94 105.5t94.5 98.5t83 91.5t54 80.5t13 70t-45.5 55.5t-116.5 41t-204 23.5 t-304 5q-168 -2 -314 6t-256 23t-204.5 41t-159.5 51.5t-122.5 62.5t-91.5 66.5t-68 71.5t-50.5 69.5t-40 68t-36.5 59.5z" />
|
600 |
<glyph unicode="" horiz-adv-x="1792" d="M949 643q0 -26 -16.5 -45t-41.5 -19q-26 0 -45 16.5t-19 41.5q0 26 17 45t42 19t44 -16.5t19 -41.5zM964 585l350 581q-9 -8 -67.5 -62.5t-125.5 -116.5t-136.5 -127t-117 -110.5t-50.5 -51.5l-349 -580q7 7 67 62t126 116.5t136 127t117 111t50 50.5zM1611 640 q0 -201 -104 -371q-3 2 -17 11t-26.5 16.5t-16.5 7.5q-13 0 -13 -13q0 -10 59 -44q-74 -112 -184.5 -190.5t-241.5 -110.5l-16 67q-1 10 -15 10q-5 0 -8 -5.5t-2 -9.5l16 -68q-72 -15 -146 -15q-199 0 -372 105q1 2 13 20.5t21.5 33.5t9.5 19q0 13 -13 13q-6 0 -17 -14.5 t-22.5 -34.5t-13.5 -23q-113 75 -192 187.5t-110 244.5l69 15q10 3 10 15q0 5 -5.5 8t-10.5 2l-68 -15q-14 72 -14 139q0 206 109 379q2 -1 18.5 -12t30 -19t17.5 -8q13 0 13 12q0 6 -12.5 15.5t-32.5 21.5l-20 12q77 112 189 189t244 107l15 -67q2 -10 15 -10q5 0 8 5.5 t2 10.5l-15 66q71 13 134 13q204 0 379 -109q-39 -56 -39 -65q0 -13 12 -13q11 0 48 64q111 -75 187.5 -186t107.5 -241l-56 -12q-10 -2 -10 -16q0 -5 5.5 -8t9.5 -2l57 13q14 -72 14 -140zM1696 640q0 163 -63.5 311t-170.5 255t-255 170.5t-311 63.5t-311 -63.5 t-255 -170.5t-170.5 -255t-63.5 -311t63.5 -311t170.5 -255t255 -170.5t311 -63.5t311 63.5t255 170.5t170.5 255t63.5 311zM1792 640q0 -182 -71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71t348 -71t286 -191 t191 -286t71 -348z" />
|
601 |
<glyph unicode="" horiz-adv-x="1792" d="M893 1536q240 2 451 -120q232 -134 352 -372l-742 39q-160 9 -294 -74.5t-185 -229.5l-276 424q128 159 311 245.5t383 87.5zM146 1131l337 -663q72 -143 211 -217t293 -45l-230 -451q-212 33 -385 157.5t-272.5 316t-99.5 411.5q0 267 146 491zM1732 962 q58 -150 59.5 -310.5t-48.5 -306t-153 -272t-246 -209.5q-230 -133 -498 -119l405 623q88 131 82.5 290.5t-106.5 277.5zM896 942q125 0 213.5 -88.5t88.5 -213.5t-88.5 -213.5t-213.5 -88.5t-213.5 88.5t-88.5 213.5t88.5 213.5t213.5 88.5z" />
|
602 |
<glyph unicode="" horiz-adv-x="1792" d="M903 -256q-283 0 -504.5 150.5t-329.5 398.5q-58 131 -67 301t26 332.5t111 312t179 242.5l-11 -281q11 14 68 15.5t70 -15.5q42 81 160.5 138t234.5 59q-54 -45 -119.5 -148.5t-58.5 -163.5q25 -8 62.5 -13.5t63 -7.5t68 -4t50.5 -3q15 -5 9.5 -45.5t-30.5 -75.5 q-5 -7 -16.5 -18.5t-56.5 -35.5t-101 -34l15 -189l-139 67q-18 -43 -7.5 -81.5t36 -66.5t65.5 -41.5t81 -6.5q51 9 98 34.5t83.5 45t73.5 17.5q61 -4 89.5 -33t19.5 -65q-1 -2 -2.5 -5.5t-8.5 -12.5t-18 -15.5t-31.5 -10.5t-46.5 -1q-60 -95 -144.5 -135.5t-209.5 -29.5 q74 -61 162.5 -82.5t168.5 -6t154.5 52t128 87.5t80.5 104q43 91 39 192.5t-37.5 188.5t-78.5 125q87 -38 137 -79.5t77 -112.5q15 170 -57.5 343t-209.5 284q265 -77 412 -279.5t151 -517.5q2 -127 -40.5 -255t-123.5 -238t-189 -196t-247.5 -135.5t-288.5 -49.5z" />
|
603 |
+
<glyph unicode="" horiz-adv-x="1792" d="M1493 1308q-165 110 -359 110q-155 0 -293 -73t-240 -200q-75 -93 -119.5 -218t-48.5 -266v-42q4 -141 48.5 -266t119.5 -218q102 -127 240 -200t293 -73q194 0 359 110q-121 -108 -274.5 -168t-322.5 -60q-29 0 -43 1q-175 8 -333 82t-272 193t-181 281t-67 339 q0 182 71 348t191 286t286 191t348 71h3q168 -1 320.5 -60.5t273.5 -167.5zM1792 640q0 -192 -77 -362.5t-213 -296.5q-104 -63 -222 -63q-137 0 -255 84q154 56 253.5 233t99.5 405q0 227 -99 404t-253 234q119 83 254 83q119 0 226 -65q135 -125 210.5 -295t75.5 -361z " />
|
604 |
+
<glyph unicode="" horiz-adv-x="1792" d="M1792 599q0 -56 -7 -104h-1151q0 -146 109.5 -244.5t257.5 -98.5q99 0 185.5 46.5t136.5 130.5h423q-56 -159 -170.5 -281t-267.5 -188.5t-321 -66.5q-187 0 -356 83q-228 -116 -394 -116q-237 0 -237 263q0 115 45 275q17 60 109 229q199 360 475 606 q-184 -79 -427 -354q63 274 283.5 449.5t501.5 175.5q30 0 45 -1q255 117 433 117q64 0 116 -13t94.5 -40.5t66.5 -76.5t24 -115q0 -116 -75 -286q101 -182 101 -390zM1722 1239q0 83 -53 132t-137 49q-108 0 -254 -70q121 -47 222.5 -131.5t170.5 -195.5q51 135 51 216z M128 2q0 -86 48.5 -132.5t134.5 -46.5q115 0 266 83q-122 72 -213.5 183t-137.5 245q-98 -205 -98 -332zM632 715h728q-5 142 -113 237t-251 95q-144 0 -251.5 -95t-112.5 -237z" />
|
605 |
<glyph unicode="" horiz-adv-x="2048" d="M1792 288v960q0 13 -9.5 22.5t-22.5 9.5h-1600q-13 0 -22.5 -9.5t-9.5 -22.5v-960q0 -13 9.5 -22.5t22.5 -9.5h1600q13 0 22.5 9.5t9.5 22.5zM1920 1248v-960q0 -66 -47 -113t-113 -47h-736v-128h352q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-832q-14 0 -23 9t-9 23 v64q0 14 9 23t23 9h352v128h-736q-66 0 -113 47t-47 113v960q0 66 47 113t113 47h1600q66 0 113 -47t47 -113z" />
|
606 |
<glyph unicode="" horiz-adv-x="1792" d="M138 1408h197q-70 -64 -126 -149q-36 -56 -59 -115t-30 -125.5t-8.5 -120t10.5 -132t21 -126t28 -136.5q4 -19 6 -28q51 -238 81 -329q57 -171 152 -275h-272q-48 0 -82 34t-34 82v1304q0 48 34 82t82 34zM1346 1408h308q48 0 82 -34t34 -82v-1304q0 -48 -34 -82t-82 -34 h-178q212 210 196 565l-469 -101q-2 -45 -12 -82t-31 -72t-59.5 -59.5t-93.5 -36.5q-123 -26 -199 40q-32 27 -53 61t-51.5 129t-64.5 258q-35 163 -45.5 263t-5.5 139t23 77q20 41 62.5 73t102.5 45q45 12 83.5 6.5t67 -17t54 -35t43 -48t34.5 -56.5l468 100 q-68 175 -180 287z" />
|
607 |
+
<glyph unicode="" d="M1401 -11l-6 -6q-113 -114 -259 -175q-154 -64 -317 -64q-165 0 -317 64q-148 63 -259 175q-113 112 -175 258q-42 103 -54 189q-4 28 48 36q51 8 56 -20q1 -1 1 -4q18 -90 46 -159q50 -124 152 -226q98 -98 226 -152q132 -56 276 -56q143 0 276 56q128 55 225 152l6 6 q10 10 25 6q12 -3 33 -22q36 -37 17 -58zM929 604l-66 -66l63 -63q21 -21 -7 -49q-17 -17 -32 -17q-10 0 -19 10l-62 61l-66 -66q-5 -5 -15 -5q-15 0 -31 16l-2 2q-18 15 -18 29q0 7 8 17l66 65l-66 66q-16 16 14 45q18 18 31 18q6 0 13 -5l65 -66l65 65q18 17 48 -13 q27 -27 11 -44zM1400 547q0 -118 -46 -228q-45 -105 -126 -186q-80 -80 -187 -126t-228 -46t-228 46t-187 126q-82 82 -125 186q-15 32 -15 40h-1q-9 27 43 44q50 16 60 -12q37 -99 97 -167h1v339v2q3 136 102 232q105 103 253 103q147 0 251 -103t104 -249 q0 -147 -104.5 -251t-250.5 -104q-58 0 -112 16q-28 11 -13 61q16 51 44 43l14 -3q14 -3 32.5 -6t30.5 -3q104 0 176 71.5t72 174.5q0 101 -72 171q-71 71 -175 71q-107 0 -178 -80q-64 -72 -64 -160v-413q110 -67 242 -67q96 0 185 36.5t156 103.5t103.5 155t36.5 183 q0 198 -141 339q-140 140 -339 140q-200 0 -340 -140q-53 -53 -77 -87l-2 -2q-8 -11 -13 -15.5t-21.5 -9.5t-38.5 3q-21 5 -36.5 16.5t-15.5 26.5v680q0 15 10.5 26.5t27.5 11.5h877q30 0 30 -55t-30 -55h-811v-483h1q40 42 102 84t108 61q109 46 231 46q121 0 228 -46 t187 -126q81 -81 126 -186q46 -112 46 -229zM1369 1128q9 -8 9 -18t-5.5 -18t-16.5 -21q-26 -26 -39 -26q-9 0 -16 7q-106 91 -207 133q-128 56 -276 56q-133 0 -262 -49q-27 -10 -45 37q-9 25 -8 38q3 16 16 20q130 57 299 57q164 0 316 -64q137 -58 235 -152z" />
|
608 |
<glyph unicode="" horiz-adv-x="1792" d="M1551 60q15 6 26 3t11 -17.5t-15 -33.5q-13 -16 -44 -43.5t-95.5 -68t-141 -74t-188 -58t-229.5 -24.5q-119 0 -238 31t-209 76.5t-172.5 104t-132.5 105t-84 87.5q-8 9 -10 16.5t1 12t8 7t11.5 2t11.5 -4.5q192 -117 300 -166q389 -176 799 -90q190 40 391 135z M1758 175q11 -16 2.5 -69.5t-28.5 -102.5q-34 -83 -85 -124q-17 -14 -26 -9t0 24q21 45 44.5 121.5t6.5 98.5q-5 7 -15.5 11.5t-27 6t-29.5 2.5t-35 0t-31.5 -2t-31 -3t-22.5 -2q-6 -1 -13 -1.5t-11 -1t-8.5 -1t-7 -0.5h-5.5h-4.5t-3 0.5t-2 1.5l-1.5 3q-6 16 47 40t103 30 q46 7 108 1t76 -24zM1364 618q0 -31 13.5 -64t32 -58t37.5 -46t33 -32l13 -11l-227 -224q-40 37 -79 75.5t-58 58.5l-19 20q-11 11 -25 33q-38 -59 -97.5 -102.5t-127.5 -63.5t-140 -23t-137.5 21t-117.5 65.5t-83 113t-31 162.5q0 84 28 154t72 116.5t106.5 83t122.5 57 t130 34.5t119.5 18.5t99.5 6.5v127q0 65 -21 97q-34 53 -121 53q-6 0 -16.5 -1t-40.5 -12t-56 -29.5t-56 -59.5t-48 -96l-294 27q0 60 22 119t67 113t108 95t151.5 65.5t190.5 24.5q100 0 181 -25t129.5 -61.5t81 -83t45 -86t12.5 -73.5v-589zM692 597q0 -86 70 -133 q66 -44 139 -22q84 25 114 123q14 45 14 101v162q-59 -2 -111 -12t-106.5 -33.5t-87 -71t-32.5 -114.5z" />
|
609 |
<glyph unicode="" horiz-adv-x="1792" d="M1536 1280q52 0 90 -38t38 -90v-1280q0 -52 -38 -90t-90 -38h-1408q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h128v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h384v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h128zM1152 1376v-288q0 -14 9 -23t23 -9 h64q14 0 23 9t9 23v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23zM384 1376v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23zM1536 -128v1024h-1408v-1024h1408zM896 448h224q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-224 v-224q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v224h-224q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h224v224q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-224z" />
|
610 |
<glyph unicode="" horiz-adv-x="1792" d="M1152 416v-64q0 -14 -9 -23t-23 -9h-576q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h576q14 0 23 -9t9 -23zM128 -128h1408v1024h-1408v-1024zM512 1088v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1280 1088v288q0 14 -9 23 t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1664 1152v-1280q0 -52 -38 -90t-90 -38h-1408q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h128v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h384v96q0 66 47 113t113 47h64q66 0 113 -47 t47 -113v-96h128q52 0 90 -38t38 -90z" />
|
621 |
<glyph unicode="" horiz-adv-x="1792" d="M1709 1018q-10 -236 -332 -651q-333 -431 -562 -431q-142 0 -240 263q-44 160 -132 482q-72 262 -157 262q-18 0 -127 -76l-77 98q24 21 108 96.5t130 115.5q156 138 241 146q95 9 153 -55.5t81 -203.5q44 -287 66 -373q55 -249 120 -249q51 0 154 161q101 161 109 246 q13 139 -109 139q-57 0 -121 -26q120 393 459 382q251 -8 236 -326z" />
|
622 |
<glyph unicode="" d="M0 1408h1536v-1536h-1536v1536zM1085 293l-221 631l221 297h-634l221 -297l-221 -631l317 -304z" />
|
623 |
<glyph unicode="" d="M0 1408h1536v-1536h-1536v1536zM908 1088l-12 -33l75 -83l-31 -114l25 -25l107 57l107 -57l25 25l-31 114l75 83l-12 33h-95l-53 96h-32l-53 -96h-95zM641 925q32 0 44.5 -16t11.5 -63l174 21q0 55 -17.5 92.5t-50.5 56t-69 25.5t-85 7q-133 0 -199 -57.5t-66 -182.5v-72 h-96v-128h76q20 0 20 -8v-382q0 -14 -5 -20t-18 -7l-73 -7v-88h448v86l-149 14q-6 1 -8.5 1.5t-3.5 2.5t-0.5 4t1 7t0.5 10v387h191l38 128h-231q-6 0 -2 6t4 9v80q0 27 1.5 40.5t7.5 28t19.5 20t36.5 5.5zM1248 96v86l-54 9q-7 1 -9.5 2.5t-2.5 3t1 7.5t1 12v520h-275 l-23 -101l83 -22q23 -7 23 -27v-370q0 -14 -6 -18.5t-20 -6.5l-70 -9v-86h352z" />
|
624 |
+
<glyph unicode="" horiz-adv-x="1792" d="M1792 690q0 -58 -29.5 -105.5t-79.5 -72.5q12 -46 12 -96q0 -155 -106.5 -287t-290.5 -208.5t-400 -76.5t-399.5 76.5t-290 208.5t-106.5 287q0 47 11 94q-51 25 -82 73.5t-31 106.5q0 82 58 140.5t141 58.5q85 0 145 -63q218 152 515 162l116 521q3 13 15 21t26 5 l369 -81q18 37 54 59.5t79 22.5q62 0 106 -43.5t44 -105.5t-44 -106t-106 -44t-105.5 43.5t-43.5 105.5l-334 74l-104 -472q300 -9 519 -160q58 61 143 61q83 0 141 -58.5t58 -140.5zM418 491q0 -62 43.5 -106t105.5 -44t106 44t44 106t-44 105.5t-106 43.5q-61 0 -105 -44 t-44 -105zM1228 136q11 11 11 26t-11 26q-10 10 -25 10t-26 -10q-41 -42 -121 -62t-160 -20t-160 20t-121 62q-11 10 -26 10t-25 -10q-11 -10 -11 -25.5t11 -26.5q43 -43 118.5 -68t122.5 -29.5t91 -4.5t91 4.5t122.5 29.5t118.5 68zM1225 341q62 0 105.5 44t43.5 106 q0 61 -44 105t-105 44q-62 0 -106 -43.5t-44 -105.5t44 -106t106 -44z" />
|
625 |
+
<glyph unicode="" horiz-adv-x="1792" d="M69 741h1q16 126 58.5 241.5t115 217t167.5 176t223.5 117.5t276.5 43q231 0 414 -105.5t294 -303.5q104 -187 104 -442v-188h-1125q1 -111 53.5 -192.5t136.5 -122.5t189.5 -57t213 -3t208 46.5t173.5 84.5v-377q-92 -55 -229.5 -92t-312.5 -38t-316 53 q-189 73 -311.5 249t-124.5 372q-3 242 111 412t325 268q-48 -60 -78 -125.5t-46 -159.5h635q8 77 -8 140t-47 101.5t-70.5 66.5t-80.5 41t-75 20.5t-56 8.5l-22 1q-135 -5 -259.5 -44.5t-223.5 -104.5t-176 -140.5t-138 -163.5z" />
|
626 |
+
<glyph unicode="" horiz-adv-x="2304" d="M0 32v608h2304v-608q0 -66 -47 -113t-113 -47h-1984q-66 0 -113 47t-47 113zM640 256v-128h384v128h-384zM256 256v-128h256v128h-256zM2144 1408q66 0 113 -47t47 -113v-224h-2304v224q0 66 47 113t113 47h1984z" />
|
627 |
+
<glyph unicode="" horiz-adv-x="1792" d="M1549 857q55 0 85.5 -28.5t30.5 -83.5t-34 -82t-91 -27h-136v-177h-25v398h170zM1710 267l-4 -11l-5 -10q-113 -230 -330.5 -366t-474.5 -136q-182 0 -348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71q244 0 454.5 -124t329.5 -338l2 -4l8 -16 q-30 -15 -136.5 -68.5t-163.5 -84.5q-6 -3 -479 -268q384 -183 799 -366zM896 -234q250 0 462.5 132.5t322.5 357.5l-287 129q-72 -140 -206 -222t-292 -82q-151 0 -280 75t-204 204t-75 280t75 280t204 204t280 75t280 -73.5t204 -204.5l280 143q-116 208 -321 329 t-443 121q-119 0 -232.5 -31.5t-209 -87.5t-176.5 -137t-137 -176.5t-87.5 -209t-31.5 -232.5t31.5 -232.5t87.5 -209t137 -176.5t176.5 -137t209 -87.5t232.5 -31.5z" />
|
628 |
+
<glyph unicode="" horiz-adv-x="1792" d="M1427 827l-614 386l92 151h855zM405 562l-184 116v858l1183 -743zM1424 697l147 -95v-858l-532 335zM1387 718l-500 -802h-855l356 571z" />
|
629 |
+
<glyph unicode="" horiz-adv-x="1792" d="M640 528v224q0 16 -16 16h-96q-16 0 -16 -16v-224q0 -16 16 -16h96q16 0 16 16zM1152 528v224q0 16 -16 16h-96q-16 0 -16 -16v-224q0 -16 16 -16h96q16 0 16 16zM1664 496v-752h-640v320q0 80 -56 136t-136 56t-136 -56t-56 -136v-320h-640v752q0 16 16 16h96 q16 0 16 -16v-112h128v624q0 16 16 16h96q16 0 16 -16v-112h128v112q0 16 16 16h96q16 0 16 -16v-112h128v112q0 6 2.5 9.5t8.5 5t9.5 2t11.5 0t9 -0.5v391q-32 15 -32 50q0 23 16.5 39t38.5 16t38.5 -16t16.5 -39q0 -35 -32 -50v-17q45 10 83 10q21 0 59.5 -7.5t54.5 -7.5 q17 0 47 7.5t37 7.5q16 0 16 -16v-210q0 -15 -35 -21.5t-62 -6.5q-18 0 -54.5 7.5t-55.5 7.5q-40 0 -90 -12v-133q1 0 9 0.5t11.5 0t9.5 -2t8.5 -5t2.5 -9.5v-112h128v112q0 16 16 16h96q16 0 16 -16v-112h128v112q0 16 16 16h96q16 0 16 -16v-624h128v112q0 16 16 16h96 q16 0 16 -16z" />
|
630 |
+
<glyph unicode="" horiz-adv-x="2304" d="M2288 731q16 -8 16 -27t-16 -27l-320 -192q-8 -5 -16 -5q-9 0 -16 4q-16 10 -16 28v128h-858q37 -58 83 -165q16 -37 24.5 -55t24 -49t27 -47t27 -34t31.5 -26t33 -8h96v96q0 14 9 23t23 9h320q14 0 23 -9t9 -23v-320q0 -14 -9 -23t-23 -9h-320q-14 0 -23 9t-9 23v96h-96 q-32 0 -61 10t-51 23.5t-45 40.5t-37 46t-33.5 57t-28.5 57.5t-28 60.5q-23 53 -37 81.5t-36 65t-44.5 53.5t-46.5 17h-360q-22 -84 -91 -138t-157 -54q-106 0 -181 75t-75 181t75 181t181 75q88 0 157 -54t91 -138h104q24 0 46.5 17t44.5 53.5t36 65t37 81.5q19 41 28 60.5 t28.5 57.5t33.5 57t37 46t45 40.5t51 23.5t61 10h107q21 57 70 92.5t111 35.5q80 0 136 -56t56 -136t-56 -136t-136 -56q-62 0 -111 35.5t-70 92.5h-107q-17 0 -33 -8t-31.5 -26t-27 -34t-27 -47t-24 -49t-24.5 -55q-46 -107 -83 -165h1114v128q0 18 16 28t32 -1z" />
|
631 |
+
<glyph unicode="" horiz-adv-x="1792" d="M1150 774q0 -56 -39.5 -95t-95.5 -39h-253v269h253q56 0 95.5 -39.5t39.5 -95.5zM1329 774q0 130 -91.5 222t-222.5 92h-433v-896h180v269h253q130 0 222 91.5t92 221.5zM1792 640q0 -182 -71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348 t71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348z" />
|
632 |
+
<glyph unicode="" horiz-adv-x="2304" d="M1645 438q0 59 -34 106.5t-87 68.5q-7 -45 -23 -92q-7 -24 -27.5 -38t-44.5 -14q-12 0 -24 3q-31 10 -45 38.5t-4 58.5q23 71 23 143q0 123 -61 227.5t-166 165.5t-228 61q-134 0 -247 -73t-167 -194q108 -28 188 -106q22 -23 22 -55t-22 -54t-54 -22t-55 22 q-75 75 -180 75q-106 0 -181 -74.5t-75 -180.5t75 -180.5t181 -74.5h1046q79 0 134.5 55.5t55.5 133.5zM1798 438q0 -142 -100.5 -242t-242.5 -100h-1046q-169 0 -289 119.5t-120 288.5q0 153 100 267t249 136q62 184 221 298t354 114q235 0 408.5 -158.5t196.5 -389.5 q116 -25 192.5 -118.5t76.5 -214.5zM2048 438q0 -175 -97 -319q-23 -33 -64 -33q-24 0 -43 13q-26 17 -32 48.5t12 57.5q71 104 71 233t-71 233q-18 26 -12 57t32 49t57.5 11.5t49.5 -32.5q97 -142 97 -318zM2304 438q0 -244 -134 -443q-23 -34 -64 -34q-23 0 -42 13 q-26 18 -32.5 49t11.5 57q108 164 108 358q0 195 -108 357q-18 26 -11.5 57.5t32.5 48.5q26 18 57 12t49 -33q134 -198 134 -442z" />
|
633 |
+
<glyph unicode="" d="M1500 -13q0 -89 -63 -152.5t-153 -63.5t-153.5 63.5t-63.5 152.5q0 90 63.5 153.5t153.5 63.5t153 -63.5t63 -153.5zM1267 268q-115 -15 -192.5 -102.5t-77.5 -205.5q0 -74 33 -138q-146 -78 -379 -78q-109 0 -201 21t-153.5 54.5t-110.5 76.5t-76 85t-44.5 83 t-23.5 66.5t-6 39.5q0 19 4.5 42.5t18.5 56t36.5 58t64 43.5t94.5 18t94 -17.5t63 -41t35.5 -53t17.5 -49t4 -33.5q0 -34 -23 -81q28 -27 82 -42t93 -17l40 -1q115 0 190 51t75 133q0 26 -9 48.5t-31.5 44.5t-49.5 41t-74 44t-93.5 47.5t-119.5 56.5q-28 13 -43 20 q-116 55 -187 100t-122.5 102t-72 125.5t-20.5 162.5q0 78 20.5 150t66 137.5t112.5 114t166.5 77t221.5 28.5q120 0 220 -26t164.5 -67t109.5 -94t64 -105.5t19 -103.5q0 -46 -15 -82.5t-36.5 -58t-48.5 -36t-49 -19.5t-39 -5h-8h-32t-39 5t-44 14t-41 28t-37 46t-24 70.5 t-10 97.5q-15 16 -59 25.5t-81 10.5l-37 1q-68 0 -117.5 -31t-70.5 -70t-21 -76q0 -24 5 -43t24 -46t53 -51t97 -53.5t150 -58.5q76 -25 138.5 -53.5t109 -55.5t83 -59t60.5 -59.5t41 -62.5t26.5 -62t14.5 -63.5t6 -62t1 -62.5z" />
|
634 |
+
<glyph unicode="" d="M704 352v576q0 14 -9 23t-23 9h-256q-14 0 -23 -9t-9 -23v-576q0 -14 9 -23t23 -9h256q14 0 23 9t9 23zM1152 352v576q0 14 -9 23t-23 9h-256q-14 0 -23 -9t-9 -23v-576q0 -14 9 -23t23 -9h256q14 0 23 9t9 23zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103 t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
|
635 |
+
<glyph unicode="" d="M768 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103zM768 96q148 0 273 73t198 198t73 273t-73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273 t73 -273t198 -198t273 -73zM864 320q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-576q0 -14 -9 -23t-23 -9h-192zM480 320q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-576q0 -14 -9 -23t-23 -9h-192z" />
|
636 |
+
<glyph unicode="" d="M1088 352v576q0 14 -9 23t-23 9h-576q-14 0 -23 -9t-9 -23v-576q0 -14 9 -23t23 -9h576q14 0 23 9t9 23zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5 t103 -385.5z" />
|
637 |
+
<glyph unicode="" d="M768 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103zM768 96q148 0 273 73t198 198t73 273t-73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273 t73 -273t198 -198t273 -73zM480 320q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h576q14 0 23 -9t9 -23v-576q0 -14 -9 -23t-23 -9h-576z" />
|
638 |
+
<glyph unicode="" horiz-adv-x="1792" d="M1757 128l35 -313q3 -28 -16 -50q-19 -21 -48 -21h-1664q-29 0 -48 21q-19 22 -16 50l35 313h1722zM1664 967l86 -775h-1708l86 775q3 24 21 40.5t43 16.5h256v-128q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5v128h384v-128q0 -53 37.5 -90.5t90.5 -37.5 t90.5 37.5t37.5 90.5v128h256q25 0 43 -16.5t21 -40.5zM1280 1152v-256q0 -26 -19 -45t-45 -19t-45 19t-19 45v256q0 106 -75 181t-181 75t-181 -75t-75 -181v-256q0 -26 -19 -45t-45 -19t-45 19t-19 45v256q0 159 112.5 271.5t271.5 112.5t271.5 -112.5t112.5 -271.5z" />
|
639 |
+
<glyph unicode="" horiz-adv-x="2048" d="M1920 768q53 0 90.5 -37.5t37.5 -90.5t-37.5 -90.5t-90.5 -37.5h-15l-115 -662q-8 -46 -44 -76t-82 -30h-1280q-46 0 -82 30t-44 76l-115 662h-15q-53 0 -90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5h1792zM485 -32q26 2 43.5 22.5t15.5 46.5l-32 416q-2 26 -22.5 43.5 t-46.5 15.5t-43.5 -22.5t-15.5 -46.5l32 -416q2 -25 20.5 -42t43.5 -17h5zM896 32v416q0 26 -19 45t-45 19t-45 -19t-19 -45v-416q0 -26 19 -45t45 -19t45 19t19 45zM1280 32v416q0 26 -19 45t-45 19t-45 -19t-19 -45v-416q0 -26 19 -45t45 -19t45 19t19 45zM1632 27l32 416 q2 26 -15.5 46.5t-43.5 22.5t-46.5 -15.5t-22.5 -43.5l-32 -416q-2 -26 15.5 -46.5t43.5 -22.5h5q25 0 43.5 17t20.5 42zM476 1244l-93 -412h-132l101 441q19 88 89 143.5t160 55.5h167q0 26 19 45t45 19h384q26 0 45 -19t19 -45h167q90 0 160 -55.5t89 -143.5l101 -441 h-132l-93 412q-11 44 -45.5 72t-79.5 28h-167q0 -26 -19 -45t-45 -19h-384q-26 0 -45 19t-19 45h-167q-45 0 -79.5 -28t-45.5 -72z" />
|
640 |
+
<glyph unicode="" horiz-adv-x="1792" d="M991 512l64 256h-254l-64 -256h254zM1759 1016l-56 -224q-7 -24 -31 -24h-327l-64 -256h311q15 0 25 -12q10 -14 6 -28l-56 -224q-5 -24 -31 -24h-327l-81 -328q-7 -24 -31 -24h-224q-16 0 -26 12q-9 12 -6 28l78 312h-254l-81 -328q-7 -24 -31 -24h-225q-15 0 -25 12 q-9 12 -6 28l78 312h-311q-15 0 -25 12q-9 12 -6 28l56 224q7 24 31 24h327l64 256h-311q-15 0 -25 12q-10 14 -6 28l56 224q5 24 31 24h327l81 328q7 24 32 24h224q15 0 25 -12q9 -12 6 -28l-78 -312h254l81 328q7 24 32 24h224q15 0 25 -12q9 -12 6 -28l-78 -312h311 q15 0 25 -12q9 -12 6 -28z" />
|
641 |
+
<glyph unicode="" d="M841 483l148 -148l-149 -149zM840 1094l149 -149l-148 -148zM710 -130l464 464l-306 306l306 306l-464 464v-611l-255 255l-93 -93l320 -321l-320 -321l93 -93l255 255v-611zM1429 640q0 -209 -32 -365.5t-87.5 -257t-140.5 -162.5t-181.5 -86.5t-219.5 -24.5 t-219.5 24.5t-181.5 86.5t-140.5 162.5t-87.5 257t-32 365.5t32 365.5t87.5 257t140.5 162.5t181.5 86.5t219.5 24.5t219.5 -24.5t181.5 -86.5t140.5 -162.5t87.5 -257t32 -365.5z" />
|
642 |
+
<glyph unicode="" horiz-adv-x="1024" d="M596 113l173 172l-173 172v-344zM596 823l173 172l-173 172v-344zM628 640l356 -356l-539 -540v711l-297 -296l-108 108l372 373l-372 373l108 108l297 -296v711l539 -540z" />
|
643 |
+
<glyph unicode="" d="M1280 256q0 52 -38 90t-90 38t-90 -38t-38 -90t38 -90t90 -38t90 38t38 90zM512 1024q0 52 -38 90t-90 38t-90 -38t-38 -90t38 -90t90 -38t90 38t38 90zM1536 256q0 -159 -112.5 -271.5t-271.5 -112.5t-271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5t271.5 -112.5 t112.5 -271.5zM1440 1344q0 -20 -13 -38l-1056 -1408q-19 -26 -51 -26h-160q-26 0 -45 19t-19 45q0 20 13 38l1056 1408q19 26 51 26h160q26 0 45 -19t19 -45zM768 1024q0 -159 -112.5 -271.5t-271.5 -112.5t-271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5 t271.5 -112.5t112.5 -271.5z" />
|
644 |
+
<glyph unicode="" horiz-adv-x="1792" d="M104 830l792 -1015l-868 630q-18 13 -25 34.5t0 42.5l101 308v0zM566 830h660l-330 -1015v0zM368 1442l198 -612h-462l198 612q8 23 33 23t33 -23zM1688 830l101 -308q7 -21 0 -42.5t-25 -34.5l-868 -630l792 1015v0zM1688 830h-462l198 612q8 23 33 23t33 -23z" />
|
645 |
+
<glyph unicode="" horiz-adv-x="1792" d="M384 704h160v224h-160v-224zM1221 372v92q-104 -36 -243 -38q-135 -1 -259.5 46.5t-220.5 122.5l1 -96q88 -80 212 -128.5t272 -47.5q129 0 238 49zM640 704h640v224h-640v-224zM1792 736q0 -187 -99 -352q89 -102 89 -229q0 -157 -129.5 -268t-313.5 -111 q-122 0 -225 52.5t-161 140.5q-19 -1 -57 -1t-57 1q-58 -88 -161 -140.5t-225 -52.5q-184 0 -313.5 111t-129.5 268q0 127 89 229q-99 165 -99 352q0 209 120 385.5t326.5 279.5t449.5 103t449.5 -103t326.5 -279.5t120 -385.5z" />
|
646 |
+
<glyph unicode="" d="M515 625v-128h-252v128h252zM515 880v-127h-252v127h252zM1273 369v-128h-341v128h341zM1273 625v-128h-672v128h672zM1273 880v-127h-672v127h672zM1408 20v1240q0 8 -6 14t-14 6h-32l-378 -256l-210 171l-210 -171l-378 256h-32q-8 0 -14 -6t-6 -14v-1240q0 -8 6 -14 t14 -6h1240q8 0 14 6t6 14zM553 1130l185 150h-406zM983 1130l221 150h-406zM1536 1260v-1240q0 -62 -43 -105t-105 -43h-1240q-62 0 -105 43t-43 105v1240q0 62 43 105t105 43h1240q62 0 105 -43t43 -105z" />
|
647 |
+
<glyph unicode="" horiz-adv-x="1792" d="M896 720q-104 196 -160 278q-139 202 -347 318q-34 19 -70 36q-89 40 -94 32t34 -38l39 -31q62 -43 112.5 -93.5t94.5 -116.5t70.5 -113t70.5 -131q9 -17 13 -25q44 -84 84 -153t98 -154t115.5 -150t131 -123.5t148.5 -90.5q153 -66 154 -60q1 3 -49 37q-53 36 -81 57 q-77 58 -179 211t-185 310zM549 177q-76 60 -132.5 125t-98 143.5t-71 154.5t-58.5 186t-52 209t-60.5 252t-76.5 289q273 0 497.5 -36t379 -92t271 -144.5t185.5 -172.5t110 -198.5t56 -199.5t12.5 -198.5t-9.5 -173t-20 -143.5t-13 -107l323 -327h-104l-281 285 q-22 -2 -91.5 -14t-121.5 -19t-138 -6t-160.5 17t-167.5 59t-179 111z" />
|
648 |
+
<glyph unicode="" horiz-adv-x="1792" d="M1374 879q-6 26 -28.5 39.5t-48.5 7.5q-261 -62 -401 -62t-401 62q-26 6 -48.5 -7.5t-28.5 -39.5t7.5 -48.5t39.5 -28.5q194 -46 303 -58q-2 -158 -15.5 -269t-26.5 -155.5t-41 -115.5l-9 -21q-10 -25 1 -49t36 -34q9 -4 23 -4q44 0 60 41l8 20q54 139 71 259h42 q17 -120 71 -259l8 -20q16 -41 60 -41q14 0 23 4q25 10 36 34t1 49l-9 21q-28 71 -41 115.5t-26.5 155.5t-15.5 269q109 12 303 58q26 6 39.5 28.5t7.5 48.5zM1024 1024q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5z M1600 640q0 -143 -55.5 -273.5t-150 -225t-225 -150t-273.5 -55.5t-273.5 55.5t-225 150t-150 225t-55.5 273.5t55.5 273.5t150 225t225 150t273.5 55.5t273.5 -55.5t225 -150t150 -225t55.5 -273.5zM896 1408q-156 0 -298 -61t-245 -164t-164 -245t-61 -298t61 -298 t164 -245t245 -164t298 -61t298 61t245 164t164 245t61 298t-61 298t-164 245t-245 164t-298 61zM1792 640q0 -182 -71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348z" />
|
649 |
+
<glyph unicode="" d="M1438 723q34 -35 29 -82l-44 -551q-4 -42 -34.5 -70t-71.5 -28q-6 0 -9 1q-44 3 -72.5 36.5t-25.5 77.5l35 429l-143 -8q55 -113 55 -240q0 -216 -148 -372l-137 137q91 101 91 235q0 145 -102.5 248t-247.5 103q-134 0 -236 -92l-137 138q120 114 284 141l264 300 l-149 87l-181 -161q-33 -30 -77 -27.5t-73 35.5t-26.5 77t34.5 73l239 213q26 23 60 26.5t64 -14.5l488 -283q36 -21 48 -68q17 -67 -26 -117l-205 -232l371 20q49 3 83 -32zM1240 1180q-74 0 -126 52t-52 126t52 126t126 52t126.5 -52t52.5 -126t-52.5 -126t-126.5 -52z M613 -62q106 0 196 61l139 -139q-146 -116 -335 -116q-148 0 -273.5 73t-198.5 198t-73 273q0 188 116 336l139 -139q-60 -88 -60 -197q0 -145 102.5 -247.5t247.5 -102.5z" />
|
650 |
+
<glyph unicode="" d="M880 336v-160q0 -14 -9 -23t-23 -9h-160q-14 0 -23 9t-9 23v160q0 14 9 23t23 9h160q14 0 23 -9t9 -23zM1136 832q0 -50 -15 -90t-45.5 -69t-52 -44t-59.5 -36q-32 -18 -46.5 -28t-26 -24t-11.5 -29v-32q0 -14 -9 -23t-23 -9h-160q-14 0 -23 9t-9 23v68q0 35 10.5 64.5 t24 47.5t39 35.5t41 25.5t44.5 21q53 25 75 43t22 49q0 42 -43.5 71.5t-95.5 29.5q-56 0 -95 -27q-29 -20 -80 -83q-9 -12 -25 -12q-11 0 -19 6l-108 82q-10 7 -12 20t5 23q122 192 349 192q129 0 238.5 -89.5t109.5 -214.5zM768 1280q-130 0 -248.5 -51t-204 -136.5 t-136.5 -204t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5t-51 248.5t-136.5 204t-204 136.5t-248.5 51zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5 t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
|
651 |
+
<glyph unicode="" horiz-adv-x="1408" d="M366 1225q-64 0 -110 45.5t-46 110.5q0 64 46 109.5t110 45.5t109.5 -45.5t45.5 -109.5q0 -65 -45.5 -110.5t-109.5 -45.5zM917 583q0 -50 -30 -67.5t-63.5 -6.5t-47.5 34l-367 438q-7 12 -14 15.5t-11 1.5l-3 -3q-7 -8 4 -21l122 -139l1 -354l-161 -457 q-67 -192 -92 -234q-16 -26 -28 -32q-50 -26 -103 -1q-29 13 -41.5 43t-9.5 57q2 17 197 618l5 416l-85 -164l35 -222q4 -24 -1 -42t-14 -27.5t-19 -16t-17 -7.5l-7 -2q-19 -3 -34.5 3t-24 16t-14 22t-7.5 19.5t-2 9.5l-46 299l211 381q23 34 113 34q75 0 107 -40l424 -521 q7 -5 14 -17l3 -3l-1 -1q7 -13 7 -29zM514 433q43 -113 88.5 -225t69.5 -168l24 -55q36 -93 42 -125q11 -70 -36 -97q-35 -22 -66 -16t-51 22t-29 35h-1q-6 16 -8 25l-124 351zM1338 -159q31 -49 31 -57q0 -5 -3 -7q-9 -5 -14.5 0.5t-15.5 26t-16 30.5q-114 172 -423 661 q3 -1 7 1t7 4l3 2q11 9 11 17z" />
|
652 |
+
<glyph unicode="" horiz-adv-x="2304" d="M504 542h171l-1 265zM1530 641q0 87 -50.5 140t-146.5 53h-54v-388h52q91 0 145 57t54 138zM956 1018l1 -756q0 -14 -9.5 -24t-23.5 -10h-216q-14 0 -23.5 10t-9.5 24v62h-291l-55 -81q-10 -15 -28 -15h-267q-21 0 -30.5 18t3.5 35l556 757q9 14 27 14h332q14 0 24 -10 t10 -24zM1783 641q0 -193 -125.5 -303t-324.5 -110h-270q-14 0 -24 10t-10 24v756q0 14 10 24t24 10h268q200 0 326 -109t126 -302zM1939 640q0 -11 -0.5 -29t-8 -71.5t-21.5 -102t-44.5 -108t-73.5 -102.5h-51q38 45 66.5 104.5t41.5 112t21 98t9 72.5l1 27q0 8 -0.5 22.5 t-7.5 60t-20 91.5t-41 111.5t-66 124.5h43q41 -47 72 -107t45.5 -111.5t23 -96t10.5 -70.5zM2123 640q0 -11 -0.5 -29t-8 -71.5t-21.5 -102t-45 -108t-74 -102.5h-51q38 45 66.5 104.5t41.5 112t21 98t9 72.5l1 27q0 8 -0.5 22.5t-7.5 60t-19.5 91.5t-40.5 111.5t-66 124.5 h43q41 -47 72 -107t45.5 -111.5t23 -96t10.5 -70.5zM2304 640q0 -11 -0.5 -29t-8 -71.5t-21.5 -102t-44.5 -108t-73.5 -102.5h-51q38 45 66 104.5t41 112t21 98t9 72.5l1 27q0 8 -0.5 22.5t-7.5 60t-19.5 91.5t-40.5 111.5t-66 124.5h43q41 -47 72 -107t45.5 -111.5t23 -96 t9.5 -70.5z" />
|
653 |
+
<glyph unicode="" horiz-adv-x="1408" d="M617 -153q0 11 -13 58t-31 107t-20 69q-1 4 -5 26.5t-8.5 36t-13.5 21.5q-15 14 -51 14q-23 0 -70 -5.5t-71 -5.5q-34 0 -47 11q-6 5 -11 15.5t-7.5 20t-6.5 24t-5 18.5q-37 128 -37 255t37 255q1 4 5 18.5t6.5 24t7.5 20t11 15.5q13 11 47 11q24 0 71 -5.5t70 -5.5 q36 0 51 14q9 8 13.5 21.5t8.5 36t5 26.5q2 9 20 69t31 107t13 58q0 22 -43.5 52.5t-75.5 42.5q-20 8 -45 8q-34 0 -98 -18q-57 -17 -96.5 -40.5t-71 -66t-46 -70t-45.5 -94.5q-6 -12 -9 -19q-49 -107 -68 -216t-19 -244t19 -244t68 -216q56 -122 83 -161q63 -91 179 -127 l6 -2q64 -18 98 -18q25 0 45 8q32 12 75.5 42.5t43.5 52.5zM776 760q-26 0 -45 19t-19 45.5t19 45.5q37 37 37 90q0 52 -37 91q-19 19 -19 45t19 45t45 19t45 -19q75 -75 75 -181t-75 -181q-21 -19 -45 -19zM957 579q-27 0 -45 19q-19 19 -19 45t19 45q112 114 112 272 t-112 272q-19 19 -19 45t19 45t45 19t45 -19q150 -150 150 -362t-150 -362q-18 -19 -45 -19zM1138 398q-27 0 -45 19q-19 19 -19 45t19 45q90 91 138.5 208t48.5 245t-48.5 245t-138.5 208q-19 19 -19 45t19 45t45 19t45 -19q109 -109 167 -249t58 -294t-58 -294t-167 -249 q-18 -19 -45 -19z" />
|
654 |
+
<glyph unicode="" horiz-adv-x="2176" d="M192 352q-66 0 -113 -47t-47 -113t47 -113t113 -47t113 47t47 113t-47 113t-113 47zM704 352q-66 0 -113 -47t-47 -113t47 -113t113 -47t113 47t47 113t-47 113t-113 47zM704 864q-66 0 -113 -47t-47 -113t47 -113t113 -47t113 47t47 113t-47 113t-113 47zM1472 352 q-66 0 -113 -47t-47 -113t47 -113t113 -47t113 47t47 113t-47 113t-113 47zM1984 352q-66 0 -113 -47t-47 -113t47 -113t113 -47t113 47t47 113t-47 113t-113 47zM1472 864q-66 0 -113 -47t-47 -113t47 -113t113 -47t113 47t47 113t-47 113t-113 47zM1984 864 q-66 0 -113 -47t-47 -113t47 -113t113 -47t113 47t47 113t-47 113t-113 47zM1984 1376q-66 0 -113 -47t-47 -113t47 -113t113 -47t113 47t47 113t-47 113t-113 47zM384 192q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM896 192q0 -80 -56 -136 t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM384 704q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM896 704q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM384 1216q0 -80 -56 -136t-136 -56 t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1664 192q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM896 1216q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM2176 192q0 -80 -56 -136t-136 -56t-136 56 t-56 136t56 136t136 56t136 -56t56 -136zM1664 704q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM2176 704q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1664 1216q0 -80 -56 -136t-136 -56t-136 56t-56 136 t56 136t136 56t136 -56t56 -136zM2176 1216q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136z" />
|
655 |
+
<glyph unicode="" horiz-adv-x="1792" d="M128 -192q0 -26 -19 -45t-45 -19t-45 19t-19 45t19 45t45 19t45 -19t19 -45zM320 0q0 -26 -19 -45t-45 -19t-45 19t-19 45t19 45t45 19t45 -19t19 -45zM365 365l256 -256l-90 -90l-256 256zM704 384q0 -26 -19 -45t-45 -19t-45 19t-19 45t19 45t45 19t45 -19t19 -45z M1411 704q0 -59 -11.5 -108.5t-37.5 -93.5t-44 -67.5t-53 -64.5q-31 -35 -45.5 -54t-33.5 -50t-26.5 -64t-7.5 -74q0 -159 -112.5 -271.5t-271.5 -112.5q-26 0 -45 19t-19 45t19 45t45 19q106 0 181 75t75 181q0 57 11.5 105.5t37 91t43.5 66.5t52 63q40 46 59.5 72 t37.5 74.5t18 103.5q0 185 -131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5q0 -26 -19 -45t-45 -19t-45 19t-19 45q0 117 45.5 223.5t123 184t184 123t223.5 45.5t223.5 -45.5t184 -123t123 -184t45.5 -223.5zM896 576q0 -26 -19 -45t-45 -19t-45 19t-19 45t19 45 t45 19t45 -19t19 -45zM1184 704q0 -26 -19 -45t-45 -19t-45 19t-19 45q0 93 -65.5 158.5t-158.5 65.5q-92 0 -158 -65.5t-66 -158.5q0 -26 -19 -45t-45 -19t-45 19t-19 45q0 146 103 249t249 103t249 -103t103 -249zM1578 993q10 -25 -1 -49t-36 -34q-9 -4 -23 -4 q-19 0 -35.5 11t-23.5 30q-68 178 -224 295q-21 16 -25 42t12 47q17 21 43 25t47 -12q183 -137 266 -351zM1788 1074q9 -25 -1.5 -49t-35.5 -34q-11 -4 -23 -4q-44 0 -60 41q-92 238 -297 393q-22 16 -25.5 42t12.5 47q16 22 42 25.5t47 -12.5q235 -175 341 -449z" />
|
656 |
+
<glyph unicode="" horiz-adv-x="2304" d="M1032 576q-59 2 -84 55q-17 34 -48 53.5t-68 19.5q-53 0 -90.5 -37.5t-37.5 -90.5q0 -56 36 -89l10 -8q34 -31 82 -31q37 0 68 19.5t48 53.5q25 53 84 55zM1600 704q0 56 -36 89l-10 8q-34 31 -82 31q-37 0 -68 -19.5t-48 -53.5q-25 -53 -84 -55q59 -2 84 -55 q17 -34 48 -53.5t68 -19.5q53 0 90.5 37.5t37.5 90.5zM1174 925q-17 -35 -55 -48t-73 4q-62 31 -134 31q-51 0 -99 -17q3 0 9.5 0.5t9.5 0.5q92 0 170.5 -50t118.5 -133q17 -36 3.5 -73.5t-49.5 -54.5q-18 -9 -39 -9q21 0 39 -9q36 -17 49.5 -54.5t-3.5 -73.5 q-40 -83 -118.5 -133t-170.5 -50h-6q-16 2 -44 4l-290 27l-239 -120q-14 -7 -29 -7q-40 0 -57 35l-160 320q-11 23 -4 47.5t29 37.5l209 119l148 267q17 155 91.5 291.5t195.5 236.5q31 25 70.5 21.5t64.5 -34.5t21.5 -70t-34.5 -65q-70 -59 -117 -128q123 84 267 101 q40 5 71.5 -19t35.5 -64q5 -40 -19 -71.5t-64 -35.5q-84 -10 -159 -55q46 10 99 10q115 0 218 -50q36 -18 49 -55.5t-5 -73.5zM2137 1085l160 -320q11 -23 4 -47.5t-29 -37.5l-209 -119l-148 -267q-17 -155 -91.5 -291.5t-195.5 -236.5q-26 -22 -61 -22q-45 0 -74 35 q-25 31 -21.5 70t34.5 65q70 59 117 128q-123 -84 -267 -101q-4 -1 -12 -1q-36 0 -63.5 24t-31.5 60q-5 40 19 71.5t64 35.5q84 10 159 55q-46 -10 -99 -10q-115 0 -218 50q-36 18 -49 55.5t5 73.5q17 35 55 48t73 -4q62 -31 134 -31q51 0 99 17q-3 0 -9.5 -0.5t-9.5 -0.5 q-92 0 -170.5 50t-118.5 133q-17 36 -3.5 73.5t49.5 54.5q18 9 39 9q-21 0 -39 9q-36 17 -49.5 54.5t3.5 73.5q40 83 118.5 133t170.5 50h6h1q14 -2 42 -4l291 -27l239 120q14 7 29 7q40 0 57 -35z" />
|
657 |
+
<glyph unicode="" horiz-adv-x="1792" d="M1056 704q0 -26 19 -45t45 -19t45 19t19 45q0 146 -103 249t-249 103t-249 -103t-103 -249q0 -26 19 -45t45 -19t45 19t19 45q0 93 66 158.5t158 65.5t158 -65.5t66 -158.5zM835 1280q-117 0 -223.5 -45.5t-184 -123t-123 -184t-45.5 -223.5q0 -26 19 -45t45 -19t45 19 t19 45q0 185 131.5 316.5t316.5 131.5t316.5 -131.5t131.5 -316.5q0 -55 -18 -103.5t-37.5 -74.5t-59.5 -72q-34 -39 -52 -63t-43.5 -66.5t-37 -91t-11.5 -105.5q0 -106 -75 -181t-181 -75q-26 0 -45 -19t-19 -45t19 -45t45 -19q159 0 271.5 112.5t112.5 271.5q0 41 7.5 74 t26.5 64t33.5 50t45.5 54q35 41 53 64.5t44 67.5t37.5 93.5t11.5 108.5q0 117 -45.5 223.5t-123 184t-184 123t-223.5 45.5zM591 561l226 -226l-579 -579q-12 -12 -29 -12t-29 12l-168 168q-12 12 -12 29t12 29zM1612 1524l168 -168q12 -12 12 -29t-12 -30l-233 -233 l-26 -25l-71 -71q-66 153 -195 258l91 91l207 207q13 12 30 12t29 -12z" />
|
658 |
+
<glyph unicode="" d="M866 1021q0 -27 -13 -94q-11 -50 -31.5 -150t-30.5 -150q-2 -11 -4.5 -12.5t-13.5 -2.5q-20 -2 -31 -2q-58 0 -84 49.5t-26 113.5q0 88 35 174t103 124q28 14 51 14q28 0 36.5 -16.5t8.5 -47.5zM1352 597q0 14 -39 75.5t-52 66.5q-21 8 -34 8q-91 0 -226 -77l-2 2 q3 22 27.5 135t24.5 178q0 233 -242 233q-24 0 -68 -6q-94 -17 -168.5 -89.5t-111.5 -166.5t-37 -189q0 -146 80.5 -225t227.5 -79q25 0 25 -3t-1 -5q-4 -34 -26 -117q-14 -52 -51.5 -101t-82.5 -49q-42 0 -42 47q0 24 10.5 47.5t25 39.5t29.5 28.5t26 20t11 8.5q0 3 -7 10 q-24 22 -58.5 36.5t-65.5 14.5q-35 0 -63.5 -34t-41 -75t-12.5 -75q0 -88 51.5 -142t138.5 -54q82 0 155 53t117.5 126t65.5 153q6 22 15.5 66.5t14.5 66.5q3 12 14 18q118 60 227 60q48 0 127 -18q1 -1 4 -1q5 0 9.5 4.5t4.5 8.5zM1536 1120v-960q0 -119 -84.5 -203.5 t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
|
659 |
+
<glyph unicode="" horiz-adv-x="1535" d="M744 1231q0 24 -2 38.5t-8.5 30t-21 23t-37.5 7.5q-39 0 -78 -23q-105 -58 -159 -190.5t-54 -269.5q0 -44 8.5 -85.5t26.5 -80.5t52.5 -62.5t81.5 -23.5q4 0 18 -0.5t20 0t16 3t15 8.5t7 16q16 77 48 231.5t48 231.5q19 91 19 146zM1498 575q0 -7 -7.5 -13.5t-15.5 -6.5 l-6 1q-22 3 -62 11t-72 12.5t-63 4.5q-167 0 -351 -93q-15 -8 -21 -27q-10 -36 -24.5 -105.5t-22.5 -100.5q-23 -91 -70 -179.5t-112.5 -164.5t-154.5 -123t-185 -47q-135 0 -214.5 83.5t-79.5 219.5q0 53 19.5 117t63 116.5t97.5 52.5q38 0 120 -33.5t83 -61.5 q0 -1 -16.5 -12.5t-39.5 -31t-46 -44.5t-39 -61t-16 -74q0 -33 16.5 -53t48.5 -20q45 0 85 31.5t66.5 78t48 105.5t32.5 107t16 90v9q0 2 -3.5 3.5t-8.5 1.5h-10t-10 -0.5t-6 -0.5q-227 0 -352 122.5t-125 348.5q0 108 34.5 221t96 210t156 167.5t204.5 89.5q52 9 106 9 q374 0 374 -360q0 -98 -38 -273t-43 -211l3 -3q101 57 182.5 88t167.5 31q22 0 53 -13q19 -7 80 -102.5t61 -116.5z" />
|
660 |
+
<glyph unicode="" horiz-adv-x="1664" d="M831 863q32 0 59 -18l222 -148q61 -40 110 -97l146 -170q40 -46 29 -106l-72 -413q-6 -32 -29.5 -53.5t-55.5 -25.5l-527 -56l-352 -32h-9q-39 0 -67.5 28t-28.5 68q0 37 27 64t65 32l260 32h-448q-41 0 -69.5 30t-26.5 71q2 39 32 65t69 26l442 1l-521 64q-41 5 -66 37 t-19 73q6 35 34.5 57.5t65.5 22.5h10l481 -60l-351 94q-38 10 -62 41.5t-18 68.5q6 36 33 58.5t62 22.5q6 0 20 -2l448 -96l217 -37q1 0 3 -0.5t3 -0.5q23 0 30.5 23t-12.5 36l-186 125q-35 23 -42 63.5t18 73.5q27 38 76 38zM761 661l186 -125l-218 37l-5 2l-36 38 l-238 262q-1 1 -2.5 3.5t-2.5 3.5q-24 31 -18.5 70t37.5 64q31 23 68 17.5t64 -33.5l142 -147l-4 -4t-5 -4q-32 -45 -23 -99t55 -85zM1648 1115l15 -266q4 -73 -11 -147l-48 -219q-12 -59 -67 -87l-106 -54q2 62 -39 109l-146 170q-53 61 -117 103l-222 148q-34 23 -76 23 q-51 0 -88 -37l-235 312q-25 33 -18 73.5t41 63.5q33 22 71.5 14t62.5 -40l266 -352l-262 455q-21 35 -10.5 75t47.5 59q35 18 72.5 6t57.5 -46l241 -420l-136 337q-15 35 -4.5 74t44.5 56q37 19 76 6t56 -51l193 -415l101 -196q8 -15 23 -17.5t27 7.5t11 26l-12 224 q-2 41 26 71t69 31q39 0 67 -28.5t30 -67.5z" />
|
661 |
+
<glyph unicode="" horiz-adv-x="1792" d="M335 180q-2 0 -6 2q-86 57 -168.5 145t-139.5 180q-21 30 -21 69q0 9 2 19t4 18t7 18t8.5 16t10.5 17t10 15t12 15.5t11 14.5q184 251 452 365q-110 198 -110 211q0 19 17 29q116 64 128 64q18 0 28 -16l124 -229q92 19 192 19q266 0 497.5 -137.5t378.5 -369.5 q20 -31 20 -69t-20 -69q-91 -142 -218.5 -253.5t-278.5 -175.5q110 -198 110 -211q0 -20 -17 -29q-116 -64 -127 -64q-19 0 -29 16l-124 229l-64 119l-444 820l7 7q-58 -24 -99 -47q3 -5 127 -234t243 -449t119 -223q0 -7 -9 -9q-13 -3 -72 -3q-57 0 -60 7l-456 841 q-39 -28 -82 -68q24 -43 214 -393.5t190 -354.5q0 -10 -11 -10q-14 0 -82.5 22t-72.5 28l-106 197l-224 413q-44 -53 -78 -106q2 -3 18 -25t23 -34l176 -327q0 -10 -10 -10zM1165 282l49 -91q273 111 450 385q-180 277 -459 389q67 -64 103 -148.5t36 -176.5 q0 -106 -47 -200.5t-132 -157.5zM848 896q0 -20 14 -34t34 -14q86 0 147 -61t61 -147q0 -20 14 -34t34 -14t34 14t14 34q0 126 -89 215t-215 89q-20 0 -34 -14t-14 -34zM1214 961l-9 4l7 -7z" />
|
662 |
+
<glyph unicode="" horiz-adv-x="1280" d="M1050 430q0 -215 -147 -374q-148 -161 -378 -161q-232 0 -378 161q-147 159 -147 374q0 147 68 270.5t189 196.5t268 73q96 0 182 -31q-32 -62 -39 -126q-66 28 -143 28q-167 0 -280.5 -123t-113.5 -291q0 -170 112.5 -288.5t281.5 -118.5t281 118.5t112 288.5 q0 89 -32 166q66 13 123 49q41 -98 41 -212zM846 619q0 -192 -79.5 -345t-238.5 -253l-14 -1q-29 0 -62 5q83 32 146.5 102.5t99.5 154.5t58.5 189t30 192.5t7.5 178.5q0 69 -3 103q55 -160 55 -326zM791 947v-2q-73 214 -206 440q88 -59 142.5 -186.5t63.5 -251.5z M1035 744q-83 0 -160 75q218 120 290 247q19 37 21 56q-42 -94 -139.5 -166.5t-204.5 -97.5q-35 54 -35 113q0 37 17 79t43 68q46 44 157 74q59 16 106 58.5t74 100.5q74 -105 74 -253q0 -109 -24 -170q-32 -77 -88.5 -130.5t-130.5 -53.5z" />
|
663 |
+
<glyph unicode="" d="M1050 495q0 78 -28 147q-41 -25 -85 -34q22 -50 22 -114q0 -117 -77 -198.5t-193 -81.5t-193.5 81.5t-77.5 198.5q0 115 78 199.5t193 84.5q53 0 98 -19q4 43 27 87q-60 21 -125 21q-154 0 -257.5 -108.5t-103.5 -263.5t103.5 -261t257.5 -106t257.5 106.5t103.5 260.5z M872 850q2 -24 2 -71q0 -63 -5 -123t-20.5 -132.5t-40.5 -130t-68.5 -106t-100.5 -70.5q21 -3 42 -3h10q219 139 219 411q0 116 -38 225zM872 850q-4 80 -44 171.5t-98 130.5q92 -156 142 -302zM1207 955q0 102 -51 174q-41 -86 -124 -109q-69 -19 -109 -53.5t-40 -99.5 q0 -40 24 -77q74 17 140.5 67t95.5 115q-4 -52 -74.5 -111.5t-138.5 -97.5q52 -52 110 -52q51 0 90 37t60 90q17 43 17 117zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5 t84.5 -203.5z" />
|
664 |
+
<glyph unicode="" d="M1279 388q0 22 -22 27q-67 15 -118 59t-80 108q-7 19 -7 25q0 15 19.5 26t43 17t43 20.5t19.5 36.5q0 19 -18.5 31.5t-38.5 12.5q-12 0 -32 -8t-31 -8q-4 0 -12 2q5 95 5 114q0 79 -17 114q-36 78 -103 121.5t-152 43.5q-199 0 -275 -165q-17 -35 -17 -114q0 -19 5 -114 q-4 -2 -14 -2q-12 0 -32 7.5t-30 7.5q-21 0 -38.5 -12t-17.5 -32q0 -21 19.5 -35.5t43 -20.5t43 -17t19.5 -26q0 -6 -7 -25q-64 -138 -198 -167q-22 -5 -22 -27q0 -46 137 -68q2 -5 6 -26t11.5 -30.5t23.5 -9.5q12 0 37.5 4.5t39.5 4.5q35 0 67 -15t54 -32.5t57.5 -32.5 t76.5 -15q43 0 79 15t57.5 32.5t53.5 32.5t67 15q14 0 39.5 -4t38.5 -4q16 0 23 10t11 30t6 25q137 22 137 68zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5 t103 -385.5z" />
|
665 |
+
<glyph unicode="" horiz-adv-x="1664" d="M848 1408q134 1 240.5 -68.5t163.5 -192.5q27 -58 27 -179q0 -47 -9 -191q14 -7 28 -7q18 0 51 13.5t51 13.5q29 0 56 -18t27 -46q0 -32 -31.5 -54t-69 -31.5t-69 -29t-31.5 -47.5q0 -15 12 -43q37 -82 102.5 -150t144.5 -101q28 -12 80 -23q28 -6 28 -35 q0 -70 -219 -103q-7 -11 -11 -39t-14 -46.5t-33 -18.5q-20 0 -62 6.5t-64 6.5q-37 0 -62 -5q-32 -5 -63 -22.5t-58 -38t-58 -40.5t-76 -33.5t-99 -13.5q-52 0 -96.5 13.5t-75 33.5t-57.5 40.5t-58 38t-62 22.5q-26 5 -63 5q-24 0 -65.5 -7.5t-58.5 -7.5q-25 0 -35 18.5 t-14 47.5t-11 40q-219 33 -219 103q0 29 28 35q52 11 80 23q78 32 144.5 101t102.5 150q12 28 12 43q0 28 -31.5 47.5t-69.5 29.5t-69.5 31.5t-31.5 52.5q0 27 26 45.5t55 18.5q15 0 48 -13t53 -13q18 0 32 7q-9 142 -9 190q0 122 27 180q64 137 172 198t264 63z" />
|
666 |
+
<glyph unicode="" d="M1280 388q0 22 -22 27q-67 14 -118 58t-80 109q-7 14 -7 25q0 15 19.5 26t42.5 17t42.5 20.5t19.5 36.5q0 19 -18.5 31.5t-38.5 12.5q-11 0 -31 -8t-32 -8q-4 0 -12 2q5 63 5 115q0 78 -17 114q-36 78 -102.5 121.5t-152.5 43.5q-198 0 -275 -165q-18 -38 -18 -115 q0 -38 6 -114q-10 -2 -15 -2q-11 0 -31.5 8t-30.5 8q-20 0 -37.5 -12.5t-17.5 -32.5q0 -21 19.5 -35.5t42.5 -20.5t42.5 -17t19.5 -26q0 -11 -7 -25q-64 -138 -198 -167q-22 -5 -22 -27q0 -47 138 -69q2 -5 6 -26t11 -30.5t23 -9.5q13 0 38.5 5t38.5 5q35 0 67.5 -15 t54.5 -32.5t57.5 -32.5t76.5 -15q43 0 79 15t57.5 32.5t54 32.5t67.5 15q13 0 39 -4.5t39 -4.5q15 0 22.5 9.5t11.5 31t5 24.5q138 22 138 69zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960 q119 0 203.5 -84.5t84.5 -203.5z" />
|
667 |
+
<glyph unicode="" horiz-adv-x="2304" d="M2304 1536q-69 -46 -125 -92t-89 -81t-59.5 -71.5t-37.5 -57.5t-22 -44.5t-14 -29.5q-10 -18 -35.5 -136.5t-48.5 -164.5q-15 -29 -50 -60.5t-67.5 -50.5t-72.5 -41t-48 -28q-47 -31 -151 -231q-341 14 -630 -158q-92 -53 -303 -179q47 16 86 31t55 22l15 7 q71 27 163 64.5t133.5 53.5t108 34.5t142.5 31.5q186 31 465 -7q1 0 10 -3q11 -6 14 -17t-3 -22l-194 -345q-15 -29 -47 -22q-128 24 -354 24q-146 0 -402 -44.5t-392 -46.5q-82 -1 -149 13t-107 37t-61 40t-33 34l-1 1v2q0 6 6 6q138 0 371 55q192 366 374.5 524t383.5 158 q5 0 14.5 -0.5t38 -5t55 -12t61.5 -24.5t63 -39.5t54 -59t40 -82.5l102 177q2 4 21 42.5t44.5 86.5t61 109.5t84 133.5t100.5 137q66 82 128 141.5t121.5 96.5t92.5 53.5t88 39.5z" />
|
668 |
+
<glyph unicode="" d="M1322 640q0 -45 -5 -76l-236 14l224 -78q-19 -73 -58 -141l-214 103l177 -158q-44 -61 -107 -108l-157 178l103 -215q-61 -37 -140 -59l-79 228l14 -240q-38 -6 -76 -6t-76 6l14 238l-78 -226q-74 19 -140 59l103 215l-157 -178q-59 43 -108 108l178 158l-214 -104 q-39 69 -58 141l224 79l-237 -14q-5 42 -5 76q0 35 5 77l238 -14l-225 79q19 73 58 140l214 -104l-177 159q46 61 107 108l158 -178l-103 215q67 39 140 58l77 -224l-13 236q36 6 75 6q38 0 76 -6l-14 -237l78 225q74 -19 140 -59l-103 -214l158 178q61 -47 107 -108 l-177 -159l213 104q37 -62 58 -141l-224 -78l237 14q5 -31 5 -77zM1352 640q0 160 -78.5 295.5t-213 214t-292.5 78.5q-119 0 -227 -46.5t-186.5 -125t-124.5 -187.5t-46 -229q0 -119 46 -228t124.5 -187.5t186.5 -125t227 -46.5q158 0 292.5 78.5t213 214t78.5 294.5z M1425 1023v-766l-657 -383l-657 383v766l657 383zM768 -183l708 412v823l-708 411l-708 -411v-823zM1536 1088v-896l-768 -448l-768 448v896l768 448z" />
|
669 |
+
<glyph unicode="" horiz-adv-x="1664" d="M339 1318h691l-26 -72h-665q-110 0 -188.5 -79t-78.5 -189v-771q0 -95 60.5 -169.5t153.5 -93.5q23 -5 98 -5v-72h-45q-140 0 -239.5 100t-99.5 240v771q0 140 99.5 240t239.5 100zM1190 1536h247l-482 -1294q-23 -61 -40.5 -103.5t-45 -98t-54 -93.5t-64.5 -78.5 t-79.5 -65t-95.5 -41t-116 -18.5v195q163 26 220 182q20 52 20 105q0 54 -20 106l-285 733h228l187 -585zM1664 978v-1111h-795q37 55 45 73h678v1038q0 85 -49.5 155t-129.5 99l25 67q101 -34 163.5 -123.5t62.5 -197.5z" />
|
670 |
+
<glyph unicode="" horiz-adv-x="1792" d="M852 1227q0 -29 -17 -52.5t-45 -23.5t-45 23.5t-17 52.5t17 52.5t45 23.5t45 -23.5t17 -52.5zM688 -149v114q0 30 -20.5 51.5t-50.5 21.5t-50 -21.5t-20 -51.5v-114q0 -30 20.5 -52t49.5 -22q30 0 50.5 22t20.5 52zM860 -149v114q0 30 -20 51.5t-50 21.5t-50.5 -21.5 t-20.5 -51.5v-114q0 -30 20.5 -52t50.5 -22q29 0 49.5 22t20.5 52zM1034 -149v114q0 30 -20.5 51.5t-50.5 21.5t-50.5 -21.5t-20.5 -51.5v-114q0 -30 20.5 -52t50.5 -22t50.5 22t20.5 52zM1208 -149v114q0 30 -20.5 51.5t-50.5 21.5t-50.5 -21.5t-20.5 -51.5v-114 q0 -30 20.5 -52t50.5 -22t50.5 22t20.5 52zM1476 535q-84 -160 -232 -259.5t-323 -99.5q-123 0 -229.5 51.5t-178.5 137t-113 197.5t-41 232q0 88 21 174q-104 -175 -104 -390q0 -162 65 -312t185 -251q30 57 91 57q56 0 86 -50q32 50 87 50q56 0 86 -50q32 50 87 50t87 -50 q30 50 86 50q28 0 52.5 -15.5t37.5 -40.5q112 94 177 231.5t73 287.5zM1326 564q0 75 -72 75q-17 0 -47 -6q-95 -19 -149 -19q-226 0 -226 243q0 86 30 204q-83 -127 -83 -275q0 -150 89 -260.5t235 -110.5q111 0 210 70q13 48 13 79zM884 1223q0 50 -32 89.5t-81 39.5 t-81 -39.5t-32 -89.5q0 -51 31.5 -90.5t81.5 -39.5t81.5 39.5t31.5 90.5zM1513 884q0 96 -37.5 179t-113 137t-173.5 54q-77 0 -149 -35t-127 -94q-48 -159 -48 -268q0 -104 45.5 -157t147.5 -53q53 0 142 19q36 6 53 6q51 0 77.5 -28t26.5 -80q0 -26 -4 -46 q75 68 117.5 165.5t42.5 200.5zM1792 667q0 -111 -33.5 -249.5t-93.5 -204.5q-58 -64 -195 -142.5t-228 -104.5l-4 -1v-114q0 -43 -29.5 -75t-72.5 -32q-56 0 -86 50q-32 -50 -87 -50t-87 50q-30 -50 -86 -50q-55 0 -87 50q-30 -50 -86 -50q-47 0 -75 33.5t-28 81.5 q-90 -68 -198 -68q-118 0 -211 80q54 1 106 20q-113 31 -182 127q32 -7 71 -7q89 0 164 46q-192 192 -240 306q-24 56 -24 160q0 57 9 125.5t31.5 146.5t55 141t86.5 105t120 42q59 0 81 -52q19 29 42 54q2 3 12 13t13 16q10 15 23 38t25 42t28 39q87 111 211.5 177 t260.5 66q35 0 62 -4q59 64 146 64q83 0 140 -57q5 -5 5 -12q0 -5 -6 -13.5t-12.5 -16t-16 -17l-10.5 -10.5q17 -6 36 -18t19 -24q0 -6 -16 -25q157 -138 197 -378q25 30 60 30q45 0 100 -49q90 -80 90 -279z" />
|
671 |
+
<glyph unicode="" d="M917 631q0 33 -6 64h-362v-132h217q-12 -76 -74.5 -120.5t-142.5 -44.5q-99 0 -169 71.5t-70 170.5t70 170.5t169 71.5q93 0 153 -59l104 101q-108 100 -257 100q-160 0 -272 -112.5t-112 -271.5t112 -271.5t272 -112.5q165 0 266.5 105t101.5 270zM1262 585h109v110 h-109v110h-110v-110h-110v-110h110v-110h110v110zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
|
672 |
+
<glyph unicode="" d="M1536 1024v-839q0 -48 -49 -62q-174 -52 -338 -52q-73 0 -215.5 29.5t-227.5 29.5q-164 0 -370 -48v-338h-160v1368q-63 25 -101 81t-38 124q0 91 64 155t155 64t155 -64t64 -155q0 -68 -38 -124t-101 -81v-68q190 44 343 44q99 0 198 -15q14 -2 111.5 -22.5t149.5 -20.5 q77 0 165 18q11 2 80 21t89 19q26 0 45 -19t19 -45z" />
|
673 |
+
<glyph unicode="" horiz-adv-x="1792" />
|
674 |
+
<glyph unicode="" horiz-adv-x="1792" />
|
675 |
+
<glyph unicode="" horiz-adv-x="1792" />
|
676 |
+
<glyph unicode="" horiz-adv-x="1792" />
|
677 |
+
<glyph unicode="" horiz-adv-x="1792" />
|
678 |
+
<glyph unicode="" horiz-adv-x="1792" />
|
679 |
+
<glyph unicode="" horiz-adv-x="1792" />
|
680 |
+
<glyph unicode="" horiz-adv-x="1792" />
|
681 |
+
<glyph unicode="" horiz-adv-x="1792" />
|
682 |
+
<glyph unicode="" horiz-adv-x="1792" />
|
683 |
<glyph unicode="" horiz-adv-x="1792" />
|
684 |
</font>
|
685 |
</defs></svg>
|
icons/fontawesome/font/fontawesome-webfont.ttf
CHANGED
Binary file
|
icons/fontawesome/font/fontawesome-webfont.woff
CHANGED
Binary file
|
icons/fontawesome/font/fontawesome-webfont.woff2
CHANGED
Binary file
|
icons/fontawesome/style.css
CHANGED
@@ -1,12 +1,12 @@
|
|
1 |
|
2 |
@font-face {
|
3 |
font-family: 'sow-fontawesome';
|
4 |
-
src: url('font/fontawesome-webfont.eot?v=4.
|
5 |
-
src: url('font/fontawesome-webfont.eot?#iefix&v=4.
|
6 |
-
url('font/fontawesome-webfont.woff2?v=4.
|
7 |
-
url('font/fontawesome-webfont.woff?v=4.
|
8 |
-
url('font/fontawesome-webfont.ttf?v=4.
|
9 |
-
url('font/fontawesome-webfont.svg?v=4.
|
10 |
font-weight: normal;
|
11 |
font-style: normal;
|
12 |
}
|
@@ -27,4 +27,4 @@
|
|
27 |
|
28 |
.sow-icon-fontawesome[data-sow-icon]:before {
|
29 |
content: attr(data-sow-icon);
|
30 |
-
}
|
1 |
|
2 |
@font-face {
|
3 |
font-family: 'sow-fontawesome';
|
4 |
+
src: url('font/fontawesome-webfont.eot?v=4.6.3');
|
5 |
+
src: url('font/fontawesome-webfont.eot?#iefix&v=4.6.3') format('embedded-opentype'),
|
6 |
+
url('font/fontawesome-webfont.woff2?v=4.6.3') format('woff2'),
|
7 |
+
url('font/fontawesome-webfont.woff?v=4.6.3') format('woff'),
|
8 |
+
url('font/fontawesome-webfont.ttf?v=4.6.3') format('truetype'),
|
9 |
+
url('font/fontawesome-webfont.svg?v=4.6.3#fontawesomeregular') format('svg');
|
10 |
font-weight: normal;
|
11 |
font-style: normal;
|
12 |
}
|
27 |
|
28 |
.sow-icon-fontawesome[data-sow-icon]:before {
|
29 |
content: attr(data-sow-icon);
|
30 |
+
}
|
readme.txt
CHANGED
@@ -1,9 +1,9 @@
|
|
1 |
=== SiteOrigin Widgets Bundle ===
|
2 |
Tags: bundle, widget, button, slider, image, carousel, price table, google maps, tinymce, social links
|
3 |
Requires at least: 3.9
|
4 |
-
Tested up to: 4.
|
5 |
-
Stable tag: 1.7.
|
6 |
-
Build time: 2016-
|
7 |
License: GPLv3 or later
|
8 |
Contributors: gpriday, braam-genis
|
9 |
|
@@ -51,6 +51,20 @@ The SiteOrigin Widgets Bundle is the perfect platform to build widgets for your
|
|
51 |
|
52 |
== Changelog ==
|
53 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
54 |
= 1.7.1 - 21 September 2016 =
|
55 |
* Fixed case of Maps widget in sidebar causing an error on pages without that sidebar.
|
56 |
* Fixed icon field CSS.
|
1 |
=== SiteOrigin Widgets Bundle ===
|
2 |
Tags: bundle, widget, button, slider, image, carousel, price table, google maps, tinymce, social links
|
3 |
Requires at least: 3.9
|
4 |
+
Tested up to: 4.7
|
5 |
+
Stable tag: 1.7.2
|
6 |
+
Build time: 2016-11-10T09:26:59+02:00
|
7 |
License: GPLv3 or later
|
8 |
Contributors: gpriday, braam-genis
|
9 |
|
51 |
|
52 |
== Changelog ==
|
53 |
|
54 |
+
= 1.7.2 - 09 November 2016 =
|
55 |
+
* Made fixes to pass PHP 7 compatibility checks.
|
56 |
+
* Image Widget: Get alt and title text from chosen image.
|
57 |
+
* Replaced markup parser with more actively maintained one.
|
58 |
+
* Simple Masonry: ensure resize on load
|
59 |
+
* Image Grid: Allow 0 as valid spacing value.
|
60 |
+
* Editor Widget: Call `WP_Embed::run_shortcode` on Editor widget content
|
61 |
+
* Maps: Added missing `typeof` causing maps api not to load properly.
|
62 |
+
* Icon: Fixed URL output.
|
63 |
+
* Fixed double slash in URLs.
|
64 |
+
* Features: Use Measurement fields.
|
65 |
+
* Apply modify_form to form arrays created in the constructor.
|
66 |
+
* Contact Form: add email default email subject if no subject defined.
|
67 |
+
|
68 |
= 1.7.1 - 21 September 2016 =
|
69 |
* Fixed case of Maps widget in sidebar causing an error on pages without that sidebar.
|
70 |
* Fixed icon field CSS.
|
so-widgets-bundle.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/*
|
3 |
Plugin Name: SiteOrigin Widgets Bundle
|
4 |
Description: A collection of all widgets, neatly bundled into a single plugin. It's also a framework to code your own widgets on top of.
|
5 |
-
Version: 1.7.
|
6 |
Text Domain: so-widgets-bundle
|
7 |
Domain Path: /languages
|
8 |
Author: SiteOrigin
|
@@ -12,7 +12,7 @@ License: GPL3
|
|
12 |
License URI: https://www.gnu.org/licenses/gpl-3.0.txt
|
13 |
*/
|
14 |
|
15 |
-
define('SOW_BUNDLE_VERSION', '1.7.
|
16 |
define('SOW_BUNDLE_BASE_FILE', __FILE__);
|
17 |
|
18 |
// Allow JS suffix to be pre-set
|
2 |
/*
|
3 |
Plugin Name: SiteOrigin Widgets Bundle
|
4 |
Description: A collection of all widgets, neatly bundled into a single plugin. It's also a framework to code your own widgets on top of.
|
5 |
+
Version: 1.7.2
|
6 |
Text Domain: so-widgets-bundle
|
7 |
Domain Path: /languages
|
8 |
Author: SiteOrigin
|
12 |
License URI: https://www.gnu.org/licenses/gpl-3.0.txt
|
13 |
*/
|
14 |
|
15 |
+
define('SOW_BUNDLE_VERSION', '1.7.2');
|
16 |
define('SOW_BUNDLE_BASE_FILE', __FILE__);
|
17 |
|
18 |
// Allow JS suffix to be pre-set
|
widgets/button/button.php
CHANGED
@@ -78,29 +78,29 @@ class SiteOrigin_Widget_Button_Widget extends SiteOrigin_Widget {
|
|
78 |
),
|
79 |
),
|
80 |
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
-
),
|
103 |
),
|
|
|
104 |
|
105 |
'theme' => array(
|
106 |
'type' => 'select',
|
@@ -179,6 +179,12 @@ class SiteOrigin_Widget_Button_Widget extends SiteOrigin_Widget {
|
|
179 |
'description' => __('An ID attribute allows you to target this button in Javascript.', 'so-widgets-bundle'),
|
180 |
),
|
181 |
|
|
|
|
|
|
|
|
|
|
|
|
|
182 |
'title' => array(
|
183 |
'type' => 'text',
|
184 |
'label' => __('Title attribute', 'so-widgets-bundle'),
|
@@ -200,6 +206,24 @@ class SiteOrigin_Widget_Button_Widget extends SiteOrigin_Widget {
|
|
200 |
return $instance['design']['theme'];
|
201 |
}
|
202 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
203 |
/**
|
204 |
* Get the variables that we'll be injecting into the less stylesheet.
|
205 |
*
|
78 |
),
|
79 |
),
|
80 |
|
81 |
+
'design' => array(
|
82 |
+
'type' => 'section',
|
83 |
+
'label' => __('Design and layout', 'so-widgets-bundle'),
|
84 |
+
'hide' => true,
|
85 |
+
'fields' => array(
|
86 |
+
|
87 |
+
'width' => array(
|
88 |
+
'type' => 'measurement',
|
89 |
+
'label' => __( 'Width', 'so-widgets-bundle' ),
|
90 |
+
'description' => __( 'Leave blank to let the button resize according to content.', 'so-widgets-bundle' )
|
91 |
+
),
|
92 |
|
93 |
+
'align' => array(
|
94 |
+
'type' => 'select',
|
95 |
+
'label' => __('Align', 'so-widgets-bundle'),
|
96 |
+
'default' => 'center',
|
97 |
+
'options' => array(
|
98 |
+
'left' => __('Left', 'so-widgets-bundle'),
|
99 |
+
'right' => __('Right', 'so-widgets-bundle'),
|
100 |
+
'center' => __('Center', 'so-widgets-bundle'),
|
101 |
+
'justify' => __('Justify', 'so-widgets-bundle'),
|
|
|
102 |
),
|
103 |
+
),
|
104 |
|
105 |
'theme' => array(
|
106 |
'type' => 'select',
|
179 |
'description' => __('An ID attribute allows you to target this button in Javascript.', 'so-widgets-bundle'),
|
180 |
),
|
181 |
|
182 |
+
'classes' => array(
|
183 |
+
'type' => 'text',
|
184 |
+
'label' => __('Button Classes', 'so-widgets-bundle'),
|
185 |
+
'description' => __('Additional CSS classes added to the button link.', 'so-widgets-bundle'),
|
186 |
+
),
|
187 |
+
|
188 |
'title' => array(
|
189 |
'type' => 'text',
|
190 |
'label' => __('Title attribute', 'so-widgets-bundle'),
|
206 |
return $instance['design']['theme'];
|
207 |
}
|
208 |
|
209 |
+
/**
|
210 |
+
* Get the variables for the button widget.
|
211 |
+
*
|
212 |
+
* @param $instance
|
213 |
+
* @param $args
|
214 |
+
*
|
215 |
+
* @return array
|
216 |
+
*/
|
217 |
+
function get_template_variables( $instance, $args ) {
|
218 |
+
$vars = array();
|
219 |
+
|
220 |
+
if( ! empty( $instance[ 'attributes' ][ 'classes' ] ) ) {
|
221 |
+
$vars[ 'classes' ] = explode( ' ', $instance[ 'attributes' ][ 'classes' ] );
|
222 |
+
}
|
223 |
+
|
224 |
+
return $vars;
|
225 |
+
}
|
226 |
+
|
227 |
/**
|
228 |
* Get the variables that we'll be injecting into the less stylesheet.
|
229 |
*
|
widgets/button/tpl/default.php
CHANGED
@@ -1,12 +1,15 @@
|
|
1 |
<?php
|
2 |
-
|
|
|
|
|
|
|
3 |
if( !empty($instance['design']['hover']) ) $classes[] = 'ow-button-hover';
|
4 |
?>
|
5 |
<div class="ow-button-base ow-button-align-<?php echo esc_attr($instance['design']['align']) ?>">
|
6 |
|
7 |
<?php
|
8 |
$button_attributes = array(
|
9 |
-
'class' => esc_attr(implode(' ', $classes))
|
10 |
);
|
11 |
if(!empty($instance['new_window'])) $button_attributes['target'] = '_blank';
|
12 |
if(!empty($instance['url'])) $button_attributes['href'] = sow_esc_url($instance['url']);
|
1 |
<?php
|
2 |
+
/**
|
3 |
+
* @var array $classes
|
4 |
+
*/
|
5 |
+
|
6 |
if( !empty($instance['design']['hover']) ) $classes[] = 'ow-button-hover';
|
7 |
?>
|
8 |
<div class="ow-button-base ow-button-align-<?php echo esc_attr($instance['design']['align']) ?>">
|
9 |
|
10 |
<?php
|
11 |
$button_attributes = array(
|
12 |
+
'class' => esc_attr( implode(' ', $classes) )
|
13 |
);
|
14 |
if(!empty($instance['new_window'])) $button_attributes['target'] = '_blank';
|
15 |
if(!empty($instance['url'])) $button_attributes['href'] = sow_esc_url($instance['url']);
|
widgets/contact/contact.php
CHANGED
@@ -173,20 +173,20 @@ class SiteOrigin_Widgets_ContactForm_Widget extends SiteOrigin_Widget {
|
|
173 |
|
174 |
'recaptcha' => array(
|
175 |
'type' => 'section',
|
176 |
-
'label' => __('
|
177 |
'fields' => array(
|
178 |
'use_captcha' => array(
|
179 |
'type' => 'checkbox',
|
180 |
-
'label' => __( 'Use
|
181 |
'default' => false,
|
182 |
),
|
183 |
'site_key' => array(
|
184 |
'type' => 'text',
|
185 |
-
'label' => __( '
|
186 |
),
|
187 |
'secret_key' => array(
|
188 |
'type' => 'text',
|
189 |
-
'label' => __( '
|
190 |
),
|
191 |
'theme' => array(
|
192 |
'type' => 'select',
|
@@ -846,6 +846,11 @@ class SiteOrigin_Widgets_ContactForm_Widget extends SiteOrigin_Widget {
|
|
846 |
}
|
847 |
}
|
848 |
|
|
|
|
|
|
|
|
|
|
|
849 |
// Add in the default subject prefix
|
850 |
if( !empty( $email_fields['subject'] ) && !empty($instance['settings']['subject_prefix']) ) {
|
851 |
$email_fields['subject'] = $instance['settings']['subject_prefix'] . ' ' . $email_fields['subject'];
|
173 |
|
174 |
'recaptcha' => array(
|
175 |
'type' => 'section',
|
176 |
+
'label' => __('reCAPTCHA', 'so-widgets-bundle'),
|
177 |
'fields' => array(
|
178 |
'use_captcha' => array(
|
179 |
'type' => 'checkbox',
|
180 |
+
'label' => __( 'Use reCAPTCHA', 'so-widgets-bundle' ),
|
181 |
'default' => false,
|
182 |
),
|
183 |
'site_key' => array(
|
184 |
'type' => 'text',
|
185 |
+
'label' => __( 'reCAPTCHA Site Key', 'so-widgets-bundle' ),
|
186 |
),
|
187 |
'secret_key' => array(
|
188 |
'type' => 'text',
|
189 |
+
'label' => __( 'reCAPTCHA Secret Key', 'so-widgets-bundle' ),
|
190 |
),
|
191 |
'theme' => array(
|
192 |
'type' => 'select',
|
846 |
}
|
847 |
}
|
848 |
|
849 |
+
// Add in the default subject if no subject field is defined in the form at all
|
850 |
+
if ( !isset( $email_fields['subject'] ) && !empty($instance['settings']['default_subject']) ) {
|
851 |
+
$email_fields['subject'] = $instance['settings']['default_subject'];
|
852 |
+
}
|
853 |
+
|
854 |
// Add in the default subject prefix
|
855 |
if( !empty( $email_fields['subject'] ) && !empty($instance['settings']['subject_prefix']) ) {
|
856 |
$email_fields['subject'] = $instance['settings']['subject_prefix'] . ' ' . $email_fields['subject'];
|
widgets/editor/editor.php
CHANGED
@@ -61,6 +61,7 @@ class SiteOrigin_Widget_Editor_Widget extends SiteOrigin_Widget {
|
|
61 |
|
62 |
// Run some known stuff
|
63 |
if( !empty($GLOBALS['wp_embed']) ) {
|
|
|
64 |
$instance['text'] = $GLOBALS['wp_embed']->autoembed( $instance['text'] );
|
65 |
}
|
66 |
if (function_exists('wp_make_content_images_responsive')) {
|
61 |
|
62 |
// Run some known stuff
|
63 |
if( !empty($GLOBALS['wp_embed']) ) {
|
64 |
+
$instance['text'] = $GLOBALS['wp_embed']->run_shortcode( $instance['text'] );
|
65 |
$instance['text'] = $GLOBALS['wp_embed']->autoembed( $instance['text'] );
|
66 |
}
|
67 |
if (function_exists('wp_make_content_images_responsive')) {
|
widgets/features/tpl/default.php
CHANGED
@@ -15,7 +15,7 @@ $last_row = floor( ( count($instance['features']) - 1 ) / $instance['per_row'] )
|
|
15 |
<?php if( !empty( $feature['more_url'] ) && $instance['icon_link'] ) echo '<a href="' . sow_esc_url( $feature['more_url'] ) . '" ' . ( $instance['new_window'] ? 'target="_blank"' : '' ) . '>'; ?>
|
16 |
<div
|
17 |
class="sow-icon-container <?php echo !empty($instance['container_shape']) ? 'sow-container-' . esc_attr($instance['container_shape']) : 'sow-container-none'?>"
|
18 |
-
style="font-size: <?php echo intval($instance['container_size'])
|
19 |
<?php
|
20 |
$icon_styles = array();
|
21 |
if( !empty($feature['icon_image']) ) {
|
@@ -23,7 +23,7 @@ $last_row = floor( ( count($instance['features']) - 1 ) / $instance['per_row'] )
|
|
23 |
$attachment = wp_get_attachment_image_src( $feature['icon_image'], $size );
|
24 |
if(!empty($attachment)) {
|
25 |
$icon_styles[] = 'background-image: url(' . sow_esc_url($attachment[0]) . ')';
|
26 |
-
if(!empty($instance['icon_size'])) $icon_styles[] = 'font-size: '.intval($instance['icon_size']).'
|
27 |
|
28 |
?><div class="sow-icon-image" style="<?php echo implode('; ', $icon_styles) ?>"></div><?php
|
29 |
}
|
15 |
<?php if( !empty( $feature['more_url'] ) && $instance['icon_link'] ) echo '<a href="' . sow_esc_url( $feature['more_url'] ) . '" ' . ( $instance['new_window'] ? 'target="_blank"' : '' ) . '>'; ?>
|
16 |
<div
|
17 |
class="sow-icon-container <?php echo !empty($instance['container_shape']) ? 'sow-container-' . esc_attr($instance['container_shape']) : 'sow-container-none'?>"
|
18 |
+
style="font-size: <?php echo intval($instance['container_size']) . esc_attr( $instance['container_size_unit'] ); ?>; color: <?php echo esc_attr($feature['container_color']) ?>; width: <?php echo intval($instance['container_size']) . esc_attr( $instance['container_size_unit'] ); ?>; height: <?php echo intval($instance['container_size']) . esc_attr( $instance['container_size_unit'] ); ?>;">
|
19 |
<?php
|
20 |
$icon_styles = array();
|
21 |
if( !empty($feature['icon_image']) ) {
|
23 |
$attachment = wp_get_attachment_image_src( $feature['icon_image'], $size );
|
24 |
if(!empty($attachment)) {
|
25 |
$icon_styles[] = 'background-image: url(' . sow_esc_url($attachment[0]) . ')';
|
26 |
+
if(!empty($instance['icon_size'])) $icon_styles[] = 'font-size: '.intval($instance['icon_size']) . esc_attr( $instance['icon_size_unit'] );
|
27 |
|
28 |
?><div class="sow-icon-image" style="<?php echo implode('; ', $icon_styles) ?>"></div><?php
|
29 |
}
|
widgets/google-map/google-map.php
CHANGED
@@ -202,6 +202,12 @@ class SiteOrigin_Widget_GoogleMap_Widget extends SiteOrigin_Widget {
|
|
202 |
'always' => __( 'Always', 'so-widgets-bundle' ),
|
203 |
)
|
204 |
),
|
|
|
|
|
|
|
|
|
|
|
|
|
205 |
)
|
206 |
),
|
207 |
'styles' => array(
|
@@ -419,6 +425,7 @@ class SiteOrigin_Widget_GoogleMap_Widget extends SiteOrigin_Widget {
|
|
419 |
'markers_draggable' => isset( $markers['markers_draggable'] ) ? $markers['markers_draggable'] : '',
|
420 |
'marker_at_center' => !empty( $markers['marker_at_center'] ),
|
421 |
'marker_info_display' => $markers['info_display'],
|
|
|
422 |
'marker_positions' => isset( $markers['marker_positions'] ) ? $markers['marker_positions'] : '',
|
423 |
'map_name' => ! empty( $styles ) ? $styles['map_name'] : '',
|
424 |
'map_styles' => ! empty( $styles ) ? $styles['styles'] : '',
|
202 |
'always' => __( 'Always', 'so-widgets-bundle' ),
|
203 |
)
|
204 |
),
|
205 |
+
'info_multiple' => array(
|
206 |
+
'type' => 'checkbox',
|
207 |
+
'label' => __( 'Allow multiple simultaneous Info Windows?', 'so-widgets-bundle' ),
|
208 |
+
'default' => true,
|
209 |
+
'description' => __( 'This setting is ignored when Info Windows are set to always display.' )
|
210 |
+
),
|
211 |
)
|
212 |
),
|
213 |
'styles' => array(
|
425 |
'markers_draggable' => isset( $markers['markers_draggable'] ) ? $markers['markers_draggable'] : '',
|
426 |
'marker_at_center' => !empty( $markers['marker_at_center'] ),
|
427 |
'marker_info_display' => $markers['info_display'],
|
428 |
+
'marker_info_multiple' => $markers['info_multiple'],
|
429 |
'marker_positions' => isset( $markers['marker_positions'] ) ? $markers['marker_positions'] : '',
|
430 |
'map_name' => ! empty( $styles ) ? $styles['map_name'] : '',
|
431 |
'map_styles' => ! empty( $styles ) ? $styles['styles'] : '',
|
widgets/google-map/js/js-map.js
CHANGED
@@ -155,6 +155,7 @@ sowb.SiteOriginGoogleMap = function($) {
|
|
155 |
showMarkers: function(markerPositions, map, options) {
|
156 |
if ( markerPositions && markerPositions.length ) {
|
157 |
var geocoder = new google.maps.Geocoder();
|
|
|
158 |
markerPositions.forEach(
|
159 |
function (mrkr) {
|
160 |
var geocodeMarker = function () {
|
@@ -179,14 +180,27 @@ sowb.SiteOriginGoogleMap = function($) {
|
|
179 |
var infoDisplay = options.markerInfoDisplay;
|
180 |
infoWindowOptions.disableAutoPan = infoDisplay == 'always';
|
181 |
var infoWindow = new google.maps.InfoWindow(infoWindowOptions);
|
|
|
|
|
182 |
if (infoDisplay == 'always') {
|
|
|
183 |
infoWindow.open(map, marker);
|
184 |
-
|
185 |
-
|
186 |
-
|
187 |
-
|
188 |
-
|
189 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
190 |
});
|
191 |
}
|
192 |
}
|
@@ -194,11 +208,11 @@ sowb.SiteOriginGoogleMap = function($) {
|
|
194 |
//try again please
|
195 |
setTimeout(geocodeMarker, Math.random() * 1000, mrkr);
|
196 |
}
|
197 |
-
});
|
198 |
-
};
|
199 |
//set random delays of 0 - 1 seconds when geocoding markers to try avoid hitting the query limit
|
200 |
setTimeout(geocodeMarker, Math.random() * 1000, mrkr);
|
201 |
-
}
|
202 |
);
|
203 |
}
|
204 |
},
|
@@ -352,7 +366,7 @@ function soGoogleMapInitialize() {
|
|
352 |
|
353 |
jQuery(function ($) {
|
354 |
var mapOptions = $( '.sow-google-map-canvas' ).data( 'options' );
|
355 |
-
var mapsApiLoaded = typeof window.google !== 'undefined' && window.google.maps !== 'undefined';
|
356 |
var isLoaded = function (element) {
|
357 |
var lib = window.google.maps[element];
|
358 |
return window.google.maps.hasOwnProperty(element) && typeof lib !== 'undefined' && lib !== null;
|
155 |
showMarkers: function(markerPositions, map, options) {
|
156 |
if ( markerPositions && markerPositions.length ) {
|
157 |
var geocoder = new google.maps.Geocoder();
|
158 |
+
this.infoWindows = [];
|
159 |
markerPositions.forEach(
|
160 |
function (mrkr) {
|
161 |
var geocodeMarker = function () {
|
180 |
var infoDisplay = options.markerInfoDisplay;
|
181 |
infoWindowOptions.disableAutoPan = infoDisplay == 'always';
|
182 |
var infoWindow = new google.maps.InfoWindow(infoWindowOptions);
|
183 |
+
this.infoWindows.push(infoWindow);
|
184 |
+
var openEvent = infoDisplay;
|
185 |
if (infoDisplay == 'always') {
|
186 |
+
openEvent = 'click';
|
187 |
infoWindow.open(map, marker);
|
188 |
+
}
|
189 |
+
marker.addListener(openEvent, function () {
|
190 |
+
infoWindow.open(map, marker);
|
191 |
+
if(infoDisplay != 'always' && !options.markerInfoMultiple) {
|
192 |
+
this.infoWindows.forEach(function(iw) {
|
193 |
+
if (iw !== infoWindow) {
|
194 |
+
iw.close();
|
195 |
+
}
|
196 |
+
});
|
197 |
+
}
|
198 |
+
}.bind(this));
|
199 |
+
if(infoDisplay == 'mouseover') {
|
200 |
+
marker.addListener('mouseout', function () {
|
201 |
+
setTimeout(function() {
|
202 |
+
infoWindow.close();
|
203 |
+
}, 100);
|
204 |
});
|
205 |
}
|
206 |
}
|
208 |
//try again please
|
209 |
setTimeout(geocodeMarker, Math.random() * 1000, mrkr);
|
210 |
}
|
211 |
+
}.bind(this));
|
212 |
+
}.bind(this);
|
213 |
//set random delays of 0 - 1 seconds when geocoding markers to try avoid hitting the query limit
|
214 |
setTimeout(geocodeMarker, Math.random() * 1000, mrkr);
|
215 |
+
}.bind(this)
|
216 |
);
|
217 |
}
|
218 |
},
|
366 |
|
367 |
jQuery(function ($) {
|
368 |
var mapOptions = $( '.sow-google-map-canvas' ).data( 'options' );
|
369 |
+
var mapsApiLoaded = typeof window.google !== 'undefined' && typeof window.google.maps !== 'undefined';
|
370 |
var isLoaded = function (element) {
|
371 |
var lib = window.google.maps[element];
|
372 |
return window.google.maps.hasOwnProperty(element) && typeof lib !== 'undefined' && lib !== null;
|
widgets/google-map/js/js-map.min.js
CHANGED
@@ -1 +1 @@
|
|
1 |
-
function soGoogleMapInitialize(){new sowb.SiteOriginGoogleMap(window.jQuery).initMaps()}var sowb=window.sowb||{};sowb.SiteOriginGoogleMap=function(e){return{DEFAULT_LOCATIONS:["Addo Elephant National Park, R335, Addo","Cape Town, Western Cape, South Africa","San Francisco Bay Area, CA, United States","New York, NY, United States"],showMap:function(e,o,t){var i=Number(t.zoom);i||(i=14);var n="user_map_style",a={zoom:i,scrollwheel:t.scrollZoom,draggable:t.draggable,disableDefaultUI:t.disableUi,zoomControl:t.zoomControl,panControl:t.panControl,center:o,mapTypeControlOptions:{mapTypeIds:[google.maps.MapTypeId.ROADMAP,n]}},
|
1 |
+
function soGoogleMapInitialize(){new sowb.SiteOriginGoogleMap(window.jQuery).initMaps()}var sowb=window.sowb||{};sowb.SiteOriginGoogleMap=function(e){return{DEFAULT_LOCATIONS:["Addo Elephant National Park, R335, Addo","Cape Town, Western Cape, South Africa","San Francisco Bay Area, CA, United States","New York, NY, United States"],showMap:function(e,o,t){var i=Number(t.zoom);i||(i=14);var n="user_map_style",a={zoom:i,scrollwheel:t.scrollZoom,draggable:t.draggable,disableDefaultUI:t.disableUi,zoomControl:t.zoomControl,panControl:t.panControl,center:o,mapTypeControlOptions:{mapTypeIds:[google.maps.MapTypeId.ROADMAP,n]}},s=new google.maps.Map(e,a),r={name:t.mapName},l=t.mapStyles;if(l){var d=new google.maps.StyledMapType(l,r);s.mapTypes.set(n,d),s.setMapTypeId(n)}if(t.markerAtCenter&&(this.centerMarker=new google.maps.Marker({position:o,map:s,draggable:t.markersDraggable,icon:t.markerIcon,title:""})),t.keepCentered){var c;google.maps.event.addDomListener(s,"idle",function(){c=s.getCenter()}),google.maps.event.addDomListener(window,"resize",function(){s.setCenter(c)})}this.linkAutocompleteField(t.autocomplete,t.autocompleteElement,s,t),this.showMarkers(t.markerPositions,s,t),this.showDirections(t.directions,s,t)},linkAutocompleteField:function(o,t,i,n){if(o&&t){var a=function(e){this.inputAddress!=e&&(this.inputAddress=e,this.getLocation(this.inputAddress).done(function(e){i.setZoom(15),i.setCenter(e),this.centerMarker&&(this.centerMarker.setPosition(e),this.centerMarker.setTitle(this.inputAddress))}.bind(this)))}.bind(this),s=e(t);o.addListener("place_changed",function(){var e=o.getPlace();i.setZoom(15),e.geometry&&(i.setCenter(e.geometry.location),this.centerMarker&&this.centerMarker.setPosition(e.geometry.location))}.bind(this)),google.maps.event.addDomListener(t,"keypress",function(e){var o=e.keyCode||e.which;"13"==o&&e.preventDefault()}),s.focusin(function(){if(!this.resultsObserver){var o=document.querySelector(".pac-container");this.resultsObserver=new MutationObserver(function(){var o=e(e(".pac-item").get(0)),t=o.find(".pac-item-query").text(),i=o.find("span").not("[class]").text(),n=t+(i?", "+i:"");n&&a(n)});var t={attributes:!0,childList:!0,characterData:!0};this.resultsObserver.observe(o,t)}}.bind(this));var r=function(e){this.getGeocoder().geocode({location:e},function(o,t){if(t==google.maps.GeocoderStatus.OK&&o.length>0){var i=o[0].formatted_address;s.val(i),this.centerMarker&&(this.centerMarker.setPosition(e),this.centerMarker.setTitle(i))}}.bind(this))}.bind(this);i.addListener("click",function(e){r(e.latLng)}),this.centerMarker.addListener("dragend",function(e){r(e.latLng)})}},showMarkers:function(e,o,t){if(e&&e.length){var i=new google.maps.Geocoder;this.infoWindows=[],e.forEach(function(e){var n=function(){i.geocode({address:e.place},function(i,a){if(a==google.maps.GeocoderStatus.OK){var s=new google.maps.Marker({position:i[0].geometry.location,map:o,draggable:t.markersDraggable,icon:t.markerIcon,title:""});if(e.hasOwnProperty("info")&&e.info){var r={content:e.info};e.hasOwnProperty("info_max_width")&&e.info_max_width&&(r.maxWidth=e.info_max_width);var l=t.markerInfoDisplay;r.disableAutoPan="always"==l;var d=new google.maps.InfoWindow(r);this.infoWindows.push(d);var c=l;"always"==l&&(c="click",d.open(o,s)),s.addListener(c,function(){d.open(o,s),"always"==l||t.markerInfoMultiple||this.infoWindows.forEach(function(e){e!==d&&e.close()})}.bind(this)),"mouseover"==l&&s.addListener("mouseout",function(){setTimeout(function(){d.close()},100)})}}else a==google.maps.GeocoderStatus.OVER_QUERY_LIMIT&&setTimeout(n,1e3*Math.random(),e)}.bind(this))}.bind(this);setTimeout(n,1e3*Math.random(),e)}.bind(this))}},showDirections:function(e,o){if(e){e.waypoints&&e.waypoints.length&&e.waypoints.map(function(e){e.stopover=Boolean(e.stopover)});var t=new google.maps.DirectionsRenderer;t.setMap(o);var i=new google.maps.DirectionsService;i.route({origin:e.origin,destination:e.destination,travelMode:e.travelMode.toUpperCase(),avoidHighways:e.avoidHighways,avoidTolls:e.avoidTolls,waypoints:e.waypoints,optimizeWaypoints:e.optimizeWaypoints},function(e,o){o==google.maps.DirectionsStatus.OK&&t.setDirections(e)})}},initMaps:function(){var o=e(".sow-google-map-autocomplete"),t=new e.Deferred;0==o.length?t.resolve():o.each(function(o,i){var n=new google.maps.places.Autocomplete(i,{types:["address"]}),a=e(i).siblings(".sow-google-map-canvas");if(a.length>0){var s=a.data("options");s.autocomplete=n,s.autocompleteElement=i,this.getLocation(s.address).done(function(e){this.showMap(a.get(0),e,s),a.data("initialized",!0),t.resolve()}.bind(this)).fail(function(){a.append("<div><p><strong>There were no results for the place you entered. Please try another.</strong></p></div>"),t.reject()})}}.bind(this)),t.done(function(){e(".sow-google-map-canvas").each(function(o,t){var i=e(t);if(i.data("initialized"))return!0;var n=i.data("options"),a=n.address;if(!a){var s=n.markerPositions;s&&s.length&&(a=s[0].place)}this.getLocation(a).done(function(e){this.showMap(i.get(0),e,n),i.data("initialized")}.bind(this)).fail(function(){i.append("<div><p><strong>There were no results for the place you entered. Please try another.</strong></p></div>")})}.bind(this))}.bind(this))},getGeocoder:function(){return this._geocoder||(this._geocoder=new google.maps.Geocoder),this._geocoder},getLocation:function(o){var t,i=new e.Deferred,n={address:o};if(o&&o.indexOf(",")>-1){var a=o.split(",");a&&2==a.length&&(t=new google.maps.LatLng(a[0],a[1]),isNaN(t.lat())||isNaN(t.lng())||(n={location:{lat:t.lat(),lng:t.lng()}}))}if(n.hasOwnProperty("location"))i.resolve(n.location);else if(n.hasOwnProperty("address")){if(!n.address){var s=parseInt(Math.random()*this.DEFAULT_LOCATIONS.length);n.address=this.DEFAULT_LOCATIONS[s]}this.getGeocoder().geocode(n,function(e,o){o==google.maps.GeocoderStatus.OK?i.resolve(e[0].geometry.location):o==google.maps.GeocoderStatus.ZERO_RESULTS&&i.reject(o)})}return i}}},jQuery(function(e){var o=e(".sow-google-map-canvas").data("options"),t="undefined"!=typeof window.google&&"undefined"!=typeof window.google.maps,i=function(e){var o=window.google.maps[e];return window.google.maps.hasOwnProperty(e)&&"undefined"!=typeof o&&null!==o},n="undefined"!=typeof o.libraries&&null!==o.libraries;if(n&&(t=t&&o.libraries.every(i)),t)soGoogleMapInitialize();else{var a="https://maps.googleapis.com/maps/api/js?v=3.exp&callback=soGoogleMapInitialize";o&&(n&&(a+="&libraries="+o.libraries.join(",")),o.apiKey&&(a+="&key="+o.apiKey));var s=e('<script type="text/javascript" src="'+a+'">');e("body").append(s)}});
|
widgets/icon/tpl/default.php
CHANGED
@@ -7,13 +7,11 @@
|
|
7 |
?>
|
8 |
|
9 |
<div class="sow-icon-container sow-icon">
|
10 |
-
<?php if ( ! empty( $url ) )
|
11 |
-
|
12 |
-
<?php
|
13 |
-
<?php
|
14 |
-
|
15 |
-
|
16 |
-
<?php
|
17 |
-
</a>
|
18 |
-
<?php } ?>
|
19 |
</div>
|
7 |
?>
|
8 |
|
9 |
<div class="sow-icon-container sow-icon">
|
10 |
+
<?php if ( ! empty( $url ) ) : ?>
|
11 |
+
<a href="<?php echo sow_esc_url( $url ) ?>" <?php if ( ! empty( $new_window ) ) echo 'target="_blank"'; ?>>
|
12 |
+
<?php endif; ?>
|
13 |
+
<?php echo siteorigin_widget_get_icon( $icon ); ?>
|
14 |
+
<?php if ( ! empty( $url ) ) : ?>
|
15 |
+
</a>
|
16 |
+
<?php endif; ?>
|
|
|
|
|
17 |
</div>
|
widgets/image-grid/image-grid.php
CHANGED
@@ -111,7 +111,7 @@ class SiteOrigin_Widgets_ImageGrid_Widget extends SiteOrigin_Widget {
|
|
111 |
*/
|
112 |
function get_less_variables( $instance ) {
|
113 |
$less = array();
|
114 |
-
if(
|
115 |
$less['spacing'] = intval($instance['display']['spacing']) . 'px';
|
116 |
}
|
117 |
|
111 |
*/
|
112 |
function get_less_variables( $instance ) {
|
113 |
$less = array();
|
114 |
+
if( isset( $instance['display']['spacing'] ) ) {
|
115 |
$less['spacing'] = intval($instance['display']['spacing']) . 'px';
|
116 |
}
|
117 |
|
widgets/image/image.php
CHANGED
@@ -103,17 +103,18 @@ class SiteOrigin_Widget_Image_Widget extends SiteOrigin_Widget {
|
|
103 |
|
104 |
public function get_template_variables( $instance, $args ) {
|
105 |
return array(
|
106 |
-
'title' => $instance['title'],
|
107 |
'title_position' => $instance['title_position'],
|
108 |
'image' => $instance['image'],
|
109 |
'size' => $instance['size'],
|
110 |
'image_fallback' => ! empty( $instance['image_fallback'] ) ? $instance['image_fallback'] : false,
|
111 |
-
'alt' => $instance['alt'],
|
112 |
'url' => $instance['url'],
|
113 |
'new_window' => $instance['new_window'],
|
114 |
);
|
115 |
}
|
116 |
|
|
|
117 |
function get_less_variables($instance){
|
118 |
return array(
|
119 |
'image_alignment' => $instance['align'],
|
103 |
|
104 |
public function get_template_variables( $instance, $args ) {
|
105 |
return array(
|
106 |
+
'title' => !empty( $instance['title'] ) ? $instance['title'] : get_the_title( $instance['image'] ),
|
107 |
'title_position' => $instance['title_position'],
|
108 |
'image' => $instance['image'],
|
109 |
'size' => $instance['size'],
|
110 |
'image_fallback' => ! empty( $instance['image_fallback'] ) ? $instance['image_fallback'] : false,
|
111 |
+
'alt' => !empty( $instance['alt'] ) ? $instance['alt'] : get_post_meta( $instance['image'], '_wp_attachment_image_alt', true ),
|
112 |
'url' => $instance['url'],
|
113 |
'new_window' => $instance['new_window'],
|
114 |
);
|
115 |
}
|
116 |
|
117 |
+
|
118 |
function get_less_variables($instance){
|
119 |
return array(
|
120 |
'image_alignment' => $instance['align'],
|
widgets/image/tpl/default.php
CHANGED
@@ -12,7 +12,7 @@
|
|
12 |
?>
|
13 |
|
14 |
<?php if( $title_position == 'above' ) : ?>
|
15 |
-
<?php echo $args['before_title'] .
|
16 |
<?php endif; ?>
|
17 |
|
18 |
<?php
|
@@ -38,8 +38,8 @@ $attr = apply_filters( 'siteorigin_widgets_image_attr', $attr, $instance, $this
|
|
38 |
|
39 |
$classes = array('so-widget-image');
|
40 |
|
41 |
-
if(!empty($title)) $attr['title'] = $title;
|
42 |
-
if(!empty($alt)) $attr['alt'] = $alt;
|
43 |
|
44 |
?>
|
45 |
<div class="sow-image-container">
|
@@ -49,5 +49,5 @@ if(!empty($alt)) $attr['alt'] = $alt;
|
|
49 |
</div>
|
50 |
|
51 |
<?php if( $title_position == 'below' ) : ?>
|
52 |
-
<?php echo $args['before_title'] .
|
53 |
<?php endif; ?>
|
12 |
?>
|
13 |
|
14 |
<?php if( $title_position == 'above' ) : ?>
|
15 |
+
<?php echo $args['before_title'] . wp_kses_post( $title ) . $args['after_title']; ?>
|
16 |
<?php endif; ?>
|
17 |
|
18 |
<?php
|
38 |
|
39 |
$classes = array('so-widget-image');
|
40 |
|
41 |
+
if( !empty( $title ) ) $attr['title'] = $title;
|
42 |
+
if( !empty( $alt ) ) $attr['alt'] = $alt;
|
43 |
|
44 |
?>
|
45 |
<div class="sow-image-container">
|
49 |
</div>
|
50 |
|
51 |
<?php if( $title_position == 'below' ) : ?>
|
52 |
+
<?php echo $args['before_title'] . wp_kses_post( $title ) . $args['after_title']; ?>
|
53 |
<?php endif; ?>
|
widgets/simple-masonry/js/simple-masonry.js
CHANGED
@@ -60,7 +60,13 @@ jQuery(function ($) {
|
|
60 |
});
|
61 |
});
|
62 |
};
|
|
|
|
|
63 |
|
64 |
$(window).on('resize panelsStretchRows', resizeMasonry);
|
65 |
-
|
|
|
|
|
|
|
|
|
66 |
});
|
60 |
});
|
61 |
});
|
62 |
};
|
63 |
+
|
64 |
+
resizeMasonry();
|
65 |
|
66 |
$(window).on('resize panelsStretchRows', resizeMasonry);
|
67 |
+
|
68 |
+
// Ensure that the masonry has resized correct on load.
|
69 |
+
setTimeout( function () {
|
70 |
+
resizeMasonry();
|
71 |
+
}, 100 );
|
72 |
});
|
widgets/simple-masonry/js/simple-masonry.min.js
CHANGED
@@ -1 +1 @@
|
|
1 |
-
jQuery(function(t){var a=t(".sow-masonry-grid"),i=function(){a.each(function(){var a=t(this),i=a.data("layouts"),e=window.matchMedia("(max-width: "+i.tablet.breakPoint+"px)"),h=window.matchMedia("(max-width: "+i.mobile.breakPoint+"px)"),o=i.desktop;h.matches?o=i.mobile:e.matches&&(o=i.tablet);var s=o.numColumns;a.css("width","auto");var r=o.gutter*(s-1),n=Math.floor((a.width()-r)/s);a.width(n*s+r),a.imagesLoaded(function(){a.find("> .sow-masonry-grid-item").each(function(){var a=t(this),i=a.data("colSpan");i=Math.max(Math.min(i,o.numColumns),1),a.width(n*i+o.gutter*(i-1));var e=a.data("rowSpan");e=Math.max(Math.min(e,o.numColumns),1);var h=o.rowHeight||n;a.css("height",h*e+o.gutter*(e-1));var s=a.find("> img,> a > img"),r=s.attr("height")>0?s.attr("width")/s.attr("height"):1,m=a.height()>0?a.width()/a.height():1;if(r=parseFloat(r.toFixed(3)),m=parseFloat(m.toFixed(3)),r>m){s.css("width","auto"),s.css("height","100%"),s.css("margin-top","");var d=(s.width()-a.width())*-.5;s.css("margin-left",d+"px")}else{s.css("height","auto"),s.css("width","100%"),s.css("margin-left","");var c=(s.height()-a.height())*-.5;s.css("margin-top",c+"px")}}),a.packery({itemSelector:".sow-masonry-grid-item",columnWidth:n,gutter:o.gutter})})})};t(window).on("resize panelsStretchRows",i),i()});
|
1 |
+
jQuery(function(t){var a=t(".sow-masonry-grid"),i=function(){a.each(function(){var a=t(this),i=a.data("layouts"),e=window.matchMedia("(max-width: "+i.tablet.breakPoint+"px)"),h=window.matchMedia("(max-width: "+i.mobile.breakPoint+"px)"),o=i.desktop;h.matches?o=i.mobile:e.matches&&(o=i.tablet);var s=o.numColumns;a.css("width","auto");var r=o.gutter*(s-1),n=Math.floor((a.width()-r)/s);a.width(n*s+r),a.imagesLoaded(function(){a.find("> .sow-masonry-grid-item").each(function(){var a=t(this),i=a.data("colSpan");i=Math.max(Math.min(i,o.numColumns),1),a.width(n*i+o.gutter*(i-1));var e=a.data("rowSpan");e=Math.max(Math.min(e,o.numColumns),1);var h=o.rowHeight||n;a.css("height",h*e+o.gutter*(e-1));var s=a.find("> img,> a > img"),r=s.attr("height")>0?s.attr("width")/s.attr("height"):1,m=a.height()>0?a.width()/a.height():1;if(r=parseFloat(r.toFixed(3)),m=parseFloat(m.toFixed(3)),r>m){s.css("width","auto"),s.css("height","100%"),s.css("margin-top","");var d=(s.width()-a.width())*-.5;s.css("margin-left",d+"px")}else{s.css("height","auto"),s.css("width","100%"),s.css("margin-left","");var c=(s.height()-a.height())*-.5;s.css("margin-top",c+"px")}}),a.packery({itemSelector:".sow-masonry-grid-item",columnWidth:n,gutter:o.gutter})})})};i(),t(window).on("resize panelsStretchRows",i),setTimeout(function(){i()},100)});
|
widgets/social-media-buttons/data/networks.php
CHANGED
@@ -31,6 +31,12 @@ return array(
|
|
31 |
'icon_color' => '#FFFFFF',
|
32 |
'button_color' => '#99C4E6'
|
33 |
),
|
|
|
|
|
|
|
|
|
|
|
|
|
34 |
'linkedin' => array(
|
35 |
'label' => __( 'LinkedIn', 'so-widgets-bundle' ),
|
36 |
'base_url' => 'https://www.linkedin.com/',
|
@@ -268,4 +274,4 @@ return array(
|
|
268 |
'icon_color' => '#FFFFFF',
|
269 |
'button_color' => '#CF3427'
|
270 |
)
|
271 |
-
);
|
31 |
'icon_color' => '#FFFFFF',
|
32 |
'button_color' => '#99C4E6'
|
33 |
),
|
34 |
+
'snapchat' => array(
|
35 |
+
'label' => __( 'Snapchat', 'so-widgets-bundle' ),
|
36 |
+
'base_url' => 'https://www.snapchat.com/',
|
37 |
+
'icon_color' => '#FFFFFF',
|
38 |
+
'button_color' => '#FFFC00'
|
39 |
+
),
|
40 |
'linkedin' => array(
|
41 |
'label' => __( 'LinkedIn', 'so-widgets-bundle' ),
|
42 |
'base_url' => 'https://www.linkedin.com/',
|
274 |
'icon_color' => '#FFFFFF',
|
275 |
'button_color' => '#CF3427'
|
276 |
)
|
277 |
+
);
|
widgets/social-media-buttons/tpl/default.php
CHANGED
@@ -8,8 +8,8 @@
|
|
8 |
'class' => esc_attr( implode(' ', $classes) ),
|
9 |
'title' => sprintf( __( '%s on %s', 'so-widgets-bundle' ), get_bloginfo( 'name' ), ucwords( str_replace( '-', ' ', $network['name'] ) ) ),
|
10 |
);
|
11 |
-
if(!empty($instance['design']['new_window'])) $button_attributes['target'] = '_blank';
|
12 |
-
if ( ! empty( $network['url'] ) ) $button_attributes['href'] = sow_esc_url( $network['url'] );
|
13 |
?>
|
14 |
|
15 |
<a <?php foreach($button_attributes as $name => $val) echo $name . '="' . esc_attr( $val ) . '" ' ?>>
|
@@ -20,4 +20,4 @@
|
|
20 |
</span>
|
21 |
</a>
|
22 |
<?php endforeach; ?>
|
23 |
-
</div>
|
8 |
'class' => esc_attr( implode(' ', $classes) ),
|
9 |
'title' => sprintf( __( '%s on %s', 'so-widgets-bundle' ), get_bloginfo( 'name' ), ucwords( str_replace( '-', ' ', $network['name'] ) ) ),
|
10 |
);
|
11 |
+
if( !empty( $instance['design']['new_window'] ) ) $button_attributes['target'] = '_blank';
|
12 |
+
if ( ! empty( $network['url'] ) ) $button_attributes['href'] = sow_esc_url( trim( $network['url'] ) );
|
13 |
?>
|
14 |
|
15 |
<a <?php foreach($button_attributes as $name => $val) echo $name . '="' . esc_attr( $val ) . '" ' ?>>
|
20 |
</span>
|
21 |
</a>
|
22 |
<?php endforeach; ?>
|
23 |
+
</div>
|