Merge master

This commit is contained in:
Neil Lalonde 2015-09-22 15:00:32 -04:00
commit 65e159b073
1485 changed files with 56888 additions and 84493 deletions

View File

@ -7,6 +7,7 @@ app/assets/javascripts/vendor.js
app/assets/javascripts/locales/i18n.js
app/assets/javascripts/defer/html-sanitizer-bundle.js
app/assets/javascripts/discourse/lib/Markdown.Editor.js
app/assets/javascripts/ember-addons/
jsapp/lib/Markdown.Editor.js
lib/javascripts/locale/
lib/javascripts/messageformat.js
@ -20,5 +21,5 @@ vendor/
test/javascripts/helpers/
test/javascripts/test_helper.js
test/javascripts/test_helper.js
test/javascripts/fixtures
app/assets/javascripts/ember-addons/

102
.eslintrc Normal file
View File

@ -0,0 +1,102 @@
{
"env": {
"jasmine": true,
"node": true,
"mocha": true,
"browser": true,
"builtin": true
},
ecmaVersion: 7,
"globals":
{"Ember":true,
"jQuery":true,
"$":true,
"RSVP":true,
"Discourse":true,
"Em":true,
"PreloadStore":true,
"Handlebars":true,
"I18n":true,
"bootbox":true,
"module":true,
"moduleFor":true,
"moduleForComponent":true,
"Pretender":true,
"sandbox":true,
"controllerFor":true,
"test":true,
"ok":true,
"not":true,
"expect":true,
"equal":true,
"visit":true,
"andThen":true,
"click":true,
"currentPath":true,
"currentRouteName":true,
"currentURL":true,
"fillIn":true,
"keyEvent":true,
"triggerEvent":true,
"count":true,
"exists":true,
"visible":true,
"invisible":true,
"asyncRender":true,
"selectDropdown":true,
"asyncTestDiscourse":true,
"fixture":true,
"find":true,
"sinon":true,
"moment":true,
"start":true,
"_":true,
"alert":true,
"containsInstance":true,
"deepEqual":true,
"notEqual":true,
"define":true,
"require":true,
"requirejs":true,
"hasModule":true,
"Blob":true,
"File":true},
"rules": {
"block-scoped-var": 2,
"dot-notation": 0,
"eqeqeq": [
2,
"allow-null"
],
"guard-for-in": 2,
"no-bitwise": 2,
"no-caller": 2,
"no-cond-assign": 0,
"no-debugger": 2,
"no-empty": 0,
"no-eval": 2,
"no-extend-native": 2,
"no-extra-parens": 0,
"no-irregular-whitespace": 2,
"no-iterator": 2,
"no-loop-func": 2,
"no-multi-str": 2,
"no-new": 2,
"no-plusplus": 0,
"no-proto": 2,
"no-script-url": 2,
"no-sequences": 2,
"no-shadow": 2,
"no-undef": 2,
"no-unused-vars": 2,
"no-with": 2,
"semi": 2,
"strict": 0,
"valid-typeof": 2,
"wrap-iife": [
2,
"inside"
]
},
"parser": "babel-eslint"
}

View File

@ -1,11 +1,11 @@
skip_missing_workers: true
allow_lossy: true
allow_lossy: false
# PNG
advpng: false
optipng: false
optipng:
level: 2
pngcrush: false
pngout: false
pngquant:
quality: !ruby/range 10..90
pngquant: false
# JPG
jpegrecompress: false

View File

@ -1,86 +0,0 @@
{
"predef":["Ember",
"jQuery",
"$",
"RSVP",
"Discourse",
"Em",
"PreloadStore",
"Handlebars",
"I18n",
"bootbox",
"module",
"moduleFor",
"moduleForComponent",
"Pretender",
"sandbox",
"controllerFor",
"test",
"ok",
"not",
"expect",
"equal",
"blank",
"present",
"visit",
"andThen",
"click",
"currentPath",
"currentRouteName",
"currentURL",
"fillIn",
"keyEvent",
"triggerEvent",
"count",
"exists",
"visible",
"invisible",
"asyncRender",
"selectDropdown",
"asyncTestDiscourse",
"fixture",
"find",
"sinon",
"moment",
"start",
"_",
"alert",
"containsInstance",
"parseHTML",
"deepEqual",
"notEqual",
"define",
"require",
"requirejs",
"hasModule",
"Blob",
"File"],
"node" : false,
"browser" : true,
"boss" : true,
"curly": false,
"debug": false,
"devel": false,
"eqeqeq": true,
"evil": true,
"forin": false,
"immed": false,
"laxbreak": false,
"newcap": true,
"noarg": true,
"noempty": false,
"nonew": false,
"nomen": false,
"onevar": false,
"plusplus": false,
"regexp": false,
"undef": true,
"unused": true,
"sub": true,
"strict": false,
"white": false,
"eqnull": true,
"quotmark": false,
"lastsemic": true,
"esnext": true
}

View File

@ -5,12 +5,18 @@ env:
- DISCOURSE_HOSTNAME=www.example.com
- RUBY_GC_MALLOC_LIMIT=50000000
matrix:
- "RAILS_MASTER=0"
- "RAILS42=1"
- "RAILS_MASTER=1"
- "RAILS_MASTER=0"
addons:
postgresql: 9.3
apt:
packages:
- gifsicle
- jpegoptim
- optipng
- jhead
matrix:
allow_failures:
@ -23,18 +29,23 @@ rvm:
- 2.0.0
- 2.1
- 2.2
- rbx-2
services:
- redis-server
sudo: false
cache: bundler
cache:
directories:
- vendor/bundle
before_install:
- npm i -g jshint
- jshint .
- gem install bundler
- npm i -g eslint babel-eslint
- eslint app/assets/javascripts
- eslint --ext .es6 app/assets/javascripts
- eslint --ext .es6 test/javascripts
- eslint test/javascripts
before_script:
- bundle exec rake db:create db:migrate

View File

@ -1,22 +1,19 @@
# Install development dependencies on Mac OS X using Homebrew (http://mxcl.github.com/homebrew)
# ensure that Homebrew's sources are up to date
update
# add this repo to Homebrew's sources
tap homebrew/dupes
tap 'homebrew/dupes'
# install the gcc compiler required for ruby
install apple-gcc42
brew 'apple-gcc42'
# you probably already have git installed; ensure that it is the latest version
install git
brew 'git'
# install the PostgreSQL database
install postgresql
brew 'postgresql'
# install the Redis datastore
install redis
brew 'redis'
# install headless Javascript testing library
install phantomjs
brew 'phantomjs'

View File

@ -1,129 +1,27 @@
# Contributing to Discourse
## Before You Start
## Important note for Developers
Anyone wishing to contribute to the **[Discourse/Discourse](https://github.com/discourse/discourse)** project **MUST read & sign the [Electronic Discourse Forums Contribution License Agreement](http://www.discourse.org/cla)**. The Discourse team is legally prevented from accepting any pull requests from users who have not signed the CLA first.
Anyone wishing to contribute to the [github.com/discourse/discourse](https://github.com/discourse/discourse) project **must read & sign our [Contributor License Agreement](http://www.discourse.org/cla)**. The Discourse team is legally prevented from accepting any pull requests from users who have not signed the CLA first.
## Reporting Bugs
For more information on
1. Always update to the most recent master release; the bug may already be resolved.
- how to set up your development environment
- first-time project suggestions
- code conventions
- step-by-step guide for GitHub commits
2. Search for similar issues on the [Discourse meta forum][m]; it may already be an identified problem.
**please read our [Discourse Development Contribution Guidelines](https://meta.discourse.org/t/discourse-development-contribution-guidelines/3823)**
3. Make sure you can reproduce your problem on our sandbox at [try.discourse.org](http://try.discourse.org)
## Everything Else
4. If this is a bug or problem that **requires any kind of extended discussion -- open [a topic on meta][m] about it**.
There are many other ways to contribute to Discourse besides code. We've outlined the most common ones below.
5. If possible, submit a Pull Request with a failing test. If you'd rather take matters into your own hands, fix the bug yourself (jump down to the "Contributing (Step-by-step)" section).
- [Reporting Bugs](https://meta.discourse.org/t/how-to-make-bug-reports-for-discourse/33070)
- [Requesting Features](https://meta.discourse.org/t/how-to-request-new-features-for-discourse/32986)
- [Translation](https://meta.discourse.org/t/contribute-a-translation-to-discourse/14882)
- Documentation (TBA)
6. When the bug is fixed, we will do our best to update the Discourse topic.
For anything else, just start a new topic on [Meta](https://meta.discourse.org/) and let us know what you're interested in working on.
## Requesting New Features
1. Do not submit a feature request on GitHub; all feature requests on GitHub will be closed. Instead, visit the **[Discourse meta forum, features category](http://meta.discourse.org/category/feature)**, and search this list for similar feature requests. It's possible somebody has already asked for this feature or provided a pull request that we're still discussing.
2. Provide a clear and detailed explanation of the feature you want and why it's important to add. The feature must apply to a wide array of users of Discourse; for smaller, more targeted "one-off" features, you might consider writing a plugin for Discourse. You may also want to provide us with some advance documentation on the feature, which will help the community to better understand where it will fit.
3. If you're a Rock Star programmer, build the feature yourself (refer to the "Contributing (Step-by-step)" section below).
## Contributing (Step-by-step)
1. Clone the Repo:
git clone git://github.com/discourse/discourse.git
2. Create a new Branch:
cd discourse
git checkout -b new_discourse_branch
> Please keep your code clean: one feature or bug-fix per branch. If you find another bug, you want to fix while being in a new branch, please fix it in a separated branch instead.
3. Code
* Adhere to common conventions you see in the existing code
* Include tests, and ensure they pass
* Search to see if your new functionality has been discussed on [the Discourse meta forum](http://meta.discourse.org), and include updates as appropriate
4. Follow the Coding Conventions
* two spaces, no tabs
* no trailing whitespaces, blank lines should have no spaces
* use spaces around operators, after commas, colons, semicolons, around `{` and before `}`
* no space after `(`, `[` or before `]`, `)`
* use Ruby 1.9 hash syntax: prefer `{ a: 1 }` over `{ :a => 1 }`
* prefer `class << self; def method; end` over `def self.method` for class methods
* prefer `{ ... }` over `do ... end` for single-line blocks, avoid using `{ ... }` for multi-line blocks
* avoid `return` when not required
> However, please note that **pull requests consisting entirely of style changes are not welcome on this project**. Style changes in the context of pull requests that also refactor code, fix bugs, improve functionality *are* welcome.
5. Commit
For every commit please write a short (max 72 characters) summary in the first line followed with a blank line and then more detailed descriptions of the change. Use markdown syntax for simple styling.
**NEVER leave the commit message blank!** Provide a detailed, clear, and complete description of your commit!
6. Update your branch
```
git fetch origin
git rebase origin/master
```
7. Fork
```
git remote add mine git@github.com:<your user name>/discourse.git
```
8. Push to your remote
```
git push mine new_discourse_branch
```
9. Issue a Pull Request
Before submitting a pull-request, clean up the history, go over your commits and squash together minor changes and fixes into the corresponding commits. You can squash commits with the interactive rebase command:
```
git fetch origin
git checkout new_discourse_branch
git rebase origin/master
git rebase -i
< the editor opens and allows you to change the commit history >
< follow the instructions on the bottom of the editor >
git push -f mine new_discourse_branch
```
In order to make a pull request,
* Navigate to the Discourse repository you just pushed to (e.g. https://github.com/your-user-name/discourse)
* Click "Pull Request".
* Write your branch name in the branch field (this is filled with "master" by default)
* Click "Update Commit Range".
* Ensure the changesets you introduced are included in the "Commits" tab.
* Ensure that the "Files Changed" incorporate all of your changes.
* Fill in some details about your potential patch including a meaningful title.
* Click "Send pull request".
Thanks for that -- we'll get to your pull request ASAP, we love pull requests!
10. Responding to Feedback
The Discourse team may recommend adjustments to your code. Part of interacting with a healthy open-source community requires you to be open to learning new techniques and strategies; *don't get discouraged!* Remember: if the Discourse team suggest changes to your code, **they care enough about your work that they want to include it**, and hope that you can assist by implementing those revisions on your own.
> Though we ask you to clean your history and squash commit before submitting a pull-request, please do not change any commits you've submitted already (as other work might be build on top).
## Translations
Translators can do their work in our [Transifex project](https://www.transifex.com/projects/p/discourse-org/). For more information, please see these how-to topics:
* [Contributing a translation to Discourse](https://meta.discourse.org/t/contribute-a-translation-to-discourse/14882)
* [How to add a new language](https://meta.discourse.org/t/how-to-add-a-new-language/14970)
[m]: http://meta.discourse.org
*Thanks for contributing!*

View File

@ -25,8 +25,6 @@ else
gem 'seed-fu', '~> 2.3.3'
end
gem 'actionpack-action_caching'
# Rails 4.1.6+ will relax the mail gem version requirement to `~> 2.5, >= 2.5.4`.
# However, mail gem 2.6.x currently does not work with discourse because of the
# reference to `Mail::RFC2822Parser` in `lib/email.rb`. This ensure discourse
@ -42,7 +40,7 @@ gem 'active_model_serializers', '~> 0.8.3'
gem 'onebox'
gem 'ember-rails'
gem 'ember-source', '1.11.3.1'
gem 'ember-source', '1.12.1'
gem 'handlebars-source', '2.0.0'
gem 'barber'
gem 'babel-transpiler'
@ -65,7 +63,8 @@ gem 'email_reply_parser'
# note: for image_optim to correctly work you need to follow
# https://github.com/toy/image_optim
gem 'image_optim'
# pinned due to https://github.com/toy/image_optim/pull/75, docker image must be upgraded to upgrade
gem 'image_optim', '0.20.2'
gem 'multi_json'
gem 'mustache'
gem 'nokogiri'
@ -92,6 +91,7 @@ gem 'rinku'
gem 'sanitize'
gem 'sass'
gem 'sidekiq'
gem 'sidekiq-statistic'
# for sidekiq web
gem 'sinatra', require: false
@ -133,6 +133,7 @@ group :test, :development do
gem 'rspec-given'
gem 'pry-nav'
gem 'spork-rails'
gem 'byebug'
end
group :development do

View File

@ -15,8 +15,6 @@ GEM
activesupport (= 4.1.10)
rack (~> 1.5.2)
rack-test (~> 0.6.2)
actionpack-action_caching (1.1.1)
actionpack (>= 4.0.0, < 5.0)
actionview (4.1.10)
activesupport (= 4.1.10)
builder (~> 3.1)
@ -48,9 +46,9 @@ GEM
multi_json (~> 1.0)
aws-sdk-resources (2.0.45)
aws-sdk-core (= 2.0.45)
babel-source (4.6.6)
babel-transpiler (0.6.0)
babel-source (>= 4.0, < 5)
babel-source (5.8.19)
babel-transpiler (0.7.0)
babel-source (>= 4.0, < 6)
execjs (~> 2.0)
barber (0.9.0)
ember-source (>= 1.0, < 2)
@ -62,11 +60,14 @@ GEM
binding_of_caller (0.7.2)
debug_inspector (>= 0.0.1)
builder (3.2.2)
byebug (5.0.0)
columnize (= 0.9.0)
celluloid (0.16.0)
timers (~> 4.0.0)
certified (1.0.0)
coderay (1.1.0)
connection_pool (2.1.2)
columnize (0.9.0)
connection_pool (2.2.0)
crass (1.0.1)
daemons (1.2.2)
debug_inspector (0.0.2)
@ -88,7 +89,7 @@ GEM
ember-source (>= 1.1.0)
jquery-rails (>= 1.0.17)
railties (>= 3.1)
ember-source (1.11.3.1)
ember-source (1.12.1)
erubis (2.7.0)
eventmachine (1.0.7)
excon (0.45.3)
@ -139,7 +140,7 @@ GEM
jquery-rails (3.1.2)
railties (>= 3.0, < 5.0)
thor (>= 0.14, < 2.0)
json (1.8.2)
json (1.8.3)
jwt (1.3.0)
kgio (2.9.3)
librarian (0.1.2)
@ -147,13 +148,13 @@ GEM
thor (~> 0.15)
libv8 (3.16.14.7)
listen (0.7.3)
logster (0.8.1)
logster (1.0.0.3.pre)
lru_redux (1.1.0)
mail (2.5.4)
mime-types (~> 1.16)
treetop (~> 1.4.8)
memory_profiler (0.9.3)
message_bus (1.0.12)
message_bus (1.0.16)
rack (>= 1.1.3)
redis
metaclass (0.0.4)
@ -166,10 +167,10 @@ GEM
mock_redis (0.14.0)
moneta (0.8.0)
msgpack (0.5.11)
multi_json (1.11.0)
multi_json (1.11.2)
multi_xml (0.5.5)
multipart-post (2.0.0)
mustache (0.99.8)
mustache (1.0.2)
netrc (0.10.3)
nokogiri (1.6.6.2)
mini_portile (~> 0.6.0)
@ -208,11 +209,11 @@ GEM
omniauth-twitter (1.0.1)
multi_json (~> 1.3)
omniauth-oauth (~> 1.0)
onebox (1.5.19)
moneta (~> 0.7)
multi_json (~> 1.7)
mustache (~> 0.99)
nokogiri (~> 1.6.1)
onebox (1.5.26)
moneta (~> 0.8)
multi_json (~> 1.11)
mustache
nokogiri (~> 1.6.6)
openid-redis-store (0.0.2)
redis
ruby-openid
@ -230,8 +231,8 @@ GEM
puma (2.11.1)
rack (>= 1.1, < 2.0)
r2 (0.2.5)
rack (1.5.3)
rack-mini-profiler (0.9.3)
rack (1.5.5)
rack-mini-profiler (0.9.6)
rack (>= 1.1.3)
rack-openid (1.3.1)
rack (>= 1.1.0)
@ -270,7 +271,7 @@ GEM
trollop (>= 1.16.2)
redcarpet (3.2.2)
redis (3.2.1)
redis-namespace (1.5.1)
redis-namespace (1.5.2)
redis (~> 3.0, >= 3.0.4)
ref (1.0.5)
rest-client (1.7.2)
@ -326,12 +327,14 @@ GEM
shoulda-context (1.2.1)
shoulda-matchers (2.7.0)
activesupport (>= 3.0.0)
sidekiq (3.3.2)
celluloid (>= 0.16.0)
connection_pool (>= 2.1.1)
json
redis (>= 3.0.6)
redis-namespace (>= 1.3.1)
sidekiq (3.4.2)
celluloid (~> 0.16.0)
connection_pool (~> 2.2, >= 2.2.0)
json (~> 1.0)
redis (~> 3.2, >= 3.2.1)
redis-namespace (~> 1.5, >= 1.5.2)
sidekiq-statistic (1.1.0)
sidekiq (~> 3.3, >= 3.3.4)
simple-rss (1.3.1)
simplecov (0.9.1)
docile (~> 1.1.0)
@ -392,7 +395,6 @@ PLATFORMS
ruby
DEPENDENCIES
actionpack-action_caching
active_model_serializers (~> 0.8.3)
annotate
aws-sdk
@ -400,11 +402,12 @@ DEPENDENCIES
barber
better_errors
binding_of_caller
byebug
certified
discourse-qunit-rails
email_reply_parser
ember-rails
ember-source (= 1.11.3.1)
ember-source (= 1.12.1)
excon
fabrication (= 2.9.8)
fakeweb (~> 1.3.0)
@ -419,7 +422,7 @@ DEPENDENCIES
highline
hiredis
htmlentities
image_optim
image_optim (= 0.20.2)
librarian (>= 0.0.25)
listen (= 0.7.3)
logster
@ -473,6 +476,7 @@ DEPENDENCIES
seed-fu (~> 2.3.3)
shoulda
sidekiq
sidekiq-statistic
simple-rss
simplecov
sinatra
@ -486,4 +490,4 @@ DEPENDENCIES
unicorn
BUNDLED WITH
1.10.3
1.10.6

View File

@ -39,7 +39,7 @@ Discourse is built for the *next* 10 years of the Internet, so our requirements
| Browsers | Tablets | Smartphones |
| -------- | ------- | ----------- |
| Safari 5.1+| iPad 2+ | iOS 6+ |
| Safari 5.1+| iPad 2+ | iOS 7+ |
| Google Chrome 23+ | Android 4.1+ | Android 4.1+ |
| Internet Explorer 10+ | Windows 8 | Windows Phone 8 |
| Firefox 16+ | |

Binary file not shown.

View File

@ -399,7 +399,7 @@
<glyph unicode="&#xf191;" d="M1024 960v-640q0 -26 -19 -45t-45 -19q-20 0 -37 12l-448 320q-27 19 -27 52t27 52l448 320q17 12 37 12q26 0 45 -19t19 -45zM1280 160v960q0 13 -9.5 22.5t-22.5 9.5h-960q-13 0 -22.5 -9.5t-9.5 -22.5v-960q0 -13 9.5 -22.5t22.5 -9.5h960q13 0 22.5 9.5t9.5 22.5z M1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
<glyph unicode="&#xf192;" d="M1024 640q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75t75 -181zM768 1184q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273t-73 273t-198 198t-273 73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5 t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
<glyph unicode="&#xf193;" horiz-adv-x="1664" d="M1023 349l102 -204q-58 -179 -210 -290t-339 -111q-156 0 -288.5 77.5t-210 210t-77.5 288.5q0 181 104.5 330t274.5 211l17 -131q-122 -54 -195 -165.5t-73 -244.5q0 -185 131.5 -316.5t316.5 -131.5q126 0 232.5 65t165 175.5t49.5 236.5zM1571 249l58 -114l-256 -128 q-13 -7 -29 -7q-40 0 -57 35l-239 477h-472q-24 0 -42.5 16.5t-21.5 40.5l-96 779q-2 16 6 42q14 51 57 82.5t97 31.5q66 0 113 -47t47 -113q0 -69 -52 -117.5t-120 -41.5l37 -289h423v-128h-407l16 -128h455q40 0 57 -35l228 -455z" />
<glyph unicode="&#xf194;" d="M1254 899q16 85 -21 132q-52 65 -187 45q-17 -3 -41 -12.5t-57.5 -30.5t-64.5 -48.5t-59.5 -70t-44.5 -91.5q80 7 113.5 -16t26.5 -99q-5 -52 -52 -143q-43 -78 -71 -99q-44 -32 -87 14q-23 24 -37.5 64.5t-19 73t-10 84t-8.5 71.5q-23 129 -34 164q-12 37 -35.5 69 t-50.5 40q-57 16 -127 -25q-54 -32 -136.5 -106t-122.5 -102v-7q16 -8 25.5 -26t21.5 -20q21 -3 54.5 8.5t58 10.5t41.5 -30q11 -18 18.5 -38.5t15 -48t12.5 -40.5q17 -46 53 -187q36 -146 57 -197q42 -99 103 -125q43 -12 85 -1.5t76 31.5q131 77 250 237 q104 139 172.5 292.5t82.5 226.5zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
<glyph unicode="&#xf194;" d="M1292 898q10 216 -161 222q-231 8 -312 -261q44 19 82 19q85 0 74 -96q-4 -57 -74 -167t-105 -110q-43 0 -82 169q-13 54 -45 255q-30 189 -160 177q-59 -7 -164 -100l-81 -72l-81 -72l52 -67q76 52 87 52q57 0 107 -179q15 -55 45 -164.5t45 -164.5q68 -179 164 -179 q157 0 383 294q220 283 226 444zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
<glyph unicode="&#xf195;" horiz-adv-x="1152" d="M1152 704q0 -191 -94.5 -353t-256.5 -256.5t-353 -94.5h-160q-14 0 -23 9t-9 23v611l-215 -66q-3 -1 -9 -1q-10 0 -19 6q-13 10 -13 26v128q0 23 23 31l233 71v93l-215 -66q-3 -1 -9 -1q-10 0 -19 6q-13 10 -13 26v128q0 23 23 31l233 71v250q0 14 9 23t23 9h160 q14 0 23 -9t9 -23v-181l375 116q15 5 28 -5t13 -26v-128q0 -23 -23 -31l-393 -121v-93l375 116q15 5 28 -5t13 -26v-128q0 -23 -23 -31l-393 -121v-487q188 13 318 151t130 328q0 14 9 23t23 9h160q14 0 23 -9t9 -23z" />
<glyph unicode="&#xf196;" horiz-adv-x="1408" d="M1152 736v-64q0 -14 -9 -23t-23 -9h-352v-352q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v352h-352q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h352v352q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-352h352q14 0 23 -9t9 -23zM1280 288v832q0 66 -47 113t-113 47h-832 q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113zM1408 1120v-832q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832q119 0 203.5 -84.5t84.5 -203.5z" />
<glyph unicode="&#xf197;" horiz-adv-x="2176" d="M620 416q-110 -64 -268 -64h-128v64h-64q-13 0 -22.5 23.5t-9.5 56.5q0 24 7 49q-58 2 -96.5 10.5t-38.5 20.5t38.5 20.5t96.5 10.5q-7 25 -7 49q0 33 9.5 56.5t22.5 23.5h64v64h128q158 0 268 -64h1113q42 -7 106.5 -18t80.5 -14q89 -15 150 -40.5t83.5 -47.5t22.5 -40 t-22.5 -40t-83.5 -47.5t-150 -40.5q-16 -3 -80.5 -14t-106.5 -18h-1113zM1739 668q53 -36 53 -92t-53 -92l81 -30q68 48 68 122t-68 122zM625 400h1015q-217 -38 -456 -80q-57 0 -113 -24t-83 -48l-28 -24l-288 -288q-26 -26 -70.5 -45t-89.5 -19h-96l-93 464h29 q157 0 273 64zM352 816h-29l93 464h96q46 0 90 -19t70 -45l288 -288q4 -4 11 -10.5t30.5 -23t48.5 -29t61.5 -23t72.5 -10.5l456 -80h-1015q-116 64 -273 64z" />
@ -411,8 +411,8 @@
<glyph unicode="&#xf19d;" horiz-adv-x="2304" d="M1774 700l18 -316q4 -69 -82 -128t-235 -93.5t-323 -34.5t-323 34.5t-235 93.5t-82 128l18 316l574 -181q22 -7 48 -7t48 7zM2304 1024q0 -23 -22 -31l-1120 -352q-4 -1 -10 -1t-10 1l-652 206q-43 -34 -71 -111.5t-34 -178.5q63 -36 63 -109q0 -69 -58 -107l58 -433 q2 -14 -8 -25q-9 -11 -24 -11h-192q-15 0 -24 11q-10 11 -8 25l58 433q-58 38 -58 107q0 73 65 111q11 207 98 330l-333 104q-22 8 -22 31t22 31l1120 352q4 1 10 1t10 -1l1120 -352q22 -8 22 -31z" />
<glyph unicode="&#xf19e;" d="M859 579l13 -707q-62 11 -105 11q-41 0 -105 -11l13 707q-40 69 -168.5 295.5t-216.5 374.5t-181 287q58 -15 108 -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" />
<glyph unicode="&#xf1a0;" horiz-adv-x="1280" d="M981 197q0 25 -7 49t-14.5 42t-27 41.5t-29.5 35t-38.5 34.5t-36.5 29t-41.5 30t-36.5 26q-16 2 -49 2q-53 0 -104.5 -7t-107 -25t-97 -46t-68.5 -74.5t-27 -105.5q0 -56 23.5 -102t61 -75.5t87 -50t100 -29t101.5 -8.5q58 0 111.5 13t99 39t73 73t27.5 109zM864 1055 q0 59 -17 125.5t-48 129t-84 103.5t-117 41q-42 0 -82.5 -19.5t-66.5 -52.5q-46 -59 -46 -160q0 -46 10 -97.5t31.5 -103t52 -92.5t75 -67t96.5 -26q37 0 77.5 16.5t65.5 43.5q53 56 53 159zM752 1536h417l-137 -88h-132q75 -63 113 -133t38 -160q0 -72 -24.5 -129.5 t-59.5 -93t-69.5 -65t-59 -61.5t-24.5 -66q0 -36 32 -70.5t77 -68t90.5 -73.5t77.5 -104t32 -142q0 -91 -49 -173q-71 -122 -209.5 -179.5t-298.5 -57.5q-132 0 -246.5 41.5t-172.5 137.5q-36 59 -36 131q0 81 44.5 150t118.5 115q131 82 404 100q-32 41 -47.5 73.5 t-15.5 73.5q0 40 21 85q-46 -4 -68 -4q-148 0 -249.5 96.5t-101.5 244.5q0 82 36 159t99 131q76 66 182 98t218 32z" />
<glyph unicode="&#xf1a1;" horiz-adv-x="2304" d="M1509 107q0 -14 -12 -29q-52 -59 -147.5 -83t-196.5 -24q-252 0 -346 107q-12 15 -12 29q0 17 12 29.5t29 12.5q15 0 30 -12q58 -49 125.5 -66t159.5 -17t160 17t127 66q15 12 30 12q17 0 29 -12.5t12 -29.5zM978 498q0 -61 -43 -104t-104 -43q-60 0 -104.5 43.5 t-44.5 103.5q0 61 44 105t105 44t104 -44t43 -105zM1622 498q0 -61 -43 -104t-104 -43q-60 0 -104.5 43.5t-44.5 103.5q0 61 44 105t105 44t104 -44t43 -105zM415 793q-39 27 -88 27q-66 0 -113 -47t-47 -113q0 -72 54 -121q53 141 194 254zM2020 382q0 222 -249 387 q-128 85 -291.5 126.5t-331.5 41.5t-331.5 -41.5t-292.5 -126.5q-249 -165 -249 -387t249 -387q129 -85 292.5 -126.5t331.5 -41.5t331.5 41.5t291.5 126.5q249 165 249 387zM2137 660q0 66 -47 113t-113 47q-50 0 -93 -30q140 -114 192 -256q61 48 61 126zM1993 1335 q0 49 -34.5 83.5t-82.5 34.5q-49 0 -83.5 -34.5t-34.5 -83.5q0 -48 34.5 -82.5t83.5 -34.5q48 0 82.5 34.5t34.5 82.5zM2220 660q0 -65 -33 -122t-89 -90q5 -35 5 -66q0 -139 -79 -255.5t-208 -201.5q-140 -92 -313.5 -136.5t-354.5 -44.5t-355 44.5t-314 136.5 q-129 85 -208 201.5t-79 255.5q0 36 6 71q-53 33 -83.5 88.5t-30.5 118.5q0 100 71 171.5t172 71.5q91 0 159 -60q265 170 638 177l144 456q10 29 40 29q24 0 384 -90q24 55 74 88t110 33q82 0 141 -59t59 -142t-59 -141.5t-141 -58.5q-83 0 -141.5 58.5t-59.5 140.5 l-339 80l-125 -395q349 -15 603 -179q71 63 163 63q101 0 172 -71.5t71 -171.5z" />
<glyph unicode="&#xf1a2;" d="M950 393q7 7 17.5 7t17.5 -7t7 -18t-7 -18q-65 -64 -208 -64h-1h-1q-143 0 -207 64q-8 7 -8 18t8 18q7 7 17.5 7t17.5 -7q49 -51 172 -51h1h1q122 0 173 51zM671 613q0 -37 -26 -64t-63 -27t-63 27t-26 64t26 63t63 26t63 -26t26 -63zM1214 1049q-29 0 -50 21t-21 50 q0 30 21 51t50 21q30 0 51 -21t21 -51q0 -29 -21 -50t-51 -21zM1216 1408q132 0 226 -94t94 -227v-894q0 -133 -94 -227t-226 -94h-896q-132 0 -226 94t-94 227v894q0 133 94 227t226 94h896zM1321 596q35 14 57 45.5t22 70.5q0 51 -36 87.5t-87 36.5q-60 0 -98 -48 q-151 107 -375 115l83 265l206 -49q1 -50 36.5 -85t84.5 -35q50 0 86 35.5t36 85.5t-36 86t-86 36q-36 0 -66 -20.5t-45 -53.5l-227 54q-9 2 -17.5 -2.5t-11.5 -14.5l-95 -302q-224 -4 -381 -113q-36 43 -93 43q-51 0 -87 -36.5t-36 -87.5q0 -37 19.5 -67.5t52.5 -45.5 q-7 -25 -7 -54q0 -98 74 -181.5t201.5 -132t278.5 -48.5q150 0 277.5 48.5t201.5 132t74 181.5q0 27 -6 54zM971 702q37 0 63 -26t26 -63t-26 -64t-63 -27t-63 27t-26 64t26 63t63 26z" />
<glyph unicode="&#xf1a1;" horiz-adv-x="1792" d="M1095 369q16 -16 0 -31q-62 -62 -199 -62t-199 62q-16 15 0 31q6 6 15 6t15 -6q48 -49 169 -49q120 0 169 49q6 6 15 6t15 -6zM788 550q0 -37 -26 -63t-63 -26t-63.5 26t-26.5 63q0 38 26.5 64t63.5 26t63 -26.5t26 -63.5zM1183 550q0 -37 -26.5 -63t-63.5 -26t-63 26 t-26 63t26 63.5t63 26.5t63.5 -26t26.5 -64zM1434 670q0 49 -35 84t-85 35t-86 -36q-130 90 -311 96l63 283l200 -45q0 -37 26 -63t63 -26t63.5 26.5t26.5 63.5t-26.5 63.5t-63.5 26.5q-54 0 -80 -50l-221 49q-19 5 -25 -16l-69 -312q-180 -7 -309 -97q-35 37 -87 37 q-50 0 -85 -35t-35 -84q0 -35 18.5 -64t49.5 -44q-6 -27 -6 -56q0 -142 140 -243t337 -101q198 0 338 101t140 243q0 32 -7 57q30 15 48 43.5t18 63.5zM1792 640q0 -182 -71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191 t348 71t348 -71t286 -191t191 -286t71 -348z" />
<glyph unicode="&#xf1a2;" d="M939 407q13 -13 0 -26q-53 -53 -171 -53t-171 53q-13 13 0 26q5 6 13 6t13 -6q42 -42 145 -42t145 42q5 6 13 6t13 -6zM676 563q0 -31 -23 -54t-54 -23t-54 23t-23 54q0 32 22.5 54.5t54.5 22.5t54.5 -22.5t22.5 -54.5zM1014 563q0 -31 -23 -54t-54 -23t-54 23t-23 54 q0 32 22.5 54.5t54.5 22.5t54.5 -22.5t22.5 -54.5zM1229 666q0 42 -30 72t-73 30q-42 0 -73 -31q-113 78 -267 82l54 243l171 -39q1 -32 23.5 -54t53.5 -22q32 0 54.5 22.5t22.5 54.5t-22.5 54.5t-54.5 22.5q-48 0 -69 -43l-189 42q-17 5 -21 -13l-60 -268q-154 -6 -265 -83 q-30 32 -74 32q-43 0 -73 -30t-30 -72q0 -30 16 -55t42 -38q-5 -25 -5 -48q0 -122 120 -208.5t289 -86.5q170 0 290 86.5t120 208.5q0 25 -6 49q25 13 40.5 37.5t15.5 54.5zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960 q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
<glyph unicode="&#xf1a3;" d="M866 697l90 27v62q0 79 -58 135t-138 56t-138 -55.5t-58 -134.5v-283q0 -20 -14 -33.5t-33 -13.5t-32.5 13.5t-13.5 33.5v120h-151v-122q0 -82 57.5 -139t139.5 -57q81 0 138.5 56.5t57.5 136.5v280q0 19 13.5 33t33.5 14q19 0 32.5 -14t13.5 -33v-54zM1199 502v122h-150 v-126q0 -20 -13.5 -33.5t-33.5 -13.5q-19 0 -32.5 14t-13.5 33v123l-90 -26l-60 28v-123q0 -80 58 -137t139 -57t138.5 57t57.5 139zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103 t385.5 -103t279.5 -279.5t103 -385.5z" />
<glyph unicode="&#xf1a4;" horiz-adv-x="1920" d="M1062 824v118q0 42 -30 72t-72 30t-72 -30t-30 -72v-612q0 -175 -126 -299t-303 -124q-178 0 -303.5 125.5t-125.5 303.5v266h328v-262q0 -43 30 -72.5t72 -29.5t72 29.5t30 72.5v620q0 171 126.5 292t301.5 121q176 0 302 -122t126 -294v-136l-195 -58zM1592 602h328 v-266q0 -178 -125.5 -303.5t-303.5 -125.5q-177 0 -303 124.5t-126 300.5v268l131 -61l195 58v-270q0 -42 30 -71.5t72 -29.5t72 29.5t30 71.5v275z" />
<glyph unicode="&#xf1a5;" d="M1472 160v480h-704v704h-480q-93 0 -158.5 -65.5t-65.5 -158.5v-480h704v-704h480q93 0 158.5 65.5t65.5 158.5zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5 t84.5 -203.5z" />
@ -459,7 +459,7 @@
<glyph unicode="&#xf1d1;" horiz-adv-x="1792" d="M874 -102v-66q-208 6 -385 109.5t-283 275.5l58 34q29 -49 73 -99l65 57q148 -168 368 -212l-17 -86q65 -12 121 -13zM276 428l-83 -28q22 -60 49 -112l-57 -33q-98 180 -98 385t98 385l57 -33q-30 -56 -49 -112l82 -28q-35 -100 -35 -212q0 -109 36 -212zM1528 251 l58 -34q-106 -172 -283 -275.5t-385 -109.5v66q56 1 121 13l-17 86q220 44 368 212l65 -57q44 50 73 99zM1377 805l-233 -80q14 -42 14 -85t-14 -85l232 -80q-31 -92 -98 -169l-185 162q-57 -67 -147 -85l48 -241q-52 -10 -98 -10t-98 10l48 241q-90 18 -147 85l-185 -162 q-67 77 -98 169l232 80q-14 42 -14 85t14 85l-233 80q33 93 99 169l185 -162q59 68 147 86l-48 240q44 10 98 10t98 -10l-48 -240q88 -18 147 -86l185 162q66 -76 99 -169zM874 1448v-66q-65 -2 -121 -13l17 -86q-220 -42 -368 -211l-65 56q-38 -42 -73 -98l-57 33 q106 172 282 275.5t385 109.5zM1705 640q0 -205 -98 -385l-57 33q27 52 49 112l-83 28q36 103 36 212q0 112 -35 212l82 28q-19 56 -49 112l57 33q98 -180 98 -385zM1585 1063l-57 -33q-35 56 -73 98l-65 -56q-148 169 -368 211l17 86q-56 11 -121 13v66q209 -6 385 -109.5 t282 -275.5zM1748 640q0 173 -67.5 331t-181.5 272t-272 181.5t-331 67.5t-331 -67.5t-272 -181.5t-181.5 -272t-67.5 -331t67.5 -331t181.5 -272t272 -181.5t331 -67.5t331 67.5t272 181.5t181.5 272t67.5 331zM1792 640q0 -182 -71 -348t-191 -286t-286 -191t-348 -71 t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348z" />
<glyph unicode="&#xf1d2;" d="M582 228q0 -66 -93 -66q-107 0 -107 63q0 64 98 64q102 0 102 -61zM546 694q0 -85 -74 -85q-77 0 -77 84q0 90 77 90q36 0 55 -25.5t19 -63.5zM712 769v125q-78 -29 -135 -29q-50 29 -110 29q-86 0 -145 -57t-59 -143q0 -50 29.5 -102t73.5 -67v-3q-38 -17 -38 -85 q0 -53 41 -77v-3q-113 -37 -113 -139q0 -45 20 -78.5t54 -51t72 -25.5t81 -8q224 0 224 188q0 67 -48 99t-126 46q-27 5 -51.5 20.5t-24.5 39.5q0 44 49 52q77 15 122 70t45 134q0 24 -10 52q37 9 49 13zM771 350h137q-2 27 -2 82v387q0 46 2 69h-137q3 -23 3 -71v-392 q0 -50 -3 -75zM1280 366v121q-30 -21 -68 -21q-53 0 -53 82v225h52q9 0 26.5 -1t26.5 -1v117h-105q0 82 3 102h-140q4 -24 4 -55v-47h-60v-117q36 3 37 3q3 0 11 -0.5t12 -0.5v-2h-2v-217q0 -37 2.5 -64t11.5 -56.5t24.5 -48.5t43.5 -31t66 -12q64 0 108 24zM924 1072 q0 36 -24 63.5t-60 27.5t-60.5 -27t-24.5 -64q0 -36 25 -62.5t60 -26.5t59.5 27t24.5 62zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
<glyph unicode="&#xf1d3;" horiz-adv-x="1792" d="M595 22q0 100 -165 100q-158 0 -158 -104q0 -101 172 -101q151 0 151 105zM536 777q0 61 -30 102t-89 41q-124 0 -124 -145q0 -135 124 -135q119 0 119 137zM805 1101v-202q-36 -12 -79 -22q16 -43 16 -84q0 -127 -73 -216.5t-197 -112.5q-40 -8 -59.5 -27t-19.5 -58 q0 -31 22.5 -51.5t58 -32t78.5 -22t86 -25.5t78.5 -37.5t58 -64t22.5 -98.5q0 -304 -363 -304q-69 0 -130 12.5t-116 41t-87.5 82t-32.5 127.5q0 165 182 225v4q-67 41 -67 126q0 109 63 137v4q-72 24 -119.5 108.5t-47.5 165.5q0 139 95 231.5t235 92.5q96 0 178 -47 q98 0 218 47zM1123 220h-222q4 45 4 134v609q0 94 -4 128h222q-4 -33 -4 -124v-613q0 -89 4 -134zM1724 442v-196q-71 -39 -174 -39q-62 0 -107 20t-70 50t-39.5 78t-18.5 92t-4 103v351h2v4q-7 0 -19 1t-18 1q-21 0 -59 -6v190h96v76q0 54 -6 89h227q-6 -41 -6 -165h171 v-190q-15 0 -43.5 2t-42.5 2h-85v-365q0 -131 87 -131q61 0 109 33zM1148 1389q0 -58 -39 -101.5t-96 -43.5q-58 0 -98 43.5t-40 101.5q0 59 39.5 103t98.5 44q58 0 96.5 -44.5t38.5 -102.5z" />
<glyph unicode="&#xf1d4;" d="M825 547l343 588h-150q-21 -39 -63.5 -118.5t-68 -128.5t-59.5 -118.5t-60 -128.5h-3q-21 48 -44.5 97t-52 105.5t-46.5 92t-54 104.5t-49 95h-150l323 -589v-435h134v436zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960 q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
<glyph unicode="&#xf1d4;" d="M809 532l266 499h-112l-157 -312q-24 -48 -44 -92l-42 92l-155 312h-120l263 -493v-324h101v318zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
<glyph unicode="&#xf1d5;" horiz-adv-x="1280" d="M842 964q0 -80 -57 -136.5t-136 -56.5q-60 0 -111 35q-62 -67 -115 -146q-247 -371 -202 -859q1 -22 -12.5 -38.5t-34.5 -18.5h-5q-20 0 -35 13.5t-17 33.5q-14 126 -3.5 247.5t29.5 217t54 186t69 155.5t74 125q61 90 132 165q-16 35 -16 77q0 80 56.5 136.5t136.5 56.5 t136.5 -56.5t56.5 -136.5zM1223 953q0 -158 -78 -292t-212.5 -212t-292.5 -78q-64 0 -131 14q-21 5 -32.5 23.5t-6.5 39.5q5 20 23 31.5t39 7.5q51 -13 108 -13q97 0 186 38t153 102t102 153t38 186t-38 186t-102 153t-153 102t-186 38t-186 -38t-153 -102t-102 -153 t-38 -186q0 -114 52 -218q10 -20 3.5 -40t-25.5 -30t-39.5 -3t-30.5 26q-64 123 -64 265q0 119 46.5 227t124.5 186t186 124t226 46q158 0 292.5 -78t212.5 -212.5t78 -292.5z" />
<glyph unicode="&#xf1d6;" horiz-adv-x="1792" d="M270 730q-8 19 -8 52q0 20 11 49t24 45q-1 22 7.5 53t22.5 43q0 139 92.5 288.5t217.5 209.5q139 66 324 66q133 0 266 -55q49 -21 90 -48t71 -56t55 -68t42 -74t32.5 -84.5t25.5 -89.5t22 -98l1 -5q55 -83 55 -150q0 -14 -9 -40t-9 -38q0 -1 1.5 -3.5t3.5 -5t2 -3.5 q77 -114 120.5 -214.5t43.5 -208.5q0 -43 -19.5 -100t-55.5 -57q-9 0 -19.5 7.5t-19 17.5t-19 26t-16 26.5t-13.5 26t-9 17.5q-1 1 -3 1l-5 -4q-59 -154 -132 -223q20 -20 61.5 -38.5t69 -41.5t35.5 -65q-2 -4 -4 -16t-7 -18q-64 -97 -302 -97q-53 0 -110.5 9t-98 20 t-104.5 30q-15 5 -23 7q-14 4 -46 4.5t-40 1.5q-41 -45 -127.5 -65t-168.5 -20q-35 0 -69 1.5t-93 9t-101 20.5t-74.5 40t-32.5 64q0 40 10 59.5t41 48.5q11 2 40.5 13t49.5 12q4 0 14 2q2 2 2 4l-2 3q-48 11 -108 105.5t-73 156.5l-5 3q-4 0 -12 -20q-18 -41 -54.5 -74.5 t-77.5 -37.5h-1q-4 0 -6 4.5t-5 5.5q-23 54 -23 100q0 275 252 466z" />
<glyph unicode="&#xf1d7;" horiz-adv-x="2048" d="M580 1075q0 41 -25 66t-66 25q-43 0 -76 -25.5t-33 -65.5q0 -39 33 -64.5t76 -25.5q41 0 66 24.5t25 65.5zM1323 568q0 28 -25.5 50t-65.5 22q-27 0 -49.5 -22.5t-22.5 -49.5q0 -28 22.5 -50.5t49.5 -22.5q40 0 65.5 22t25.5 51zM1087 1075q0 41 -24.5 66t-65.5 25 q-43 0 -76 -25.5t-33 -65.5q0 -39 33 -64.5t76 -25.5q41 0 65.5 24.5t24.5 65.5zM1722 568q0 28 -26 50t-65 22q-27 0 -49.5 -22.5t-22.5 -49.5q0 -28 22.5 -50.5t49.5 -22.5q39 0 65 22t26 51zM1456 965q-31 4 -70 4q-169 0 -311 -77t-223.5 -208.5t-81.5 -287.5 q0 -78 23 -152q-35 -3 -68 -3q-26 0 -50 1.5t-55 6.5t-44.5 7t-54.5 10.5t-50 10.5l-253 -127l72 218q-290 203 -290 490q0 169 97.5 311t264 223.5t363.5 81.5q176 0 332.5 -66t262 -182.5t136.5 -260.5zM2048 404q0 -117 -68.5 -223.5t-185.5 -193.5l55 -181l-199 109 q-150 -37 -218 -37q-169 0 -311 70.5t-223.5 191.5t-81.5 264t81.5 264t223.5 191.5t311 70.5q161 0 303 -70.5t227.5 -192t85.5 -263.5z" />
@ -483,13 +483,13 @@
<glyph unicode="&#xf1ea;" horiz-adv-x="2048" d="M1024 1024h-384v-384h384v384zM1152 384v-128h-640v128h640zM1152 1152v-640h-640v640h640zM1792 384v-128h-512v128h512zM1792 640v-128h-512v128h512zM1792 896v-128h-512v128h512zM1792 1152v-128h-512v128h512zM256 192v960h-128v-960q0 -26 19 -45t45 -19t45 19 t19 45zM1920 192v1088h-1536v-1088q0 -33 -11 -64h1483q26 0 45 19t19 45zM2048 1408v-1216q0 -80 -56 -136t-136 -56h-1664q-80 0 -136 56t-56 136v1088h256v128h1792z" />
<glyph unicode="&#xf1eb;" horiz-adv-x="2048" d="M1024 13q-20 0 -93 73.5t-73 93.5q0 32 62.5 54t103.5 22t103.5 -22t62.5 -54q0 -20 -73 -93.5t-93 -73.5zM1294 284q-2 0 -40 25t-101.5 50t-128.5 25t-128.5 -25t-101 -50t-40.5 -25q-18 0 -93.5 75t-75.5 93q0 13 10 23q78 77 196 121t233 44t233 -44t196 -121 q10 -10 10 -23q0 -18 -75.5 -93t-93.5 -75zM1567 556q-11 0 -23 8q-136 105 -252 154.5t-268 49.5q-85 0 -170.5 -22t-149 -53t-113.5 -62t-79 -53t-31 -22q-17 0 -92 75t-75 93q0 12 10 22q132 132 320 205t380 73t380 -73t320 -205q10 -10 10 -22q0 -18 -75 -93t-92 -75z M1838 827q-11 0 -22 9q-179 157 -371.5 236.5t-420.5 79.5t-420.5 -79.5t-371.5 -236.5q-11 -9 -22 -9q-17 0 -92.5 75t-75.5 93q0 13 10 23q187 186 445 288t527 102t527 -102t445 -288q10 -10 10 -23q0 -18 -75.5 -93t-92.5 -75z" />
<glyph unicode="&#xf1ec;" horiz-adv-x="1792" d="M384 0q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM768 0q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM384 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5 t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1152 0q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM768 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5 t37.5 90.5zM384 768q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1152 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM768 768q0 53 -37.5 90.5t-90.5 37.5 t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1536 0v384q0 52 -38 90t-90 38t-90 -38t-38 -90v-384q0 -52 38 -90t90 -38t90 38t38 90zM1152 768q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5z M1536 1088v256q0 26 -19 45t-45 19h-1280q-26 0 -45 -19t-19 -45v-256q0 -26 19 -45t45 -19h1280q26 0 45 19t19 45zM1536 768q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1664 1408v-1536q0 -52 -38 -90t-90 -38 h-1408q-52 0 -90 38t-38 90v1536q0 52 38 90t90 38h1408q52 0 90 -38t38 -90z" />
<glyph unicode="&#xf1ed;" horiz-adv-x="1792" d="M1112 1090q0 159 -237 159h-70q-32 0 -59.5 -21.5t-34.5 -52.5l-63 -276q-2 -5 -2 -16q0 -24 17 -39.5t41 -15.5h53q69 0 128.5 13t112.5 41t83.5 81.5t30.5 126.5zM1716 938q0 -265 -220 -428q-219 -161 -612 -161h-61q-32 0 -59 -21.5t-34 -52.5l-73 -316 q-8 -36 -40.5 -61.5t-69.5 -25.5h-213q-31 0 -53 20t-22 51q0 10 13 65h151q34 0 64 23.5t38 56.5l73 316q8 33 37.5 57t63.5 24h61q390 0 607 160t217 421q0 129 -51 207q183 -92 183 -335zM1533 1123q0 -264 -221 -428q-218 -161 -612 -161h-60q-32 0 -59.5 -22t-34.5 -53 l-73 -315q-8 -36 -40 -61.5t-69 -25.5h-214q-31 0 -52.5 19.5t-21.5 51.5q0 8 2 20l300 1301q8 36 40.5 61.5t69.5 25.5h444q68 0 125 -4t120.5 -15t113.5 -30t96.5 -50.5t77.5 -74t49.5 -103.5t18.5 -136z" />
<glyph unicode="&#xf1ed;" d="M1519 890q18 -84 -4 -204q-87 -444 -565 -444h-44q-25 0 -44 -16.5t-24 -42.5l-4 -19l-55 -346l-2 -15q-5 -26 -24.5 -42.5t-44.5 -16.5h-251q-21 0 -33 15t-9 36q9 56 26.5 168t26.5 168t27 167.5t27 167.5q5 37 43 37h131q133 -2 236 21q175 39 287 144q102 95 155 246 q24 70 35 133q1 6 2.5 7.5t3.5 1t6 -3.5q79 -59 98 -162zM1347 1172q0 -107 -46 -236q-80 -233 -302 -315q-113 -40 -252 -42q0 -1 -90 -1l-90 1q-100 0 -118 -96q-2 -8 -85 -530q-1 -10 -12 -10h-295q-22 0 -36.5 16.5t-11.5 38.5l232 1471q5 29 27.5 48t51.5 19h598 q34 0 97.5 -13t111.5 -32q107 -41 163.5 -123t56.5 -196z" />
<glyph unicode="&#xf1ee;" horiz-adv-x="1792" d="M602 949q19 -61 31 -123.5t17 -141.5t-14 -159t-62 -145q-21 81 -67 157t-95.5 127t-99 90.5t-78.5 57.5t-33 19q-62 34 -81.5 100t14.5 128t101 81.5t129 -14.5q138 -83 238 -177zM927 1236q11 -25 20.5 -46t36.5 -100.5t42.5 -150.5t25.5 -179.5t0 -205.5t-47.5 -209.5 t-105.5 -208.5q-51 -72 -138 -72q-54 0 -98 31q-57 40 -69 109t28 127q60 85 81 195t13 199.5t-32 180.5t-39 128t-22 52q-31 63 -8.5 129.5t85.5 97.5q34 17 75 17q47 0 88.5 -25t63.5 -69zM1248 567q-17 -160 -72 -311q-17 131 -63 246q25 174 -5 361q-27 178 -94 342 q114 -90 212 -211q9 -37 15 -80q26 -179 7 -347zM1520 1440q9 -17 23.5 -49.5t43.5 -117.5t50.5 -178t34 -227.5t5 -269t-47 -300t-112.5 -323.5q-22 -48 -66 -75.5t-95 -27.5q-39 0 -74 16q-67 31 -92.5 100t4.5 136q58 126 90 257.5t37.5 239.5t-3.5 213.5t-26.5 180.5 t-38.5 138.5t-32.5 90t-15.5 32.5q-34 65 -11.5 135.5t87.5 104.5q37 20 81 20q49 0 91.5 -25.5t66.5 -70.5z" />
<glyph unicode="&#xf1f0;" horiz-adv-x="2304" d="M1975 546h-138q14 37 66 179l3 9q4 10 10 26t9 26l12 -55zM531 611l-58 295q-11 54 -75 54h-268l-2 -13q311 -79 403 -336zM710 960l-162 -438l-17 89q-26 70 -85 129.5t-131 88.5l135 -510h175l261 641h-176zM849 318h166l104 642h-166zM1617 944q-69 27 -149 27 q-123 0 -201 -59t-79 -153q-1 -102 145 -174q48 -23 67 -41t19 -39q0 -30 -30 -46t-69 -16q-86 0 -156 33l-22 11l-23 -144q74 -34 185 -34q130 -1 208.5 59t80.5 160q0 106 -140 174q-49 25 -71 42t-22 38q0 22 24.5 38.5t70.5 16.5q70 1 124 -24l15 -8zM2042 960h-128 q-65 0 -87 -54l-246 -588h174l35 96h212q5 -22 20 -96h154zM2304 1280v-1280q0 -52 -38 -90t-90 -38h-2048q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h2048q52 0 90 -38t38 -90z" />
<glyph unicode="&#xf1f1;" 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" />
<glyph unicode="&#xf1f2;" horiz-adv-x="2304" d="M313 759q0 -51 -36 -84q-29 -26 -89 -26h-17v220h17q61 0 89 -27q36 -31 36 -83zM2089 824q0 -52 -64 -52h-19v101h20q63 0 63 -49zM380 759q0 74 -50 120.5t-129 46.5h-95v-333h95q74 0 119 38q60 51 60 128zM410 593h65v333h-65v-333zM730 694q0 40 -20.5 62t-75.5 42 q-29 10 -39.5 19t-10.5 23q0 16 13.5 26.5t34.5 10.5q29 0 53 -27l34 44q-41 37 -98 37q-44 0 -74 -27.5t-30 -67.5q0 -35 18 -55.5t64 -36.5q37 -13 45 -19q19 -12 19 -34q0 -20 -14 -33.5t-36 -13.5q-48 0 -71 44l-42 -40q44 -64 115 -64q51 0 83 30.5t32 79.5zM1008 604 v77q-37 -37 -78 -37q-49 0 -80.5 32.5t-31.5 82.5q0 48 31.5 81.5t77.5 33.5q43 0 81 -38v77q-40 20 -80 20q-74 0 -125.5 -50.5t-51.5 -123.5t51 -123.5t125 -50.5q42 0 81 19zM2240 0v527q-65 -40 -144.5 -84t-237.5 -117t-329.5 -137.5t-417.5 -134.5t-504 -118h1569 q26 0 45 19t19 45zM1389 757q0 75 -53 128t-128 53t-128 -53t-53 -128t53 -128t128 -53t128 53t53 128zM1541 584l144 342h-71l-90 -224l-89 224h-71l142 -342h35zM1714 593h184v56h-119v90h115v56h-115v74h119v57h-184v-333zM2105 593h80l-105 140q76 16 76 94q0 47 -31 73 t-87 26h-97v-333h65v133h9zM2304 1274v-1268q0 -56 -38.5 -95t-93.5 -39h-2040q-55 0 -93.5 39t-38.5 95v1268q0 56 38.5 95t93.5 39h2040q55 0 93.5 -39t38.5 -95z" />
<glyph unicode="&#xf1f3;" horiz-adv-x="2304" d="M119 854h89l-45 108zM740 328l74 79l-70 79h-163v-49h142v-55h-142v-54h159zM898 406l99 -110v217zM1186 453q0 33 -40 33h-84v-69h83q41 0 41 36zM1475 457q0 29 -42 29h-82v-61h81q43 0 43 32zM1197 923q0 29 -42 29h-82v-60h81q43 0 43 31zM1656 854h89l-44 108z M699 1009v-271h-66v212l-94 -212h-57l-94 212v-212h-132l-25 60h-135l-25 -60h-70l116 271h96l110 -257v257h106l85 -184l77 184h108zM1255 453q0 -20 -5.5 -35t-14 -25t-22.5 -16.5t-26 -10t-31.5 -4.5t-31.5 -1t-32.5 0.5t-29.5 0.5v-91h-126l-80 90l-83 -90h-256v271h260 l80 -89l82 89h207q109 0 109 -89zM964 794v-56h-217v271h217v-57h-152v-49h148v-55h-148v-54h152zM2304 235v-229q0 -55 -38.5 -94.5t-93.5 -39.5h-2040q-55 0 -93.5 39.5t-38.5 94.5v678h111l25 61h55l25 -61h218v46l19 -46h113l20 47v-47h541v99l10 1q10 0 10 -14v-86h279 v23q23 -12 55 -18t52.5 -6.5t63 0.5t51.5 1l25 61h56l25 -61h227v58l34 -58h182v378h-180v-44l-25 44h-185v-44l-23 44h-249q-69 0 -109 -22v22h-172v-22q-24 22 -73 22h-628l-43 -97l-43 97h-198v-44l-22 44h-169l-78 -179v391q0 55 38.5 94.5t93.5 39.5h2040 q55 0 93.5 -39.5t38.5 -94.5v-678h-120q-51 0 -81 -22v22h-177q-55 0 -78 -22v22h-316v-22q-31 22 -87 22h-209v-22q-23 22 -91 22h-234l-54 -58l-50 58h-349v-378h343l55 59l52 -59h211v89h21q59 0 90 13v-102h174v99h8q8 0 10 -2t2 -10v-87h529q57 0 88 24v-24h168 q60 0 95 17zM1546 469q0 -23 -12 -43t-34 -29q25 -9 34 -26t9 -46v-54h-65v45q0 33 -12 43.5t-46 10.5h-69v-99h-65v271h154q48 0 77 -15t29 -58zM1269 936q0 -24 -12.5 -44t-33.5 -29q26 -9 34.5 -25.5t8.5 -46.5v-53h-65q0 9 0.5 26.5t0 25t-3 18.5t-8.5 16t-17.5 8.5 t-29.5 3.5h-70v-98h-64v271l153 -1q49 0 78 -14.5t29 -57.5zM1798 327v-56h-216v271h216v-56h-151v-49h148v-55h-148v-54zM1372 1009v-271h-66v271h66zM2065 357q0 -86 -102 -86h-126v58h126q34 0 34 25q0 16 -17 21t-41.5 5t-49.5 3.5t-42 22.5t-17 55q0 39 26 60t66 21 h130v-57h-119q-36 0 -36 -25q0 -16 17.5 -20.5t42 -4t49 -2.5t42 -21.5t17.5 -54.5zM2304 407v-101q-24 -35 -88 -35h-125v58h125q33 0 33 25q0 13 -12.5 19t-31 5.5t-40 2t-40 8t-31 24t-12.5 48.5q0 39 26.5 60t66.5 21h129v-57h-118q-36 0 -36 -25q0 -20 29 -22t68.5 -5 t56.5 -26zM2139 1008v-270h-92l-122 203v-203h-132l-26 60h-134l-25 -60h-75q-129 0 -129 133q0 138 133 138h63v-59q-7 0 -28 1t-28.5 0.5t-23 -2t-21.5 -6.5t-14.5 -13.5t-11.5 -23t-3 -33.5q0 -38 13.5 -58t49.5 -20h29l92 213h97l109 -256v256h99l114 -188v188h66z" />
<glyph unicode="&#xf1f4;" horiz-adv-x="2304" d="M322 689h-15q-19 0 -19 18q0 28 19 85q5 15 15 19.5t28 4.5q77 0 77 -49q0 -41 -30.5 -59.5t-74.5 -18.5zM664 528q-47 0 -47 29q0 62 123 62l3 -3q-5 -88 -79 -88zM1438 687h-15q-19 0 -19 19q0 28 19 85q5 15 14.5 19t28.5 4q77 0 77 -49q0 -41 -30.5 -59.5 t-74.5 -18.5zM1780 527q-47 0 -47 30q0 62 123 62l3 -3q-5 -89 -79 -89zM373 894h-128q-8 0 -14.5 -4t-8.5 -7.5t-7 -12.5q-3 -7 -45 -190t-42 -192q0 -7 5.5 -12.5t13.5 -5.5h62q25 0 32.5 34.5l15 69t32.5 34.5q47 0 87.5 7.5t80.5 24.5t63.5 52.5t23.5 84.5 q0 36 -14.5 61t-41 36.5t-53.5 15.5t-62 4zM719 798q-38 0 -74 -6q-2 0 -8.5 -1t-9 -1.5l-7.5 -1.5t-7.5 -2t-6.5 -3t-6.5 -4t-5 -5t-4.5 -7t-4 -9q-9 -29 -9 -39t9 -10q5 0 21.5 5t19.5 6q30 8 58 8q74 0 74 -36q0 -11 -10 -14q-8 -2 -18 -3t-21.5 -1.5t-17.5 -1.5 q-38 -4 -64.5 -10t-56.5 -19.5t-45.5 -39t-15.5 -62.5q0 -38 26 -59.5t64 -21.5q24 0 45.5 6.5t33 13t38.5 23.5q-3 -7 -3 -15t5.5 -13.5t12.5 -5.5h56q1 1 7 3.5t7.5 3.5t5 3.5t5 5.5t2.5 8l45 194q4 13 4 30q0 81 -145 81zM1247 793h-74q-22 0 -39 -23q-5 -7 -29.5 -51 t-46.5 -81.5t-26 -38.5l-5 4q0 77 -27 166q-1 5 -3.5 8.5t-6 6.5t-6.5 5t-8.5 3t-8.5 1.5t-9.5 1t-9 0.5h-10h-8.5q-38 0 -38 -21l1 -5q5 -53 25 -151t25 -143q2 -16 2 -24q0 -19 -30.5 -61.5t-30.5 -58.5q0 -13 40 -13q61 0 76 25l245 415q10 20 10 26q0 9 -8 9zM1489 892 h-129q-18 0 -29 -23q-6 -13 -46.5 -191.5t-40.5 -190.5q0 -20 43 -20h7.5h9h9t9.5 1t8.5 2t8.5 3t6.5 4.5t5.5 6t3 8.5l21 91q2 10 10.5 17t19.5 7q47 0 87.5 7t80.5 24.5t63.5 52.5t23.5 84q0 36 -14.5 61t-41 36.5t-53.5 15.5t-62 4zM1835 798q-26 0 -74 -6 q-38 -6 -48 -16q-7 -8 -11 -19q-8 -24 -8 -39q0 -10 8 -10q1 0 41 12q30 8 58 8q74 0 74 -36q0 -12 -10 -14q-4 -1 -57 -7q-38 -4 -64.5 -10t-56.5 -19.5t-45.5 -39t-15.5 -62.5t26 -58.5t64 -21.5q24 0 45 6t34 13t38 24q-3 -15 -3 -16q0 -5 2 -8.5t6.5 -5.5t8 -3.5 t10.5 -2t9.5 -0.5h9.5h8q42 0 48 25l45 194q3 15 3 31q0 81 -145 81zM2157 889h-55q-25 0 -33 -40q-10 -44 -36.5 -167t-42.5 -190v-5q0 -16 16 -18h1h57q10 0 18.5 6.5t10.5 16.5l83 374h-1l1 5q0 7 -5.5 12.5t-13.5 5.5zM2304 1280v-1280q0 -52 -38 -90t-90 -38h-2048 q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h2048q52 0 90 -38t38 -90z" />
<glyph unicode="&#xf1f4;" horiz-adv-x="2304" d="M745 630q0 -37 -25.5 -61.5t-62.5 -24.5q-29 0 -46.5 16t-17.5 44q0 37 25 62.5t62 25.5q28 0 46.5 -16.5t18.5 -45.5zM1530 779q0 -42 -22 -57t-66 -15l-32 -1l17 107q2 11 13 11h18q22 0 35 -2t25 -12.5t12 -30.5zM1881 630q0 -36 -25.5 -61t-61.5 -25q-29 0 -47 16 t-18 44q0 37 25 62.5t62 25.5q28 0 46.5 -16.5t18.5 -45.5zM513 801q0 59 -38.5 85.5t-100.5 26.5h-160q-19 0 -21 -19l-65 -408q-1 -6 3 -11t10 -5h76q20 0 22 19l18 110q1 8 7 13t15 6.5t17 1.5t19 -1t14 -1q86 0 135 48.5t49 134.5zM822 489l41 261q1 6 -3 11t-10 5h-76 q-14 0 -17 -33q-27 40 -95 40q-72 0 -122.5 -54t-50.5 -127q0 -59 34.5 -94t92.5 -35q28 0 58 12t48 32q-4 -12 -4 -21q0 -16 13 -16h69q19 0 22 19zM1269 752q0 5 -4 9.5t-9 4.5h-77q-11 0 -18 -10l-106 -156l-44 150q-5 16 -22 16h-75q-5 0 -9 -4.5t-4 -9.5q0 -2 19.5 -59 t42 -123t23.5 -70q-82 -112 -82 -120q0 -13 13 -13h77q11 0 18 10l255 368q2 2 2 7zM1649 801q0 59 -38.5 85.5t-100.5 26.5h-159q-20 0 -22 -19l-65 -408q-1 -6 3 -11t10 -5h82q12 0 16 13l18 116q1 8 7 13t15 6.5t17 1.5t19 -1t14 -1q86 0 135 48.5t49 134.5zM1958 489 l41 261q1 6 -3 11t-10 5h-76q-14 0 -17 -33q-26 40 -95 40q-72 0 -122.5 -54t-50.5 -127q0 -59 34.5 -94t92.5 -35q29 0 59 12t47 32q0 -1 -2 -9t-2 -12q0 -16 13 -16h69q19 0 22 19zM2176 898v1q0 14 -13 14h-74q-11 0 -13 -11l-65 -416l-1 -2q0 -5 4 -9.5t10 -4.5h66 q19 0 21 19zM392 764q-5 -35 -26 -46t-60 -11l-33 -1l17 107q2 11 13 11h19q40 0 58 -11.5t12 -48.5zM2304 1280v-1280q0 -52 -38 -90t-90 -38h-2048q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h2048q52 0 90 -38t38 -90z" />
<glyph unicode="&#xf1f5;" horiz-adv-x="2304" d="M1597 633q0 -69 -21 -106q-19 -35 -52 -35q-23 0 -41 9v224q29 30 57 30q57 0 57 -122zM2035 669h-110q6 98 56 98q51 0 54 -98zM476 534q0 59 -33 91.5t-101 57.5q-36 13 -52 24t-16 25q0 26 38 26q58 0 124 -33l18 112q-67 32 -149 32q-77 0 -123 -38q-48 -39 -48 -109 q0 -58 32.5 -90.5t99.5 -56.5q39 -14 54.5 -25.5t15.5 -27.5q0 -31 -48 -31q-29 0 -70 12.5t-72 30.5l-18 -113q72 -41 168 -41q81 0 129 37q51 41 51 117zM771 749l19 111h-96v135l-129 -21l-18 -114l-46 -8l-17 -103h62v-219q0 -84 44 -120q38 -30 111 -30q32 0 79 11v118 q-32 -7 -44 -7q-42 0 -42 50v197h77zM1087 724v139q-15 3 -28 3q-32 0 -55.5 -16t-33.5 -46l-10 56h-131v-471h150v306q26 31 82 31q16 0 26 -2zM1124 389h150v471h-150v-471zM1746 638q0 122 -45 179q-40 52 -111 52q-64 0 -117 -56l-8 47h-132v-645l150 25v151 q36 -11 68 -11q83 0 134 56q61 65 61 202zM1278 986q0 33 -23 56t-56 23t-56 -23t-23 -56t23 -56.5t56 -23.5t56 23.5t23 56.5zM2176 629q0 113 -48 176q-50 64 -144 64q-96 0 -151.5 -66t-55.5 -180q0 -128 63 -188q55 -55 161 -55q101 0 160 40l-16 103q-57 -31 -128 -31 q-43 0 -63 19q-23 19 -28 66h248q2 14 2 52zM2304 1280v-1280q0 -52 -38 -90t-90 -38h-2048q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h2048q52 0 90 -38t38 -90z" />
<glyph unicode="&#xf1f6;" horiz-adv-x="2048" d="M1558 684q61 -356 298 -556q0 -52 -38 -90t-90 -38h-448q0 -106 -75 -181t-181 -75t-180.5 74.5t-75.5 180.5zM1024 -176q16 0 16 16t-16 16q-59 0 -101.5 42.5t-42.5 101.5q0 16 -16 16t-16 -16q0 -73 51.5 -124.5t124.5 -51.5zM2026 1424q8 -10 7.5 -23.5t-10.5 -22.5 l-1872 -1622q-10 -8 -23.5 -7t-21.5 11l-84 96q-8 10 -7.5 23.5t10.5 21.5l186 161q-19 32 -19 66q50 42 91 88t85 119.5t74.5 158.5t50 206t19.5 260q0 152 117 282.5t307 158.5q-8 19 -8 39q0 40 28 68t68 28t68 -28t28 -68q0 -20 -8 -39q124 -18 219 -82.5t148 -157.5 l418 363q10 8 23.5 7t21.5 -11z" />
<glyph unicode="&#xf1f7;" horiz-adv-x="2048" d="M1040 -160q0 16 -16 16q-59 0 -101.5 42.5t-42.5 101.5q0 16 -16 16t-16 -16q0 -73 51.5 -124.5t124.5 -51.5q16 0 16 16zM503 315l877 760q-42 88 -132.5 146.5t-223.5 58.5q-93 0 -169.5 -31.5t-121.5 -80.5t-69 -103t-24 -105q0 -384 -137 -645zM1856 128 q0 -52 -38 -90t-90 -38h-448q0 -106 -75 -181t-181 -75t-180.5 74.5t-75.5 180.5l149 129h757q-166 187 -227 459l111 97q61 -356 298 -556zM1942 1520l84 -96q8 -10 7.5 -23.5t-10.5 -22.5l-1872 -1622q-10 -8 -23.5 -7t-21.5 11l-84 96q-8 10 -7.5 23.5t10.5 21.5l186 161 q-19 32 -19 66q50 42 91 88t85 119.5t74.5 158.5t50 206t19.5 260q0 152 117 282.5t307 158.5q-8 19 -8 39q0 40 28 68t68 28t68 -28t28 -68q0 -20 -8 -39q124 -18 219 -82.5t148 -157.5l418 363q10 8 23.5 7t21.5 -11z" />
@ -523,7 +523,7 @@
<glyph unicode="&#xf215;" horiz-adv-x="2048" d="M863 504q0 112 -79.5 191.5t-191.5 79.5t-191 -79.5t-79 -191.5t79 -191t191 -79t191.5 79t79.5 191zM1726 505q0 112 -79 191t-191 79t-191.5 -79t-79.5 -191q0 -113 79.5 -192t191.5 -79t191 79.5t79 191.5zM2048 1314v-1348q0 -44 -31.5 -75.5t-76.5 -31.5h-1832 q-45 0 -76.5 31.5t-31.5 75.5v1348q0 44 31.5 75.5t76.5 31.5h431q44 0 76 -31.5t32 -75.5v-161h754v161q0 44 32 75.5t76 31.5h431q45 0 76.5 -31.5t31.5 -75.5z" />
<glyph unicode="&#xf216;" horiz-adv-x="2048" d="M1430 953zM1690 749q148 0 253 -98.5t105 -244.5q0 -157 -109 -261.5t-267 -104.5q-85 0 -162 27.5t-138 73.5t-118 106t-109 126.5t-103.5 132.5t-108.5 126t-117 106t-136 73.5t-159 27.5q-154 0 -251.5 -91.5t-97.5 -244.5q0 -157 104 -250t263 -93q100 0 208 37.5 t193 98.5q5 4 21 18.5t30 24t22 9.5q14 0 24.5 -10.5t10.5 -24.5q0 -24 -60 -77q-101 -88 -234.5 -142t-260.5 -54q-133 0 -245.5 58t-180 165t-67.5 241q0 205 141.5 341t347.5 136q120 0 226.5 -43.5t185.5 -113t151.5 -153t139 -167.5t133.5 -153.5t149.5 -113 t172.5 -43.5q102 0 168.5 61.5t66.5 162.5q0 95 -64.5 159t-159.5 64q-30 0 -81.5 -18.5t-68.5 -18.5q-20 0 -35.5 15t-15.5 35q0 18 8.5 57t8.5 59q0 159 -107.5 263t-266.5 104q-58 0 -111.5 -18.5t-84 -40.5t-55.5 -40.5t-33 -18.5q-15 0 -25.5 10.5t-10.5 25.5 q0 19 25 46q59 67 147 103.5t182 36.5q191 0 318 -125.5t127 -315.5q0 -37 -4 -66q57 15 115 15z" />
<glyph unicode="&#xf217;" horiz-adv-x="1664" d="M1216 832q0 26 -19 45t-45 19h-128v128q0 26 -19 45t-45 19t-45 -19t-19 -45v-128h-128q-26 0 -45 -19t-19 -45t19 -45t45 -19h128v-128q0 -26 19 -45t45 -19t45 19t19 45v128h128q26 0 45 19t19 45zM640 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5 t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1536 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1664 1088v-512q0 -24 -16 -42.5t-41 -21.5l-1044 -122q1 -7 4.5 -21.5t6 -26.5t2.5 -22q0 -16 -24 -64h920 q26 0 45 -19t19 -45t-19 -45t-45 -19h-1024q-26 0 -45 19t-19 45q0 14 11 39.5t29.5 59.5t20.5 38l-177 823h-204q-26 0 -45 19t-19 45t19 45t45 19h256q16 0 28.5 -6.5t20 -15.5t13 -24.5t7.5 -26.5t5.5 -29.5t4.5 -25.5h1201q26 0 45 -19t19 -45z" />
<glyph unicode="&#xf218;" horiz-adv-x="1792" d="M1280 832q0 26 -19 45t-45 19t-45 -19l-147 -146v293q0 26 -19 45t-45 19t-45 -19t-19 -45v-293l-147 146q-19 19 -45 19t-45 -19t-19 -45t19 -45l256 -256q19 -19 45 -19t45 19l256 256q19 19 19 45zM640 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5 t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1536 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1664 1088v-512q0 -24 -16 -42.5t-41 -21.5l-1044 -122q1 -7 4.5 -21.5t6 -26.5t2.5 -22q0 -16 -24 -64h920 q26 0 45 -19t19 -45t-19 -45t-45 -19h-1024q-26 0 -45 19t-19 45q0 14 11 39.5t29.5 59.5t20.5 38l-177 823h-204q-26 0 -45 19t-19 45t19 45t45 19h256q16 0 28.5 -6.5t20 -15.5t13 -24.5t7.5 -26.5t5.5 -29.5t4.5 -25.5h1201q26 0 45 -19t19 -45z" />
<glyph unicode="&#xf218;" horiz-adv-x="1664" d="M1280 832q0 26 -19 45t-45 19t-45 -19l-147 -146v293q0 26 -19 45t-45 19t-45 -19t-19 -45v-293l-147 146q-19 19 -45 19t-45 -19t-19 -45t19 -45l256 -256q19 -19 45 -19t45 19l256 256q19 19 19 45zM640 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5 t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1536 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1664 1088v-512q0 -24 -16 -42.5t-41 -21.5l-1044 -122q1 -7 4.5 -21.5t6 -26.5t2.5 -22q0 -16 -24 -64h920 q26 0 45 -19t19 -45t-19 -45t-45 -19h-1024q-26 0 -45 19t-19 45q0 14 11 39.5t29.5 59.5t20.5 38l-177 823h-204q-26 0 -45 19t-19 45t19 45t45 19h256q16 0 28.5 -6.5t20 -15.5t13 -24.5t7.5 -26.5t5.5 -29.5t4.5 -25.5h1201q26 0 45 -19t19 -45z" />
<glyph unicode="&#xf219;" horiz-adv-x="2048" d="M212 768l623 -665l-300 665h-323zM1024 -4l349 772h-698zM538 896l204 384h-262l-288 -384h346zM1213 103l623 665h-323zM683 896h682l-204 384h-274zM1510 896h346l-288 384h-262zM1651 1382l384 -512q14 -18 13 -41.5t-17 -40.5l-960 -1024q-18 -20 -47 -20t-47 20 l-960 1024q-16 17 -17 40.5t13 41.5l384 512q18 26 51 26h1152q33 0 51 -26z" />
<glyph unicode="&#xf21a;" horiz-adv-x="2048" d="M1811 -19q19 19 45 19t45 -19l128 -128l-90 -90l-83 83l-83 -83q-18 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83 q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-128 128l90 90l83 -83l83 83q19 19 45 19t45 -19l83 -83l83 83q19 19 45 19t45 -19l83 -83l83 83q19 19 45 19t45 -19l83 -83l83 83q19 19 45 19t45 -19l83 -83l83 83q19 19 45 19t45 -19l83 -83l83 83 q19 19 45 19t45 -19l83 -83zM237 19q-19 -19 -45 -19t-45 19l-128 128l90 90l83 -82l83 82q19 19 45 19t45 -19l83 -82l64 64v293l-210 314q-17 26 -7 56.5t40 40.5l177 58v299h128v128h256v128h256v-128h256v-128h128v-299l177 -58q30 -10 40 -40.5t-7 -56.5l-210 -314 v-293l19 18q19 19 45 19t45 -19l83 -82l83 82q19 19 45 19t45 -19l128 -128l-90 -90l-83 83l-83 -83q-18 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83 q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83zM640 1152v-128l384 128l384 -128v128h-128v128h-512v-128h-128z" />
<glyph unicode="&#xf21b;" d="M576 0l96 448l-96 128l-128 64zM832 0l128 640l-128 -64l-96 -128zM992 1010q-2 4 -4 6q-10 8 -96 8q-70 0 -167 -19q-7 -2 -21 -2t-21 2q-97 19 -167 19q-86 0 -96 -8q-2 -2 -4 -6q2 -18 4 -27q2 -3 7.5 -6.5t7.5 -10.5q2 -4 7.5 -20.5t7 -20.5t7.5 -17t8.5 -17t9 -14 t12 -13.5t14 -9.5t17.5 -8t20.5 -4t24.5 -2q36 0 59 12.5t32.5 30t14.5 34.5t11.5 29.5t17.5 12.5h12q11 0 17.5 -12.5t11.5 -29.5t14.5 -34.5t32.5 -30t59 -12.5q13 0 24.5 2t20.5 4t17.5 8t14 9.5t12 13.5t9 14t8.5 17t7.5 17t7 20.5t7.5 20.5q2 7 7.5 10.5t7.5 6.5 q2 9 4 27zM1408 131q0 -121 -73 -190t-194 -69h-874q-121 0 -194 69t-73 190q0 61 4.5 118t19 125.5t37.5 123.5t63.5 103.5t93.5 74.5l-90 220h214q-22 64 -22 128q0 12 2 32q-194 40 -194 96q0 57 210 99q17 62 51.5 134t70.5 114q32 37 76 37q30 0 84 -31t84 -31t84 31 t84 31q44 0 76 -37q36 -42 70.5 -114t51.5 -134q210 -42 210 -99q0 -56 -194 -96q7 -81 -20 -160h214l-82 -225q63 -33 107.5 -96.5t65.5 -143.5t29 -151.5t8 -148.5z" />
@ -531,18 +531,18 @@
<glyph unicode="&#xf21d;" d="M1408 0q0 -63 -61.5 -113.5t-164 -81t-225 -46t-253.5 -15.5t-253.5 15.5t-225 46t-164 81t-61.5 113.5q0 49 33 88.5t91 66.5t118 44.5t131 29.5q26 5 48 -10.5t26 -41.5q5 -26 -10.5 -48t-41.5 -26q-58 -10 -106 -23.5t-76.5 -25.5t-48.5 -23.5t-27.5 -19.5t-8.5 -12 q3 -11 27 -26.5t73 -33t114 -32.5t160.5 -25t201.5 -10t201.5 10t160.5 25t114 33t73 33.5t27 27.5q-1 4 -8.5 11t-27.5 19t-48.5 23.5t-76.5 25t-106 23.5q-26 4 -41.5 26t-10.5 48q4 26 26 41.5t48 10.5q71 -12 131 -29.5t118 -44.5t91 -66.5t33 -88.5zM1024 896v-384 q0 -26 -19 -45t-45 -19h-64v-384q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v384h-64q-26 0 -45 19t-19 45v384q0 53 37.5 90.5t90.5 37.5h384q53 0 90.5 -37.5t37.5 -90.5zM928 1280q0 -93 -65.5 -158.5t-158.5 -65.5t-158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5 t158.5 -65.5t65.5 -158.5z" />
<glyph unicode="&#xf21e;" horiz-adv-x="1792" d="M1280 512h305q-5 -6 -10 -10.5t-9 -7.5l-3 -4l-623 -600q-18 -18 -44 -18t-44 18l-624 602q-5 2 -21 20h369q22 0 39.5 13.5t22.5 34.5l70 281l190 -667q6 -20 23 -33t39 -13q21 0 38 13t23 33l146 485l56 -112q18 -35 57 -35zM1792 940q0 -145 -103 -300h-369l-111 221 q-8 17 -25.5 27t-36.5 8q-45 -5 -56 -46l-129 -430l-196 686q-6 20 -23.5 33t-39.5 13t-39 -13.5t-22 -34.5l-116 -464h-423q-103 155 -103 300q0 220 127 344t351 124q62 0 126.5 -21.5t120 -58t95.5 -68.5t76 -68q36 36 76 68t95.5 68.5t120 58t126.5 21.5q224 0 351 -124 t127 -344z" />
<glyph unicode="&#xf221;" horiz-adv-x="1280" d="M1152 960q0 -221 -147.5 -384.5t-364.5 -187.5v-260h224q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-224v-224q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v224h-224q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h224v260q-150 16 -271.5 103t-186 224t-52.5 292 q11 134 80.5 249t182 188t245.5 88q170 19 319 -54t236 -212t87 -306zM128 960q0 -185 131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5z" />
<glyph unicode="&#xf222;" horiz-adv-x="1792" d="M1280 1504q0 14 9 23t23 9h416q26 0 45 -19t19 -45v-416q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v262l-419 -420q87 -104 129.5 -236.5t30.5 -276.5q-22 -250 -200.5 -431t-428.5 -206q-163 -17 -314 39.5t-256.5 162t-162 256.5t-39.5 314q25 250 206 428.5 t431 200.5q144 12 276.5 -30.5t236.5 -129.5l419 419h-261q-14 0 -23 9t-9 23v64zM704 -128q117 0 223.5 45.5t184 123t123 184t45.5 223.5t-45.5 223.5t-123 184t-184 123t-223.5 45.5t-223.5 -45.5t-184 -123t-123 -184t-45.5 -223.5t45.5 -223.5t123 -184t184 -123 t223.5 -45.5z" />
<glyph unicode="&#xf222;" d="M1472 1408q26 0 45 -19t19 -45v-416q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v262l-382 -383q126 -156 126 -359q0 -117 -45.5 -223.5t-123 -184t-184 -123t-223.5 -45.5t-223.5 45.5t-184 123t-123 184t-45.5 223.5t45.5 223.5t123 184t184 123t223.5 45.5 q203 0 359 -126l382 382h-261q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h416zM576 0q185 0 316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" />
<glyph unicode="&#xf223;" horiz-adv-x="1280" d="M830 1220q145 -72 233.5 -210.5t88.5 -305.5q0 -221 -147.5 -384.5t-364.5 -187.5v-132h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-96v-96q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v96h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96v132q-217 24 -364.5 187.5 t-147.5 384.5q0 167 88.5 305.5t233.5 210.5q-165 96 -228 273q-6 16 3.5 29.5t26.5 13.5h69q21 0 29 -20q44 -106 140 -171t214 -65t214 65t140 171q8 20 37 20h61q17 0 26.5 -13.5t3.5 -29.5q-63 -177 -228 -273zM576 256q185 0 316.5 131.5t131.5 316.5t-131.5 316.5 t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" />
<glyph unicode="&#xf224;" d="M1024 1504q0 14 9 23t23 9h288q26 0 45 -19t19 -45v-288q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v134l-254 -255q126 -158 126 -359q0 -221 -147.5 -384.5t-364.5 -187.5v-132h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-96v-96q0 -14 -9 -23t-23 -9h-64 q-14 0 -23 9t-9 23v96h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96v132q-149 16 -270.5 103t-186.5 223.5t-53 291.5q16 204 160 353.5t347 172.5q118 14 228 -19t198 -103l255 254h-134q-14 0 -23 9t-9 23v64zM576 256q185 0 316.5 131.5t131.5 316.5t-131.5 316.5 t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" />
<glyph unicode="&#xf225;" horiz-adv-x="1792" d="M1280 1504q0 14 9 23t23 9h288q26 0 45 -19t19 -45v-288q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v134l-254 -255q126 -158 126 -359q0 -221 -147.5 -384.5t-364.5 -187.5v-132h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-96v-96q0 -14 -9 -23t-23 -9h-64 q-14 0 -23 9t-9 23v96h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96v132q-217 24 -364.5 187.5t-147.5 384.5q0 201 126 359l-52 53l-101 -111q-9 -10 -22 -10.5t-23 7.5l-48 44q-10 8 -10.5 21.5t8.5 23.5l105 115l-111 112v-134q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9 t-9 23v288q0 26 19 45t45 19h288q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-133l106 -107l86 94q9 10 22 10.5t23 -7.5l48 -44q10 -8 10.5 -21.5t-8.5 -23.5l-90 -99l57 -56q158 126 359 126t359 -126l255 254h-134q-14 0 -23 9t-9 23v64zM832 256q185 0 316.5 131.5 t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" />
<glyph unicode="&#xf226;" horiz-adv-x="1792" d="M1790 1007q12 -155 -52.5 -292t-186 -224t-271.5 -103v-260h224q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-224v-224q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v224h-512v-224q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v224h-224q-14 0 -23 9t-9 23v64q0 14 9 23 t23 9h224v260q-150 16 -271.5 103t-186 224t-52.5 292q17 206 164.5 356.5t352.5 169.5q206 21 377 -94q171 115 377 94q205 -19 352.5 -169.5t164.5 -356.5zM896 647q128 131 128 313t-128 313q-128 -131 -128 -313t128 -313zM576 512q115 0 218 57q-154 165 -154 391 q0 224 154 391q-103 57 -218 57q-185 0 -316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5zM1152 128v260q-137 15 -256 94q-119 -79 -256 -94v-260h512zM1216 512q185 0 316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5q-115 0 -218 -57q154 -167 154 -391 q0 -226 -154 -391q103 -57 218 -57z" />
<glyph unicode="&#xf227;" horiz-adv-x="1920" d="M1536 1120q0 14 9 23t23 9h288q26 0 45 -19t19 -45v-288q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v134l-254 -255q76 -95 107.5 -214t9.5 -247q-31 -182 -166 -312t-318 -156q-210 -29 -384.5 80t-241.5 300q-117 6 -221 57.5t-177.5 133t-113.5 192.5t-32 230 q9 135 78 252t182 191.5t248 89.5q118 14 227.5 -19t198.5 -103l255 254h-134q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h288q26 0 45 -19t19 -45v-288q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v134l-254 -255q59 -74 93 -169q182 -9 328 -124l255 254h-134q-14 0 -23 9 t-9 23v64zM1024 704q0 20 -4 58q-162 -25 -271 -150t-109 -292q0 -20 4 -58q162 25 271 150t109 292zM128 704q0 -168 111 -294t276 -149q-3 29 -3 59q0 210 135 369.5t338 196.5q-53 120 -163.5 193t-245.5 73q-185 0 -316.5 -131.5t-131.5 -316.5zM1088 -128 q185 0 316.5 131.5t131.5 316.5q0 168 -111 294t-276 149q3 -29 3 -59q0 -210 -135 -369.5t-338 -196.5q53 -120 163.5 -193t245.5 -73z" />
<glyph unicode="&#xf228;" horiz-adv-x="2048" d="M1664 1504q0 14 9 23t23 9h288q26 0 45 -19t19 -45v-288q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v134l-254 -255q76 -95 107.5 -214t9.5 -247q-32 -180 -164.5 -310t-313.5 -157q-223 -34 -409 90q-117 -78 -256 -93v-132h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23 t-23 -9h-96v-96q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v96h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96v132q-155 17 -279.5 109.5t-187 237.5t-39.5 307q25 187 159.5 322.5t320.5 164.5q224 34 410 -90q146 97 320 97q201 0 359 -126l255 254h-134q-14 0 -23 9 t-9 23v64zM896 391q128 131 128 313t-128 313q-128 -131 -128 -313t128 -313zM128 704q0 -185 131.5 -316.5t316.5 -131.5q117 0 218 57q-154 167 -154 391t154 391q-101 57 -218 57q-185 0 -316.5 -131.5t-131.5 -316.5zM1216 256q185 0 316.5 131.5t131.5 316.5 t-131.5 316.5t-316.5 131.5q-117 0 -218 -57q154 -167 154 -391t-154 -391q101 -57 218 -57z" />
<glyph unicode="&#xf229;" horiz-adv-x="1792" d="M1728 1536q26 0 45 -19t19 -45v-416q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v262l-229 -230l156 -156q9 -10 9 -23t-9 -22l-46 -46q-9 -9 -22 -9t-23 9l-156 157l-99 -100q87 -104 129.5 -236.5t30.5 -276.5q-22 -250 -200.5 -431t-428.5 -206q-163 -17 -314 39.5 t-256.5 162t-162 256.5t-39.5 314q25 250 206 428.5t431 200.5q144 12 276.5 -30.5t236.5 -129.5l99 99l-156 156q-9 10 -9 23t9 22l46 46q9 9 22 9t23 -9l156 -156l229 229h-261q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h416zM1280 448q0 117 -45.5 223.5t-123 184t-184 123 t-223.5 45.5t-223.5 -45.5t-184 -123t-123 -184t-45.5 -223.5t45.5 -223.5t123 -184t184 -123t223.5 -45.5t223.5 45.5t184 123t123 184t45.5 223.5z" />
<glyph unicode="&#xf229;" d="M1472 1408q26 0 45 -19t19 -45v-416q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v262l-213 -214l140 -140q9 -10 9 -23t-9 -22l-46 -46q-9 -9 -22 -9t-23 9l-140 141l-78 -79q126 -156 126 -359q0 -117 -45.5 -223.5t-123 -184t-184 -123t-223.5 -45.5t-223.5 45.5 t-184 123t-123 184t-45.5 223.5t45.5 223.5t123 184t184 123t223.5 45.5q203 0 359 -126l78 78l-172 172q-9 10 -9 23t9 22l46 46q9 9 22 9t23 -9l172 -172l213 213h-261q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h416zM576 0q185 0 316.5 131.5t131.5 316.5t-131.5 316.5 t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" />
<glyph unicode="&#xf22a;" horiz-adv-x="1280" d="M640 892q217 -24 364.5 -187.5t147.5 -384.5q0 -167 -87 -306t-236 -212t-319 -54q-133 15 -245.5 88t-182 188t-80.5 249q-12 155 52.5 292t186 224t271.5 103v132h-160q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h160v165l-92 -92q-10 -9 -23 -9t-22 9l-46 46q-9 9 -9 22 t9 23l202 201q19 19 45 19t45 -19l202 -201q9 -10 9 -23t-9 -22l-46 -46q-9 -9 -22 -9t-23 9l-92 92v-165h160q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-160v-132zM576 -128q185 0 316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5 t131.5 -316.5t316.5 -131.5z" />
<glyph unicode="&#xf22b;" horiz-adv-x="2048" d="M2029 685q19 -19 19 -45t-19 -45l-294 -294q-9 -10 -22.5 -10t-22.5 10l-45 45q-10 9 -10 22.5t10 22.5l185 185h-294v-224q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v224h-131q-12 -119 -67 -226t-139 -183.5t-196.5 -121.5t-234.5 -45q-180 0 -330.5 91t-234.5 247 t-74 337q8 162 94 300t226.5 219.5t302.5 85.5q166 4 310.5 -71.5t235.5 -208.5t107 -296h131v224q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-224h294l-185 185q-10 9 -10 22.5t10 22.5l45 45q9 10 22.5 10t22.5 -10zM640 128q104 0 198.5 40.5t163.5 109.5t109.5 163.5 t40.5 198.5t-40.5 198.5t-109.5 163.5t-163.5 109.5t-198.5 40.5t-198.5 -40.5t-163.5 -109.5t-109.5 -163.5t-40.5 -198.5t40.5 -198.5t109.5 -163.5t163.5 -109.5t198.5 -40.5z" />
<glyph unicode="&#xf22b;" horiz-adv-x="2048" d="M1901 621q19 -19 19 -45t-19 -45l-294 -294q-9 -10 -22.5 -10t-22.5 10l-45 45q-10 9 -10 22.5t10 22.5l185 185h-294v-224q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v224h-132q-24 -217 -187.5 -364.5t-384.5 -147.5q-167 0 -306 87t-212 236t-54 319q15 133 88 245.5 t188 182t249 80.5q155 12 292 -52.5t224 -186t103 -271.5h132v224q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-224h294l-185 185q-10 9 -10 22.5t10 22.5l45 45q9 10 22.5 10t22.5 -10zM576 128q185 0 316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5 t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" />
<glyph unicode="&#xf22c;" horiz-adv-x="1280" d="M1152 960q0 -221 -147.5 -384.5t-364.5 -187.5v-612q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v612q-217 24 -364.5 187.5t-147.5 384.5q0 117 45.5 223.5t123 184t184 123t223.5 45.5t223.5 -45.5t184 -123t123 -184t45.5 -223.5zM576 512q185 0 316.5 131.5 t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" />
<glyph unicode="&#xf22d;" horiz-adv-x="1792" />
<glyph unicode="&#xf22d;" horiz-adv-x="1280" d="M1024 576q0 185 -131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5zM1152 576q0 -117 -45.5 -223.5t-123 -184t-184 -123t-223.5 -45.5t-223.5 45.5t-184 123t-123 184t-45.5 223.5t45.5 223.5t123 184t184 123 t223.5 45.5t223.5 -45.5t184 -123t123 -184t45.5 -223.5z" />
<glyph unicode="&#xf22e;" horiz-adv-x="1792" />
<glyph unicode="&#xf22f;" horiz-adv-x="1792" />
<glyph unicode="&#xf230;" d="M1451 1408q35 0 60 -25t25 -60v-1366q0 -35 -25 -60t-60 -25h-391v595h199l30 232h-229v148q0 56 23.5 84t91.5 28l122 1v207q-63 9 -178 9q-136 0 -217.5 -80t-81.5 -226v-171h-200v-232h200v-595h-735q-35 0 -60 25t-25 60v1366q0 35 25 60t60 25h1366z" />
@ -556,10 +556,85 @@
<glyph unicode="&#xf238;" d="M1088 1536q185 0 316.5 -93.5t131.5 -226.5v-896q0 -130 -125.5 -222t-305.5 -97l213 -202q16 -15 8 -35t-30 -20h-1056q-22 0 -30 20t8 35l213 202q-180 5 -305.5 97t-125.5 222v896q0 133 131.5 226.5t316.5 93.5h640zM768 192q80 0 136 56t56 136t-56 136t-136 56 t-136 -56t-56 -136t56 -136t136 -56zM1344 768v512h-1152v-512h1152z" />
<glyph unicode="&#xf239;" d="M1088 1536q185 0 316.5 -93.5t131.5 -226.5v-896q0 -130 -125.5 -222t-305.5 -97l213 -202q16 -15 8 -35t-30 -20h-1056q-22 0 -30 20t8 35l213 202q-180 5 -305.5 97t-125.5 222v896q0 133 131.5 226.5t316.5 93.5h640zM288 224q66 0 113 47t47 113t-47 113t-113 47 t-113 -47t-47 -113t47 -113t113 -47zM704 768v512h-544v-512h544zM1248 224q66 0 113 47t47 113t-47 113t-113 47t-113 -47t-47 -113t47 -113t113 -47zM1408 768v512h-576v-512h576z" />
<glyph unicode="&#xf23a;" horiz-adv-x="1792" d="M1792 204v-209h-642v209h134v926h-6l-314 -1135h-243l-310 1135h-8v-926h135v-209h-538v209h69q21 0 43 19.5t22 37.5v881q0 18 -22 40t-43 22h-69v209h672l221 -821h6l223 821h670v-209h-71q-19 0 -41 -22t-22 -40v-881q0 -18 21.5 -37.5t41.5 -19.5h71z" />
<glyph unicode="&#xf23b;" horiz-adv-x="1792" />
<glyph unicode="&#xf23c;" horiz-adv-x="1792" />
<glyph unicode="&#xf23d;" horiz-adv-x="1792" />
<glyph unicode="&#xf23e;" horiz-adv-x="1792" />
<glyph unicode="&#xf23b;" d="M809 532l266 499h-112l-157 -312q-24 -48 -44 -92l-42 92l-155 312h-120l263 -493v-324h101v318zM1536 1408v-1536h-1536v1536h1536z" />
<glyph unicode="&#xf23c;" horiz-adv-x="2296" d="M478 -139q-8 -16 -27 -34.5t-37 -25.5q-25 -9 -51.5 3.5t-28.5 31.5q-1 22 40 55t68 38q23 4 34 -21.5t2 -46.5zM1819 -139q7 -16 26 -34.5t38 -25.5q25 -9 51.5 3.5t27.5 31.5q2 22 -39.5 55t-68.5 38q-22 4 -33 -21.5t-2 -46.5zM1867 -30q13 -27 56.5 -59.5t77.5 -41.5 q45 -13 82 4.5t37 50.5q0 46 -67.5 100.5t-115.5 59.5q-40 5 -63.5 -37.5t-6.5 -76.5zM428 -30q-13 -27 -56 -59.5t-77 -41.5q-45 -13 -82 4.5t-37 50.5q0 46 67.5 100.5t115.5 59.5q40 5 63 -37.5t6 -76.5zM1158 1094h1q-41 0 -76 -15q27 -8 44 -30.5t17 -49.5 q0 -35 -27 -60t-65 -25q-52 0 -80 43q-5 -23 -5 -42q0 -74 56 -126.5t135 -52.5q80 0 136 52.5t56 126.5t-56 126.5t-136 52.5zM1462 1312q-99 109 -220.5 131.5t-245.5 -44.5q27 60 82.5 96.5t118 39.5t121.5 -17t99.5 -74.5t44.5 -131.5zM2212 73q8 -11 -11 -42 q7 -23 7 -40q1 -56 -44.5 -112.5t-109.5 -91.5t-118 -37q-48 -2 -92 21.5t-66 65.5q-687 -25 -1259 0q-23 -41 -66.5 -65t-92.5 -22q-86 3 -179.5 80.5t-92.5 160.5q2 22 7 40q-19 31 -11 42q6 10 31 1q14 22 41 51q-7 29 2 38q11 10 39 -4q29 20 59 34q0 29 13 37 q23 12 51 -16q35 5 61 -2q18 -4 38 -19v73q-11 0 -18 2q-53 10 -97 44.5t-55 87.5q-9 38 0 81q15 62 93 95q2 17 19 35.5t36 23.5t33 -7.5t19 -30.5h13q46 -5 60 -23q3 -3 5 -7q10 1 30.5 3.5t30.5 3.5q-15 11 -30 17q-23 40 -91 43q0 6 1 10q-62 2 -118.5 18.5t-84.5 47.5 q-32 36 -42.5 92t-2.5 112q16 126 90 179q23 16 52 4.5t32 -40.5q0 -1 1.5 -14t2.5 -21t3 -20t5.5 -19t8.5 -10q27 -14 76 -12q48 46 98 74q-40 4 -162 -14l47 46q61 58 163 111q145 73 282 86q-20 8 -41 15.5t-47 14t-42.5 10.5t-47.5 11t-43 10q595 126 904 -139 q98 -84 158 -222q85 -10 121 9h1q5 3 8.5 10t5.5 19t3 19.5t3 21.5l1 14q3 28 32 40t52 -5q73 -52 91 -178q7 -57 -3.5 -113t-42.5 -91q-28 -32 -83.5 -48.5t-115.5 -18.5v-10q-71 -2 -95 -43q-14 -5 -31 -17q11 -1 32 -3.5t30 -3.5q1 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" />
<glyph unicode="&#xf23d;" horiz-adv-x="2304" d="M1524 -25q0 -68 -48 -116t-116 -48t-116.5 48t-48.5 116t48.5 116.5t116.5 48.5t116 -48.5t48 -116.5zM775 -25q0 -68 -48.5 -116t-116.5 -48t-116 48t-48 116t48 116.5t116 48.5t116.5 -48.5t48.5 -116.5zM0 1469q57 -60 110.5 -104.5t121 -82t136 -63t166 -45.5 t200 -31.5t250 -18.5t304 -9.5t372.5 -2.5q139 0 244.5 -5t181 -16.5t124 -27.5t71 -39.5t24 -51.5t-19.5 -64t-56.5 -76.5t-89.5 -91t-116 -104.5t-139 -119q-185 -157 -286 -247q29 51 76.5 109t94 105.5t94.5 98.5t83 91.5t54 80.5t13 70t-45.5 55.5t-116.5 41t-204 23.5 t-304 5q-168 -2 -314 6t-256 23t-204.5 41t-159.5 51.5t-122.5 62.5t-91.5 66.5t-68 71.5t-50.5 69.5t-40 68t-36.5 59.5z" />
<glyph unicode="&#xf23e;" horiz-adv-x="1792" d="M896 1472q-169 0 -323 -66t-265.5 -177.5t-177.5 -265.5t-66 -323t66 -323t177.5 -265.5t265.5 -177.5t323 -66t323 66t265.5 177.5t177.5 265.5t66 323t-66 323t-177.5 265.5t-265.5 177.5t-323 66zM896 1536q182 0 348 -71t286 -191t191 -286t71 -348t-71 -348 t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71zM496 704q16 0 16 -16v-480q0 -16 -16 -16h-32q-16 0 -16 16v480q0 16 16 16h32zM896 640q53 0 90.5 -37.5t37.5 -90.5q0 -35 -17.5 -64t-46.5 -46v-114q0 -14 -9 -23 t-23 -9h-64q-14 0 -23 9t-9 23v114q-29 17 -46.5 46t-17.5 64q0 53 37.5 90.5t90.5 37.5zM896 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103zM544 928v-96 q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v96q0 93 65.5 158.5t158.5 65.5t158.5 -65.5t65.5 -158.5v-96q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v96q0 146 -103 249t-249 103t-249 -103t-103 -249zM1408 192v512q0 26 -19 45t-45 19h-896q-26 0 -45 -19t-19 -45v-512 q0 -26 19 -45t45 -19h896q26 0 45 19t19 45z" />
<glyph unicode="&#xf240;" horiz-adv-x="2304" d="M1920 1024v-768h-1664v768h1664zM2048 448h128v384h-128v288q0 14 -9 23t-23 9h-1856q-14 0 -23 -9t-9 -23v-960q0 -14 9 -23t23 -9h1856q14 0 23 9t9 23v288zM2304 832v-384q0 -53 -37.5 -90.5t-90.5 -37.5v-160q0 -66 -47 -113t-113 -47h-1856q-66 0 -113 47t-47 113 v960q0 66 47 113t113 47h1856q66 0 113 -47t47 -113v-160q53 0 90.5 -37.5t37.5 -90.5z" />
<glyph unicode="&#xf241;" horiz-adv-x="2304" d="M256 256v768h1280v-768h-1280zM2176 960q53 0 90.5 -37.5t37.5 -90.5v-384q0 -53 -37.5 -90.5t-90.5 -37.5v-160q0 -66 -47 -113t-113 -47h-1856q-66 0 -113 47t-47 113v960q0 66 47 113t113 47h1856q66 0 113 -47t47 -113v-160zM2176 448v384h-128v288q0 14 -9 23t-23 9 h-1856q-14 0 -23 -9t-9 -23v-960q0 -14 9 -23t23 -9h1856q14 0 23 9t9 23v288h128z" />
<glyph unicode="&#xf242;" horiz-adv-x="2304" d="M256 256v768h896v-768h-896zM2176 960q53 0 90.5 -37.5t37.5 -90.5v-384q0 -53 -37.5 -90.5t-90.5 -37.5v-160q0 -66 -47 -113t-113 -47h-1856q-66 0 -113 47t-47 113v960q0 66 47 113t113 47h1856q66 0 113 -47t47 -113v-160zM2176 448v384h-128v288q0 14 -9 23t-23 9 h-1856q-14 0 -23 -9t-9 -23v-960q0 -14 9 -23t23 -9h1856q14 0 23 9t9 23v288h128z" />
<glyph unicode="&#xf243;" horiz-adv-x="2304" d="M256 256v768h512v-768h-512zM2176 960q53 0 90.5 -37.5t37.5 -90.5v-384q0 -53 -37.5 -90.5t-90.5 -37.5v-160q0 -66 -47 -113t-113 -47h-1856q-66 0 -113 47t-47 113v960q0 66 47 113t113 47h1856q66 0 113 -47t47 -113v-160zM2176 448v384h-128v288q0 14 -9 23t-23 9 h-1856q-14 0 -23 -9t-9 -23v-960q0 -14 9 -23t23 -9h1856q14 0 23 9t9 23v288h128z" />
<glyph unicode="&#xf244;" horiz-adv-x="2304" d="M2176 960q53 0 90.5 -37.5t37.5 -90.5v-384q0 -53 -37.5 -90.5t-90.5 -37.5v-160q0 -66 -47 -113t-113 -47h-1856q-66 0 -113 47t-47 113v960q0 66 47 113t113 47h1856q66 0 113 -47t47 -113v-160zM2176 448v384h-128v288q0 14 -9 23t-23 9h-1856q-14 0 -23 -9t-9 -23 v-960q0 -14 9 -23t23 -9h1856q14 0 23 9t9 23v288h128z" />
<glyph unicode="&#xf245;" horiz-adv-x="1280" d="M1133 493q31 -30 14 -69q-17 -40 -59 -40h-382l201 -476q10 -25 0 -49t-34 -35l-177 -75q-25 -10 -49 0t-35 34l-191 452l-312 -312q-19 -19 -45 -19q-12 0 -24 5q-40 17 -40 59v1504q0 42 40 59q12 5 24 5q27 0 45 -19z" />
<glyph unicode="&#xf246;" horiz-adv-x="1024" d="M832 1408q-320 0 -320 -224v-416h128v-128h-128v-544q0 -224 320 -224h64v-128h-64q-272 0 -384 146q-112 -146 -384 -146h-64v128h64q320 0 320 224v544h-128v128h128v416q0 224 -320 224h-64v128h64q272 0 384 -146q112 146 384 146h64v-128h-64z" />
<glyph unicode="&#xf247;" horiz-adv-x="2048" d="M2048 1152h-128v-1024h128v-384h-384v128h-1280v-128h-384v384h128v1024h-128v384h384v-128h1280v128h384v-384zM1792 1408v-128h128v128h-128zM128 1408v-128h128v128h-128zM256 -128v128h-128v-128h128zM1664 0v128h128v1024h-128v128h-1280v-128h-128v-1024h128v-128 h1280zM1920 -128v128h-128v-128h128zM1280 896h384v-768h-896v256h-384v768h896v-256zM512 512h640v512h-640v-512zM1536 256v512h-256v-384h-384v-128h640z" />
<glyph unicode="&#xf248;" horiz-adv-x="2304" d="M2304 768h-128v-640h128v-384h-384v128h-896v-128h-384v384h128v128h-384v-128h-384v384h128v640h-128v384h384v-128h896v128h384v-384h-128v-128h384v128h384v-384zM2048 1024v-128h128v128h-128zM1408 1408v-128h128v128h-128zM128 1408v-128h128v128h-128zM256 256 v128h-128v-128h128zM1536 384h-128v-128h128v128zM384 384h896v128h128v640h-128v128h-896v-128h-128v-640h128v-128zM896 -128v128h-128v-128h128zM2176 -128v128h-128v-128h128zM2048 128v640h-128v128h-384v-384h128v-384h-384v128h-384v-128h128v-128h896v128h128z" />
<glyph unicode="&#xf249;" d="M1024 288v-416h-928q-40 0 -68 28t-28 68v1344q0 40 28 68t68 28h1344q40 0 68 -28t28 -68v-928h-416q-40 0 -68 -28t-28 -68zM1152 256h381q-15 -82 -65 -132l-184 -184q-50 -50 -132 -65v381z" />
<glyph unicode="&#xf24a;" d="M1400 256h-248v-248q29 10 41 22l185 185q12 12 22 41zM1120 384h288v896h-1280v-1280h896v288q0 40 28 68t68 28zM1536 1312v-1024q0 -40 -20 -88t-48 -76l-184 -184q-28 -28 -76 -48t-88 -20h-1024q-40 0 -68 28t-28 68v1344q0 40 28 68t68 28h1344q40 0 68 -28t28 -68 z" />
<glyph unicode="&#xf24b;" horiz-adv-x="2304" d="M1951 538q0 -26 -15.5 -44.5t-38.5 -23.5q-8 -2 -18 -2h-153v140h153q10 0 18 -2q23 -5 38.5 -23.5t15.5 -44.5zM1933 751q0 -25 -15 -42t-38 -21q-3 -1 -15 -1h-139v129h139q3 0 8.5 -0.5t6.5 -0.5q23 -4 38 -21.5t15 -42.5zM728 587v308h-228v-308q0 -58 -38 -94.5 t-105 -36.5q-108 0 -229 59v-112q53 -15 121 -23t109 -9l42 -1q328 0 328 217zM1442 403v113q-99 -52 -200 -59q-108 -8 -169 41t-61 142t61 142t169 41q101 -7 200 -58v112q-48 12 -100 19.5t-80 9.5l-28 2q-127 6 -218.5 -14t-140.5 -60t-71 -88t-22 -106t22 -106t71 -88 t140.5 -60t218.5 -14q101 4 208 31zM2176 518q0 54 -43 88.5t-109 39.5v3q57 8 89 41.5t32 79.5q0 55 -41 88t-107 36q-3 0 -12 0.5t-14 0.5h-455v-510h491q74 0 121.5 36.5t47.5 96.5zM2304 1280v-1280q0 -52 -38 -90t-90 -38h-2048q-52 0 -90 38t-38 90v1280q0 52 38 90 t90 38h2048q52 0 90 -38t38 -90z" />
<glyph unicode="&#xf24c;" horiz-adv-x="2304" d="M858 295v693q-106 -41 -172 -135.5t-66 -211.5t66 -211.5t172 -134.5zM1362 641q0 117 -66 211.5t-172 135.5v-694q106 41 172 135.5t66 211.5zM1577 641q0 -159 -78.5 -294t-213.5 -213.5t-294 -78.5q-119 0 -227.5 46.5t-187 125t-125 187t-46.5 227.5q0 159 78.5 294 t213.5 213.5t294 78.5t294 -78.5t213.5 -213.5t78.5 -294zM1960 634q0 139 -55.5 261.5t-147.5 205.5t-213.5 131t-252.5 48h-301q-176 0 -323.5 -81t-235 -230t-87.5 -335q0 -171 87 -317.5t236 -231.5t323 -85h301q129 0 251.5 50.5t214.5 135t147.5 202.5t55.5 246z M2304 1280v-1280q0 -52 -38 -90t-90 -38h-2048q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h2048q52 0 90 -38t38 -90z" />
<glyph unicode="&#xf24d;" horiz-adv-x="1792" d="M1664 -96v1088q0 13 -9.5 22.5t-22.5 9.5h-1088q-13 0 -22.5 -9.5t-9.5 -22.5v-1088q0 -13 9.5 -22.5t22.5 -9.5h1088q13 0 22.5 9.5t9.5 22.5zM1792 992v-1088q0 -66 -47 -113t-113 -47h-1088q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1088q66 0 113 -47t47 -113 zM1408 1376v-160h-128v160q0 13 -9.5 22.5t-22.5 9.5h-1088q-13 0 -22.5 -9.5t-9.5 -22.5v-1088q0 -13 9.5 -22.5t22.5 -9.5h160v-128h-160q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1088q66 0 113 -47t47 -113z" />
<glyph unicode="&#xf24e;" horiz-adv-x="2304" d="M1728 1088l-384 -704h768zM448 1088l-384 -704h768zM1269 1280q-14 -40 -45.5 -71.5t-71.5 -45.5v-1291h608q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-1344q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h608v1291q-40 14 -71.5 45.5t-45.5 71.5h-491q-14 0 -23 9t-9 23v64 q0 14 9 23t23 9h491q21 57 70 92.5t111 35.5t111 -35.5t70 -92.5h491q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-491zM1088 1264q33 0 56.5 23.5t23.5 56.5t-23.5 56.5t-56.5 23.5t-56.5 -23.5t-23.5 -56.5t23.5 -56.5t56.5 -23.5zM2176 384q0 -73 -46.5 -131t-117.5 -91 t-144.5 -49.5t-139.5 -16.5t-139.5 16.5t-144.5 49.5t-117.5 91t-46.5 131q0 11 35 81t92 174.5t107 195.5t102 184t56 100q18 33 56 33t56 -33q4 -7 56 -100t102 -184t107 -195.5t92 -174.5t35 -81zM896 384q0 -73 -46.5 -131t-117.5 -91t-144.5 -49.5t-139.5 -16.5 t-139.5 16.5t-144.5 49.5t-117.5 91t-46.5 131q0 11 35 81t92 174.5t107 195.5t102 184t56 100q18 33 56 33t56 -33q4 -7 56 -100t102 -184t107 -195.5t92 -174.5t35 -81z" />
<glyph unicode="&#xf250;" d="M1408 1408q0 -261 -106.5 -461.5t-266.5 -306.5q160 -106 266.5 -306.5t106.5 -461.5h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-1472q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96q0 261 106.5 461.5t266.5 306.5q-160 106 -266.5 306.5t-106.5 461.5h-96q-14 0 -23 9 t-9 23v64q0 14 9 23t23 9h1472q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-96zM874 700q77 29 149 92.5t129.5 152.5t92.5 210t35 253h-1024q0 -132 35 -253t92.5 -210t129.5 -152.5t149 -92.5q19 -7 30.5 -23.5t11.5 -36.5t-11.5 -36.5t-30.5 -23.5q-77 -29 -149 -92.5 t-129.5 -152.5t-92.5 -210t-35 -253h1024q0 132 -35 253t-92.5 210t-129.5 152.5t-149 92.5q-19 7 -30.5 23.5t-11.5 36.5t11.5 36.5t30.5 23.5z" />
<glyph unicode="&#xf251;" d="M1408 1408q0 -261 -106.5 -461.5t-266.5 -306.5q160 -106 266.5 -306.5t106.5 -461.5h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-1472q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96q0 261 106.5 461.5t266.5 306.5q-160 106 -266.5 306.5t-106.5 461.5h-96q-14 0 -23 9 t-9 23v64q0 14 9 23t23 9h1472q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-96zM1280 1408h-1024q0 -66 9 -128h1006q9 61 9 128zM1280 -128q0 130 -34 249.5t-90.5 208t-126.5 152t-146 94.5h-230q-76 -31 -146 -94.5t-126.5 -152t-90.5 -208t-34 -249.5h1024z" />
<glyph unicode="&#xf252;" d="M1408 1408q0 -261 -106.5 -461.5t-266.5 -306.5q160 -106 266.5 -306.5t106.5 -461.5h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-1472q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96q0 261 106.5 461.5t266.5 306.5q-160 106 -266.5 306.5t-106.5 461.5h-96q-14 0 -23 9 t-9 23v64q0 14 9 23t23 9h1472q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-96zM1280 1408h-1024q0 -206 85 -384h854q85 178 85 384zM1223 192q-54 141 -145.5 241.5t-194.5 142.5h-230q-103 -42 -194.5 -142.5t-145.5 -241.5h910z" />
<glyph unicode="&#xf253;" d="M1408 1408q0 -261 -106.5 -461.5t-266.5 -306.5q160 -106 266.5 -306.5t106.5 -461.5h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-1472q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96q0 261 106.5 461.5t266.5 306.5q-160 106 -266.5 306.5t-106.5 461.5h-96q-14 0 -23 9 t-9 23v64q0 14 9 23t23 9h1472q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-96zM874 700q77 29 149 92.5t129.5 152.5t92.5 210t35 253h-1024q0 -132 35 -253t92.5 -210t129.5 -152.5t149 -92.5q19 -7 30.5 -23.5t11.5 -36.5t-11.5 -36.5t-30.5 -23.5q-137 -51 -244 -196 h700q-107 145 -244 196q-19 7 -30.5 23.5t-11.5 36.5t11.5 36.5t30.5 23.5z" />
<glyph unicode="&#xf254;" d="M1504 -64q14 0 23 -9t9 -23v-128q0 -14 -9 -23t-23 -9h-1472q-14 0 -23 9t-9 23v128q0 14 9 23t23 9h1472zM130 0q3 55 16 107t30 95t46 87t53.5 76t64.5 69.5t66 60t70.5 55t66.5 47.5t65 43q-43 28 -65 43t-66.5 47.5t-70.5 55t-66 60t-64.5 69.5t-53.5 76t-46 87 t-30 95t-16 107h1276q-3 -55 -16 -107t-30 -95t-46 -87t-53.5 -76t-64.5 -69.5t-66 -60t-70.5 -55t-66.5 -47.5t-65 -43q43 -28 65 -43t66.5 -47.5t70.5 -55t66 -60t64.5 -69.5t53.5 -76t46 -87t30 -95t16 -107h-1276zM1504 1536q14 0 23 -9t9 -23v-128q0 -14 -9 -23t-23 -9 h-1472q-14 0 -23 9t-9 23v128q0 14 9 23t23 9h1472z" />
<glyph unicode="&#xf255;" d="M768 1152q-53 0 -90.5 -37.5t-37.5 -90.5v-128h-32v93q0 48 -32 81.5t-80 33.5q-46 0 -79 -33t-33 -79v-429l-32 30v172q0 48 -32 81.5t-80 33.5q-46 0 -79 -33t-33 -79v-224q0 -47 35 -82l310 -296q39 -39 39 -102q0 -26 19 -45t45 -19h640q26 0 45 19t19 45v25 q0 41 10 77l108 436q10 36 10 77v246q0 48 -32 81.5t-80 33.5q-46 0 -79 -33t-33 -79v-32h-32v125q0 40 -25 72.5t-64 40.5q-14 2 -23 2q-46 0 -79 -33t-33 -79v-128h-32v122q0 51 -32.5 89.5t-82.5 43.5q-5 1 -13 1zM768 1280q84 0 149 -50q57 34 123 34q59 0 111 -27 t86 -76q27 7 59 7q100 0 170 -71.5t70 -171.5v-246q0 -51 -13 -108l-109 -436q-6 -24 -6 -71q0 -80 -56 -136t-136 -56h-640q-84 0 -138 58.5t-54 142.5l-308 296q-76 73 -76 175v224q0 99 70.5 169.5t169.5 70.5q11 0 16 -1q6 95 75.5 160t164.5 65q52 0 98 -21 q72 69 174 69z" />
<glyph unicode="&#xf256;" horiz-adv-x="1792" d="M880 1408q-46 0 -79 -33t-33 -79v-656h-32v528q0 46 -33 79t-79 33t-79 -33t-33 -79v-528v-256l-154 205q-38 51 -102 51q-53 0 -90.5 -37.5t-37.5 -90.5q0 -43 26 -77l384 -512q38 -51 102 -51h688q34 0 61 22t34 56l76 405q5 32 5 59v498q0 46 -33 79t-79 33t-79 -33 t-33 -79v-272h-32v528q0 46 -33 79t-79 33t-79 -33t-33 -79v-528h-32v656q0 46 -33 79t-79 33zM880 1536q68 0 125.5 -35.5t88.5 -96.5q19 4 42 4q99 0 169.5 -70.5t70.5 -169.5v-17q105 6 180.5 -64t75.5 -175v-498q0 -40 -8 -83l-76 -404q-14 -79 -76.5 -131t-143.5 -52 h-688q-60 0 -114.5 27.5t-90.5 74.5l-384 512q-51 68 -51 154q0 106 75 181t181 75q78 0 128 -34v434q0 99 70.5 169.5t169.5 70.5q23 0 42 -4q31 61 88.5 96.5t125.5 35.5z" />
<glyph unicode="&#xf257;" horiz-adv-x="1792" d="M1073 -128h-177q-163 0 -226 141q-23 49 -23 102v5q-62 30 -98.5 88.5t-36.5 127.5q0 38 5 48h-261q-106 0 -181 75t-75 181t75 181t181 75h113l-44 17q-74 28 -119.5 93.5t-45.5 145.5q0 106 75 181t181 75q46 0 91 -17l628 -239h401q106 0 181 -75t75 -181v-668 q0 -88 -54 -157.5t-140 -90.5l-339 -85q-92 -23 -186 -23zM1024 583l-155 -71l-163 -74q-30 -14 -48 -41.5t-18 -60.5q0 -46 33 -79t79 -33q26 0 46 10l338 154q-49 10 -80.5 50t-31.5 90v55zM1344 272q0 46 -33 79t-79 33q-26 0 -46 -10l-290 -132q-28 -13 -37 -17 t-30.5 -17t-29.5 -23.5t-16 -29t-8 -40.5q0 -50 31.5 -82t81.5 -32q20 0 38 9l352 160q30 14 48 41.5t18 60.5zM1112 1024l-650 248q-24 8 -46 8q-53 0 -90.5 -37.5t-37.5 -90.5q0 -40 22.5 -73t59.5 -47l526 -200v-64h-640q-53 0 -90.5 -37.5t-37.5 -90.5t37.5 -90.5 t90.5 -37.5h535l233 106v198q0 63 46 106l111 102h-69zM1073 0q82 0 155 19l339 85q43 11 70 45.5t27 78.5v668q0 53 -37.5 90.5t-90.5 37.5h-308l-136 -126q-36 -33 -36 -82v-296q0 -46 33 -77t79 -31t79 35t33 81v208h32v-208q0 -70 -57 -114q52 -8 86.5 -48.5t34.5 -93.5 q0 -42 -23 -78t-61 -53l-310 -141h91z" />
<glyph unicode="&#xf258;" horiz-adv-x="2048" d="M1151 1536q61 0 116 -28t91 -77l572 -781q118 -159 118 -359v-355q0 -80 -56 -136t-136 -56h-384q-80 0 -136 56t-56 136v177l-286 143h-546q-80 0 -136 56t-56 136v32q0 119 84.5 203.5t203.5 84.5h420l42 128h-686q-100 0 -173.5 67.5t-81.5 166.5q-65 79 -65 182v32 q0 80 56 136t136 56h959zM1920 -64v355q0 157 -93 284l-573 781q-39 52 -103 52h-959q-26 0 -45 -19t-19 -45q0 -32 1.5 -49.5t9.5 -40.5t25 -43q10 31 35.5 50t56.5 19h832v-32h-832q-26 0 -45 -19t-19 -45q0 -44 3 -58q8 -44 44 -73t81 -29h640h91q40 0 68 -28t28 -68 q0 -15 -5 -30l-64 -192q-10 -29 -35 -47.5t-56 -18.5h-443q-66 0 -113 -47t-47 -113v-32q0 -26 19 -45t45 -19h561q16 0 29 -7l317 -158q24 -13 38.5 -36t14.5 -50v-197q0 -26 19 -45t45 -19h384q26 0 45 19t19 45z" />
<glyph unicode="&#xf259;" horiz-adv-x="2048" d="M816 1408q-48 0 -79.5 -34t-31.5 -82q0 -14 3 -28l150 -624h-26l-116 482q-9 38 -39.5 62t-69.5 24q-47 0 -79 -34t-32 -81q0 -11 4 -29q3 -13 39 -161t68 -282t32 -138v-227l-307 230q-34 26 -77 26q-52 0 -89.5 -36.5t-37.5 -88.5q0 -67 56 -110l507 -379 q34 -26 76 -26h694q33 0 59 20.5t34 52.5l100 401q8 30 10 88t9 86l116 478q3 12 3 26q0 46 -33 79t-80 33q-38 0 -69 -25.5t-40 -62.5l-99 -408h-26l132 547q3 14 3 28q0 47 -32 80t-80 33q-38 0 -68.5 -24t-39.5 -62l-145 -602h-127l-164 682q-9 38 -39.5 62t-68.5 24z M1461 -256h-694q-85 0 -153 51l-507 380q-50 38 -78.5 94t-28.5 118q0 105 75 179t180 74q25 0 49.5 -5.5t41.5 -11t41 -20.5t35 -23t38.5 -29.5t37.5 -28.5l-123 512q-7 35 -7 59q0 93 60 162t152 79q14 87 80.5 144.5t155.5 57.5q83 0 148 -51.5t85 -132.5l103 -428 l83 348q20 81 85 132.5t148 51.5q87 0 152.5 -54t82.5 -139q93 -10 155 -78t62 -161q0 -30 -7 -57l-116 -477q-5 -22 -5 -67q0 -51 -13 -108l-101 -401q-19 -75 -79.5 -122.5t-137.5 -47.5z" />
<glyph unicode="&#xf25a;" horiz-adv-x="1792" d="M640 1408q-53 0 -90.5 -37.5t-37.5 -90.5v-512v-384l-151 202q-41 54 -107 54q-52 0 -89 -38t-37 -90q0 -43 26 -77l384 -512q38 -51 102 -51h718q22 0 39.5 13.5t22.5 34.5l92 368q24 96 24 194v217q0 41 -28 71t-68 30t-68 -28t-28 -68h-32v61q0 48 -32 81.5t-80 33.5 q-46 0 -79 -33t-33 -79v-64h-32v90q0 55 -37 94.5t-91 39.5q-53 0 -90.5 -37.5t-37.5 -90.5v-96h-32v570q0 55 -37 94.5t-91 39.5zM640 1536q107 0 181.5 -77.5t74.5 -184.5v-220q22 2 32 2q99 0 173 -69q47 21 99 21q113 0 184 -87q27 7 56 7q94 0 159 -67.5t65 -161.5 v-217q0 -116 -28 -225l-92 -368q-16 -64 -68 -104.5t-118 -40.5h-718q-60 0 -114.5 27.5t-90.5 74.5l-384 512q-51 68 -51 154q0 105 74.5 180.5t179.5 75.5q71 0 130 -35v547q0 106 75 181t181 75zM768 128v384h-32v-384h32zM1024 128v384h-32v-384h32zM1280 128v384h-32 v-384h32z" />
<glyph unicode="&#xf25b;" d="M1288 889q60 0 107 -23q141 -63 141 -226v-177q0 -94 -23 -186l-85 -339q-21 -86 -90.5 -140t-157.5 -54h-668q-106 0 -181 75t-75 181v401l-239 628q-17 45 -17 91q0 106 75 181t181 75q80 0 145.5 -45.5t93.5 -119.5l17 -44v113q0 106 75 181t181 75t181 -75t75 -181 v-261q27 5 48 5q69 0 127.5 -36.5t88.5 -98.5zM1072 896q-33 0 -60.5 -18t-41.5 -48l-74 -163l-71 -155h55q50 0 90 -31.5t50 -80.5l154 338q10 20 10 46q0 46 -33 79t-79 33zM1293 761q-22 0 -40.5 -8t-29 -16t-23.5 -29.5t-17 -30.5t-17 -37l-132 -290q-10 -20 -10 -46 q0 -46 33 -79t79 -33q33 0 60.5 18t41.5 48l160 352q9 18 9 38q0 50 -32 81.5t-82 31.5zM128 1120q0 -22 8 -46l248 -650v-69l102 111q43 46 106 46h198l106 233v535q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5v-640h-64l-200 526q-14 37 -47 59.5t-73 22.5 q-53 0 -90.5 -37.5t-37.5 -90.5zM1180 -128q44 0 78.5 27t45.5 70l85 339q19 73 19 155v91l-141 -310q-17 -38 -53 -61t-78 -23q-53 0 -93.5 34.5t-48.5 86.5q-44 -57 -114 -57h-208v32h208q46 0 81 33t35 79t-31 79t-77 33h-296q-49 0 -82 -36l-126 -136v-308 q0 -53 37.5 -90.5t90.5 -37.5h668z" />
<glyph unicode="&#xf25c;" horiz-adv-x="1973" d="M857 992v-117q0 -13 -9.5 -22t-22.5 -9h-298v-812q0 -13 -9 -22.5t-22 -9.5h-135q-13 0 -22.5 9t-9.5 23v812h-297q-13 0 -22.5 9t-9.5 22v117q0 14 9 23t23 9h793q13 0 22.5 -9.5t9.5 -22.5zM1895 995l77 -961q1 -13 -8 -24q-10 -10 -23 -10h-134q-12 0 -21 8.5 t-10 20.5l-46 588l-189 -425q-8 -19 -29 -19h-120q-20 0 -29 19l-188 427l-45 -590q-1 -12 -10 -20.5t-21 -8.5h-135q-13 0 -23 10q-9 10 -9 24l78 961q1 12 10 20.5t21 8.5h142q20 0 29 -19l220 -520q10 -24 20 -51q3 7 9.5 24.5t10.5 26.5l221 520q9 19 29 19h141 q13 0 22 -8.5t10 -20.5z" />
<glyph unicode="&#xf25d;" horiz-adv-x="1792" d="M1042 833q0 88 -60 121q-33 18 -117 18h-123v-281h162q66 0 102 37t36 105zM1094 548l205 -373q8 -17 -1 -31q-8 -16 -27 -16h-152q-20 0 -28 17l-194 365h-155v-350q0 -14 -9 -23t-23 -9h-134q-14 0 -23 9t-9 23v960q0 14 9 23t23 9h294q128 0 190 -24q85 -31 134 -109 t49 -180q0 -92 -42.5 -165.5t-115.5 -109.5q6 -10 9 -16zM896 1376q-150 0 -286 -58.5t-234.5 -157t-157 -234.5t-58.5 -286t58.5 -286t157 -234.5t234.5 -157t286 -58.5t286 58.5t234.5 157t157 234.5t58.5 286t-58.5 286t-157 234.5t-234.5 157t-286 58.5zM1792 640 q0 -182 -71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348z" />
<glyph unicode="&#xf25e;" horiz-adv-x="1792" d="M605 303q153 0 257 104q14 18 3 36l-45 82q-6 13 -24 17q-16 2 -27 -11l-4 -3q-4 -4 -11.5 -10t-17.5 -13t-23.5 -14.5t-28.5 -13.5t-33.5 -9.5t-37.5 -3.5q-76 0 -125 50t-49 127q0 76 48 125.5t122 49.5q37 0 71.5 -14t50.5 -28l16 -14q11 -11 26 -10q16 2 24 14l53 78 q13 20 -2 39q-3 4 -11 12t-30 23.5t-48.5 28t-67.5 22.5t-86 10q-148 0 -246 -96.5t-98 -240.5q0 -146 97 -241.5t247 -95.5zM1235 303q153 0 257 104q14 18 4 36l-45 82q-8 14 -25 17q-16 2 -27 -11l-4 -3q-4 -4 -11.5 -10t-17.5 -13t-23.5 -14.5t-28.5 -13.5t-33.5 -9.5 t-37.5 -3.5q-76 0 -125 50t-49 127q0 76 48 125.5t122 49.5q37 0 71.5 -14t50.5 -28l16 -14q11 -11 26 -10q16 2 24 14l53 78q13 20 -2 39q-3 4 -11 12t-30 23.5t-48.5 28t-67.5 22.5t-86 10q-147 0 -245.5 -96.5t-98.5 -240.5q0 -146 97 -241.5t247 -95.5zM896 1376 q-150 0 -286 -58.5t-234.5 -157t-157 -234.5t-58.5 -286t58.5 -286t157 -234.5t234.5 -157t286 -58.5t286 58.5t234.5 157t157 234.5t58.5 286t-58.5 286t-157 234.5t-234.5 157t-286 58.5zM896 1536q182 0 348 -71t286 -191t191 -286t71 -348t-71 -348t-191 -286t-286 -191 t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71z" />
<glyph unicode="&#xf260;" horiz-adv-x="2048" d="M736 736l384 -384l-384 -384l-672 672l672 672l168 -168l-96 -96l-72 72l-480 -480l480 -480l193 193l-289 287zM1312 1312l672 -672l-672 -672l-168 168l96 96l72 -72l480 480l-480 480l-193 -193l289 -287l-96 -96l-384 384z" />
<glyph unicode="&#xf261;" horiz-adv-x="1792" d="M717 182l271 271l-279 279l-88 -88l192 -191l-96 -96l-279 279l279 279l40 -40l87 87l-127 128l-454 -454zM1075 190l454 454l-454 454l-271 -271l279 -279l88 88l-192 191l96 96l279 -279l-279 -279l-40 40l-87 -88zM1792 640q0 -182 -71 -348t-191 -286t-286 -191 t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348z" />
<glyph unicode="&#xf262;" horiz-adv-x="2304" d="M651 539q0 -39 -27.5 -66.5t-65.5 -27.5q-39 0 -66.5 27.5t-27.5 66.5q0 38 27.5 65.5t66.5 27.5q38 0 65.5 -27.5t27.5 -65.5zM1805 540q0 -39 -27.5 -66.5t-66.5 -27.5t-66.5 27.5t-27.5 66.5t27.5 66t66.5 27t66.5 -27t27.5 -66zM765 539q0 79 -56.5 136t-136.5 57 t-136.5 -56.5t-56.5 -136.5t56.5 -136.5t136.5 -56.5t136.5 56.5t56.5 136.5zM1918 540q0 80 -56.5 136.5t-136.5 56.5q-79 0 -136 -56.5t-57 -136.5t56.5 -136.5t136.5 -56.5t136.5 56.5t56.5 136.5zM850 539q0 -116 -81.5 -197.5t-196.5 -81.5q-116 0 -197.5 82t-81.5 197 t82 196.5t197 81.5t196.5 -81.5t81.5 -196.5zM2004 540q0 -115 -81.5 -196.5t-197.5 -81.5q-115 0 -196.5 81.5t-81.5 196.5t81.5 196.5t196.5 81.5q116 0 197.5 -81.5t81.5 -196.5zM1040 537q0 191 -135.5 326.5t-326.5 135.5q-125 0 -231 -62t-168 -168.5t-62 -231.5 t62 -231.5t168 -168.5t231 -62q191 0 326.5 135.5t135.5 326.5zM1708 1110q-254 111 -556 111q-319 0 -573 -110q117 0 223 -45.5t182.5 -122.5t122 -183t45.5 -223q0 115 43.5 219.5t118 180.5t177.5 123t217 50zM2187 537q0 191 -135 326.5t-326 135.5t-326.5 -135.5 t-135.5 -326.5t135.5 -326.5t326.5 -135.5t326 135.5t135 326.5zM1921 1103h383q-44 -51 -75 -114.5t-40 -114.5q110 -151 110 -337q0 -156 -77 -288t-209 -208.5t-287 -76.5q-133 0 -249 56t-196 155q-47 -56 -129 -179q-11 22 -53.5 82.5t-74.5 97.5 q-80 -99 -196.5 -155.5t-249.5 -56.5q-155 0 -287 76.5t-209 208.5t-77 288q0 186 110 337q-9 51 -40 114.5t-75 114.5h365q149 100 355 156.5t432 56.5q224 0 421 -56t348 -157z" />
<glyph unicode="&#xf263;" horiz-adv-x="1280" d="M640 629q-188 0 -321 133t-133 320q0 188 133 321t321 133t321 -133t133 -321q0 -187 -133 -320t-321 -133zM640 1306q-92 0 -157.5 -65.5t-65.5 -158.5q0 -92 65.5 -157.5t157.5 -65.5t157.5 65.5t65.5 157.5q0 93 -65.5 158.5t-157.5 65.5zM1163 574q13 -27 15 -49.5 t-4.5 -40.5t-26.5 -38.5t-42.5 -37t-61.5 -41.5q-115 -73 -315 -94l73 -72l267 -267q30 -31 30 -74t-30 -73l-12 -13q-31 -30 -74 -30t-74 30q-67 68 -267 268l-267 -268q-31 -30 -74 -30t-73 30l-12 13q-31 30 -31 73t31 74l267 267l72 72q-203 21 -317 94 q-39 25 -61.5 41.5t-42.5 37t-26.5 38.5t-4.5 40.5t15 49.5q10 20 28 35t42 22t56 -2t65 -35q5 -4 15 -11t43 -24.5t69 -30.5t92 -24t113 -11q91 0 174 25.5t120 50.5l38 25q33 26 65 35t56 2t42 -22t28 -35z" />
<glyph unicode="&#xf264;" d="M927 956q0 -66 -46.5 -112.5t-112.5 -46.5t-112.5 46.5t-46.5 112.5t46.5 112.5t112.5 46.5t112.5 -46.5t46.5 -112.5zM1141 593q-10 20 -28 32t-47.5 9.5t-60.5 -27.5q-10 -8 -29 -20t-81 -32t-127 -20t-124 18t-86 36l-27 18q-31 25 -60.5 27.5t-47.5 -9.5t-28 -32 q-22 -45 -2 -74.5t87 -73.5q83 -53 226 -67l-51 -52q-142 -142 -191 -190q-22 -22 -22 -52.5t22 -52.5l9 -9q22 -22 52.5 -22t52.5 22l191 191q114 -115 191 -191q22 -22 52.5 -22t52.5 22l9 9q22 22 22 52.5t-22 52.5l-191 190l-52 52q141 14 225 67q67 44 87 73.5t-2 74.5 zM1092 956q0 134 -95 229t-229 95t-229 -95t-95 -229t95 -229t229 -95t229 95t95 229zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
<glyph unicode="&#xf265;" horiz-adv-x="1720" d="M1565 1408q65 0 110 -45.5t45 -110.5v-519q0 -176 -68 -336t-182.5 -275t-274 -182.5t-334.5 -67.5q-176 0 -335.5 67.5t-274.5 182.5t-183 275t-68 336v519q0 64 46 110t110 46h1409zM861 344q47 0 82 33l404 388q37 35 37 85q0 49 -34.5 83.5t-83.5 34.5q-47 0 -82 -33 l-323 -310l-323 310q-35 33 -81 33q-49 0 -83.5 -34.5t-34.5 -83.5q0 -51 36 -85l405 -388q33 -33 81 -33z" />
<glyph unicode="&#xf266;" horiz-adv-x="2304" d="M1494 -103l-295 695q-25 -49 -158.5 -305.5t-198.5 -389.5q-1 -1 -27.5 -0.5t-26.5 1.5q-82 193 -255.5 587t-259.5 596q-21 50 -66.5 107.5t-103.5 100.5t-102 43q0 5 -0.5 24t-0.5 27h583v-50q-39 -2 -79.5 -16t-66.5 -43t-10 -64q26 -59 216.5 -499t235.5 -540 q31 61 140 266.5t131 247.5q-19 39 -126 281t-136 295q-38 69 -201 71v50l513 -1v-47q-60 -2 -93.5 -25t-12.5 -69q33 -70 87 -189.5t86 -187.5q110 214 173 363q24 55 -10 79.5t-129 26.5q1 7 1 25v24q64 0 170.5 0.5t180 1t92.5 0.5v-49q-62 -2 -119 -33t-90 -81 l-213 -442q13 -33 127.5 -290t121.5 -274l441 1017q-14 38 -49.5 62.5t-65 31.5t-55.5 8v50l460 -4l1 -2l-1 -44q-139 -4 -201 -145q-526 -1216 -559 -1291h-49z" />
<glyph unicode="&#xf267;" horiz-adv-x="1792" d="M949 643q0 -26 -16.5 -45t-41.5 -19q-26 0 -45 16.5t-19 41.5q0 26 17 45t42 19t44 -16.5t19 -41.5zM964 585l350 581q-9 -8 -67.5 -62.5t-125.5 -116.5t-136.5 -127t-117 -110.5t-50.5 -51.5l-349 -580q7 7 67 62t126 116.5t136 127t117 111t50 50.5zM1611 640 q0 -201 -104 -371q-3 2 -17 11t-26.5 16.5t-16.5 7.5q-13 0 -13 -13q0 -10 59 -44q-74 -112 -184.5 -190.5t-241.5 -110.5l-16 67q-1 10 -15 10q-5 0 -8 -5.5t-2 -9.5l16 -68q-72 -15 -146 -15q-199 0 -372 105q1 2 13 20.5t21.5 33.5t9.5 19q0 13 -13 13q-6 0 -17 -14.5 t-22.5 -34.5t-13.5 -23q-113 75 -192 187.5t-110 244.5l69 15q10 3 10 15q0 5 -5.5 8t-10.5 2l-68 -15q-14 72 -14 139q0 206 109 379q2 -1 18.5 -12t30 -19t17.5 -8q13 0 13 12q0 6 -12.5 15.5t-32.5 21.5l-20 12q77 112 189 189t244 107l15 -67q2 -10 15 -10q5 0 8 5.5 t2 10.5l-15 66q71 13 134 13q204 0 379 -109q-39 -56 -39 -65q0 -13 12 -13q11 0 48 64q111 -75 187.5 -186t107.5 -241l-56 -12q-10 -2 -10 -16q0 -5 5.5 -8t9.5 -2l57 13q14 -72 14 -140zM1696 640q0 163 -63.5 311t-170.5 255t-255 170.5t-311 63.5t-311 -63.5 t-255 -170.5t-170.5 -255t-63.5 -311t63.5 -311t170.5 -255t255 -170.5t311 -63.5t311 63.5t255 170.5t170.5 255t63.5 311zM1792 640q0 -182 -71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71t348 -71t286 -191 t191 -286t71 -348z" />
<glyph unicode="&#xf268;" horiz-adv-x="1792" d="M893 1536q240 2 451 -120q232 -134 352 -372l-742 39q-160 9 -294 -74.5t-185 -229.5l-276 424q128 159 311 245.5t383 87.5zM146 1131l337 -663q72 -143 211 -217t293 -45l-230 -451q-212 33 -385 157.5t-272.5 316t-99.5 411.5q0 267 146 491zM1732 962 q58 -150 59.5 -310.5t-48.5 -306t-153 -272t-246 -209.5q-230 -133 -498 -119l405 623q88 131 82.5 290.5t-106.5 277.5zM896 942q125 0 213.5 -88.5t88.5 -213.5t-88.5 -213.5t-213.5 -88.5t-213.5 88.5t-88.5 213.5t88.5 213.5t213.5 88.5z" />
<glyph unicode="&#xf269;" horiz-adv-x="1792" d="M903 -256q-283 0 -504.5 150.5t-329.5 398.5q-58 131 -67 301t26 332.5t111 312t179 242.5l-11 -281q11 14 68 15.5t70 -15.5q42 81 160.5 138t234.5 59q-54 -45 -119.5 -148.5t-58.5 -163.5q25 -8 62.5 -13.5t63 -7.5t68 -4t50.5 -3q15 -5 9.5 -45.5t-30.5 -75.5 q-5 -7 -16.5 -18.5t-56.5 -35.5t-101 -34l15 -189l-139 67q-18 -43 -7.5 -81.5t36 -66.5t65.5 -41.5t81 -6.5q51 9 98 34.5t83.5 45t73.5 17.5q61 -4 89.5 -33t19.5 -65q-1 -2 -2.5 -5.5t-8.5 -12.5t-18 -15.5t-31.5 -10.5t-46.5 -1q-60 -95 -144.5 -135.5t-209.5 -29.5 q74 -61 162.5 -82.5t168.5 -6t154.5 52t128 87.5t80.5 104q43 91 39 192.5t-37.5 188.5t-78.5 125q87 -38 137 -79.5t77 -112.5q15 170 -57.5 343t-209.5 284q265 -77 412 -279.5t151 -517.5q2 -127 -40.5 -255t-123.5 -238t-189 -196t-247.5 -135.5t-288.5 -49.5z" />
<glyph unicode="&#xf26a;" d="M768 -92q77 0 139.5 63t100.5 166t59 234.5t21 268.5t-21 268.5t-59 234.5t-100.5 166t-139.5 63t-139.5 -63t-100.5 -166t-59 -234.5t-21 -268.5t21 -268.5t59 -234.5t100.5 -166t139.5 -63zM768 -256q-184 0 -333 77t-240 203t-141 287t-50 329t50 329t141 287t240 203 t333 77q148 0 274 -50t214.5 -136t151.5 -201t92.5 -244t29.5 -265t-29.5 -265t-92.5 -244t-151.5 -201t-214.5 -136t-274 -50z" />
<glyph unicode="&#xf26b;" horiz-adv-x="1792" d="M716 -69q-143 35 -261.5 114t-197.5 191q-139 -300 -17 -398q26 -21 85 -24.5t127.5 9.5t141 41.5t122.5 66.5zM693 762h452q0 108 -61.5 169t-168.5 61q-103 0 -162.5 -62.5t-59.5 -167.5zM1724 1137h-34q26 102 22.5 170t-25 110t-63.5 57t-93.5 11t-115 -26.5 t-128.5 -56.5t-134 -79q129 -37 238.5 -113.5t185 -179t110 -231.5t15.5 -262h-1005q0 -60 10 -106t34 -85t69.5 -60t112.5 -21q87 0 142.5 44t72.5 122h540q-71 -230 -281.5 -377t-477.5 -147q-83 0 -159 15q-35 -40 -151 -94t-248 -78t-219 35q-78 60 -100 159t7 214 t88 242t143.5 248t173.5 226.5t177.5 183.5t156.5 112v24q-120 -37 -258.5 -137.5t-240.5 -207t-159 -195.5q4 106 34 201t80 169t118 135.5t147.5 100.5t168 65.5t180.5 29.5t185 -8q310 186 503 189h7q57 0 103 -18q80 -30 98 -132.5t-30 -248.5z" />
<glyph unicode="&#xf26c;" horiz-adv-x="2048" d="M1792 288v960q0 13 -9.5 22.5t-22.5 9.5h-1600q-13 0 -22.5 -9.5t-9.5 -22.5v-960q0 -13 9.5 -22.5t22.5 -9.5h1600q13 0 22.5 9.5t9.5 22.5zM1920 1248v-960q0 -66 -47 -113t-113 -47h-736v-128h352q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-832q-14 0 -23 9t-9 23 v64q0 14 9 23t23 9h352v128h-736q-66 0 -113 47t-47 113v960q0 66 47 113t113 47h1600q66 0 113 -47t47 -113z" />
<glyph unicode="&#xf26d;" horiz-adv-x="1792" d="M138 1408h197q-70 -64 -126 -149q-36 -56 -59 -115t-30 -125.5t-8.5 -120t10.5 -132t21 -126t28 -136.5q4 -19 6 -28q51 -238 81 -329q57 -171 152 -275h-272q-48 0 -82 34t-34 82v1304q0 48 34 82t82 34zM1346 1408h308q48 0 82 -34t34 -82v-1304q0 -48 -34 -82t-82 -34 h-178q212 210 196 565l-469 -101q-2 -45 -12 -82t-31 -72t-59.5 -59.5t-93.5 -36.5q-123 -26 -199 40q-32 27 -53 61t-51.5 129t-64.5 258q-35 163 -45.5 263t-5.5 139t23 77q20 41 62.5 73t102.5 45q45 12 83.5 6.5t67 -17t54 -35t43 -48t34.5 -56.5l468 100 q-68 175 -180 287z" />
<glyph unicode="&#xf26e;" horiz-adv-x="2304" d="M1391 390v0l-1 1q-15 18 -34.5 37.5t-62.5 57.5t-93.5 62t-95.5 24q-48 0 -83 -21.5t-51 -54t-23 -59t-7 -47.5v0v0q0 -21 7 -48t23 -59t51 -53.5t83 -21.5q45 0 95.5 24t94 62.5t62 57t34.5 37.5zM2103 390q0 21 -7 47.5t-23 59t-51 54t-83 21.5q-45 0 -95.5 -24 t-94 -62.5t-62 -57t-34.5 -37.5l-1 -1v0v0l1 -1q15 -18 34.5 -37.5t62.5 -57.5t93.5 -62t95.5 -24q48 0 83 21.5t51 53.5t23 59t7 48zM2304 393q0 -69 -24 -137.5t-68 -126t-116 -93.5t-159 -36q-68 0 -134 24t-113.5 58.5t-84.5 69.5t-59.5 59t-25.5 24t-22.5 -24 t-54.5 -58.5t-81.5 -69.5t-115 -59t-143.5 -24q-65 0 -123.5 22.5t-96.5 54t-66.5 66.5t-41 59.5t-12.5 32.5q0 -8 -8.5 -26.5t-25 -45.5t-47 -55t-69 -52.5t-96.5 -40t-125 -15.5q-71 0 -130 15.5t-98.5 39.5t-70.5 56.5t-48 63.5t-27.5 63.5t-14 54t-3.5 36.5h217 q0 -55 49 -107.5t126 -52.5q79 0 134.5 67t55.5 148q0 80 -52 136.5t-138 56.5q-5 0 -13 -0.5t-31 -5t-43 -12t-42 -24.5t-34 -40h-195l102 583h602v-174h-445q-27 -159 -41 -248q4 0 16.5 13t31.5 28.5t65 28.5t108 13t114 -20.5t82.5 -49.5t51.5 -58.5t31 -50t11 -20.5 t13 25t36.5 60.5t60.5 71.5t97 61t133 25t140.5 -25t115.5 -60.5t83.5 -71.5t56.5 -61t21 -25q2 0 22 25t56 60.5t83.5 71.5t115.5 61t140 25q92 0 164.5 -35t115.5 -93t65 -125t22 -137z" />
<glyph unicode="&#xf270;" horiz-adv-x="1792" d="M1551 60q15 6 26 3t11 -17.5t-15 -33.5q-13 -16 -44 -43.5t-95.5 -68t-141 -74t-188 -58t-229.5 -24.5q-119 0 -238 31t-209 76.5t-172.5 104t-132.5 105t-84 87.5q-8 9 -10 16.5t1 12t8 7t11.5 2t11.5 -4.5q192 -117 300 -166q389 -176 799 -90q190 40 391 135z M1758 175q11 -16 2.5 -69.5t-28.5 -102.5q-34 -83 -85 -124q-17 -14 -26 -9t0 24q21 45 44.5 121.5t6.5 98.5q-5 7 -15.5 11.5t-27 6t-29.5 2.5t-35 0t-31.5 -2t-31 -3t-22.5 -2q-6 -1 -13 -1.5t-11 -1t-8.5 -1t-7 -0.5h-5.5h-4.5t-3 0.5t-2 1.5l-1.5 3q-6 16 47 40t103 30 q46 7 108 1t76 -24zM1364 618q0 -31 13.5 -64t32 -58t37.5 -46t33 -32l13 -11l-227 -224q-40 37 -79 75.5t-58 58.5l-19 20q-11 11 -25 33q-38 -59 -97.5 -102.5t-127.5 -63.5t-140 -23t-137.5 21t-117.5 65.5t-83 113t-31 162.5q0 84 28 154t72 116.5t106.5 83t122.5 57 t130 34.5t119.5 18.5t99.5 6.5v127q0 65 -21 97q-34 53 -121 53q-6 0 -16.5 -1t-40.5 -12t-56 -29.5t-56 -59.5t-48 -96l-294 27q0 60 22 119t67 113t108 95t151.5 65.5t190.5 24.5q100 0 181 -25t129.5 -61.5t81 -83t45 -86t12.5 -73.5v-589zM692 597q0 -86 70 -133 q66 -44 139 -22q84 25 114 123q14 45 14 101v162q-59 -2 -111 -12t-106.5 -33.5t-87 -71t-32.5 -114.5z" />
<glyph unicode="&#xf271;" horiz-adv-x="1792" d="M1536 1280q52 0 90 -38t38 -90v-1280q0 -52 -38 -90t-90 -38h-1408q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h128v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h384v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h128zM1152 1376v-288q0 -14 9 -23t23 -9 h64q14 0 23 9t9 23v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23zM384 1376v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23zM1536 -128v1024h-1408v-1024h1408zM896 448h224q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-224 v-224q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v224h-224q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h224v224q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-224z" />
<glyph unicode="&#xf272;" horiz-adv-x="1792" d="M1152 416v-64q0 -14 -9 -23t-23 -9h-576q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h576q14 0 23 -9t9 -23zM128 -128h1408v1024h-1408v-1024zM512 1088v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1280 1088v288q0 14 -9 23 t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1664 1152v-1280q0 -52 -38 -90t-90 -38h-1408q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h128v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h384v96q0 66 47 113t113 47h64q66 0 113 -47 t47 -113v-96h128q52 0 90 -38t38 -90z" />
<glyph unicode="&#xf273;" horiz-adv-x="1792" d="M1111 151l-46 -46q-9 -9 -22 -9t-23 9l-188 189l-188 -189q-10 -9 -23 -9t-22 9l-46 46q-9 9 -9 22t9 23l189 188l-189 188q-9 10 -9 23t9 22l46 46q9 9 22 9t23 -9l188 -188l188 188q10 9 23 9t22 -9l46 -46q9 -9 9 -22t-9 -23l-188 -188l188 -188q9 -10 9 -23t-9 -22z M128 -128h1408v1024h-1408v-1024zM512 1088v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1280 1088v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1664 1152v-1280 q0 -52 -38 -90t-90 -38h-1408q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h128v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h384v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h128q52 0 90 -38t38 -90z" />
<glyph unicode="&#xf274;" horiz-adv-x="1792" d="M1303 572l-512 -512q-10 -9 -23 -9t-23 9l-288 288q-9 10 -9 23t9 22l46 46q9 9 22 9t23 -9l220 -220l444 444q10 9 23 9t22 -9l46 -46q9 -9 9 -22t-9 -23zM128 -128h1408v1024h-1408v-1024zM512 1088v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23 t23 -9h64q14 0 23 9t9 23zM1280 1088v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1664 1152v-1280q0 -52 -38 -90t-90 -38h-1408q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h128v96q0 66 47 113t113 47h64q66 0 113 -47 t47 -113v-96h384v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h128q52 0 90 -38t38 -90z" />
<glyph unicode="&#xf275;" horiz-adv-x="1792" d="M448 1536q26 0 45 -19t19 -45v-891l536 429q17 14 40 14q26 0 45 -19t19 -45v-379l536 429q17 14 40 14q26 0 45 -19t19 -45v-1152q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v1664q0 26 19 45t45 19h384z" />
<glyph unicode="&#xf276;" horiz-adv-x="1024" d="M512 448q66 0 128 15v-655q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v655q61 -15 128 -15zM512 1536q212 0 362 -150t150 -362t-150 -362t-362 -150t-362 150t-150 362t150 362t362 150zM512 1312q14 0 23 9t9 23t-9 23t-23 9q-146 0 -249 -103t-103 -249 q0 -14 9 -23t23 -9t23 9t9 23q0 119 84.5 203.5t203.5 84.5z" />
<glyph unicode="&#xf277;" horiz-adv-x="1792" d="M1745 1239q10 -10 10 -23t-10 -23l-141 -141q-28 -28 -68 -28h-1344q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h576v64q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-64h512q40 0 68 -28zM768 320h256v-512q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v512zM1600 768 q26 0 45 -19t19 -45v-256q0 -26 -19 -45t-45 -19h-1344q-40 0 -68 28l-141 141q-10 10 -10 23t10 23l141 141q28 28 68 28h512v192h256v-192h576z" />
<glyph unicode="&#xf278;" horiz-adv-x="2048" d="M2020 1525q28 -20 28 -53v-1408q0 -20 -11 -36t-29 -23l-640 -256q-24 -11 -48 0l-616 246l-616 -246q-10 -5 -24 -5q-19 0 -36 11q-28 20 -28 53v1408q0 20 11 36t29 23l640 256q24 11 48 0l616 -246l616 246q32 13 60 -6zM736 1390v-1270l576 -230v1270zM128 1173 v-1270l544 217v1270zM1920 107v1270l-544 -217v-1270z" />
<glyph unicode="&#xf279;" horiz-adv-x="1792" d="M512 1536q13 0 22.5 -9.5t9.5 -22.5v-1472q0 -20 -17 -28l-480 -256q-7 -4 -15 -4q-13 0 -22.5 9.5t-9.5 22.5v1472q0 20 17 28l480 256q7 4 15 4zM1760 1536q13 0 22.5 -9.5t9.5 -22.5v-1472q0 -20 -17 -28l-480 -256q-7 -4 -15 -4q-13 0 -22.5 9.5t-9.5 22.5v1472 q0 20 17 28l480 256q7 4 15 4zM640 1536q8 0 14 -3l512 -256q18 -10 18 -29v-1472q0 -13 -9.5 -22.5t-22.5 -9.5q-8 0 -14 3l-512 256q-18 10 -18 29v1472q0 13 9.5 22.5t22.5 9.5z" />
<glyph unicode="&#xf27a;" horiz-adv-x="1792" d="M640 640q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1024 640q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1408 640q0 53 -37.5 90.5t-90.5 37.5 t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1792 640q0 -174 -120 -321.5t-326 -233t-450 -85.5q-110 0 -211 18q-173 -173 -435 -229q-52 -10 -86 -13q-12 -1 -22 6t-13 18q-4 15 20 37q5 5 23.5 21.5t25.5 23.5t23.5 25.5t24 31.5t20.5 37 t20 48t14.5 57.5t12.5 72.5q-146 90 -229.5 216.5t-83.5 269.5q0 174 120 321.5t326 233t450 85.5t450 -85.5t326 -233t120 -321.5z" />
<glyph unicode="&#xf27b;" horiz-adv-x="1792" d="M640 640q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1024 640q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1408 640q0 -53 -37.5 -90.5t-90.5 -37.5 t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM896 1152q-204 0 -381.5 -69.5t-282 -187.5t-104.5 -255q0 -112 71.5 -213.5t201.5 -175.5l87 -50l-27 -96q-24 -91 -70 -172q152 63 275 171l43 38l57 -6q69 -8 130 -8q204 0 381.5 69.5t282 187.5 t104.5 255t-104.5 255t-282 187.5t-381.5 69.5zM1792 640q0 -174 -120 -321.5t-326 -233t-450 -85.5q-70 0 -145 8q-198 -175 -460 -242q-49 -14 -114 -22h-5q-15 0 -27 10.5t-16 27.5v1q-3 4 -0.5 12t2 10t4.5 9.5l6 9t7 8.5t8 9q7 8 31 34.5t34.5 38t31 39.5t32.5 51 t27 59t26 76q-157 89 -247.5 220t-90.5 281q0 130 71 248.5t191 204.5t286 136.5t348 50.5t348 -50.5t286 -136.5t191 -204.5t71 -248.5z" />
<glyph unicode="&#xf27c;" horiz-adv-x="1024" d="M512 345l512 295v-591l-512 -296v592zM0 640v-591l512 296zM512 1527v-591l-512 -296v591zM512 936l512 295v-591z" />
<glyph unicode="&#xf27d;" horiz-adv-x="1792" d="M1709 1018q-10 -236 -332 -651q-333 -431 -562 -431q-142 0 -240 263q-44 160 -132 482q-72 262 -157 262q-18 0 -127 -76l-77 98q24 21 108 96.5t130 115.5q156 138 241 146q95 9 153 -55.5t81 -203.5q44 -287 66 -373q55 -249 120 -249q51 0 154 161q101 161 109 246 q13 139 -109 139q-57 0 -121 -26q120 393 459 382q251 -8 236 -326z" />
<glyph unicode="&#xf27e;" d="M0 1408h1536v-1536h-1536v1536zM1085 293l-221 631l221 297h-634l221 -297l-221 -631l317 -304z" />
<glyph unicode="&#xf280;" d="M0 1408h1536v-1536h-1536v1536zM908 1088l-12 -33l75 -83l-31 -114l25 -25l107 57l107 -57l25 25l-31 114l75 83l-12 33h-95l-53 96h-32l-53 -96h-95zM641 925q32 0 44.5 -16t11.5 -63l174 21q0 55 -17.5 92.5t-50.5 56t-69 25.5t-85 7q-133 0 -199 -57.5t-66 -182.5v-72 h-96v-128h76q20 0 20 -8v-382q0 -14 -5 -20t-18 -7l-73 -7v-88h448v86l-149 14q-6 1 -8.5 1.5t-3.5 2.5t-0.5 4t1 7t0.5 10v387h191l38 128h-231q-6 0 -2 6t4 9v80q0 27 1.5 40.5t7.5 28t19.5 20t36.5 5.5zM1248 96v86l-54 9q-7 1 -9.5 2.5t-2.5 3t1 7.5t1 12v520h-275 l-23 -101l83 -22q23 -7 23 -27v-370q0 -14 -6 -18.5t-20 -6.5l-70 -9v-86h352z" />
<glyph unicode="&#xf281;" horiz-adv-x="1792" />
<glyph unicode="&#xf282;" horiz-adv-x="1792" />
<glyph unicode="&#xf283;" horiz-adv-x="1792" />
<glyph unicode="&#xf284;" horiz-adv-x="1792" />
<glyph unicode="&#xf285;" horiz-adv-x="1792" />
<glyph unicode="&#xf286;" horiz-adv-x="1792" />
<glyph unicode="&#xf287;" horiz-adv-x="1792" />
<glyph unicode="&#xf288;" horiz-adv-x="1792" />
<glyph unicode="&#xf289;" horiz-adv-x="1792" />
<glyph unicode="&#xf28a;" horiz-adv-x="1792" />
<glyph unicode="&#xf28b;" horiz-adv-x="1792" />
<glyph unicode="&#xf28c;" horiz-adv-x="1792" />
<glyph unicode="&#xf28d;" horiz-adv-x="1792" />
<glyph unicode="&#xf28e;" horiz-adv-x="1792" />
<glyph unicode="&#xf500;" horiz-adv-x="1792" />
</font>
</defs></svg>

Before

Width:  |  Height:  |  Size: 306 KiB

After

Width:  |  Height:  |  Size: 348 KiB

View File

@ -1,333 +0,0 @@
<?xml version="1.0" standalone="no"?> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd" > <svg xmlns="http://www.w3.org/2000/svg" width="100%" height="100%">
<defs >
<font id="zocial-regular" horiz-adv-x="910" ><font-face
font-family="Zocial"
units-per-em="1000"
panose-1="0 0 0 0 0 0 0 0 0 0"
ascent="804"
descent="-196"
alphabetic="0" />
<missing-glyph horiz-adv-x="500" d="M125 742V63H375V742H125ZM438 0H63V804H438V0Z" />
<glyph unicode=" " glyph-name="space" horiz-adv-x="250" />
<glyph unicode="!" glyph-name="exclam" horiz-adv-x="1000" d="M587 387Q587 379 594 379Q602 379 602 387Q602 394 594 394Q587 394 587 387ZM552 377Q552 389 561 397T581 406Q593 406 601 398T610 377Q610 366 602 357T581 348Q570 348 561 357T552 377ZM529
455Q536 468 566 468Q580 468 599 458Q589 480 564 480Q533 480 529 455ZM361 368Q361 360 370 360T379 368Q379 377 370 377T361 368ZM347 319T331 333T322 366T346 390T378 380Q394 367 388 349T364 325ZM288 432Q288 426 291 420Q290 435 308 447T345 460Q352
460 365 455Q355 468 336 468T303 458T288 432ZM5 308Q5 523 145 663Q286 804 501 804T856 663Q997 524 997 308Q997 125 894 -5Q790 -136 614 -176Q602 -153 580 -124Q559 -93 546 -68Q612 -94 632 -94Q648 -94 648 -44Q648 49 631 49Q605 49 534 -6Q534 8 519
6H514Q488 76 488 129Q488 144 491 159Q582 114 639 114Q670 114 732 132Q795 150 795 171Q795 184 778 184Q749 184 703 177T628 170Q602 170 568 184Q536 198 536 222Q536 233 545 233T565 231Q571 231 591 229T616 226Q647 226 743 262Q839 300 839 319Q839
330 822 335T786 341Q774 341 744 333Q718 326 683 315L639 302Q643 319 643 334Q643 383 618 443Q592 507 560 536Q533 560 488 569Q460 604 400 634Q338 664 295 664Q290 664 279 663T257 659T244 656L222 625L228 624Q232 624 249 626T271 628Q304 628 349 614Q316
598 300 595Q298 594 283 592T258 586T248 572Q304 578 332 578Q371 578 392 571Q232 552 232 397Q232 367 236 347Q252 246 309 -11Q322 -68 333 -122T346 -181L347 -185Q188 -136 96 0Q5 136 5 308Z" />
<glyph unicode="&quot;" glyph-name="quotedbl" horiz-adv-x="1294" d="M710 501V113Q710 68 757 68T804 113V294L896 109Q910 80 937 80Q969 80 983 109L1074 294V113Q1074 68 1121 68Q1169 68 1169 113V501Q1169 546 1122 546Q1089 546 1075 517L937 215L804
517Q792 546 756 546Q710 546 710 501ZM525 501V113Q525 68 572 68T619 113V501Q619 546 572 546T525 501ZM218 236Q218 246 272 365L277 368Q282 368 309 304Q336 237 336 235Q336 231 331 231H223Q218 231 218 236ZM0 402Q0 504 51 588T189 721Q360 820 564 820Q598
820 607 819Q720 813 833 778Q1005 723 1145 594Q1214 529 1254 446T1294 272Q1294 257 1293 253Q1282 101 1172 -3T904 -150Q798 -180 675 -180H667Q467 -180 352 -127Q347 -126 345 -121Q345 -119 348 -119L351 -120Q354 -120 355 -120Q404 -132 444 -132Q466
-132 491 -127Q516 -123 535 -107T555 -68Q555 -56 549 -44Q540 -28 490 -10Q440 6 376 23Q306 41 301 43Q231 61 162 109Q162 115 171 133T187 151H366Q373 153 381 131T404 86T439 64Q458 65 470 76T483 105Q483 116 399 304Q312 499 293 535Q287 550 277 550Q268
550 264 541L261 535Q259 531 209 421L102 183L95 168Q0 278 0 402Z" />
<glyph unicode="#" glyph-name="numbersign" horiz-adv-x="1009" d="M1009 319H509V820H1009V319ZM501 -180H0V321H501V-180Z" />
<glyph unicode="$" glyph-name="dollar" horiz-adv-x="974" d="M512 528L482 395Q529 396 571 432Q614 467 624 516Q624 518 625 522T626 528H512ZM412 638L357 394H440L482 577H607Q609 577 624 574Q616 603 593 620T537 638H412ZM111 -132L100 -181H357L420
114H604Q738 114 837 192T966 406Q994 540 923 625Q956 551 935 455Q907 319 806 241Q707 163 573 163H390L327 -132H111ZM257 -72H0L194 819H632Q682 819 728 801T813 746T865 651T865 516Q837 380 736 302Q637 224 503 224H320L257 -72Z" />
<glyph unicode="%" glyph-name="percent" horiz-adv-x="957" d="M327 -184H67L119 -131L219 -30L328 79Q458 209 465 209Q480 209 480 193V37H528Q643 37 689 72Q735 108 735 222V484L959 707V193Q959 11 873 -86T615 -184H327ZM223 156L0 -67V447Q0 629 86 726T344
824H632H892L839 771L739 670L630 560L535 467Q498 431 494 431Q479 431 479 447V603H431Q369 603 335 597T273 570Q223 535 223 418V156Z" />
<glyph unicode="&amp;" glyph-name="ampersand" horiz-adv-x="921" d="M794 221V489Q794 515 812 534T857 553T901 534T920 489V221Q920 195 902 177T857 158T813 176T794 221ZM598 810L583 819L597 847Q608 871 620 891Q628 903 634 907T643 910T646 901V899L598
810ZM626 715Q625 698 614 687T586 675Q571 675 560 687T547 715Q547 739 567 748T607 749T626 715ZM502 -107V95Q502 122 521 140T568 158Q594 158 612 140T631 95V-107Q631 -134 612 -152T565 -170Q539 -170 521 -152T502 -107ZM373 715Q373 698 362 687T333
675Q307 675 297 699T306 742Q326 760 349 751T373 715ZM289 -107V95Q289 122 308 140T355 158Q380 158 399 139T418 95V-107Q418 -134 399 -152T352 -170Q326 -170 308 -152T289 -107ZM274 902Q274 910 281 910Q282 910 288 908L337 819L322 811Q274 899 274 902ZM173
586H747Q747 702 662 775Q576 849 460 849T258 775Q173 702 173 586ZM173 121V539H747V121Q747 95 729 77T684 58H236Q210 58 192 76T173 121ZM0 221V490Q0 516 19 534T63 553Q89 553 107 535T126 490V221Q126 195 108 177T63 158T19 176T0 221Z" />
<glyph unicode="&apos;" glyph-name="quotesingle" horiz-adv-x="824" d="M222 400H614Q606 525 554 588Q503 650 418 650Q336 650 285 587Q232 524 222 400ZM0 322Q0 428 29 524Q58 617 112 683Q168 750 247 785Q328 821 425 821Q550 821 642 760Q732 699 778
603Q824 510 824 407Q824 314 777 287Q730 260 645 260H222Q222 178 252 112Q282 47 328 16Q378 -17 434 -17Q476 -17 505 -7Q535 3 567 26T623 73L689 142Q704 158 736 158Q770 158 790 137Q811 116 811 79Q811 49 788 1Q767 -42 718 -84Q670 -126 602 -152Q532
-179 441 -179Q232 -179 116 -44Q0 93 0 322Z" />
<glyph unicode="(" glyph-name="parenleft" horiz-adv-x="571" d="M255 -40Q242 -53 242 -72T255 -104Q269 -117 288 -117T320 -104T333 -72T320 -40T288 -27T255 -40ZM199 731Q199 721 205 715T222 708H349Q359 708 365 714T372 731Q372 740 366 746T349 753H222Q212
753 206 747T199 731ZM33 642V34H536V642H33ZM0 -73V713Q0 757 31 788Q63 820 107 820H464Q507 820 539 788T571 713V-73Q571 -116 539 -148T464 -180H107Q63 -180 31 -148Q0 -117 0 -73Z" />
<glyph unicode=")" glyph-name="parenright" horiz-adv-x="1106" d="M37 666V150H1068V666H37ZM0 158V636Q0 682 14 696T74 710H1032Q1078 710 1091 696T1105 636V158Q1105 112 1091 98Q1078 85 1032 85H626V48H737V-10H368V48H479V85H74Q28 85 14 98T0 158Z" />
<glyph unicode="*" glyph-name="asterisk" horiz-adv-x="1000" d="M419 536Q419 574 454 594Q488 615 530 615Q578 615 640 597Q700 581 728 551L789 721Q699 769 603 784Q604 784 648 796Q734 820 762 820Q787 820 807 804T834 763L998 76Q1000 60 1000 58Q1000
33 984 13T943 -14L798 -48Q845 23 845 104Q845 215 774 286Q705 357 590 396Q419 453 419 536ZM0 582Q0 607 16 627T57 654L254 701Q191 629 191 533Q191 349 444 250Q503 228 552 192Q616 148 616 90Q616 49 582 24T501 -1Q442 -1 380 21Q319 43 275 82L196 -97Q249
-127 340 -158Q336 -159 308 -166Q264 -180 238 -180Q213 -180 193 -164T166 -123L2 564Q0 580 0 582Z" />
<glyph unicode="+" glyph-name="plus" horiz-adv-x="1184" d="M933 567H733V617H933V817H983V617H1184V567H983V366H933V567ZM178 591Q188 512 238 455Q287 399 348 397Q408 395 442 449Q477 504 467 582T407 716T298 773Q238 775 203 722Q168 668 178 591ZM112
32Q112 -37 170 -85Q228 -134 316 -134Q431 -134 486 -92T542 27Q542 47 538 59Q530 89 505 114Q493 127 465 146L440 163Q434 167 425 173T414 181Q375 193 337 193Q247 194 179 146Q112 98 112 32ZM0 -1Q0 86 89 154T304 222H358Q316 262 316 308Q316 338 332
366Q325 365 303 365Q200 365 133 430Q67 494 67 590Q67 682 149 749Q232 817 336 817H646L577 767H479Q525 749 552 700T579 588Q579 495 491 426Q455 397 444 380T432 338Q432 318 459 290Q489 258 513 241Q575 197 597 153Q621 108 621 40Q621 -50 539 -116Q457
-183 317 -183Q184 -183 92 -133T0 -1Z" />
<glyph unicode="," glyph-name="comma" horiz-adv-x="1106" d="M0 673V694L2 696H251L253 694V674Q253 666 243 666L217 665Q184 664 184 645Q184 634 191 617Q256 461 413 133L419 132L530 353L508 402L432 552L412 592Q388 640 378 652Q371 661 345 666Q331
668 331 673V694L334 696H531L536 695V674Q536 666 526 666L511 664Q486 661 486 647Q487 637 505 599L578 449L659 611Q676 642 664 654Q658 662 627 665L618 666Q614 666 611 669Q608 670 608 675V694L611 696Q668 698 797 696L799 694V674Q799 666 790 666Q768
665 760 662T743 646Q720 612 713 598L608 402L605 395L733 133L741 130L943 611Q955 639 940 652Q927 663 901 665L882 666Q879 666 876 669Q872 670 872 675V695L875 697H1104L1106 695V675Q1106 668 1097 666Q1052 665 1031 647Q1012 631 997 598L747 31Q731
-4 713 -3T678 32Q638 112 556 295Q445 66 425 31Q385 -42 354 30Q329 89 224 314T94 601Q78 643 66 653Q56 663 14 666Q0 668 0 673Z" />
<glyph unicode="-" glyph-name="hyphen" horiz-adv-x="939" d="M138 801Q192 823 235 817T289 782Q308 732 391 462Q451 266 507 101Q781 191 833 206Q848 214 870 210T903 187Q923 148 935 88Q944 35 936 14Q915 -2 876 -18Q827 -38 801 -47Q788 -52 755 -62T711
-76L638 -99L600 -112Q549 -130 489 -149Q328 -198 304 -173Q285 -154 272 -121Q257 -82 243 -34L224 32L111 370L7 683Q-8 716 20 744Q34 758 70 772Q79 776 106 787T138 801Z" />
<glyph unicode="." glyph-name="period" horiz-adv-x="778" d="M574 474V362H714V474H574ZM574 341V211H714V341H574ZM574 189V70H714V189H574ZM714 48H574V-64H714V48ZM569 695V565Q569 532 607 532Q644 532 644 565V695Q644 728 607 728Q569 728 569 695ZM401
474V362H553V474H401ZM401 341V211H553V341H401ZM401 189V70H553V189H401ZM553 48H401V-64H553V48ZM354 695V565Q354 532 391 532Q429 532 429 565V695Q429 728 391 728Q354 728 354 695ZM228 474V362H380V474H228ZM228 341V211H380V341H228ZM228 189V70H380V189H228ZM380
48H228V-64H380V48ZM139 695V565Q139 532 176 532T213 565V695Q213 728 176 728T139 695ZM68 474V362H207V474H68ZM68 341V211H207V341H68ZM68 189V70H207V189H68ZM207 48H68V-64H207V48ZM779 -129H3V646H95V685L99 716Q103 744 119 755T176 771Q220 771 240 747Q247
740 252 716Q256 696 256 685V646H311V685Q311 696 315 716Q320 741 326 747Q350 771 391 771Q444 771 458 741Q469 719 470 698L472 674V646H526V674Q526 710 531 723Q547 755 554 758Q576 771 607 771Q651 771 671 747Q678 740 683 716Q687 696 687 685V646H779V-129Z"
/>
<glyph unicode="/" glyph-name="slash" horiz-adv-x="1309" d="M724 107V290L813 248L947 288V104Q947 75 967 55T1016 34T1065 54T1085 104V291H1309V110Q1309 -11 1223 -97T1017 -183Q895 -183 810 -98Q724 -12 724 107ZM0 110V291H224V112Q224 84 244 64T293
43T342 63T363 112V535Q363 651 449 734Q537 817 655 817Q774 817 860 734Q947 652 947 533V441L813 401L724 443V523Q724 552 704 572T655 592T606 572T585 523V106Q585 -14 499 -98Q414 -183 293 -183T86 -97T0 110Z" />
<glyph unicode="0" glyph-name="zero" horiz-adv-x="1258" d="M931 259L899 226Q933 190 944 180Q1001 132 1055 132Q1097 132 1122 159T1147 230T1122 300T1054 328Q1011 328 968 295Q960 288 931 259ZM510 226Q510 184 535 158T603 132Q678 132 758 227L710
275Q696 288 662 308Q628 328 599 328Q561 328 536 298T510 226ZM-5 196H114Q119 156 144 132T208 108Q255 108 284 140T313 222Q313 271 285 301T210 332Q171 332 145 307Q118 283 94 283Q50 283 14 285L42 445L71 610H401V512H158Q145 445 134 378H137Q154 398
186 409T253 421Q367 421 413 318Q437 378 485 412T596 446Q671 446 723 407Q756 382 768 369Q782 356 816 319L829 305Q858 339 879 360Q892 374 925 401Q980 445 1057 445Q1147 445 1202 384Q1257 325 1257 233Q1257 139 1202 77Q1146 14 1055 14Q939 14 829
145L790 106Q761 77 747 67Q719 47 710 41Q667 13 601 13Q538 13 490 45T416 138Q354 10 213 10Q118 10 56 57Q-5 105 -5 196Z" />
<glyph unicode="1" glyph-name="one" horiz-adv-x="774" d="M0 458Q0 588 102 698Q153 753 234 785T411 817Q569 817 672 719Q774 622 774 488Q774 318 687 205Q602 94 464 94Q420 94 380 115T324 166L284 8Q264 -67 186 -172L180 -180Q177 -184 172 -183T166
-177Q166 -176 164 -151T159 -98T158 -30T168 42L242 355Q226 385 224 430L223 445Q219 503 255 551Q288 594 334 594Q370 594 391 570T412 508Q412 486 403 451Q398 428 381 374Q365 324 361 304Q351 259 378 226Q406 193 452 193Q531 193 582 282Q634 371 634
499Q634 596 571 657Q507 719 395 719Q269 719 190 638Q112 557 112 444Q112 378 150 331Q163 317 158 299Q156 295 152 276T146 253Q141 230 118 239Q60 262 30 320T0 458Z" />
<glyph unicode="2" glyph-name="two" horiz-adv-x="1000" d="M470 366L497 476Q507 473 522 471T555 461T587 446T609 422T612 389Q605 358 560 351Q551 350 530 353L509 356Q472 366 470 366ZM426 190L456 311Q459 311 475 307Q495 303 531 291Q555 283 581 261Q603
244 595 212Q583 169 529 171Q510 171 482 177Q429 189 426 190ZM270 230L243 167L315 149Q320 148 335 144T354 139L331 48L386 34L408 124Q413 122 431 118T452 113L430 23L485 10L507 101Q555 94 592 94T658 113T701 175Q732 265 650 308Q710 321 720 388Q733
473 610 514L633 605L578 618L556 530Q553 531 535 535T512 541L534 629L479 643L457 553Q456 553 422 561L346 580L332 521L371 512Q399 506 397 480L371 377L377 375Q376 376 374 376T371 377L335 233Q331 215 310 220L270 230ZM19 178Q-18 305 15 438Q48 570
140 665T361 798Q488 835 621 802Q752 769 848 676T981 456T985 196Q952 65 859 -31T639 -164T379 -168Q247 -135 151 -42Q57 49 19 178Z" />
<glyph unicode="3" glyph-name="three" horiz-adv-x="1129" d="M846 356L845 375Q841 452 878 521Q911 584 958 589Q993 594 1028 563Q1045 549 1065 513L1109 600L1121 524L1077 439Q1057 477 1040 489L1032 495Q1001 517 968 510Q944 505 921 480T886 421Q869
372 867 315Q867 271 872 252Q848 295 846 356ZM818 180L836 130Q844 108 869 72Q911 14 963 5Q1008 -4 1051 23Q1066 32 1086 54Q1109 81 1114 90L1125 110L1114 169Q1103 147 1086 124L1082 120Q1043 81 1021 71Q990 57 953 60Q923 63 893 84Q857 115 850 127Q842
138 818 180ZM177 0L0 597H77L184 234L256 478L221 597H298L405 234L512 597H589H802V561L693 373Q749 354 779 306Q809 256 809 192Q809 110 766 55T654 0Q603 0 564 33Q524 68 508 122L568 147Q582 111 603 93Q622 72 654 74T706 108Q728 142 728 192Q728 243
705 275Q678 309 622 309H592V345L695 523H571L564 511L412 0H405L295 370L184 0H177Z" />
<glyph unicode="4" glyph-name="four" horiz-adv-x="1169" d="M423 445T423 375T373 255Q324 206 254 206Q183 206 134 255T85 375Q85 445 134 494Q184 544 254 544T373 495Q423 445 423 375ZM37 377Q37 287 102 224Q166 161 259 161Q292 161 324 170L544 -25L1129
435L1130 737L552 141L462 287Q482 332 482 377Q482 464 416 529Q350 593 259 593Q166 593 102 529Q37 466 37 377ZM0 377Q0 483 76 556Q152 631 261 631Q346 631 413 583Q481 534 508 459L574 523L732 371L1169 817V412L902 206L936 170L573 -183L257 124Q151
125 75 200Q0 274 0 377Z" />
<glyph unicode="5" glyph-name="five" horiz-adv-x="710" d="M649 679H543V812H587V724H649V679ZM415 679H371V812H418L445 766L473 812H520V679H477V747L445 697V698L415 745V679ZM269 767H230V812H352V767H313V679H269V767ZM585 474H146L170 208L171 210H471L461
97L365 70L268 98L262 166H174L186 30L365 -21L544 30L569 297H250L242 386H577L585 474ZM126 679H81V812H126V768H166V812H210V679H166V723H126V679ZM81 -91L16 619H715L649 -91L365 -172L81 -91Z" />
<glyph unicode="6" glyph-name="six" horiz-adv-x="943" d="M358 397H623Q624 433 612 459T579 499T542 519T508 526L494 527Q486 528 446 518Q359 496 358 397ZM86 -98L90 -107Q105 -119 134 -128Q158 -136 191 -136Q274 -134 381 -70Q347 -61 309 -46Q267 -29
240 -15Q206 3 172 34T120 97Q92 54 83 10T76 -57T86 -98ZM7 27Q46 166 99 266Q213 482 412 618V632Q291 581 191 485Q109 408 65 348L48 325Q44 441 109 534Q164 612 210 644L229 657L239 662Q268 678 310 694Q450 746 573 714Q642 764 701 787Q767 813 799 816L832
819Q880 823 908 803T940 747Q947 672 928 620L919 596L914 601Q931 644 933 678T928 732T903 765T873 783T844 790L828 792Q812 792 784 786Q752 780 735 774Q662 749 606 708Q790 678 869 510Q910 423 917 288L916 266H359Q356 225 369 194T403 147T444 124T480
116L495 115Q512 115 533 121Q604 140 620 210H912Q870 52 719 -25Q665 -52 610 -66T524 -80H505Q426 -80 398 -74Q339 -120 271 -147Q200 -174 168 -177L132 -180Q86 -180 55 -157T13 -101T0 -33T7 27Z" />
<glyph unicode="7" glyph-name="seven" horiz-adv-x="900" d="M42 581Q44 600 57 613L177 733Q189 745 198 729L295 547Q304 530 290 516L246 472Q232 458 232 441Q231 412 263 364Q303 305 324 284L355 252L391 217Q409 199 463 163Q512 130 543 130Q562 130
575 143L627 195Q641 209 657 199L832 96Q839 92 840 86T836 74L716 -46Q703 -59 684 -61Q637 -67 576 -48T459 7Q349 79 290 136L264 161L237 188Q226 199 180 257Q134 316 109 358Q80 405 57 469Q35 532 42 581Z" />
<glyph unicode="8" glyph-name="eight" horiz-adv-x="1000" d="M129 318Q131 252 165 241Q174 238 182 237Q222 236 267 277Q307 312 325 367Q350 446 335 567Q333 583 333 584Q330 590 333 593Q334 595 346 592Q399 575 424 563Q472 541 526 493Q569 455 613
404Q647 364 693 300Q734 243 781 223Q833 202 854 232T877 318Q877 371 865 414L857 442Q846 480 816 526Q764 605 681 650T503 695Q439 695 378 673Q298 644 238 584T149 442Q147 425 140 414Q129 369 129 318ZM134 -48T67 67T0 318T67 569T249 751T500 818T751
751T933 569T1000 318T933 67T751 -115T500 -182T249 -115Z" />
<glyph unicode="9" glyph-name="nine" horiz-adv-x="1220" d="M1015 -111L1058 -117L1122 275L1191 692L1078 701L1051 334L1020 -101Q1020 -106 1016 -110Q1015 -110 1015 -111ZM658 413Q658 458 681 486T739 515H740Q782 515 804 480T826 389Q826 375 821 363Q796
321 740 321Q702 321 680 346T658 413ZM564 407Q564 339 607 296T715 253Q785 253 825 296H826Q812 225 762 185Q721 153 660 147Q617 144 608 145V70Q635 70 665 72Q771 79 836 140Q923 219 923 373Q923 467 876 526Q830 586 745 586Q668 586 615 533Q564 480
564 407ZM372 -64L468 -74L841 -114Q983 -145 1050 -162L1053 -144L888 -119Q665 -85 372 -64ZM283 413Q283 458 305 486T364 515H365Q407 515 429 480T451 389Q451 375 446 363Q420 321 365 321Q327 321 305 346T283 413ZM189 407Q189 340 231 296Q274 253 340
253Q409 253 449 296H451Q437 225 386 185Q347 153 285 147Q242 144 233 145V70Q260 70 290 72Q396 79 461 140Q548 222 548 373Q548 468 500 527T369 586Q291 586 240 533Q189 480 189 407ZM97 570Q100 355 118 146Q123 74 129 37L138 -23Q218 -27 330 -36Q438
-45 512 -49Q858 -68 995 -84Q999 -25 1027 371Q1050 666 1057 782Q584 777 97 675V570ZM30 661Q49 589 73 460Q70 530 70 669Q57 668 30 661ZM0 669Q-2 682 11 684Q53 692 70 697Q70 725 71 746Q72 768 72 795Q74 807 85 807Q99 807 99 793Q97 713 97 702L132
709Q152 713 167 717Q180 720 222 727Q236 729 254 732T278 737Q671 806 1072 809Q1086 809 1084 794Q1084 786 1082 761T1080 728L1208 717Q1222 715 1220 703L1152 291L1084 -122L1160 -134Q1172 -136 1172 -148T1160 -161H1157L1079 -148Q1076 -168 1074 -179Q1072
-188 1064 -190Q1063 -191 1060 -191H1056Q759 -116 456 -74Q322 -72 307 -72Q288 -72 142 -74V-75Q143 -76 143 -77Q144 -83 139 -87T128 -92Q118 -92 116 -81L112 -49H99Q86 -49 87 -36T101 -22H102H109L103 32Q102 45 94 109T78 226Q58 380 42 478Q26 573 0
669Z" />
<glyph unicode=":" glyph-name="colon" horiz-adv-x="834" d="M373 -180H0L417 820L834 -180H465V-45L635 40L622 95L465 16V83L563 135L549 192L465 147V234H373V77L287 136L271 72L373 2V-180Z" />
<glyph unicode=";" glyph-name="semicolon" horiz-adv-x="1123" d="M930 341V135H997Q1010 135 1010 149V355H943Q930 355 930 341ZM821 -80V-11Q821 3 834 3H1010V52H821V424Q821 437 834 437H1121V-67Q1121 -80 1109 -80H821ZM592 341V135H659Q671 135 671 149V355H604Q592
355 592 341ZM671 52H482V424Q482 437 495 437H783V-67Q783 -80 770 -80H482L483 -11Q483 3 495 3H671V52ZM432 497H333V566Q333 580 345 580H444V511Q444 497 432 497ZM432 52H333V424Q333 437 346 437H444V66Q444 52 432 52ZM108 341V135H175Q188 135 188 149V355H121Q108
355 108 341ZM287 52H-1V424Q-1 437 12 437H188V566Q188 580 201 580H299V66Q299 52 287 52Z" />
<glyph unicode="&lt;" glyph-name="less" horiz-adv-x="1000" d="M176 506Q240 506 290 463L648 642Q648 644 648 648T647 653Q647 726 699 777Q751 829 824 829Q896 829 948 777T1000 653Q1000 580 948 528Q897 476 824 476Q760 476 710 518L352 339V335Q353
331 353 329Q353 328 353 324T352 319L710 140Q760 182 824 182Q896 182 948 130T1000 6Q1000 -67 948 -119Q897 -171 824 -171Q750 -171 698 -119Q647 -68 647 6L648 10Q648 14 648 16L290 195Q240 153 176 153Q102 153 51 204T0 329Q0 402 51 454Q103 506 176
506Z" />
<glyph unicode="=" glyph-name="equal" horiz-adv-x="1000" d="M319 -147Q356 -98 410 -71T527 -43Q640 -43 720 -129Q617 -181 500 -181Q405 -181 319 -147ZM258 170Q268 145 289 154Q397 205 513 205Q626 205 732 157Q756 143 767 169Q771 182 767 192T753 207Q648
260 513 260Q380 260 269 205Q250 196 258 170ZM210 314L216 298Q223 285 239 285Q240 285 248 287Q374 342 513 342Q651 342 780 286Q786 284 787 284Q803 284 810 297L815 314Q815 328 805 335Q666 397 513 397Q361 397 220 335Q210 325 210 314ZM164 463Q164
446 176 434T206 421Q213 421 215 422Q359 480 513 480T811 422H814Q818 421 820 421Q837 421 849 433T862 463Q862 488 839 500Q680 563 513 563Q342 563 184 499Q164 485 164 463ZM0 319Q-2 451 66 567T251 751T500 819T749 751T933 567T1000 319Q997 109 855
-33Q795 40 709 81T527 122Q421 122 329 73T177 -62Q94 9 48 108T0 319Z" />
<glyph unicode="&gt;" glyph-name="greater" horiz-adv-x="1205" d="M963 425Q1018 389 1058 333T1114 213Q1173 257 1173 309Q1173 367 1137 409Q1102 451 1045 451Q1001 451 963 425ZM949 706Q949 671 974 646T1034 621Q1070 621 1093 645T1116 706Q1116 740
1092 764T1034 788T975 764T949 706ZM694 238Q694 276 717 298T778 320Q812 320 836 296T860 238T836 179T778 154Q741 154 718 177T694 238ZM358 74H402Q429 27 481 5Q534 -18 593 -18T703 6T787 74H828Q802 12 735 -22Q668 -56 593 -56Q523 -56 451 -21Q382 14
358 74ZM322 238Q322 275 344 297T404 320T466 297T491 238T466 178T404 154T345 178T322 238ZM136 165Q136 113 166 63T246 -24Q345 -97 454 -118Q532 -132 600 -132Q727 -132 836 -92T1018 30H1015Q1046 70 1058 100T1071 171Q1071 274 983 351T783 457Q696 480
602 480Q446 480 300 408Q226 371 181 307T136 165ZM34 311Q34 246 91 199Q96 258 139 315Q185 375 240 416Q202 442 158 442Q109 442 71 401Q34 361 34 311ZM0 323Q0 386 49 429Q99 473 162 473Q224 473 267 437H272Q405 519 607 519L612 523L682 790L924 754Q924
753 926 753Q927 753 926 754Q927 754 937 769T952 788Q987 820 1034 820Q1083 820 1116 788T1150 706T1116 622T1034 587Q979 587 948 624T917 722Q916 721 819 735Q728 748 710 752H707Q705 750 690 698L660 589L643 526V523L648 519Q721 519 796 498T926 441L929
439L933 441L968 466Q995 485 1041 485Q1109 485 1157 437T1205 320Q1205 274 1179 235T1109 174Q1109 -19 849 -129Q839 -133 826 -138T805 -147T793 -152Q765 -161 702 -171Q644 -180 609 -180Q491 -180 378 -145L370 -141Q363 -137 344 -127T306 -107Q96 4 96
165H91Q58 182 32 215L23 227Q8 253 4 271T0 323Z" />
<glyph unicode="?" glyph-name="question" horiz-adv-x="767" d="M2 27Q2 49 14 91Q36 178 100 249Q166 321 248 352Q169 415 169 513Q169 599 231 659Q294 719 380 719T528 659Q591 599 591 513Q591 416 514 353Q619 316 691 226Q762 137 762 28Q762 -65 689
-78Q686 -88 676 -104Q663 -139 604 -153L554 -165Q536 -169 498 -174Q484 -176 472 -178L459 -179Q458 -179 453 -180T445 -181H325Q276 -181 196 -164Q117 -147 107 -120Q89 -102 82 -78Q56 -74 40 -57Q2 -42 2 27Z" />
<glyph unicode="@" glyph-name="at" horiz-adv-x="772" d="M150 438Q150 398 159 357T188 278T240 216T317 192Q329 192 356 207Q384 222 406 222Q418 222 457 211Q494 201 494 192Q494 171 468 171Q338 171 338 95Q338 39 379 9T483 -22Q592 -22 648 44Q690 93
690 208Q690 239 689 263Q688 288 688 318Q688 363 693 398H500Q499 393 499 375Q499 368 500 341T501 306Q501 272 493 250Q490 249 476 249Q428 249 396 281Q340 338 340 445Q340 487 351 536Q363 583 394 620Q426 658 472 658Q482 658 493 655Q489 635 489 621Q489
585 508 563T561 540Q595 540 618 563T641 621Q641 663 610 691Q556 742 461 742Q326 742 238 657T150 438ZM4 308V411Q4 498 90 611Q177 725 261 771Q340 815 448 815Q492 815 536 805T622 774T688 716T714 631Q714 604 705 582Q693 554 682 540Q656 508 650 502Q636
488 634 485L628 480Q621 474 615 468L598 452H651H766Q768 356 768 344Q768 91 726 18Q691 -42 632 -89T504 -160Q461 -175 448 -175H364Q357 -175 316 -158Q196 -108 196 16Q196 19 196 27T197 37Q64 106 17 252Q4 292 4 308Z" />
<glyph unicode="A" glyph-name="A" horiz-adv-x="860" d="M420 619H416Q413 634 413 649Q413 713 466 778Q493 811 535 834T618 860Q620 840 620 830Q620 762 570 698Q542 662 500 640Q462 619 420 619ZM1 361Q0 349 0 325Q0 259 20 181Q45 86 103 -3Q191 -138
275 -140Q305 -140 353 -119T448 -98H452Q500 -98 543 -118Q592 -140 619 -140Q665 -139 706 -103T795 5Q824 49 860 126Q810 144 776 182T727 268Q718 302 718 338V362Q718 409 749 452T830 524Q792 572 741 599T638 626Q589 626 532 604Q475 583 447 583Q413
583 356 604Q293 626 255 626Q197 626 141 593T45 500Q9 446 1 361Z" />
<glyph unicode="B" glyph-name="B" horiz-adv-x="996" d="M320 441H495Q520 441 537 459T555 502T538 544T495 562H320Q295 562 277 545T259 502T277 459T320 441ZM320 80H676Q701 80 718 97T736 140T719 182T676 200H320Q295 200 277 183T259 140T277 98T320
80ZM0 135V504Q0 634 93 727T316 820H537Q602 812 675 763Q749 713 780 648Q788 633 793 619Q803 594 809 540Q818 471 835 455Q848 442 906 440T971 433L985 422L993 405L996 391L994 135Q992 4 901 -87Q810 -180 679 -180H316Q186 -180 93 -87Q0 4 0 135Z" />
<glyph unicode="C" glyph-name="C" horiz-adv-x="1000" d="M504 320Q504 390 545 432T651 475Q744 475 783 403L717 368Q706 391 691 399Q674 408 661 408Q594 408 594 320Q594 279 611 256Q628 232 661 232Q704 232 722 274L785 243Q762 205 729 186Q694 165
654 165Q586 165 545 206T504 320ZM215 320Q215 391 257 433Q298 475 362 475Q454 475 495 403L428 368Q418 391 401 399Q386 408 372 408Q305 408 305 320Q305 280 322 256Q338 232 372 232Q416 232 434 274L496 243Q475 207 441 186T364 165Q296 165 256 206T215
320ZM90 320Q90 243 122 165Q153 90 213 32Q272 -27 346 -57Q420 -88 501 -88Q583 -88 657 -57Q732 -25 793 33Q910 147 910 320Q910 403 879 477Q848 552 791 609Q668 730 501 730Q330 730 213 610Q153 550 122 476Q90 398 90 320ZM0 320Q0 417 38 511Q76 602
148 674Q292 820 499 820Q707 820 856 674Q925 605 963 512Q1000 421 1000 320Q1000 216 964 128Q928 40 857 -31Q782 -105 691 -142Q599 -180 499 -180Q400 -180 309 -142Q221 -106 147 -32Q0 115 0 320Z" />
<glyph unicode="D" glyph-name="D" horiz-adv-x="1000" d="M656 274Q707 125 725 -30Q804 21 854 101T914 274Q832 279 781 279Q734 279 656 274ZM597 425Q609 400 631 344Q700 351 792 351Q854 351 915 348Q908 483 817 590Q753 493 597 425ZM398 723Q487 631
561 496Q697 553 766 641Q650 737 500 737Q451 737 398 723ZM245 -9Q357 -97 500 -97Q575 -97 647 -69Q628 101 569 262Q478 243 383 161Q290 80 245 -9ZM96 423Q126 421 161 421Q328 421 478 466Q400 603 311 691Q233 651 176 581T96 423ZM83 320Q83 163 188 45Q235
137 340 224Q442 308 543 331Q534 353 514 394Q343 339 142 339Q97 339 84 340Q84 338 84 330T83 320ZM134 -46T67 69T0 320T67 571T249 753T500 820T751 753T933 571T1000 320T933 69T751 -113T500 -180T249 -113Z" />
<glyph unicode="E" glyph-name="E" horiz-adv-x="837" d="M574 340Q595 343 620 343Q665 342 701 325Q701 412 640 412H637Q607 412 593 392T574 340ZM6 630V632L189 812Q189 813 190 813L187 807Q176 787 176 759Q176 710 177 656Q177 646 167 646H74Q42 646
15 635Q9 631 6 630ZM0 511Q0 551 15 569Q24 582 41 590Q59 599 88 599H182Q197 599 208 610T219 636Q219 643 219 657T218 680V739Q218 764 230 783Q244 803 280 814Q290 820 333 820H352Q410 820 450 803Q487 788 495 741Q512 742 543 742Q592 742 632 737Q722
726 761 713Q804 698 814 646Q824 590 832 436Q837 338 837 289Q837 245 834 218Q817 45 791 -36Q764 -115 735 -147Q723 -162 699 -170Q665 -180 598 -180Q490 -180 452 -154Q418 -131 415 -48Q410 66 504 74Q514 75 544 75H572Q577 75 578 72T577 65T573 53T571
37T573 19T574 7T567 4Q556 5 544 4T523 1T507 -9T500 -31Q500 -49 511 -68Q517 -74 529 -75Q549 -77 551 -77H584Q640 -77 657 -63Q673 -50 673 0Q673 75 654 102Q634 130 598 134Q513 143 479 154Q426 174 426 273Q426 275 424 275T421 273Q421 206 403 153L395
129Q386 103 358 103H352Q330 103 298 111Q157 133 100 158Q77 168 63 198Q44 237 27 326Q9 411 4 460Q0 489 0 511Z" />
<glyph unicode="F" glyph-name="F" horiz-adv-x="1053" d="M698 10T625 83T552 260T625 437T802 510T979 437T1052 260T979 83T802 10ZM146 10T73 83T0 260T73 437T250 510T427 437T500 260T427 83T250 10Z" />
<glyph unicode="G" glyph-name="G" horiz-adv-x="646" d="M178 591Q188 512 238 455Q288 397 348 397H352Q408 397 442 449Q469 491 469 548Q469 558 467 582Q457 660 407 716Q356 773 298 773H294Q237 773 203 722Q176 682 176 624Q176 613 178 591ZM112 32Q112
-37 170 -85Q228 -134 316 -134Q431 -134 486 -92T542 27Q542 47 538 59Q530 89 505 114Q493 127 465 146L440 163Q434 167 425 173T414 181Q375 193 337 193H333Q247 193 180 146Q112 98 112 32ZM0 -1Q0 86 89 154T304 222H358Q316 262 316 308Q316 338 332 366Q325
365 303 365Q200 365 133 430Q67 494 67 590Q67 682 149 749Q232 817 336 817H646L577 767H479Q525 749 552 700T579 588Q579 495 491 426Q455 397 444 380T432 338Q432 318 459 290Q489 258 513 241Q575 197 597 153Q621 108 621 40Q621 -50 539 -116Q457 -183
317 -183Q184 -183 92 -133T0 -1Z" />
<glyph unicode="H" glyph-name="H" horiz-adv-x="878" d="M555 578Q559 615 578 642L596 667Q615 693 683 712L704 718Q744 730 770 753Q800 778 814 804L827 827Q867 771 876 698Q879 666 879 641Q877 600 873 582L862 537Q851 507 830 480T792 440L777 429Q742
409 710 409L601 462Q716 526 765 584Q808 635 813 660L815 670Q792 618 746 577T665 520T597 494L579 489Q554 532 554 568Q554 575 555 578ZM296 -52L280 -59L336 -63Q410 -16 460 46Q543 147 564 296Q570 337 570 376Q570 390 568 416Q556 538 540 583L531 608Q477
760 456 794L445 811Q484 792 508 763Q532 733 536 710Q540 693 540 671V664Q540 647 534 629L529 616Q532 578 534 504Q534 457 529 402Q514 238 449 113Q433 83 415 58T381 16T348 -15T319 -37T296 -52ZM0 194Q0 47 101 -63T361 -173Q519 -173 620 -63Q721 46
721 194Q721 272 694 340Q654 315 609 306Q631 256 631 192Q631 116 595 50Q557 -17 496 -51Q434 -87 361 -87Q286 -87 225 -51Q163 -14 127 50Q90 116 90 192Q90 310 170 394Q250 477 361 477Q414 477 459 458Q464 498 486 544Q429 565 361 565Q201 565 95 447Q0
340 0 194Z" />
<glyph unicode="I" glyph-name="I" horiz-adv-x="487" d="M-2 -176V-148Q99 -142 128 -121Q158 -100 158 -14V652Q158 734 128 758T-2 786V814H487V786Q384 781 356 758Q326 734 326 652V-14Q326 -100 356 -121T487 -148V-176H-2Z" />
<glyph unicode="J" glyph-name="J" horiz-adv-x="1234" d="M843 597Q842 600 842 607Q842 618 848 628Q857 641 874 646Q891 650 911 650Q978 650 1026 597Q1055 563 1064 522Q1067 506 1067 489Q1067 467 1059 441Q1055 426 1039 418Q1029 413 1021 413Q1016
413 1008 415Q992 419 984 435Q980 443 980 453Q980 458 982 466Q986 478 986 492Q986 520 965 542Q942 568 911 568Q905 568 891 566Q888 565 882 565Q871 565 861 572Q847 581 843 597ZM803 754Q802 757 802 764Q802 776 810 789Q821 806 839 810Q871 817 907
817Q958 817 1007 802Q1090 775 1150 709T1228 556Q1235 524 1235 488Q1235 435 1219 390V389Q1213 371 1196 362Q1184 357 1174 357Q1169 357 1159 359Q1140 365 1132 382Q1127 394 1127 403Q1127 408 1129 418V419Q1140 455 1140 489Q1140 514 1136 537Q1123
599 1081 646T978 712Q945 722 908 722Q887 722 859 717Q856 716 849 716Q836 716 823 724Q808 734 803 754ZM482 139V133Q485 124 495 120T514 120Q531 126 533 142T520 164Q511 168 501 164T485 151Q482 145 482 139ZM341 54Q347 30 371 19Q384 13 398 13Q411
13 422 17Q450 26 465 50Q475 66 475 82Q475 90 472 97Q466 120 442 131Q427 136 416 136Q403 136 391 132Q364 123 350 100Q339 83 339 67Q339 62 341 54ZM285 35Q272 62 272 94Q272 130 290 164Q322 229 394 260Q440 280 485 280Q514 280 539 273Q614 254 648
191Q665 159 665 125Q665 93 650 60Q618 -11 541 -44Q499 -63 453 -63Q421 -63 386 -52Q314 -30 285 35ZM125 97Q135 -3 250 -64Q343 -113 459 -113Q488 -113 519 -110Q673 -95 774 -13Q866 62 866 152Q866 164 865 170Q854 271 740 330Q648 379 530 379Q501 379
471 376Q371 366 289 326T162 224Q124 171 124 115Q124 103 125 97ZM0 145Q0 308 184 492Q298 606 420 654Q477 677 517 677Q562 677 589 650Q615 624 615 578Q615 546 603 506Q600 493 606 489T622 488L632 492Q731 531 802 531T908 490Q923 471 923 438Q923 406
907 367Q901 352 906 347T927 336Q989 318 1033 274T1077 167Q1077 108 1037 47T924 -66Q852 -119 744 -151T518 -183Q387 -183 270 -144Q154 -106 77 -29T0 145Z" />
<glyph unicode="K" glyph-name="K" horiz-adv-x="1086" d="M257 -182H0V818H257V447H486L743 818H1029L701 341Q701 328 797 198L990 -58L1086 -182H743L600 17L457 218H257V-182Z" />
<glyph unicode="L" glyph-name="L" horiz-adv-x="1040" d="M353 -176H575V197Q575 230 583 251Q617 332 697 332Q809 332 809 181V-176H1031V207Q1031 352 962 430T776 508Q647 508 575 397V395H574L575 397V492H353Q357 428 353 -176ZM230 -176H8V492H230V-176ZM121
814Q175 814 210 782Q245 749 245 696Q245 647 211 616Q177 583 119 583H118Q64 583 30 615T-5 699T30 782T121 814Z" />
<glyph unicode="M" glyph-name="M" horiz-adv-x="1348" d="M1183 161Q1223 172 1248 209Q1275 246 1275 288Q1275 318 1260 344Q1236 322 1220 288Q1206 259 1197 228Q1189 192 1183 161ZM1093 136Q1100 141 1117 146Q1130 269 1155 320Q1188 387 1248 387Q1282
387 1324 363Q1341 324 1341 288Q1341 222 1294 169T1182 101Q1180 59 1180 53Q1180 -20 1198 -64Q1188 -62 1161 -62Q1149 -62 1139 -60Q1129 -37 1122 36Q1114 112 1093 136ZM893 244Q893 252 895 302Q910 300 954 277L953 250Q952 199 962 134Q1000 148 1009
198Q1017 241 1017 285V296Q1019 295 1026 295Q1045 294 1075 270Q1075 268 1075 261T1076 251Q1076 221 1064 199Q1063 196 1050 174L1036 151Q1022 140 1002 109Q982 102 964 102Q893 102 893 244ZM678 236Q676 262 701 262Q705 262 719 261T736 260Q739 275
739 291Q739 316 731 377Q724 432 724 464Q724 509 734 536Q741 531 760 530Q783 527 801 506Q795 481 795 439Q795 413 799 358Q801 312 801 297Q801 272 800 263H806Q814 263 816 275T821 288Q829 291 851 270T877 242Q868 235 836 233Q812 232 798 229Q797 221
797 193Q797 180 798 141T800 89L755 85V95V105Q755 126 752 162Q748 201 748 223Q742 224 716 226Q692 227 678 236ZM579 217Q584 211 593 211H602Q611 230 611 260Q611 274 605 299Q604 295 596 276T584 242T579 217ZM523 174Q523 298 601 356Q632 353 661 333Q661
329 653 266Q648 234 648 201V187Q622 185 619 185Q614 185 576 190Q571 177 571 167Q571 146 588 130T627 114Q653 114 668 137Q686 131 689 120Q666 99 626 99Q590 99 556 119Q523 139 523 174ZM413 228L421 229Q423 229 429 227T436 225L443 228Q445 246 445
250Q445 265 440 290Q417 264 413 228ZM355 200Q355 225 363 257Q372 291 392 316T438 341Q446 341 467 336T489 330Q498 290 498 249Q498 221 492 194Q481 198 454 198Q425 200 417 202Q412 180 412 165Q412 143 422 128T452 112Q458 112 478 117T504 122Q521
122 527 108Q486 92 445 92Q401 92 378 121T355 200ZM0 276Q0 287 2 381Q28 389 50 389H68Q86 364 108 319Q128 279 139 258L147 294Q154 326 157 337Q183 424 203 445Q235 440 249 440Q257 440 260 441Q284 387 305 278Q327 171 344 123Q342 123 340 124L337 125Q330
125 310 119T289 113Q251 207 227 316Q212 290 212 227Q212 166 201 139L196 141Q190 141 174 139T153 137H135Q107 187 78 226Q75 220 75 211Q75 206 78 186T80 160L79 148Q49 133 27 133Q19 133 17 134Q0 191 0 276Z" />
<glyph unicode="N" glyph-name="N" horiz-adv-x="1213" d="M-9 598Q2 606 16 610Q28 614 41 614H50Q65 614 74 613Q89 612 106 612Q108 612 121 613T144 614H196Q215 613 228 606T252 574Q256 567 264 549T274 527Q313 444 368 364Q373 355 381 344T398 324T416
308T437 304Q463 308 468 421Q468 428 468 439T469 456Q469 530 454 558Q450 568 440 575T413 588T391 598Q405 625 439 634T537 644H562Q593 644 616 643Q633 643 665 635Q686 630 697 612Q707 593 708 570Q708 561 709 556Q709 536 706 504Q702 467 702 452Q699
407 699 406Q699 394 701 368Q706 323 731 307Q750 309 763 322L774 333L797 364Q856 442 891 527L911 576Q928 605 939 609Q954 616 977 616H986Q998 616 1032 614Q1074 612 1079 612Q1101 612 1139 614Q1198 616 1208 595Q1211 589 1211 582Q1211 554 1176 495Q1160
467 1141 442Q1118 411 1096 384L1059 338L1045 320L1027 296Q1009 274 1011 247Q1011 234 1023 217Q1029 211 1033 205L1059 181Q1133 113 1171 64Q1211 12 1211 -11Q1211 -44 1160 -52Q1137 -56 1107 -56Q1086 -56 1064 -53Q1038 -51 1027 -51Q1004 -51 982 -56H976Q912
-46 837 38Q835 40 820 58T798 84Q771 111 748 107Q724 102 717 78Q710 52 708 18T699 -30Q686 -54 620 -54Q587 -54 554 -50Q479 -43 412 -10Q352 20 312 57Q274 93 231 150Q125 286 34 472Q16 508 11 520Q-9 567 -9 598Z" />
<glyph unicode="O" glyph-name="O" horiz-adv-x="852" d="M224 189Q230 98 239 78Q257 -53 316 -101Q369 -142 406 -142H422Q530 -142 573 -53Q616 34 624 186Q626 222 626 329Q626 388 625 413Q623 481 616 536L611 573Q603 630 573 690Q551 734 517 756T425
781Q418 782 406 782Q374 782 350 768Q307 743 281 693T246 598L241 574Q237 555 231 464Q226 392 226 359V318Q226 303 225 276T223 238Q223 204 224 189ZM2 287L0 327Q-1 353 4 400Q10 466 28 523Q37 549 56 585Q71 614 93 647Q148 726 220 771Q261 797 314 810Q358
821 398 820Q418 820 428 819Q533 819 617 776T752 659Q852 514 852 335Q852 55 692 -90Q639 -139 574 -159T414 -179H403Q370 -179 320 -167Q235 -146 154 -78T37 101L29 126Q23 149 15 190Q4 248 2 287Z" />
<glyph unicode="P" glyph-name="P" horiz-adv-x="1049" d="M770 527Q783 527 783 539Q783 552 770 552Q758 552 758 540T770 527ZM717 484Q702 499 702 521T717 558Q733 574 754 574T792 558T808 521T792 484Q777 469 755 469T717 484ZM676 479L675 478V481L676
479ZM620 413L570 462Q600 457 620 457Q639 457 669 462L620 413ZM568 484L620 536L671 484Q650 477 621 477Q590 477 568 484ZM564 478L563 479L565 481L564 478ZM469 539Q469 527 481 527T493 539T481 552T469 539ZM465 574Q487 574 502 559T518 521T503 484T465
469Q444 469 429 484T413 521T428 558T465 574ZM232 114Q232 98 239 87Q264 -7 328 -51Q374 -81 434 -97Q497 -115 551 -115Q618 -115 696 -87Q776 -58 816 -15Q884 59 884 242Q884 467 792 621Q780 640 774 648Q759 672 723 672Q673 672 616 611Q539 658 476 658Q419
658 374 617T300 510Q274 448 258 369Q232 239 232 114ZM0 207Q10 345 168 380Q180 468 210 572Q242 678 282 718Q328 766 400 793T548 820Q634 820 712 781T829 671Q847 639 870 540Q895 436 901 386Q916 380 935 380Q965 380 965 409Q965 416 960 442T954 478V482H955Q982
482 1016 431Q1050 379 1050 350Q1050 318 1022 290Q1012 281 988 273Q962 263 956 262L920 254L912 252V226Q912 53 835 -27L860 -52L885 -63Q932 -83 939 -100Q874 -151 807 -151Q774 -151 732 -134Q645 -171 552 -171Q433 -171 318 -110Q286 -117 263 -129Q261
-130 239 -146T198 -172T172 -180Q169 -162 169 -143Q169 -64 222 -17Q161 83 160 240L153 241H150Q118 241 74 224Q28 207 10 205Q8 205 0 207Z" />
<glyph unicode="Q" glyph-name="Q" horiz-adv-x="869" d="M223 637V-1Q240 -5 300 -5H304Q458 -5 544 80Q633 166 633 336Q633 488 553 567T323 646Q258 646 223 637ZM3 -163V794Q124 815 300 815Q441 815 536 791T701 714Q866 590 866 344Q866 84 705 -51Q556
-177 254 -177Q115 -177 3 -163Z" />
<glyph unicode="R" glyph-name="R" horiz-adv-x="1000" d="M0 628V820Q202 820 388 740T707 527T920 208T1000 -180H808Q808 -15 744 134Q679 286 571 392Q464 499 313 564Q166 628 0 628ZM0 289V480Q179 480 331 391Q482 302 571 151Q660 -1 660 -180H468Q468
14 331 151Q193 289 0 289ZM266 -46Q266 -102 227 -140Q188 -179 133 -179T39 -140T0 -46T39 48T133 87T227 48T266 -46Z" />
<glyph unicode="S" glyph-name="S" horiz-adv-x="986" d="M221 181Q221 140 251 96Q322 -8 497 -8Q547 -8 593 3T681 37T747 101T772 195Q772 252 742 293Q724 318 694 336T642 362T573 383Q551 389 516 397T460 411T418 426T385 447T375 477Q375 509 411 526Q447
542 486 542Q526 542 552 530T590 500T611 465T636 435T675 422Q719 422 737 462T728 541Q699 595 633 621Q570 646 495 646Q398 646 323 608Q234 563 234 465Q234 402 272 361T371 301Q395 294 438 284T508 267T565 248T609 220T623 181Q622 140 581 119T493 98Q448
99 420 114T379 150T358 192T332 228T290 243Q262 243 242 226T221 181ZM0 547Q0 660 80 740T273 820Q350 820 418 778Q452 785 498 785Q693 785 831 647T969 315Q969 269 958 214Q986 157 986 93Q986 -20 906 -100T713 -180Q646 -180 584 -148Q536 -156 498 -156Q304
-156 166 -18T28 315Q28 362 37 409Q0 473 0 547Z" />
<glyph unicode="T" glyph-name="T" horiz-adv-x="1230" d="M0 -83Q30 -86 60 -86Q236 -86 374 22Q290 24 227 72Q161 122 138 197Q155 193 185 193Q220 193 252 202Q163 219 106 288T49 449V452Q101 423 164 421Q112 455 82 510T51 631Q51 699 86 758Q182 639
315 571Q449 502 606 494Q599 525 599 552Q599 656 673 730T852 804Q961 804 1036 724Q1121 742 1196 786Q1168 695 1086 646Q1161 655 1230 686Q1182 611 1105 555V522Q1105 309 985 125Q924 32 841 -39Q755 -113 637 -154T387 -196Q179 -196 0 -83Z" />
<glyph unicode="U" glyph-name="U" horiz-adv-x="859" d="M723 96H677V126Q677 157 700 157T723 126V96ZM623 124V-3Q623 -43 642 -66T699 -90Q777 -90 777 -3V18H723V-12Q721 -19 720 -25T714 -36T700 -41Q677 -41 677 -1V52H777V124Q777 206 702 206Q666 206
645 183T623 124ZM509 510V747H561V532Q561 513 575 513Q588 513 606 534V747H658V466H606V497Q577 462 545 462Q509 462 509 510ZM486 -29V147Q497 158 508 158Q530 158 530 130V-18Q530 -42 511 -42Q496 -42 486 -29ZM433 299V-82H486V-61Q505 -86 536 -86Q583
-86 583 -24V132Q583 203 532 203Q507 203 486 176V299H433ZM366 686V530Q366 507 388 507Q411 507 411 532V685Q411 698 400 703T377 703T366 686ZM312 537V683Q312 716 333 735T390 754Q423 754 443 734T464 681V536Q464 500 444 480T388 459Q353 459 333 480T312
537ZM233 199V-38Q233 -86 269 -86Q301 -86 330 -51V-82H382V199H330V-15Q309 -36 299 -36Q285 -36 285 -17V199H233ZM164 694L117 847H177L215 695H219L255 847H315L269 699L246 624V466H187V617Q185 631 175 661T164 694ZM52 299V244H113V-82H172V244H233V299H52ZM-9
265Q-6 318 28 351T116 388Q228 393 417 393T718 388Q771 385 805 352T843 265Q848 190 848 103T843 -59Q840 -112 806 -145T718 -182Q606 -187 417 -187T116 -182Q63 -179 29 -146T-9 -59Q-15 27 -15 103T-9 265Z" />
<glyph unicode="V" glyph-name="V" horiz-adv-x="1146" d="M47 487L0 548Q108 677 205 741Q282 791 326 806L343 810Q359 812 367 812Q389 812 402 806Q438 791 458 751T495 644Q501 621 510 567Q529 453 538 417Q570 289 589 239Q608 187 631 187Q655 187 697
242T791 394Q817 443 817 485Q817 494 815 508Q806 559 764 573Q755 577 740 577Q706 577 657 551Q679 681 791 760Q876 820 965 820Q981 820 989 819Q1090 812 1128 729Q1146 691 1146 641Q1146 612 1140 580Q1122 477 1070 372Q1021 270 957 184Q894 101 825
29Q701 -98 611 -156Q569 -180 533 -180T463 -159T407 -111T369 -54Q350 -15 271 244Q191 506 175 525Q173 527 171 529T157 533T133 534T97 520T47 487Z" />
<glyph unicode="W" glyph-name="W" horiz-adv-x="1233" d="M677 366L781 736Q815 710 858 692T930 670L955 666Q972 663 1020 663Q1045 663 1062 664Q1081 665 1146 677Q1203 689 1233 710L1129 340Q1093 320 1043 308Q992 297 958 296L925 294Q886 292 822 305Q720
325 677 366ZM557 -109L661 262Q695 236 738 218T810 196L835 192Q852 189 900 189Q925 189 942 190Q961 191 1026 203Q1084 215 1113 236L1009 -135Q972 -156 923 -166Q872 -176 839 -178L806 -180Q764 -182 702 -170Q602 -151 557 -109ZM126 404L231 775Q268
796 317 806Q365 817 401 819L434 820Q481 821 538 810Q637 791 682 749L578 378Q545 404 502 422T430 444L404 448Q387 451 340 451Q333 451 297 449Q268 447 213 436Q157 426 126 404ZM0 -73L105 298Q142 319 190 329Q247 341 274 342L308 343Q353 344 412 333Q511
314 556 272L452 -98Q419 -72 376 -54T304 -32L278 -28Q261 -25 213 -25Q188 -25 170 -26Q147 -27 87 -40Q30 -52 0 -73Z" />
<glyph unicode="X" glyph-name="X" horiz-adv-x="899" d="M535 -182L312 210L658 818H890L545 210L767 -182H535ZM123 406L-50 120H169L342 406L212 635H-7L123 406Z" />
<glyph unicode="Y" glyph-name="Y" horiz-adv-x="1379" d="M1313 36L1203 40L1207 150L1317 146L1313 36ZM1231 232L1190 803L1375 796L1292 229L1231 232ZM0 702V694L6 675Q14 662 19 660L21 658L40 648H151L438 304Q449 291 449 279V87Q449 72 441 70H438Q326
70 296 67Q286 67 286 58V3H802V60Q802 67 795 67H793H649Q640 67 640 82V284Q639 290 647 298L650 301L914 550H1047Q1057 550 1065 557L1082 576Q1088 584 1088 594V608Q1086 614 1082 614H1080H644L637 608Q635 595 644 586L646 582L669 559L687 552H802L595
357L367 648H408Q419 647 430 652L498 673Q500 673 504 676T508 688V702Q508 709 502 709H499H10Q1 707 0 702Z" />
<glyph unicode="Z" glyph-name="Z" horiz-adv-x="870" d="M0 19Q0 42 43 70Q82 153 82 154Q82 162 96 226T129 348Q143 391 160 423Q186 471 206 489Q217 497 209 500Q180 519 158 582Q147 615 147 652Q147 661 149 681Q151 700 156 684Q159 677 162 659Q167 623
188 584Q211 543 249 528Q251 528 268 535Q340 561 507 573Q509 614 514 649Q500 660 498 677L497 683Q489 669 477 670Q469 672 469 703Q469 712 471 746Q472 765 488 777T522 791Q530 799 558 799Q571 813 603 818Q622 821 638 821Q652 821 658 820L681 817Q688
818 703 818L743 814Q771 807 790 797L805 788H809Q836 788 850 761Q859 746 866 720L869 700Q869 688 864 671H860Q854 677 850 688Q843 665 832 654L828 650V644Q828 600 801 542Q798 535 803 521Q809 508 826 435Q841 375 841 340V337Q841 309 826 271Q812 236
799 223Q801 218 799 213Q799 182 778 141Q771 131 760 97Q754 77 746 44Q741 16 741 2Q741 -13 745 -18Q748 -20 762 -40T774 -66Q773 -75 758 -84T732 -94Q719 -94 705 -87T685 -68Q679 -49 679 -30Q679 -16 682 -2L693 47Q699 76 705 134Q707 160 707 172Q707
205 700 223L685 217Q649 203 578 203Q564 133 554 108L549 96Q544 88 544 -17Q544 -56 558 -120Q575 -131 575 -147V-152Q573 -164 560 -172T530 -180Q513 -180 499 -169T484 -141V-126Q485 -111 486 -92V-44V-21Q486 38 479 70Q453 168 452 213Q446 213 439 218L386
162Q387 157 392 138T397 117Q397 109 411 103Q426 97 438 87T449 68Q447 54 426 54H420Q400 54 380 63Q375 65 359 116T341 169Q336 192 340 198Q355 238 355 258V262Q353 277 332 294Q311 312 293 312Q278 312 260 296Q256 293 242 281T225 267Q222 265 209 254T187
235L163 213Q157 209 126 152Q93 90 85 71Q67 -2 22 0Q0 1 0 19Z" />
<glyph unicode="[" glyph-name="bracketleft" horiz-adv-x="999" d="M312 316Q312 238 366 184T497 130Q573 130 627 184Q682 239 682 316Q682 392 628 446Q574 501 497 501T366 446Q312 392 312 316ZM0 297Q0 372 23 452T85 597Q147 702 267 760Q388 820 516
820Q645 820 765 738Q883 657 948 537Q998 446 998 323Q998 173 927 57Q856 -58 736 -119T465 -180L526 -70Q611 84 664 168L665 170Q666 171 676 187T689 208Q709 241 714 267Q720 291 720 315Q720 396 672 457L947 538Q614 538 519 537Q514 538 497 538Q399 538
331 464Q265 391 276 291Q274 303 274 319Q274 363 289 396L85 597L283 256Q303 182 362 138Q422 93 497 93Q514 93 530 96L464 -180Q350 -180 241 -109Q134 -39 66 67Q0 169 0 297Z" />
<glyph unicode="\" glyph-name="backslash" horiz-adv-x="831" d="M0 -155Q0 -128 31 -128Q58 -128 80 -120Q146 -104 146 -11V603Q146 730 54 738Q39 739 33 744T26 754T25 770Q24 795 48 795L68 794Q87 794 110 793L247 790Q300 789 382 789Q510 789 578 794Q641
798 694 804T752 810Q783 810 783 779Q783 778 780 767T774 739T771 712Q771 696 774 665Q778 637 778 621Q778 604 767 594T742 584Q722 584 721 612Q724 623 722 636T717 661T696 684T649 704T565 717T433 721Q350 720 316 714T275 696T267 651V516Q267 485 267
458T268 417T268 401Q268 382 274 375T297 367H530Q570 367 596 389T626 455Q627 471 631 479T639 488T654 490Q669 490 677 478T683 445Q683 442 678 399Q674 364 674 334T678 267Q683 220 683 210Q683 185 660 180Q637 177 631 204Q623 234 613 252Q587 300 508
300H301Q283 300 275 289T267 251V-14Q267 -60 291 -84T374 -109H424H487Q505 -109 547 -106Q584 -105 612 -99Q680 -84 712 -59Q735 -41 745 -15T766 68Q769 86 792 86Q820 85 829 54Q832 42 831 30Q830 21 814 -33Q799 -81 799 -108Q799 -112 799 -129T800 -152Q800
-190 775 -190L766 -188Q756 -186 742 -183T699 -178T638 -176Q487 -176 316 -177Q218 -178 128 -178T31 -179Q13 -179 7 -174T0 -155Z" />
<glyph unicode="]" glyph-name="bracketright" horiz-adv-x="1040" d="M1036 49L698 374L1036 664Q1039 655 1039 645V69Q1039 59 1036 49ZM48 10L389 337L521 230L653 337L994 10Q986 7 977 7H64Q56 7 48 10ZM387 413L47 704Q54 707 64 707H977Q986 707 995 704L655
413L610 377L521 304L432 377L387 413ZM2 69V645Q2 646 5 664L344 374L6 49Q2 61 2 69Z" />
<glyph unicode="^" glyph-name="asciicircum" horiz-adv-x="1106" d="M952 -43L976 -34Q1038 -22 1048 -104Q1051 -139 1047 -180Q1042 -167 1003 -150Q964 -134 948 -112Q935 -95 935 -78Q935 -68 937 -62T942 -53T952 -43ZM872 82L909 101Q919 106 930 103T946
89L977 29Q990 3 967 -10L940 -26Q930 -32 919 -29T902 -16L862 46Q856 56 859 66T872 82ZM916 251L846 383H1081Q1091 383 1098 376T1106 358V207Q1106 197 1099 190T1081 182H948Q943 200 940 205L916 251ZM524 819Q534 823 559 788Q583 754 631 672Q687 576
693 567Q710 541 768 436L859 267L903 184Q913 167 902 150T870 124L846 115Q842 114 816 122Q789 136 626 515Q597 572 550 690T524 819ZM716 182H440L555 383H622L716 182ZM134 26L438 554Q443 563 453 565T472 563L537 526Q547 521 549 511T547 491L244 -37Q239
-46 229 -48T209 -46L144 -8Q135 -4 132 6T134 26ZM188 -75L122 -37L188 -75ZM0 207V358Q0 368 7 375T25 383H290L175 182H25Q0 182 0 207Z" />
<glyph unicode="_" glyph-name="underscore" horiz-adv-x="1084" d="M1085 2H-1V91V145V352H139V145H944V352H1085V145V91V2Z" />
<glyph unicode="`" glyph-name="grave" horiz-adv-x="1000" d="M426 308Q396 340 396 384T426 460Q457 492 500 492T573 460Q604 428 604 384T573 308Q543 276 500 276T426 308ZM349 104Q349 202 382 235Q406 257 434 262Q458 267 500 267Q526 267 535 266Q570
266 594 253Q651 220 651 104Q651 -11 606 -98Q561 -183 500 -183Q438 -183 393 -98Q349 -13 349 104ZM183 299Q183 435 276 531Q369 628 500 628T724 531Q817 435 817 299Q817 297 817 289T816 279Q808 408 717 498Q625 588 500 588Q374 588 283 498Q192 408 184
279Q184 281 184 289T183 299ZM0 298Q0 440 67 558Q135 679 249 747Q364 817 500 817T751 747Q865 679 933 558Q1000 440 1000 298Q1000 296 1000 288T999 278Q992 485 846 631Q702 776 500 776T153 631Q8 485 1 278Q1 280 1 288T0 298Z" />
<glyph unicode="a" glyph-name="a" horiz-adv-x="1099" d="M894 27Q895 30 900 35Q927 52 948 58Q981 67 1022 69Q1029 70 1041 68Q1086 64 1095 53Q1099 48 1099 35V28Q1099 -9 1080 -54Q1060 -104 1027 -131Q1023 -135 1018 -135Q1015 -135 1014 -134Q1008 -131
1011 -123Q1048 -37 1048 -2Q1048 10 1044 14Q1034 26 988 26Q963 26 948 24L902 18Q896 18 894 19T893 24Q893 26 894 27ZM474 349Q474 310 493 287T546 263Q548 263 554 264T562 265Q605 276 627 319Q637 338 643 360Q650 391 650 443V468Q589 468 562 460Q474
436 474 349ZM302 329Q302 397 335 446T429 521Q483 544 562 554Q603 559 650 562V579Q650 644 636 665Q616 695 570 695H562Q528 692 505 674T474 624Q469 604 454 601L339 615Q322 620 322 633Q322 637 323 640Q339 728 406 772Q480 820 562 820H587Q702 820
765 761Q783 743 797 719Q800 714 803 704T808 683T812 669Q814 663 815 641Q816 627 816 616V586V558V374Q816 344 823 326T838 296T861 265Q867 256 867 249Q867 241 859 235L769 157Q758 147 740 155Q734 160 700 194L672 233Q617 172 562 157Q529 147 478 147Q399
147 351 195T302 329ZM1 44Q6 53 17 45Q267 -100 561 -100Q759 -100 948 -27L976 -15Q991 -9 999 -21Q1008 -32 994 -43Q974 -58 948 -73Q862 -124 757 -152T549 -180Q237 -180 5 28Q-1 32 -1 38Q-1 40 1 44Z" />
<glyph unicode="b" glyph-name="b" horiz-adv-x="1314" d="M1038 441Q1038 401 1065 373T1133 345Q1172 345 1200 373T1228 441Q1228 480 1200 508T1133 536Q1093 536 1066 508T1038 441ZM1132 321Q1182 321 1217 356T1252 440T1217 524T1132 559Q1083 559 1048
524T1013 440T1048 356T1132 321ZM792 86L743 105Q771 53 830 53Q870 53 899 81T928 151Q928 191 900 219T830 248Q819 248 809 246L849 230Q878 218 892 188Q899 174 899 158Q899 144 893 129Q881 98 851 86Q836 80 821 80Q807 80 792 86ZM33 438Q33 398 61 370T130
341Q135 341 151 343L110 359V360Q82 373 70 402Q64 416 64 430Q64 445 70 460Q82 490 110 502Q125 509 141 508Q153 508 168 503V504L217 484Q189 536 130 536Q90 536 62 508T33 438ZM130 571Q177 571 213 542T260 467L762 265Q793 284 830 284Q831 284 836 284T844
283L954 442Q956 516 1007 566Q1059 618 1132 618Q1206 618 1258 566T1310 440T1258 314T1132 262L962 138Q958 87 919 52Q882 18 830 18Q782 18 746 48T700 123L198 324Q167 305 130 305Q75 305 36 344Q-2 384 -2 438T36 532Q75 571 130 571Z" />
<glyph unicode="c" glyph-name="c" horiz-adv-x="1107" d="M-2 251Q-2 356 71 429Q145 503 248 503L249 502Q249 504 249 509T248 515Q248 634 330 716Q413 799 530 799Q633 799 711 733T807 567H824Q940 567 1023 484T1106 283T1023 82T824 -1Q815 -1 812 0V-1H257H248H239H234V0Q135
4 66 78Q-2 152 -2 251Z" />
<glyph unicode="d" glyph-name="d" horiz-adv-x="1013" d="M804 34L499 -164L500 191L502 192L704 37L804 97V34ZM502 631L206 451L500 266L796 462L502 631ZM499 -164L201 35V92L295 37L498 192L499 191V-164ZM299 101L-12 286L202 449L-12 611L299 814L502 640L710
814L1012 621L814 456L1012 286L705 101L502 257L299 101Z" />
<glyph unicode="e" glyph-name="e" horiz-adv-x="1407" d="M1022 276L915 494Q976 485 999 455T1022 367V276ZM915 494L889 546H1043L1143 314L1252 546H1395L1206 187V-3H1065V187L1022 276V367Q1022 425 999 455T915 494ZM822 223Q822 161 863 161Q897 161 910
197Q916 211 916 245V289Q892 289 882 287Q862 287 854 282Q822 271 822 223ZM832 377H725Q725 443 765 471Q804 497 866 497Q870 497 915 494L1022 276V174Q1022 169 1024 135L1026 101H926L921 153H919Q886 95 819 95Q798 95 793 96V148Q793 165 793 186T792
211Q790 241 783 267Q774 301 757 320Q795 349 892 349H916V380Q916 411 907 424T872 437Q847 437 840 423T832 377ZM717 218Q717 292 757 320Q774 301 783 267Q791 235 793 211V148V96Q717 114 717 218ZM598 150Q598 71 607 42T642 12Q669 12 678 41T688 150Q688
239 676 260Q665 280 642 280Q610 282 603 242Q598 207 598 150ZM572 161H491V322Q543 300 560 260Q573 230 573 184Q573 169 572 161ZM491 -46V33Q493 33 495 35Q567 71 569 122H491V161H572Q573 169 573 184Q573 230 560 260Q543 300 491 322V505H598V302H600Q632
346 688 346Q731 346 757 320Q717 292 717 218Q717 114 793 96Q792 37 772 -5Q749 -54 686 -54Q622 -54 595 -4H594V-46H491ZM491 33V122H569Q567 71 495 35Q493 33 491 33ZM198 215H376Q376 243 366 265Q353 294 285 294Q221 294 208 263Q198 241 198 215ZM0 181Q0
243 26 281Q75 353 285 353Q375 353 433 340Q471 333 491 322V161H198Q198 126 209 97Q223 61 285 61Q370 61 370 122H433H435H491V33Q466 21 435 14Q368 -1 285 -1Q101 -1 47 50Q20 76 10 105T0 181Z" />
<glyph unicode="f" glyph-name="f" horiz-adv-x="817" d="M434 283H280V474H434V570Q434 674 501 747T665 820H818V629H665Q650 629 638 613T626 572V474H818V283H626V-180H434V283Z" />
<glyph unicode="g" glyph-name="g" horiz-adv-x="939" d="M655 571V469H710V185V184Q715 146 740 121T788 88T832 78H845H852Q878 78 900 86Q921 93 930 102L937 111L939 210Q899 197 874 197Q868 197 865 198Q842 201 838 214L834 227Q834 230 833 231V469H924V571H833V664H710V571H655ZM608
92H474V571H608V92ZM478 681Q455 705 455 739T478 796Q502 820 536 820T594 796Q618 773 618 739T594 681T536 657T478 681ZM124 -27Q124 0 149 18T212 37T275 19T301 -27Q301 -53 275 -72T212 -91T150 -72T124 -27ZM193 485Q223 485 244 462T265 405T244 349T193
325Q164 325 143 348T121 405T142 461T193 485ZM0 -27Q0 -90 62 -135Q124 -180 212 -180T362 -135Q425 -90 425 -27Q425 37 362 82Q300 127 212 127L209 126H206Q157 170 206 227Q277 232 326 282T375 403Q375 432 368 453Q394 457 412 467V582Q363 550 303 550H296Q250
581 195 581Q119 581 67 529Q14 476 14 403Q14 356 38 316T102 252Q74 217 74 178Q74 143 100 103Q53 82 27 48T0 -27Z" />
<glyph unicode="h" glyph-name="h" horiz-adv-x="866" d="M635 167L501 300L635 433L866 300L635 167ZM501 300L0 796V800L433 550L635 433L501 300ZM0 -200V-196L501 300L635 167L433 50L0 -200ZM501 300L0 -196V300V796L501 300Z" />
<glyph unicode="i" glyph-name="i" horiz-adv-x="1000" d="M283 144Q283 113 304 92T357 70Q390 70 414 94T438 151V159V420L638 457V249Q621 254 610 254Q577 254 553 230T529 173Q529 142 550 121T602 99T658 122T683 176V180V188V570L393 520V220Q376 225 365
225Q331 225 307 201T283 144ZM334 720T217 603T100 320T217 37T500 -80T783 37T900 320T783 603T500 720ZM134 -46T67 69T0 320T67 571T249 753T500 820T751 753T933 571T1000 320T933 69T751 -113T500 -180T249 -113Z" />
<glyph unicode="j" glyph-name="j" horiz-adv-x="764" d="M191 626V176H590V626H191ZM193 -183H0V817H764V0L193 3V-183Z" />
<glyph unicode="k" glyph-name="k" horiz-adv-x="1000" d="M161 184L81 104Q147 37 273 37Q352 37 410 78Q468 118 468 196Q468 269 435 301T346 345Q300 349 263 358T225 396Q225 443 295 442Q351 442 382 413L460 491Q400 551 290 551Q212 551 158 509Q105 468
105 392Q105 294 177 264Q204 252 265 244T336 224Q346 214 346 194Q346 148 274 148Q197 148 161 184ZM133 710Q279 820 489 820H500H505V43H629V251Q633 246 668 187Q698 137 719 108Q747 69 781 56T874 42H910V160Q864 160 847 167Q828 175 805 208Q788 231
768 264L742 308L913 546H765L629 357V810Q764 787 867 710Q897 686 917 662Q962 611 976 560Q978 552 983 533T990 507Q996 484 997 446Q1000 403 1000 387V320V253Q1000 238 997 194Q996 157 990 132Q980 93 976 79Q968 47 953 24Q912 -37 867 -70Q721 -180 500
-180T133 -70Q104 -48 82 -22Q35 33 23 79L9 132Q5 149 2 194Q0 252 0 253V320V387Q0 388 2 446Q5 492 9 507L23 560Q31 591 47 616Q88 677 133 710Z" />
<glyph unicode="l" glyph-name="l" horiz-adv-x="1332" d="M395 716Q519 716 615 653T761 472L890 172Q913 120 927 98Q973 32 1056 32H1063Q1130 32 1174 68Q1219 105 1221 164Q1221 216 1183 241Q1161 255 1143 262Q1117 272 1084 283Q960 323 904 372Q849 421
849 508Q849 599 906 653T1063 708Q1190 708 1254 593L1170 550Q1125 612 1058 612Q1012 612 982 584T951 511Q951 460 991 435Q1014 421 1036 413L1062 404L1094 394L1127 384Q1230 353 1281 300Q1328 251 1328 160Q1328 60 1252 -6Q1176 -71 1066 -71H1063Q965
-71 902 -26T799 116L785 149L658 437Q624 515 553 561Q482 608 395 608Q276 608 191 523Q107 439 107 320Q107 202 191 116Q276 32 395 32Q476 32 544 74T650 187L701 69Q646 0 566 -38T395 -76Q231 -76 115 40T-1 320T115 600T395 716Z" />
<glyph unicode="m" glyph-name="m" horiz-adv-x="1210" d="M1038 553L731 299L1038 69V553ZM961 716H266L614 418L961 716ZM183 556V75L490 304L183 556ZM528 273L183 15V-65H1038V9L693 268L614 203L528 273ZM183 -117H7V780H192L201 772H1026L1035 780H1209V-120H1038V-113H183V-117Z"
/>
<glyph unicode="n" glyph-name="n" horiz-adv-x="1000" d="M143 504L0 496L316 819V696L617 419L804 465L609 257L1000 -181L556 211L368 19L398 188L143 504Z" />
<glyph unicode="o" glyph-name="o" horiz-adv-x="1083" d="M686 526V411H691Q729 411 768 396Q813 380 832 365L853 349L770 315L1083 237V482L976 421Q935 465 863 490Q787 517 738 521L686 526ZM652 -102L510 -180V722L652 820V-102ZM1 156L0 173Q-10 338 183
441Q307 506 445 523L471 526V403Q319 391 236 301Q183 243 174 180L172 168Q169 153 169 138Q169 114 176 96Q193 47 252 7T362 -50T452 -74L471 -77V-180Q370 -169 295 -145Q168 -105 86 -21Q43 24 23 73T1 156Z" />
<glyph unicode="p" glyph-name="p" horiz-adv-x="1000" d="M457 596V338H566Q580 338 597 344Q657 365 656 434L655 495Q655 509 648 527Q640 554 618 575T557 596H457ZM574 13H239V43H288Q314 43 331 60T350 98L351 117V123V152V529Q351 562 337 582T306 605L291
607H241V639H590Q635 639 670 625T723 588T752 546T764 509L766 494V432Q766 388 748 356T701 310T650 290T610 284L601 283H458V115Q458 86 474 68T510 47L527 45H574V13ZM38 659V-19Q38 -70 74 -106T161 -142H839Q890 -142 926 -106T962 -19V659Q962 710 926
746T839 782H161Q110 782 74 746T38 659ZM0 -47V687Q0 742 39 781T133 820H867Q922 820 961 781T1000 687V-47Q1000 -102 961 -141T867 -180H133Q78 -180 39 -141T0 -47Z" />
<glyph unicode="q" glyph-name="q" horiz-adv-x="889" d="M221 423V307Q221 190 287 108Q354 26 448 26Q473 26 500 34Q500 42 465 76T389 114V193V202Q396 203 409 203Q528 203 612 113Q675 194 675 307V423Q675 539 608 621Q542 704 448 704Q355 704 287 621Q221
538 221 423ZM444 817Q630 814 758 685Q889 552 889 366Q889 247 832 145Q775 44 678 -17L684 -27Q690 -37 702 -50T738 -77T792 -100V-176Q758 -183 725 -183Q674 -183 640 -165Q584 -136 549 -71Q509 -82 444 -84Q356 -85 274 -49T132 48T36 193T0 366Q0 486
60 590T224 757T444 817Z" />
<glyph unicode="r" glyph-name="r" horiz-adv-x="1201" d="M521 820Q608 820 683 795V493Q618 528 551 528Q459 528 389 479Q345 447 308 396Q273 346 273 301Q273 211 330 160Q388 109 479 109Q556 109 630 150Q703 192 739 259Q760 299 760 309Q761 354 761
452Q761 476 761 532T760 621V765Q789 749 879 688Q1015 596 1168 596Q1188 596 1194 589T1201 559Q1201 508 1148 458Q1096 409 1038 389Q1042 361 1042 320Q1042 180 970 65T778 -115Q659 -180 521 -180Q384 -180 263 -115Q144 -50 72 65Q0 180 0 320Q0 458 72
574Q145 691 263 755Q384 820 521 820Z" />
<glyph unicode="s" glyph-name="s" horiz-adv-x="1153" d="M602 508Q600 527 639 536T706 545Q803 545 875 472Q948 399 955 294Q982 307 1010 307Q1067 307 1109 261Q1151 214 1151 151Q1152 87 1110 40Q1068 -5 1010 -5H617Q611 -5 607 1T602 14Q602 29 602
80T601 169Q600 310 602 508ZM521 140Q521 143 527 491Q529 509 543 509T559 491Q565 143 565 140Q565 114 559 13Q558 2 551 -2T536 -3T527 13Q521 114 521 140ZM426 141Q426 196 427 226L429 326L432 411Q434 426 446 426T460 411Q461 400 461 370T462 326Q466
229 466 141Q466 139 460 10V11Q459 1 453 -2T440 -3T432 10Q426 139 426 141ZM331 141Q331 196 334 300Q337 420 338 429Q340 441 350 441T362 429L366 296Q370 162 370 141Q370 131 366 69L362 8Q360 -4 350 -4T338 8Q338 24 334 67Q331 115 331 141ZM237 141Q237
193 238 221L242 316L246 398Q246 408 255 408Q265 408 265 398Q265 393 266 380T268 340T270 286Q275 181 275 141Q275 121 270 64T265 6Q265 -4 255 -4Q246 -4 246 6Q237 138 237 141ZM145 141Q145 159 150 214L155 269Q155 278 162 278Q170 278 170 269Q181
151 181 141Q181 132 170 5Q170 -3 162 -3Q155 -3 155 5Q155 6 150 63Q145 121 145 141ZM64 122T64 141T69 215L75 276Q75 282 81 282Q86 282 87 276Q99 147 99 141Q99 132 93 70L87 11Q86 4 81 4Q75 4 75 11L69 69Q64 122 64 141ZM0 141Q0 156 3 185Q7 213 13
216Q18 213 23 183Q28 151 28 141Q28 130 23 98Q19 70 13 67Q0 74 0 141Z" />
<glyph unicode="t" glyph-name="t" horiz-adv-x="616" d="M111 410H0V552Q59 571 101 607Q143 641 168 693Q194 745 203 820H346V567H583V410H346V154Q346 68 355 42Q364 18 389 3Q424 -17 465 -17Q543 -17 616 32V-125Q555 -155 500 -168Q447 -180 388 -180Q317
-180 266 -163Q213 -146 177 -113Q141 -82 125 -45Q111 -9 111 60V410Z" />
<glyph unicode="u" glyph-name="u" horiz-adv-x="916" d="M686 367Q686 517 794 517Q838 517 867 492T906 440T916 393V379V368V359Q916 347 915 336Q914 323 903 287Q894 261 870 244T810 227H804Q768 227 741 238Q713 250 703 274Q686 311 686 367ZM508 657Q512
703 557 754Q595 795 629 795Q637 795 642 794Q685 784 716 736Q741 698 741 659Q741 647 740 641Q731 587 692 540Q658 501 612 500Q603 500 598 501Q541 509 522 552Q508 582 506 627Q506 635 508 657ZM455 147V-15Q455 -32 469 -45T500 -65L515 -70H661V147H598V-16H538Q525
-16 516 -1L515 3V148L455 147ZM272 12L268 23Q266 33 266 39Q266 54 272 70Q283 96 311 105H366V-20H315Q300 -20 288 -10T272 12ZM263 557Q232 601 232 666T263 775Q294 820 340 820Q384 820 416 775Q448 729 448 666T416 557Q384 512 340 512Q294 512 263 557ZM216
92L208 72Q206 54 206 45Q206 9 218 -16Q239 -59 297 -71H424V236L367 237V154H299Q271 154 248 135T216 92ZM77 -66L66 -32Q62 -20 62 4Q62 33 72 59Q82 87 97 109T124 142T159 172L185 193L196 202Q207 211 221 224T253 255T286 293T314 333Q331 362 364 386Q396
408 436 414Q442 415 453 415Q484 415 519 397Q564 374 598 320Q605 309 621 288Q641 265 688 216Q737 166 794 121Q828 95 840 53T848 -21T834 -77L828 -92Q821 -110 793 -136Q771 -155 743 -167Q719 -180 664 -179T552 -159Q513 -146 473 -146H459Q434 -146 404
-150L379 -154L352 -159Q327 -163 286 -167Q232 -172 206 -167H203Q158 -167 123 -134Q87 -98 77 -66ZM2 455Q9 521 38 553T94 588L103 590H111Q154 590 188 554Q226 513 229 476Q232 460 232 443V437Q232 417 226 384Q221 350 198 326T139 294Q125 291 113 291Q89
291 70 301Q40 316 25 344Q10 373 4 402Q0 417 0 434Q0 441 2 455Z" />
<glyph unicode="v" glyph-name="v" horiz-adv-x="1011" d="M700 501Q684 514 691 533T715 558T748 549Q764 535 757 516T733 492T700 501ZM0 -21V657Q0 724 43 771Q86 820 151 820H848Q920 820 965 782T1011 676V617L900 637Q859 644 846 644Q830 648 816 654Q777
668 750 668Q689 668 618 621L522 614Q376 603 315 591H314H313L312 590H311H310H309H308L307 589H306Q235 576 219 563Q199 546 199 492V453V327L196 309L722 296L802 323Q750 227 732 191L626 144L220 137Q218 135 210 134T199 129L206 90Q215 39 318 31Q516
18 653 18Q688 18 773 38T900 58Q964 58 1011 29V-25Q1011 -180 857 -180H134Q74 -180 36 -132Q0 -84 0 -21Z" />
<glyph unicode="w" glyph-name="w" horiz-adv-x="1000" d="M873 328L732 -80Q839 -18 899 87Q961 194 961 319Q961 439 905 540Q908 519 908 493Q908 431 873 328ZM508 279L370 -124Q432 -142 500 -142Q578 -142 653 -116L650 -110L508 279ZM114 572H144Q192 572
267 578Q279 579 284 570T286 551T270 540L217 535L385 36L486 338L414 535Q382 539 366 540Q354 541 350 550T351 569T369 578L490 572Q518 570 613 578Q625 579 630 570T632 551T616 540L564 535L730 39L776 193Q812 315 812 342Q812 406 773 470L760 491L747
514Q724 556 728 578Q728 611 750 635T806 660H809L812 659Q682 780 500 780Q382 780 279 724Q178 669 114 572ZM39 319Q39 185 110 72Q182 -40 299 -96L79 507Q39 420 39 319ZM134 -47T67 68T0 319T67 570T249 752T500 819T751 752T933 570T1000 319T933 68T751
-114T500 -181T249 -114Z" />
<glyph unicode="x" glyph-name="x" horiz-adv-x="1002" d="M666 495L632 531Q779 621 867 661Q1002 516 1002 320Q1002 145 892 8Q901 34 901 64Q903 94 892 132Q866 225 799 325T666 495ZM176 700Q315 820 501 820Q686 820 825 700Q755 740 657 705Q570 675 522
642L501 628H500Q471 649 422 674Q332 720 258 720Q257 720 256 721Q210 721 176 700ZM139 -25Q162 43 207 114Q257 190 301 238Q395 341 470 400L499 423Q505 419 533 397Q554 381 610 329Q664 280 713 227Q760 175 803 106Q848 35 863 -25Q793 -98 699 -139T501
-180Q397 -180 304 -140T139 -25ZM0 320Q0 144 109 8Q100 34 100 64Q100 98 110 132Q136 224 202 323T336 495L369 531Q225 621 135 661Q0 516 0 320Z" />
<glyph unicode="y" glyph-name="y" horiz-adv-x="749" d="M466 155Q457 143 457 131Q457 115 470 99L584 -91Q592 -100 608 -100H611Q629 -100 644 -85Q670 -62 699 -22Q728 16 741 47Q745 56 745 68Q745 75 742 81Q737 95 723 100L518 170Q504 174 499 174Q478
174 466 155ZM454 280Q448 292 448 303Q448 320 463 336L593 515Q601 523 613 523Q617 523 620 522Q637 520 649 504Q671 482 702 433Q729 392 739 360Q742 352 742 345Q742 336 738 329Q732 318 715 313L506 260Q496 258 490 258Q467 258 454 280ZM160 -57L299
109Q316 130 337 130Q346 130 353 127Q378 117 378 82Q378 75 377 72V-149Q375 -163 360 -171Q350 -176 342 -176T326 -173Q293 -168 241 -147Q191 -127 168 -110Q150 -96 150 -80Q150 -68 160 -57ZM91 708Q86 716 86 724Q86 733 92 742Q104 758 130 769Q209 800
301 815H306Q352 815 355 777Q380 487 380 384Q380 352 353 344Q345 342 341 342Q320 342 304 367Q148 611 91 708ZM4 231V218Q4 169 10 149Q14 132 28 124T58 121L262 184Q284 191 293 210Q304 230 293 249Q286 265 261 275L57 357Q42 360 30 350T13 319Q4 265
4 231Z" />
<glyph unicode="z" glyph-name="z" horiz-adv-x="722" d="M0 46V59V141Q0 153 7 162L9 164L204 394L399 625Q338 614 296 611Q267 609 255 610Q233 610 224 611Q156 619 137 647Q136 647 136 648L134 651Q130 659 130 675Q130 685 131 690Q135 737 180 800L192
814Q197 819 204 819T219 815Q236 805 239 805Q292 784 387 779Q402 778 431 778Q538 778 653 802Q671 806 671 792V787L667 744L662 702Q662 695 644 680L636 673L475 485L285 266L225 196Q214 183 212 178T210 154H217Q285 154 361 105Q460 42 506 25L525 18Q570
6 608 6Q672 6 718 41Q723 16 723 -4Q723 -33 716 -60Q704 -112 666 -150Q635 -181 589 -181Q578 -181 572 -180Q510 -173 406 -113Q379 -97 333 -62Q281 -23 255 -9Q209 14 160 22Q117 29 43 29H12Q5 29 0 46Z" />
<glyph unicode="{" glyph-name="braceleft" horiz-adv-x="1233" d="M448 -88L429 -94Q440 -56 440 -23Q440 -12 437 -3Q440 -4 471 -8Q534 -14 556 -54Q560 -61 560 -63Q575 -94 567 -117Q539 -95 502 -88T448 -88ZM167 161V105H267V161Q267 217 217 217T167 161ZM64
-16V146Q64 211 83 245Q124 316 217 316Q285 316 327 273T369 163V28H167V-39Q167 -87 217 -87Q263 -87 267 -38H369Q369 -101 328 -143Q288 -186 217 -186Q124 -186 83 -115Q64 -81 64 -16ZM-45 548H-63Q110 581 145 619Q172 649 190 710Q207 688 212 663T214
622L209 609Q197 577 181 563L171 555Q169 553 154 543T135 530Q101 502 101 467T132 413Q158 397 182 418T235 497Q247 522 253 563Q261 609 275 639T320 695Q355 722 415 715Q462 710 504 726T594 803Q615 827 646 847Q673 865 705 875Q738 884 782 874T865 830Q819
850 775 851T707 836Q654 804 638 770L631 755Q603 694 588 669T554 632Q536 623 530 621T497 613T460 603Q418 591 410 549Q404 512 432 496Q464 478 514 510Q582 554 604 603T683 680Q725 700 765 708Q807 716 848 716Q898 718 915 720Q1112 752 1161 834Q1208
913 1210 964Q1227 919 1224 879T1210 808T1179 753T1143 714T1110 689L1092 678Q1040 646 963 622Q913 607 880 601Q848 596 818 580Q715 525 766 425Q787 384 827 381T905 410Q911 415 919 424Q929 436 941 463Q955 492 957 524Q993 424 952 364L937 342Q900
304 876 288Q818 252 724 285Q637 306 604 305Q572 305 543 288Q514 272 500 245T498 197Q513 171 532 170T596 191Q636 214 662 220Q689 227 730 229Q818 231 869 191Q903 169 943 134Q891 165 841 166T763 155T718 124L708 114Q644 50 632 42Q603 22 580 21T521
36L481 53Q447 67 440 69V179Q440 300 348 365Q290 405 214 405T80 366Q60 394 29 399V474Q29 505 8 526T-45 548Z" />
<glyph unicode="|" glyph-name="bar" horiz-adv-x="851" d="M14 10Q24 52 86 360Q153 694 157 710Q169 762 181 782Q193 803 220 812T307 821H548Q632 821 683 820T799 819Q840 819 849 774Q859 726 826 682Q796 642 745 642H344L294 409L646 406Q690 406 700
361T679 277Q652 244 609 244H249L201 -4H633Q697 -4 709 -47Q723 -91 692 -135Q663 -179 625 -179H72Q42 -179 25 -162T3 -116T2 -56T14 10Z" />
<glyph unicode="}" glyph-name="braceright" horiz-adv-x="868" d="M613 33Q613 -19 649 -55Q685 -92 737 -92T825 -55Q861 -19 861 33Q861 84 825 120Q789 157 737 157T649 120Q613 84 613 33ZM0 108Q0 153 31 184Q63 216 108 216Q152 216 184 184T216 108Q216
61 182 30Q247 -44 345 -44Q414 -44 461 -3Q508 39 508 103Q508 141 483 180Q457 221 423 244Q382 271 308 301Q226 335 186 360Q144 387 113 424Q81 462 67 498T53 577Q53 678 134 749Q217 820 331 820Q408 820 486 787Q554 758 599 707Q636 676 636 627Q636 582
604 550Q573 519 528 519T452 550T420 627Q420 650 430 671Q399 687 342 687Q273 687 230 656T187 576Q187 533 225 500Q268 465 353 429Q447 388 494 356Q546 321 576 282Q608 242 624 197Q624 196 625 194T626 191Q551 129 551 33Q551 -21 579 -71Q568 -84 555
-98Q469 -180 349 -180Q102 -180 2 78L5 79Q0 96 0 108Z" />
<glyph unicode="~" glyph-name="asciitilde" horiz-adv-x="664" d="M119 515V392Q119 361 125 337Q144 267 199 224T325 181Q426 181 487 257T548 462Q548 582 487 656Q426 731 330 731Q257 731 202 685Q146 639 128 568Q119 535 119 515ZM0 805H100L108 684H118L123
687Q202 820 369 820Q498 820 581 721Q664 623 664 468Q664 281 564 184Q472 94 347 94Q279 94 224 123T135 202L133 205H122L119 198V-180H6V581Q6 668 0 805Z" />
<glyph unicode="" glyph-name="DEL" horiz-adv-x="1000" />
<glyph unicode="&#x80;" glyph-name="uni0080" horiz-adv-x="973" />
</font>
</defs>
</svg>

Before

Width:  |  Height:  |  Size: 66 KiB

View File

@ -2,4 +2,12 @@
require_asset("main_include_admin.js")
DiscoursePluginRegistry.admin_javascripts.each { |js| require_asset(js) }
DiscoursePluginRegistry.each_globbed_asset(admin: true) do |f, ext|
if File.directory?(f)
depend_on(f)
elsif f.to_s.end_with?(".#{ext}")
require_asset(f)
end
end
%>

View File

@ -2,8 +2,8 @@ import RestAdapter from 'discourse/adapters/rest';
export default function buildPluginAdapter(pluginName) {
return RestAdapter.extend({
pathFor(store, type) {
return "/admin/plugins/" + pluginName + this._super(store, type);
pathFor(store, type, findArgs) {
return "/admin/plugins/" + pluginName + this._super(store, type, findArgs);
}
});
}

View File

@ -0,0 +1,7 @@
import RestAdapter from 'discourse/adapters/rest';
export default RestAdapter.extend({
basePath() {
return "/admin/customize/";
}
});

View File

@ -0,0 +1,7 @@
import RestAdapter from 'discourse/adapters/rest';
export default RestAdapter.extend({
pathFor() {
return "/admin/customize/embedding";
}
});

View File

@ -0,0 +1,2 @@
import CustomizationBase from 'admin/adapters/customization-base';
export default CustomizationBase;

View File

@ -0,0 +1,2 @@
import CustomizationBase from 'admin/adapters/customization-base';
export default CustomizationBase;

View File

@ -0,0 +1,2 @@
import CustomizationBase from 'admin/adapters/customization-base';
export default CustomizationBase;

View File

@ -26,8 +26,18 @@ export default Ember.Component.extend({
this._editor.destroy();
this._editor = null;
}
if (this.appEvents) {
// xxx: don't run during qunit tests
this.appEvents.off('ace:resize', this, this.resize);
}
}.on('willDestroyElement'),
resize() {
if (this._editor) {
this._editor.resize();
}
},
_initEditor: function() {
const self = this;
@ -43,9 +53,14 @@ export default Ember.Component.extend({
self.set('content', editor.getSession().getValue());
self._skipContentChangeEvent = false;
});
editor.$blockScrolling = Infinity;
self.$().data('editor', editor);
self._editor = editor;
if (self.appEvents) {
// xxx: don't run during qunit tests
self.appEvents.on('ace:resize', self, self.resize);
}
});
});

View File

@ -0,0 +1,3 @@
export default Ember.Component.extend({
classNames: ['row']
});

View File

@ -1,3 +1,5 @@
export default Ember.Component.extend({
tagName: 'tr'
tagName: 'tr',
reverseColors: Ember.computed.match('report.type', /^(time_to_first_response|topics_with_no_response)$/),
classNameBindings: ['reverseColors']
});

View File

@ -0,0 +1,94 @@
import UserField from 'admin/models/user-field';
import { bufferedProperty } from 'discourse/mixins/buffered-content';
import { popupAjaxError } from 'discourse/lib/ajax-error';
import { propertyEqual } from 'discourse/lib/computed';
export default Ember.Component.extend(bufferedProperty('userField'), {
editing: Ember.computed.empty('userField.id'),
classNameBindings: [':user-field'],
cantMoveUp: propertyEqual('userField', 'firstField'),
cantMoveDown: propertyEqual('userField', 'lastField'),
userFieldsDescription: function() {
return I18n.t('admin.user_fields.description');
}.property(),
bufferedFieldType: function() {
return UserField.fieldTypeById(this.get('buffered.field_type'));
}.property('buffered.field_type'),
_focusOnEdit: function() {
if (this.get('editing')) {
Ember.run.scheduleOnce('afterRender', this, '_focusName');
}
}.observes('editing').on('didInsertElement'),
_focusName: function() {
$('.user-field-name').select();
},
fieldName: function() {
return UserField.fieldTypeById(this.get('userField.field_type')).get('name');
}.property('userField.field_type'),
flags: function() {
const ret = [];
if (this.get('userField.editable')) {
ret.push(I18n.t('admin.user_fields.editable.enabled'));
}
if (this.get('userField.required')) {
ret.push(I18n.t('admin.user_fields.required.enabled'));
}
if (this.get('userField.show_on_profile')) {
ret.push(I18n.t('admin.user_fields.show_on_profile.enabled'));
}
return ret.join(', ');
}.property('userField.editable', 'userField.required', 'userField.show_on_profile'),
actions: {
save() {
const self = this;
const buffered = this.get('buffered');
const attrs = buffered.getProperties('name',
'description',
'field_type',
'editable',
'required',
'show_on_profile',
'options');
this.get('userField').save(attrs).then(function() {
self.set('editing', false);
self.commitBuffer();
}).catch(popupAjaxError);
},
moveUp() {
this.sendAction('moveUpAction', this.get('userField'));
},
moveDown() {
this.sendAction('moveDownAction', this.get('userField'));
},
edit() {
this.set('editing', true);
},
destroy() {
this.sendAction('destroyAction', this.get('userField'));
},
cancel() {
const id = this.get('userField.id');
if (Ember.isEmpty(id)) {
this.sendAction('destroyAction', this.get('userField'));
} else {
this.rollbackBuffer();
this.set('editing', false);
}
}
}
});

View File

@ -0,0 +1,10 @@
export default Ember.Component.extend({
router: function() {
return this.container.lookup('router:main');
}.property(),
active: function() {
const id = this.get('customization.id');
return this.get('router.url').indexOf(`/customize/css_html/${id}/css`) !== -1;
}.property('router.url', 'customization.id')
});

View File

@ -0,0 +1,63 @@
import { bufferedProperty } from 'discourse/mixins/buffered-content';
import computed from 'ember-addons/ember-computed-decorators';
import { on, observes } from 'ember-addons/ember-computed-decorators';
import { popupAjaxError } from 'discourse/lib/ajax-error';
export default Ember.Component.extend(bufferedProperty('host'), {
editToggled: false,
tagName: 'tr',
categoryId: null,
editing: Ember.computed.or('host.isNew', 'editToggled'),
@on('didInsertElement')
@observes('editing')
_focusOnInput() {
Ember.run.schedule('afterRender', () => { this.$('.host-name').focus(); });
},
@computed('buffered.host', 'host.isSaving')
cantSave(host, isSaving) {
return isSaving || Ember.isEmpty(host);
},
actions: {
edit() {
this.set('categoryId', this.get('host.category.id'));
this.set('editToggled', true);
},
save() {
if (this.get('cantSave')) { return; }
const props = this.get('buffered').getProperties('host');
props.category_id = this.get('categoryId');
const host = this.get('host');
host.save(props).then(() => {
host.set('category', Discourse.Category.findById(this.get('categoryId')));
this.set('editToggled', false);
}).catch(popupAjaxError);
},
delete() {
bootbox.confirm(I18n.t('admin.embedding.confirm_delete'), (result) => {
if (result) {
this.get('host').destroyRecord().then(() => {
this.sendAction('deleteHost', this.get('host'));
});
}
});
},
cancel() {
const host = this.get('host');
if (host.get('isNew')) {
this.sendAction('deleteHost', host);
} else {
this.rollbackBuffer();
this.set('editToggled', false);
}
}
}
});

View File

@ -0,0 +1,23 @@
import computed from 'ember-addons/ember-computed-decorators';
export default Ember.Component.extend({
classNames: ['embed-setting'],
@computed('field')
inputId(field) { return field.dasherize(); },
@computed('field')
translationKey(field) { return `admin.embedding.${field}`; },
@computed('type')
isCheckbox(type) { return type === "checkbox"; },
@computed('value')
checked: {
get(value) { return !!value; },
set(value) {
this.set('value', value);
return value;
}
}
});

View File

@ -0,0 +1,9 @@
export default Ember.Component.extend({
classNames: ["item"],
actions: {
remove() {
this.sendAction('removeAction', this.get('member'));
}
}
});

View File

@ -0,0 +1,12 @@
import { on, observes } from 'ember-addons/ember-computed-decorators';
import highlightSyntax from 'discourse/lib/highlight-syntax';
export default Ember.Component.extend({
@on('didInsertElement')
@observes('code')
_refresh: function() {
highlightSyntax(this.$());
}
});

View File

@ -22,7 +22,7 @@ export default Ember.Component.extend({
this.set("show", true);
if (!this.get("location")) {
Discourse.ajax("/admin/users/ip-info.json", {
Discourse.ajax("/admin/users/ip-info", {
data: { ip: this.get("ip") }
}).then(function (location) {
self.set("location", Em.Object.create(location));
@ -38,7 +38,7 @@ export default Ember.Component.extend({
"order": "trust_level DESC"
};
Discourse.ajax("/admin/users/total-others-with-same-ip.json", { data: data }).then(function (result) {
Discourse.ajax("/admin/users/total-others-with-same-ip", { data }).then(function (result) {
self.set("totalOthersWithSameIP", result.total);
});

View File

@ -0,0 +1,56 @@
export default Ember.Component.extend({
classNames: ['permalink-form'],
formSubmitted: false,
permalinkType: 'topic_id',
permalinkTypes: function() {
return [
{id: 'topic_id', name: I18n.t('admin.permalink.topic_id')},
{id: 'post_id', name: I18n.t('admin.permalink.post_id')},
{id: 'category_id', name: I18n.t('admin.permalink.category_id')},
{id: 'external_url', name: I18n.t('admin.permalink.external_url')}
];
}.property(),
permalinkTypePlaceholder: function() {
return 'admin.permalink.' + this.get('permalinkType');
}.property('permalinkType'),
actions: {
submit: function() {
if (!this.get('formSubmitted')) {
const self = this;
self.set('formSubmitted', true);
const permalink = Discourse.Permalink.create({url: self.get('url'), permalink_type: self.get('permalinkType'), permalink_type_value: self.get('permalink_type_value')});
permalink.save().then(function(result) {
self.set('url', '');
self.set('permalink_type_value', '');
self.set('formSubmitted', false);
self.sendAction('action', Discourse.Permalink.create(result.permalink));
Em.run.schedule('afterRender', function() { self.$('.permalink-url').focus(); });
}, function(e) {
self.set('formSubmitted', false);
let error;
if (e.responseJSON && e.responseJSON.errors) {
error = I18n.t("generic_error_with_reason", {error: e.responseJSON.errors.join('. ')});
} else {
error = I18n.t("generic_error");
}
bootbox.alert(error, function() { self.$('.permalink-url').focus(); });
});
}
}
},
didInsertElement: function() {
var self = this;
self._super();
Em.run.schedule('afterRender', function() {
self.$('.external-url').keydown(function(e) {
if (e.keyCode === 13) { // enter key
self.send('submit');
}
});
});
}
});

View File

@ -1,50 +1,43 @@
import BufferedContent from 'discourse/mixins/buffered-content';
import ScrollTop from 'discourse/mixins/scroll-top';
import SiteSetting from 'admin/models/site-setting';
import { propertyNotEqual } from 'discourse/lib/computed';
import computed from 'ember-addons/ember-computed-decorators';
const CustomTypes = ['bool', 'enum', 'list', 'url_list'];
const CustomTypes = ['bool', 'enum', 'list', 'url_list', 'host_list', 'category_list', 'value_list'];
export default Ember.Component.extend(BufferedContent, ScrollTop, {
classNameBindings: [':row', ':setting', 'setting.overridden', 'typeClass'],
content: Ember.computed.alias('setting'),
dirty: Discourse.computed.propertyNotEqual('buffered.value', 'setting.value'),
dirty: propertyNotEqual('buffered.value', 'setting.value'),
validationMessage: null,
preview: function() {
const preview = this.get('setting.preview');
@computed("setting.preview", "buffered.value")
preview(preview, value) {
if (preview) {
return new Handlebars.SafeString("<div class='preview'>" +
preview.replace("{{value}}", this.get('buffered.value')) +
"</div>");
return new Handlebars.SafeString("<div class='preview'>" + preview.replace(/\{\{value\}\}/g, value) + "</div>");
}
}.property('buffered.value'),
},
typeClass: function() {
return this.get('partialType').replace("_", "-");
}.property('partialType'),
@computed('componentType')
typeClass(componentType) {
return componentType.replace(/\_/g, '-');
},
enabled: function(key, value) {
if (arguments.length > 1) {
this.set('buffered.value', value ? 'true' : 'false');
}
@computed("setting.setting")
settingName(setting) {
return setting.replace(/\_/g, ' ');
},
const bufferedValue = this.get('buffered.value');
if (Ember.isEmpty(bufferedValue)) { return false; }
return bufferedValue === 'true';
}.property('buffered.value'),
@computed("setting.type")
componentType(type) {
return CustomTypes.indexOf(type) !== -1 ? type : 'string';
},
settingName: function() {
return this.get('setting.setting').replace(/\_/g, ' ');
}.property('setting.setting'),
partialType: function() {
let type = this.get('setting.type');
return (CustomTypes.indexOf(type) !== -1) ? type : 'string';
}.property('setting.type'),
partialName: function() {
return 'admin/templates/site-settings/' + this.get('partialType');
}.property('partialType'),
@computed("typeClass")
componentName(typeClass) {
return "site-settings/" + typeClass;
},
_watchEnterKey: function() {
const self = this;
@ -60,8 +53,8 @@ export default Ember.Component.extend(BufferedContent, ScrollTop, {
}.on("willDestroyElement"),
_save() {
const setting = this.get('buffered');
const self = this;
const self = this,
setting = this.get('buffered');
SiteSetting.update(setting.get('setting'), setting.get('value')).then(function() {
self.set('validationMessage', null);
self.commitBuffer();

View File

@ -0,0 +1,17 @@
import computed from "ember-addons/ember-computed-decorators";
export default Ember.Component.extend({
@computed("value")
enabled: {
get(value) {
if (Ember.isEmpty(value)) { return false; }
return value === "true";
},
set(value) {
this.set("value", value ? "true" : "false");
return value;
}
},
});

View File

@ -0,0 +1,16 @@
import computed from "ember-addons/ember-computed-decorators";
export default Ember.Component.extend({
@computed("value")
selectedCategories: {
get(value) {
return Discourse.Category.findByIds(value.split("|"));
},
set(value) {
this.set("value", value.mapBy("id").join("|"));
return value;
}
}
});

View File

@ -1,32 +0,0 @@
export default Ember.Component.extend({
_setupUrls: function() {
const value = this.get('value');
this.set('urls', (value && value.length) ? value.split("\n") : []);
}.on('init').observes('value'),
_urlsChanged: function() {
this.set('value', this.get('urls').join("\n"));
}.observes('urls.@each'),
urlInvalid: Ember.computed.empty('newUrl'),
keyDown(e) {
if (e.keyCode === 13) {
this.send('addUrl');
}
},
actions: {
addUrl() {
if (this.get('urlInvalid')) { return; }
this.get('urls').addObject(this.get('newUrl'));
this.set('newUrl', '');
},
removeUrl(url) {
const urls = this.get('urls');
urls.removeObject(url);
}
}
});

View File

@ -0,0 +1,104 @@
export default Ember.Component.extend({
classNameBindings: [':value-list'],
_enableSorting: function() {
const self = this;
const placeholder = document.createElement("div");
placeholder.className = "placeholder";
let dragging = null;
let over = null;
let nodePlacement;
this.$().on('dragstart.discourse', '.values .value', function(e) {
dragging = e.currentTarget;
e.dataTransfer.effectAllowed = 'move';
e.dataTransfer.setData("text/html", e.currentTarget);
});
this.$().on('dragend.discourse', '.values .value', function() {
Ember.run(function() {
dragging.parentNode.removeChild(placeholder);
dragging.style.display = 'block';
// Update data
const from = Number(dragging.dataset.index);
let to = Number(over.dataset.index);
if (from < to) to--;
if (nodePlacement === "after") to++;
const collection = self.get('collection');
const fromObj = collection.objectAt(from);
collection.replace(from, 1);
collection.replace(to, 0, [fromObj]);
self._saveValues();
});
return false;
});
this.$().on('dragover.discourse', '.values', function(e) {
e.preventDefault();
dragging.style.display = 'none';
if (e.target.className === "placeholder") { return; }
over = e.target;
const relY = e.originalEvent.clientY - over.offsetTop;
const height = over.offsetHeight / 2;
const parent = e.target.parentNode;
if (relY > height) {
nodePlacement = "after";
parent.insertBefore(placeholder, e.target.nextElementSibling);
} else if(relY < height) {
nodePlacement = "before";
parent.insertBefore(placeholder, e.target);
}
});
}.on('didInsertElement'),
_removeSorting: function() {
this.$().off('dragover.discourse').off('dragend.discourse').off('dragstart.discourse');
}.on('willDestroyElement'),
_setupCollection: function() {
const values = this.get('values');
if (this.get('inputType') === "array") {
this.set('collection', values || []);
} else {
this.set('collection', (values && values.length) ? values.split("\n") : []);
}
}.on('init').observes('values'),
_saveValues: function() {
if (this.get('inputType') === "array") {
this.set('values', this.get('collection'));
} else {
this.set('values', this.get('collection').join("\n"));
}
},
inputInvalid: Ember.computed.empty('newValue'),
keyDown(e) {
if (e.keyCode === 13) {
this.send('addValue');
}
},
actions: {
addValue() {
if (this.get('inputInvalid')) { return; }
this.get('collection').addObject(this.get('newValue'));
this.set('newValue', '');
this._saveValues();
},
removeValue(value) {
const collection = this.get('collection');
collection.removeObject(value);
this._saveValues();
}
}
});

View File

@ -1,20 +1,18 @@
export default Ember.ArrayController.extend({
needs: ["adminBackups"],
status: Em.computed.alias("controllers.adminBackups"),
isOperationRunning: Em.computed.alias("status.isOperationRunning"),
restoreDisabled: Em.computed.alias("status.restoreDisabled"),
status: Ember.computed.alias("controllers.adminBackups"),
uploadLabel: function() { return I18n.t("admin.backups.upload.label"); }.property(),
restoreTitle: function() {
if (!this.get('status.allowRestore')) {
if (!this.get('status.model.allowRestore')) {
return "admin.backups.operations.restore.is_disabled";
} else if (this.get("status.isOperationRunning")) {
} else if (this.get("status.model.isOperationRunning")) {
return "admin.backups.operations.is_running";
} else {
return "admin.backups.operations.restore.title";
}
}.property("status.{allowRestore,isOperationRunning}"),
}.property("status.model.{allowRestore,isOperationRunning}"),
actions: {

View File

@ -1,5 +1,5 @@
export default Ember.ObjectController.extend({
noOperationIsRunning: Em.computed.not("isOperationRunning"),
rollbackEnabled: Em.computed.and("canRollback", "restoreEnabled", "noOperationIsRunning"),
rollbackDisabled: Em.computed.not("rollbackEnabled")
export default Ember.Controller.extend({
noOperationIsRunning: Ember.computed.not("model.isOperationRunning"),
rollbackEnabled: Ember.computed.and("model.canRollback", "model.restoreEnabled", "noOperationIsRunning"),
rollbackDisabled: Ember.computed.not("rollbackEnabled")
});

View File

@ -1,7 +1,8 @@
import { popupAjaxError } from 'discourse/lib/ajax-error';
import BufferedContent from 'discourse/mixins/buffered-content';
import { propertyNotEqual } from 'discourse/lib/computed';
export default Ember.ObjectController.extend(BufferedContent, {
export default Ember.Controller.extend(BufferedContent, {
needs: ['admin-badges'],
saving: false,
savingStatus: '',
@ -12,9 +13,18 @@ export default Ember.ObjectController.extend(BufferedContent, {
protectedSystemFields: Em.computed.alias('controllers.admin-badges.protectedSystemFields'),
readOnly: Ember.computed.alias('buffered.system'),
showDisplayName: Discourse.computed.propertyNotEqual('name', 'displayName'),
showDisplayName: propertyNotEqual('name', 'displayName'),
canEditDescription: Em.computed.none('buffered.translatedDescription'),
hasQuery: function() {
const bQuery = this.get('buffered.query');
if (bQuery) {
return bQuery.trim().length > 0;
}
const mQuery = this.get('model.query');
return mQuery && mQuery.trim().length > 0;
}.property('model.query', 'buffered.query'),
_resetSaving: function() {
this.set('saving', false);
this.set('savingStatus', '');

View File

@ -1,13 +1,4 @@
/**
This controller supports interface for creating custom CSS skins in Discourse.
@class AdminCustomizeColorsController
@extends Ember.Controller
@namespace Discourse
@module Discourse
**/
export default Ember.ArrayController.extend({
onlyOverridden: false,
baseColorScheme: function() {

View File

@ -0,0 +1,79 @@
import { url } from 'discourse/lib/computed';
const sections = ['css', 'header', 'top', 'footer', 'head-tag', 'body-tag',
'mobile-css', 'mobile-header', 'mobile-top', 'mobile-footer',
'embedded-css'];
const activeSections = {};
sections.forEach(function(s) {
activeSections[Ember.String.camelize(s) + "Active"] = Ember.computed.equal('section', s);
});
export default Ember.Controller.extend(activeSections, {
maximized: false,
section: null,
previewUrl: url("model.key", "/?preview-style=%@"),
downloadUrl: url('model.id', '/admin/site_customizations/%@'),
mobile: function() {
return this.get('section').indexOf('mobile-') === 0;
}.property('section'),
maximizeIcon: function() {
return this.get('maximized') ? 'compress' : 'expand';
}.property('maximized'),
saveButtonText: function() {
return this.get('model.isSaving') ? I18n.t('saving') : I18n.t('admin.customize.save');
}.property('model.isSaving'),
saveDisabled: function() {
return !this.get('model.changed') || this.get('model.isSaving');
}.property('model.changed', 'model.isSaving'),
needs: ['adminCustomizeCssHtml'],
undoPreviewUrl: url('/?preview-style='),
defaultStyleUrl: url('/?preview-style=default'),
actions: {
save() {
this.get('model').saveChanges();
},
destroy() {
const self = this;
return bootbox.confirm(I18n.t("admin.customize.delete_confirm"), I18n.t("no_value"), I18n.t("yes_value"), function(result) {
if (result) {
const model = self.get('model');
model.destroyRecord().then(function() {
self.get('controllers.adminCustomizeCssHtml').get('model').removeObject(model);
self.transitionToRoute('adminCustomizeCssHtml');
});
}
});
},
toggleMaximize: function() {
this.toggleProperty('maximized');
},
toggleMobile: function() {
const section = this.get('section');
// Try to send to the same tab as before
let dest;
if (this.get('mobile')) {
dest = section.replace('mobile-', '');
if (sections.indexOf(dest) === -1) { dest = 'css'; }
} else {
dest = 'mobile-' + section;
if (sections.indexOf(dest) === -1) { dest = 'mobile-css'; }
}
this.replaceRoute('adminCustomizeCssHtml.show', this.get('model.id'), dest);
}
}
});

View File

@ -1,63 +0,0 @@
/**
This controller supports interface for creating custom CSS skins in Discourse.
@class AdminCustomizeCssHtmlController
@extends Ember.Controller
@namespace Discourse
@module Discourse
**/
export default Ember.ArrayController.extend({
actions: {
/**
Create a new customization style
@method newCustomization
**/
newCustomization: function() {
var item = Discourse.SiteCustomization.create({name: I18n.t("admin.customize.new_style")});
this.pushObject(item);
this.set('selectedItem', item);
},
/**
Select a given style
@method selectStyle
@param {Discourse.SiteCustomization} style The style we are selecting
**/
selectStyle: function(style) {
this.set('selectedItem', style);
},
/**
Save the current customization
@method save
**/
save: function() {
this.get('selectedItem').save();
},
/**
Destroy the current customization
@method destroy
**/
destroy: function() {
var _this = this;
return bootbox.confirm(I18n.t("admin.customize.delete_confirm"), I18n.t("no_value"), I18n.t("yes_value"), function(result) {
var selected;
if (result) {
selected = _this.get('selectedItem');
selected.destroy();
_this.set('selectedItem', null);
return _this.removeObject(selected);
}
});
}
}
});

View File

@ -1,24 +1,19 @@
/**
This controller supports the default interface when you enter the admin section.
import { setting } from 'discourse/lib/computed';
@class AdminDashboardController
@extends Ember.Controller
@namespace Discourse
@module Discourse
**/
// This controller supports the default interface when you enter the admin section.
export default Ember.Controller.extend({
loading: true,
versionCheck: null,
problemsCheckMinutes: 1,
showVersionChecks: Discourse.computed.setting('version_checks'),
showVersionChecks: setting('version_checks'),
foundProblems: function() {
return(Discourse.User.currentProp('admin') && this.get('problems') && this.get('problems').length > 0);
}.property('problems'),
thereWereProblems: function() {
if(!Discourse.User.currentProp('admin')) { return false }
if(!Discourse.User.currentProp('admin')) { return false; }
if( this.get('foundProblems') ) {
this.set('hadProblems', true);
return true;

View File

@ -1,6 +1,4 @@
import DiscourseController from 'discourse/controllers/controller';
export default DiscourseController.extend({
export default Ember.Controller.extend({
/**
Is the "send test email" button disabled?

View File

@ -1,20 +1,17 @@
import ObjectController from 'discourse/controllers/object';
export default ObjectController.extend({
export default Ember.Controller.extend({
actions: {
refresh: function() {
var model = this.get('model'),
self = this;
refresh() {
const model = this.get('model');
self.set('loading', true);
Discourse.EmailPreview.findDigest(this.get('lastSeen')).then(function (email) {
this.set('loading', true);
Discourse.EmailPreview.findDigest(this.get('lastSeen')).then(email => {
model.setProperties(email.getProperties('html_content', 'text_content'));
self.set('loading', false);
this.set('loading', false);
});
},
toggleShowHtml: function() {
toggleShowHtml() {
this.toggleProperty('showHtml');
}
}

View File

@ -1,8 +1,8 @@
import DiscourseController from 'discourse/controllers/controller';
import debounce from 'discourse/lib/debounce';
export default DiscourseController.extend({
export default Ember.Controller.extend({
filterEmailLogs: Discourse.debounce(function() {
filterEmailLogs: debounce(function() {
var self = this;
Discourse.EmailLog.findAll(this.get("filter")).then(function(logs) {
self.set("model", logs);

View File

@ -1,7 +1,7 @@
import DiscourseController from 'discourse/controllers/controller';
import debounce from 'discourse/lib/debounce';
export default DiscourseController.extend({
filterEmailLogs: Discourse.debounce(function() {
export default Ember.Controller.extend({
filterEmailLogs: debounce(function() {
var self = this;
Discourse.EmailLog.findAll(this.get("filter")).then(function(logs) {
self.set("model", logs);

View File

@ -0,0 +1,55 @@
import computed from 'ember-addons/ember-computed-decorators';
import { popupAjaxError } from 'discourse/lib/ajax-error';
export default Ember.Controller.extend({
saved: false,
embedding: null,
// show settings if we have at least one created host
@computed('embedding.embeddable_hosts.@each.isCreated')
showSecondary() {
const hosts = this.get('embedding.embeddable_hosts');
return hosts.length && hosts.findProperty('isCreated');
},
@computed('embedding.base_url')
embeddingCode(baseUrl) {
const html =
`<div id='discourse-comments'></div>
<script type="text/javascript">
DiscourseEmbed = { discourseUrl: '${baseUrl}/',
discourseEmbedUrl: 'REPLACE_ME' };
(function() {
var d = document.createElement('script'); d.type = 'text/javascript'; d.async = true;
d.src = DiscourseEmbed.discourseUrl + 'javascripts/embed.js';
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(d);
})();
</script>`;
return html;
},
actions: {
saveChanges() {
const embedding = this.get('embedding');
const updates = embedding.getProperties(embedding.get('fields'));
this.set('saved', false);
this.get('embedding').update(updates).then(() => {
this.set('saved', true);
}).catch(popupAjaxError);
},
addHost() {
const host = this.store.createRecord('embeddable-host');
this.get('embedding.embeddable_hosts').pushObject(host);
},
deleteHost(host) {
this.get('embedding.embeddable_hosts').removeObject(host);
}
}
});

View File

@ -1,21 +1,22 @@
import { popupAjaxError } from 'discourse/lib/ajax-error';
import { propertyEqual } from 'discourse/lib/computed';
export default Em.ObjectController.extend({
export default Ember.Controller.extend({
needs: ['adminGroupsType'],
disableSave: false,
currentPage: function() {
if (this.get("user_count") === 0) { return 0; }
return Math.floor(this.get("offset") / this.get("limit")) + 1;
}.property("limit", "offset", "user_count"),
if (this.get("model.user_count") === 0) { return 0; }
return Math.floor(this.get("model.offset") / this.get("model.limit")) + 1;
}.property("model.limit", "model.offset", "model.user_count"),
totalPages: function() {
if (this.get("user_count") === 0) { return 0; }
return Math.floor(this.get("user_count") / this.get("limit")) + 1;
}.property("limit", "user_count"),
if (this.get("model.user_count") === 0) { return 0; }
return Math.floor(this.get("model.user_count") / this.get("model.limit")) + 1;
}.property("model.limit", "model.user_count"),
showingFirst: Em.computed.lte("currentPage", 1),
showingLast: Discourse.computed.propertyEqual("currentPage", "totalPages"),
showingLast: propertyEqual("currentPage", "totalPages"),
aliasLevelOptions: function() {
return [
@ -26,6 +27,13 @@ export default Em.ObjectController.extend({
];
}.property(),
trustLevelOptions: function() {
return [
{ name: I18n.t("groups.trust_levels.none"), value: 0 },
{ name: 1, value: 1 }, { name: 2, value: 2 }, { name: 3, value: 3 }, { name: 4, value: 4 }
];
}.property(),
actions: {
next() {
if (this.get("showingLast")) { return; }
@ -51,7 +59,7 @@ export default Em.ObjectController.extend({
removeMember(member) {
const self = this,
message = I18n.t("admin.groups.delete_member_confirm", { username: member.get("username"), group: this.get("name") });
message = I18n.t("admin.groups.delete_member_confirm", { username: member.get("username"), group: this.get("model.name") });
return bootbox.confirm(message, I18n.t("no_value"), I18n.t("yes_value"), function(confirm) {
if (confirm) {
self.get("model").removeMember(member);
@ -60,21 +68,21 @@ export default Em.ObjectController.extend({
},
addMembers() {
if (Em.isEmpty(this.get("usernames"))) { return; }
this.get("model").addMembers(this.get("usernames"));
// clear the user selector
this.set("usernames", null);
if (Em.isEmpty(this.get("model.usernames"))) { return; }
this.get("model").addMembers(this.get("model.usernames")).catch(popupAjaxError);
this.set("model.usernames", null);
},
save() {
const group = this.get('model'),
groupsController = this.get("controllers.adminGroupsType");
groupsController = this.get("controllers.adminGroupsType"),
groupType = groupsController.get("type");
this.set('disableSave', true);
let promise = group.get("id") ? group.save() : group.create().then(() => groupsController.addObject(group));
promise.then(() => this.transitionToRoute("adminGroup", group))
promise.then(() => this.transitionToRoute("adminGroup", groupType, group.get('name')))
.catch(popupAjaxError)
.finally(() => this.set('disableSave', false));
},
@ -84,6 +92,11 @@ export default Em.ObjectController.extend({
groupsController = this.get('controllers.adminGroupsType'),
self = this;
if (!group.get('id')) {
self.transitionToRoute('adminGroupsType.index', 'custom');
return;
}
this.set('disableSave', true);
bootbox.confirm(

View File

@ -1,4 +1,4 @@
export default Ember.ObjectController.extend({
export default Ember.Controller.extend({
editing: false,
savedIpAddress: null,

View File

@ -1,3 +1,4 @@
import debounce from 'discourse/lib/debounce';
import { outputExportResult } from 'discourse/lib/export-result';
import { exportEntity } from 'discourse/lib/export-csv';
@ -6,7 +7,7 @@ export default Ember.ArrayController.extend({
itemController: 'admin-log-screened-ip-address',
filter: null,
show: Discourse.debounce(function() {
show: debounce(function() {
var self = this;
self.set('loading', true);
Discourse.ScreenedIpAddress.findAll(this.get("filter")).then(function(result) {

View File

@ -0,0 +1,38 @@
import debounce from 'discourse/lib/debounce';
export default Ember.ArrayController.extend({
loading: false,
filter: null,
show: debounce(function() {
var self = this;
self.set('loading', true);
Discourse.Permalink.findAll(self.get("filter")).then(function(result) {
self.set('model', result);
self.set('loading', false);
});
}, 250).observes("filter"),
actions: {
recordAdded(arg) {
this.get("model").unshiftObject(arg);
},
destroy: function(record) {
const self = this;
return bootbox.confirm(I18n.t("admin.permalink.delete_confirm"), I18n.t("no_value"), I18n.t("yes_value"), function(result) {
if (result) {
record.destroy().then(function(deleted) {
if (deleted) {
self.removeObject(record);
} else {
bootbox.alert(I18n.t("generic_error"));
}
}, function(){
bootbox.alert(I18n.t("generic_error"));
});
}
});
}
}
});

View File

@ -1,6 +1,10 @@
export default Ember.ArrayController.extend({
adminRoutes: function() {
return this.get('model').map(p => p.admin_route).compact();
return this.get('model').map(function(p) {
if (p.get('enabled')) {
return p.admin_route;
}
}).compact();
}.property()
});

View File

@ -1,28 +1,47 @@
export default Ember.ObjectController.extend({
import { exportEntity } from 'discourse/lib/export-csv';
import { outputExportResult } from 'discourse/lib/export-result';
export default Ember.Controller.extend({
viewMode: 'table',
viewingTable: Em.computed.equal('viewMode', 'table'),
viewingBarChart: Em.computed.equal('viewMode', 'barChart'),
startDate: null,
endDate: null,
categoryId: null,
refreshing: false,
categoryOptions: function() {
var arr = [{name: I18n.t('category.all'), value: 'all'}];
return arr.concat( Discourse.Site.currentProp('sortedCategories').map(function(i) { return {name: i.get('name'), value: i.get('id') }; }) );
}.property(),
actions: {
refreshReport: function() {
var self = this;
this.set('refreshing', true);
Discourse.Report.find(this.get('type'), this.get('startDate'), this.get('endDate')).then(function(r) {
self.set('model', r);
}).finally(function() {
self.set('refreshing', false);
});
refreshReport() {
var q;
this.set("refreshing", true);
if (this.get('categoryId') === "all") {
q = Discourse.Report.find(this.get("model.type"), this.get("startDate"), this.get("endDate"));
} else {
q = Discourse.Report.find(this.get("model.type"), this.get("startDate"), this.get("endDate"), this.get("categoryId"));
}
q.then(m => this.set("model", m)).finally(() => this.set("refreshing", false));
},
viewAsTable: function() {
viewAsTable() {
this.set('viewMode', 'table');
},
viewAsBarChart: function() {
viewAsBarChart() {
this.set('viewMode', 'barChart');
},
exportCsv() {
exportEntity('report', {
name: this.get("model.type"),
start_date: this.get('startDate'),
end_date: this.get('endDate'),
category_id: this.get('categoryId') === 'all' ? undefined : this.get('categoryId')
}).then(outputExportResult);
}
}
});

View File

@ -1,4 +1,4 @@
export default Ember.ObjectController.extend({
export default Ember.Controller.extend({
categoryNameKey: null,
needs: ['adminSiteSettings'],

View File

@ -1,14 +1,13 @@
import Presence from 'discourse/mixins/presence';
import debounce from 'discourse/lib/debounce';
export default Ember.ArrayController.extend(Presence, {
export default Ember.ArrayController.extend({
filter: null,
onlyOverridden: false,
filtered: Ember.computed.notEmpty('filter'),
filterContent: Discourse.debounce(function() {
filterContentNow: function(category) {
// If we have no content, don't bother filtering anything
if (!this.present('allSiteSettings')) return;
if (!!Ember.isEmpty(this.get('allSiteSettings'))) return;
let filter;
if (this.get('filter')) {
@ -39,11 +38,24 @@ export default Ember.ArrayController.extend(Presence, {
});
if (matches.length > 0) {
matchesGroupedByCategory[0].siteSettings.pushObjects(matches);
matchesGroupedByCategory.pushObject({
nameKey: settingsCategory.nameKey,
name: I18n.t('admin.site_settings.categories.' + settingsCategory.nameKey),
siteSettings: matches
});
}
});
this.set('model', matchesGroupedByCategory);
this.transitionToRoute("adminSiteSettingsCategory", "all_results");
this.transitionToRoute("adminSiteSettingsCategory", category || "all_results");
},
filterContent: debounce(function() {
if (this.get("_skipBounce")) {
this.set("_skipBounce", false);
} else {
this.filterContentNow();
}
}, 250).observes('filter', 'onlyOverridden'),
actions: {
@ -52,6 +64,10 @@ export default Ember.ArrayController.extend(Presence, {
filter: '',
onlyOverridden: false
});
},
toggleMenu() {
$('.admin-detail').toggleClass('mobile-closed mobile-open');
}
}

View File

@ -1,20 +1,16 @@
export default Ember.ObjectController.extend({
saving: false,
export default Ember.Controller.extend({
saved: false,
saveDisabled: function() {
if (this.get('saving')) { return true; }
if ((!this.get('allow_blank')) && Ember.isEmpty(this.get('value'))) { return true; }
if (this.get('model.isSaving')) { return true; }
if ((!this.get('allow_blank')) && Ember.isEmpty(this.get('model.value'))) { return true; }
return false;
}.property('saving', 'value'),
}.property('model.iSaving', 'model.value'),
actions: {
saveChanges: function() {
var self = this;
self.setProperties({saving: true, saved: false});
self.get('model').save().then(function () {
self.setProperties({saving: false, saved: true});
});
saveChanges() {
const model = this.get('model');
model.save(model.getProperties('value')).then(() => this.set('saved', true));
}
}
});

View File

@ -1,25 +1,18 @@
/**
This controller supports the interface for granting and revoking badges from
individual users.
import UserBadge from 'discourse/models/user-badge';
@class AdminUserBadgesController
@extends Ember.ArrayController
@namespace Discourse
@module Discourse
**/
export default Ember.ArrayController.extend({
needs: ["adminUser"],
user: Em.computed.alias('controllers.adminUser'),
user: Em.computed.alias('controllers.adminUser.model'),
sortProperties: ['granted_at'],
sortAscending: false,
groupedBadges: function(){
const badges = this.get('model');
const allBadges = this.get('model');
var grouped = _.groupBy(badges, badge => badge.badge_id);
var grouped = _.groupBy(allBadges, badge => badge.badge_id);
var expanded = [];
const expandedBadges = badges.get('expandedBadges');
const expandedBadges = allBadges.get('expandedBadges');
_(grouped).each(function(badges){
var lastGranted = badges[0].granted_at;
@ -95,7 +88,7 @@ export default Ember.ArrayController.extend({
**/
grantBadge: function(badgeId) {
var self = this;
Discourse.UserBadge.grant(badgeId, this.get('user.username'), this.get('badgeReason')).then(function(userBadge) {
UserBadge.grant(badgeId, this.get('user.username'), this.get('badgeReason')).then(function(userBadge) {
self.set('badgeReason', '');
self.pushObject(userBadge);
Ember.run.next(function() {
@ -111,12 +104,6 @@ export default Ember.ArrayController.extend({
});
},
/**
Revoke the selected userBadge.
@method revokeBadge
@param {Discourse.UserBadge} userBadge the `Discourse.UserBadge` instance that needs to be revoked.
**/
revokeBadge: function(userBadge) {
var self = this;
return bootbox.confirm(I18n.t("admin.badges.revoke_confirm"), I18n.t("no_value"), I18n.t("yes_value"), function(result) {

View File

@ -1,64 +0,0 @@
import UserField from 'admin/models/user-field';
import BufferedContent from 'discourse/mixins/buffered-content';
export default Ember.ObjectController.extend(BufferedContent, {
needs: ['admin-user-fields'],
editing: Ember.computed.empty('id'),
fieldName: function() {
return UserField.fieldTypeById(this.get('field_type')).get('name');
}.property('field_type'),
flags: function() {
var ret = [];
if (this.get('editable')) {
ret.push(I18n.t('admin.user_fields.editable.enabled'));
}
if (this.get('required')) {
ret.push(I18n.t('admin.user_fields.required.enabled'));
}
if (this.get('show_on_profile')) {
ret.push(I18n.t('admin.user_fields.show_on_profile.enabled'));
}
return ret.join(', ');
}.property('editable', 'required', 'show_on_profile'),
actions: {
save: function() {
var self = this;
var attrs = this.get('buffered').getProperties('name', 'description', 'field_type', 'editable', 'required', 'show_on_profile');
this.get('model').save(attrs).then(function(res) {
self.set('model.id', res.user_field.id);
self.set('editing', false);
self.commitBuffer();
}).catch(function(e) {
var msg = I18n.t("generic_error");
if (e.responseJSON && e.responseJSON.errors) {
msg = I18n.t("generic_error_with_reason", {error: e.responseJSON.errors.join('. ')});
}
bootbox.alert(msg);
});
},
edit: function() {
this.set('editing', true);
},
destroy: function() {
this.get('controllers.admin-user-fields').send('destroy', this.get('model'));
},
cancel: function() {
var id = this.get('id');
if (Ember.isEmpty(id)) {
this.get('controllers.admin-user-fields').send('destroy', this.get('model'));
} else {
this.rollbackBuffer();
this.set('editing', false);
}
}
}
});

View File

@ -1,39 +1,60 @@
import UserField from 'admin/models/user-field';
import { popupAjaxError } from 'discourse/lib/ajax-error';
export default Ember.ArrayController.extend({
const MAX_FIELDS = 20;
export default Ember.Controller.extend({
fieldTypes: null,
createDisabled: Em.computed.gte('model.length', 20),
createDisabled: Em.computed.gte('model.length', MAX_FIELDS),
userFieldsDescription: function() {
return I18n.t('admin.user_fields.description');
}.property(),
userFieldsName: function() {
return I18n.t('admin.user_fields.name');
}.property(),
_performDestroy: function(f, model) {
return f.destroy().then(function() {
model.removeObject(f);
arrangedContent: function() {
return Ember.ArrayProxy.extend(Ember.SortableMixin).create({
sortProperties: ['position'],
content: this.get('model')
});
},
}.property('model'),
actions: {
createField: function() {
this.pushObject(UserField.create({ field_type: 'text' }));
createField() {
const f = this.store.createRecord('user-field', { field_type: 'text', position: MAX_FIELDS });
this.get('model').pushObject(f);
},
destroy: function(f) {
var model = this.get('model'),
self = this;
moveUp(f) {
const idx = this.get('arrangedContent').indexOf(f);
if (idx) {
const prev = this.get('arrangedContent').objectAt(idx-1);
const prevPos = prev.get('position');
prev.update({ position: f.get('position') });
f.update({ position: prevPos });
}
},
moveDown(f) {
const idx = this.get('arrangedContent').indexOf(f);
if (idx > -1) {
const next = this.get('arrangedContent').objectAt(idx+1);
const nextPos = next.get('position');
next.update({ position: f.get('position') });
f.update({ position: nextPos });
}
},
destroy(f) {
const model = this.get('model');
// Only confirm if we already been saved
if (f.get('id')) {
bootbox.confirm(I18n.t("admin.user_fields.delete_confirm"), function(result) {
if (result) { self._performDestroy(f, model); }
if (result) {
f.destroyRecord().then(function() {
model.removeObject(f);
}).catch(popupAjaxError);
}
});
} else {
self._performDestroy(f, model);
model.removeObject(f);
}
}
}

View File

@ -1,15 +1,15 @@
import ObjectController from 'discourse/controllers/object';
import CanCheckEmails from 'discourse/mixins/can-check-emails';
import { propertyNotEqual, setting } from 'discourse/lib/computed';
export default ObjectController.extend(CanCheckEmails, {
export default Ember.Controller.extend(CanCheckEmails, {
editingTitle: false,
originalPrimaryGroupId: null,
availableGroups: null,
showApproval: Discourse.computed.setting('must_approve_users'),
showBadges: Discourse.computed.setting('enable_badges'),
showApproval: setting('must_approve_users'),
showBadges: setting('enable_badges'),
primaryGroupDirty: Discourse.computed.propertyNotEqual('originalPrimaryGroupId', 'model.primary_group_id'),
primaryGroupDirty: propertyNotEqual('originalPrimaryGroupId', 'model.primary_group_id'),
automaticGroups: function() {
return this.get("model.automaticGroups").map((g) => g.name).join(", ");
@ -36,8 +36,8 @@ export default ObjectController.extend(CanCheckEmails, {
saveTitle() {
const self = this;
return Discourse.ajax("/users/" + this.get('username').toLowerCase(), {
data: {title: this.get('title')},
return Discourse.ajax("/users/" + this.get('model.username').toLowerCase(), {
data: {title: this.get('model.title')},
type: 'PUT'
}).catch(function(e) {
bootbox.alert(I18n.t("generic_error_with_reason", {error: "http: " + e.status + " - " + e.body}));
@ -65,7 +65,7 @@ export default ObjectController.extend(CanCheckEmails, {
savePrimaryGroup() {
const self = this;
return Discourse.ajax("/admin/users/" + this.get('id') + "/primary_group", {
return Discourse.ajax("/admin/users/" + this.get('model.id') + "/primary_group", {
type: 'PUT',
data: {primary_group_id: this.get('model.primary_group_id')}
}).then(function () {

View File

@ -1,3 +1 @@
import ObjectController from 'discourse/controllers/object';
export default ObjectController.extend();
export default Ember.Controller.extend();

View File

@ -1,3 +1,6 @@
import debounce from 'discourse/lib/debounce';
import { i18n } from 'discourse/lib/computed';
export default Ember.ArrayController.extend({
query: null,
showEmails: false,
@ -9,7 +12,7 @@ export default Ember.ArrayController.extend({
queryPending: Em.computed.equal('query', 'pending'),
queryHasApproval: Em.computed.or('queryNew', 'queryPending'),
showApproval: Em.computed.and('siteSettings.must_approve_users', 'queryHasApproval'),
searchHint: Discourse.computed.i18n('search_hint'),
searchHint: i18n('search_hint'),
hasSelection: Em.computed.gt('selectedCount', 0),
selectedCount: function() {
@ -31,7 +34,7 @@ export default Ember.ArrayController.extend({
return I18n.t('admin.users.titles.' + this.get('query'));
}.property('query'),
_filterUsers: Discourse.debounce(function() {
_filterUsers: debounce(function() {
this._refreshUsers();
}, 250).observes('listFilter'),

View File

@ -1,6 +1,4 @@
import DiscourseController from 'discourse/controllers/controller';
export default DiscourseController.extend({
export default Ember.Controller.extend({
showBadges: function() {
return this.get('currentUser.admin') && this.siteSettings.enable_badges;
}.property()

View File

@ -1,7 +1,6 @@
import ModalFunctionality from 'discourse/mixins/modal-functionality';
import ObjectController from 'discourse/controllers/object';
export default ObjectController.extend(ModalFunctionality, {
export default Ember.Controller.extend(ModalFunctionality, {
needs: ["admin-flags-list"],
_agreeFlag: function (actionOnPost) {

View File

@ -1,8 +1,6 @@
import ModalFunctionality from 'discourse/mixins/modal-functionality';
import ObjectController from 'discourse/controllers/object';
export default ObjectController.extend(ModalFunctionality, {
export default Ember.Controller.extend(ModalFunctionality, {
needs: ["admin-flags-list"],
actions: {

View File

@ -56,8 +56,8 @@ export default Ember.Controller.extend({
saveAll: function(){
var self = this;
var items = this.get('workingCopy');
var groupIds = items.map(function(i){return i.get("id") || -1});
var names = items.map(function(i){return i.get("name")});
var groupIds = items.map(function(i){return i.get("id") || -1;});
var names = items.map(function(i){return i.get("name");});
Discourse.ajax('/admin/badges/badge_groupings',{
data: {ids: groupIds, names: names},

View File

@ -1,5 +1,3 @@
import ModalFunctionality from 'discourse/mixins/modal-functionality';
import ObjectController from 'discourse/controllers/object';
export default ObjectController.extend(ModalFunctionality);
export default Ember.Controller.extend(ModalFunctionality);

View File

@ -1,7 +1,6 @@
import ModalFunctionality from 'discourse/mixins/modal-functionality';
import Controller from 'discourse/controllers/controller';
export default Controller.extend(ModalFunctionality, {
export default Ember.Controller.extend(ModalFunctionality, {
needs: ["adminBackupsLogs"],
_startBackup: function (withUploads) {

View File

@ -1,7 +1,6 @@
import ModalFunctionality from 'discourse/mixins/modal-functionality';
import ObjectController from 'discourse/controllers/object';
export default ObjectController.extend(ModalFunctionality, {
export default Ember.Controller.extend(ModalFunctionality, {
submitDisabled: function() {
return (!this.get('reason') || this.get('reason').length < 1);

View File

@ -1,7 +1,6 @@
import ModalFunctionality from 'discourse/mixins/modal-functionality';
import ObjectController from 'discourse/controllers/object';
export default ObjectController.extend(ModalFunctionality, {
export default Ember.Controller.extend(ModalFunctionality, {
previousSelected: Ember.computed.equal('selectedTab', 'previous'),
newSelected: Ember.computed.equal('selectedTab', 'new'),

View File

@ -1,3 +1,4 @@
import { propertyNotEqual } from 'discourse/lib/computed';
import { popupAjaxError } from 'discourse/lib/ajax-error';
const AdminUser = Discourse.User.extend({
@ -144,7 +145,7 @@ const AdminUser = Discourse.User.extend({
this.set('originalTrustLevel', this.get('trust_level'));
},
dirty: Discourse.computed.propertyNotEqual('originalTrustLevel', 'trustLevel.id'),
dirty: propertyNotEqual('originalTrustLevel', 'trustLevel.id'),
saveTrustLevel() {
return Discourse.ajax("/admin/users/" + this.id + "/trust_level", {

View File

@ -0,0 +1,12 @@
import computed from "ember-addons/ember-computed-decorators";
export default Discourse.Model.extend({
restoreDisabled: Em.computed.not("restoreEnabled"),
@computed("allowRestore", "isOperationRunning")
restoreEnabled(allowRestore, isOperationRunning) {
return allowRestore && !isOperationRunning;
}
});

View File

@ -1,90 +0,0 @@
/**
Data model for representing a backup
@class Backup
@extends Discourse.Model
@namespace Discourse
@module Discourse
**/
Discourse.Backup = Discourse.Model.extend({
/**
Destroys the current backup
@method destroy
@returns {Promise} a promise that resolves when the backup has been destroyed
**/
destroy: function() {
return Discourse.ajax("/admin/backups/" + this.get("filename"), { type: "DELETE" });
},
/**
Starts the restoration of the current backup
@method restore
@returns {Promise} a promise that resolves when the backup has started being restored
**/
restore: function() {
return Discourse.ajax("/admin/backups/" + this.get("filename") + "/restore", { type: "POST" });
}
});
Discourse.Backup.reopenClass({
/**
Finds a list of backups
@method find
@returns {Promise} a promise that resolves to the array of {Discourse.Backup} backup
**/
find: function() {
return PreloadStore.getAndRemove("backups", function() {
return Discourse.ajax("/admin/backups.json");
}).then(function(backups) {
return backups.map(function (backup) { return Discourse.Backup.create(backup); });
});
},
/**
Starts a backup
@method start
@returns {Promise} a promise that resolves when the backup has started
**/
start: function (withUploads) {
if (withUploads === undefined) { withUploads = true; }
return Discourse.ajax("/admin/backups", { type: "POST", data: { with_uploads: withUploads } }).then(function(result) {
if (!result.success) { bootbox.alert(result.message); }
});
},
/**
Cancels a backup
@method cancel
@returns {Promise} a promise that resolves when the backup has been cancelled
**/
cancel: function() {
return Discourse.ajax("/admin/backups/cancel.json").then(function(result) {
if (!result.success) { bootbox.alert(result.message); }
});
},
/**
Rollbacks the database to the previous working state
@method rollback
@returns {Promise} a promise that resolves when the rollback is done
**/
rollback: function() {
return Discourse.ajax("/admin/backups/rollback.json").then(function(result) {
if (!result.success) {
bootbox.alert(result.message);
} else {
// redirect to homepage (session might be lost)
window.location.pathname = Discourse.getURL("/");
}
});
}
});

View File

@ -0,0 +1,56 @@
const Backup = Discourse.Model.extend({
destroy() {
return Discourse.ajax("/admin/backups/" + this.get("filename"), { type: "DELETE" });
},
restore() {
return Discourse.ajax("/admin/backups/" + this.get("filename") + "/restore", {
type: "POST",
data: { client_id: window.MessageBus.clientId }
});
}
});
Backup.reopenClass({
find() {
return PreloadStore.getAndRemove("backups", () => Discourse.ajax("/admin/backups.json"))
.then(backups => backups.map(backup => Backup.create(backup)));
},
start(withUploads) {
if (withUploads === undefined) { withUploads = true; }
return Discourse.ajax("/admin/backups", {
type: "POST",
data: {
with_uploads: withUploads,
client_id: window.MessageBus.clientId
}
}).then(result => {
if (!result.success) { bootbox.alert(result.message); }
});
},
cancel() {
return Discourse.ajax("/admin/backups/cancel.json")
.then(result => {
if (!result.success) { bootbox.alert(result.message); }
});
},
rollback() {
return Discourse.ajax("/admin/backups/rollback.json")
.then(result => {
if (!result.success) {
bootbox.alert(result.message);
} else {
// redirect to homepage (session might be lost)
window.location.pathname = Discourse.getURL("/");
}
});
}
});
export default Backup;

View File

@ -1,9 +0,0 @@
Discourse.BackupStatus = Discourse.Model.extend({
restoreDisabled: Em.computed.not("restoreEnabled"),
restoreEnabled: function() {
return this.get('allowRestore') && !this.get("isOperationRunning");
}.property("isOperationRunning", "allowRestore")
});

View File

@ -47,7 +47,7 @@ Discourse.FlaggedPost = Discourse.Post.extend({
},
wasEdited: function () {
if (this.blank("last_revised_at")) { return false; }
if (Ember.isEmpty(this.get("last_revised_at"))) { return false; }
var lastRevisedAt = Date.parse(this.get("last_revised_at"));
return _.some(this.get("post_actions"), function (postAction) {
return Date.parse(postAction.created_at) < lastRevisedAt;

View File

@ -0,0 +1,22 @@
const Permalink = Discourse.Model.extend({
save: function() {
return Discourse.ajax("/admin/permalinks.json", {
type: 'POST',
data: {url: this.get('url'), permalink_type: this.get('permalink_type'), permalink_type_value: this.get('permalink_type_value')}
});
},
destroy: function() {
return Discourse.ajax("/admin/permalinks/" + this.get('id') + ".json", {type: 'DELETE'});
}
});
Permalink.reopenClass({
findAll: function(filter) {
return Discourse.ajax("/admin/permalinks.json", { data: { filter: filter } }).then(function(permalinks) {
return permalinks.map(p => Discourse.Permalink.create(p));
});
}
});
export default Permalink;

View File

@ -1,164 +0,0 @@
Discourse.Report = Discourse.Model.extend({
reportUrl: function() {
return("/admin/reports/" + this.get('type'));
}.property('type'),
valueAt: function(numDaysAgo) {
if (this.data) {
var wantedDate = moment().subtract(numDaysAgo, 'days').format('YYYY-MM-DD');
var item = this.data.find( function(d) { return d.x === wantedDate; } );
if (item) {
return item.y;
}
}
return 0;
},
sumDays: function(startDaysAgo, endDaysAgo) {
if (this.data) {
var earliestDate = moment().subtract(endDaysAgo, 'days').startOf('day');
var latestDate = moment().subtract(startDaysAgo, 'days').startOf('day');
var d, sum = 0;
_.each(this.data,function(datum){
d = moment(datum.x);
if(d >= earliestDate && d <= latestDate) {
sum += datum.y;
}
});
return sum;
}
},
todayCount: function() {
return this.valueAt(0);
}.property('data'),
yesterdayCount: function() {
return this.valueAt(1);
}.property('data'),
lastSevenDaysCount: function() {
return this.sumDays(1,7);
}.property('data'),
lastThirtyDaysCount: function() {
return this.sumDays(1,30);
}.property('data'),
sevenDaysAgoCount: function() {
return this.valueAt(7);
}.property('data'),
thirtyDaysAgoCount: function() {
return this.valueAt(30);
}.property('data'),
yesterdayTrend: function() {
var yesterdayVal = this.valueAt(1);
var twoDaysAgoVal = this.valueAt(2);
if ( yesterdayVal > twoDaysAgoVal ) {
return 'trending-up';
} else if ( yesterdayVal < twoDaysAgoVal ) {
return 'trending-down';
} else {
return 'no-change';
}
}.property('data'),
sevenDayTrend: function() {
var currentPeriod = this.sumDays(1,7);
var prevPeriod = this.sumDays(8,14);
if ( currentPeriod > prevPeriod ) {
return 'trending-up';
} else if ( currentPeriod < prevPeriod ) {
return 'trending-down';
} else {
return 'no-change';
}
}.property('data'),
thirtyDayTrend: function() {
if( this.get('prev30Days') ) {
var currentPeriod = this.sumDays(1,30);
if( currentPeriod > this.get('prev30Days') ) {
return 'trending-up';
} else if ( currentPeriod < this.get('prev30Days') ) {
return 'trending-down';
}
}
return 'no-change';
}.property('data', 'prev30Days'),
icon: function() {
switch( this.get('type') ) {
case 'flags':
return 'flag';
case 'likes':
return 'heart';
default:
return null;
}
}.property('type'),
percentChangeString: function(val1, val2) {
var val = ((val1 - val2) / val2) * 100;
if( isNaN(val) || !isFinite(val) ) {
return null;
} else if( val > 0 ) {
return '+' + val.toFixed(0) + '%';
} else {
return val.toFixed(0) + '%';
}
},
changeTitle: function(val1, val2, prevPeriodString) {
var title = '';
var percentChange = this.percentChangeString(val1, val2);
if( percentChange ) {
title += percentChange + ' change. ';
}
title += 'Was ' + val2 + ' ' + prevPeriodString + '.';
return title;
},
yesterdayCountTitle: function() {
return this.changeTitle( this.valueAt(1), this.valueAt(2),'two days ago');
}.property('data'),
sevenDayCountTitle: function() {
return this.changeTitle( this.sumDays(1,7), this.sumDays(8,14), 'two weeks ago');
}.property('data'),
thirtyDayCountTitle: function() {
return this.changeTitle( this.sumDays(1,30), this.get('prev30Days'), 'in the previous 30 day period');
}.property('data'),
dataReversed: function() {
return this.get('data').toArray().reverse();
}.property('data')
});
Discourse.Report.reopenClass({
find: function(type, startDate, endDate) {
return Discourse.ajax("/admin/reports/" + type, {data: {
start_date: startDate,
end_date: endDate
}}).then(function (json) {
// Add a percent field to each tuple
var maxY = 0;
json.report.data.forEach(function (row) {
if (row.y > maxY) maxY = row.y;
});
if (maxY > 0) {
json.report.data.forEach(function (row) {
row.percentage = Math.round((row.y / maxY) * 100);
});
}
var model = Discourse.Report.create({type: type});
model.setProperties(json.report);
return model;
});
}
});

View File

@ -0,0 +1,157 @@
import round from "discourse/lib/round";
import { fmt } from 'discourse/lib/computed';
const Report = Discourse.Model.extend({
reportUrl: fmt("type", "/admin/reports/%@"),
valueAt(numDaysAgo) {
if (this.data) {
const wantedDate = moment().subtract(numDaysAgo, "days").format("YYYY-MM-DD");
const item = this.data.find(d => d.x === wantedDate);
if (item) {
return item.y;
}
}
return 0;
},
valueFor(startDaysAgo, endDaysAgo) {
if (this.data) {
const earliestDate = moment().subtract(endDaysAgo, "days").startOf("day");
const latestDate = moment().subtract(startDaysAgo, "days").startOf("day");
var d, sum = 0, count = 0;
_.each(this.data, datum => {
d = moment(datum.x);
if (d >= earliestDate && d <= latestDate) {
sum += datum.y;
count++;
}
});
if (this.get("method") === "average" && count > 0) { sum /= count; }
return round(sum, -2);
}
},
todayCount: function() { return this.valueAt(0); }.property("data"),
yesterdayCount: function() { return this.valueAt(1); }.property("data"),
sevenDaysAgoCount: function() { return this.valueAt(7); }.property("data"),
thirtyDaysAgoCount: function() { return this.valueAt(30); }.property("data"),
lastSevenDaysCount: function() { return this.valueFor(1, 7); }.property("data"),
lastThirtyDaysCount: function() { return this.valueFor(1, 30); }.property("data"),
yesterdayTrend: function() {
const yesterdayVal = this.valueAt(1);
const twoDaysAgoVal = this.valueAt(2);
if (yesterdayVal > twoDaysAgoVal) {
return "trending-up";
} else if (yesterdayVal < twoDaysAgoVal) {
return "trending-down";
} else {
return "no-change";
}
}.property("data"),
sevenDayTrend: function() {
const currentPeriod = this.valueFor(1, 7);
const prevPeriod = this.valueFor(8, 14);
if (currentPeriod > prevPeriod) {
return "trending-up";
} else if (currentPeriod < prevPeriod) {
return "trending-down";
} else {
return "no-change";
}
}.property("data"),
thirtyDayTrend: function() {
if (this.get("prev30Days")) {
const currentPeriod = this.valueFor(1, 30);
if (currentPeriod > this.get("prev30Days")) {
return "trending-up";
} else if (currentPeriod < this.get("prev30Days")) {
return "trending-down";
}
}
return "no-change";
}.property("data", "prev30Days"),
icon: function() {
switch (this.get("type")) {
case "flags": return "flag";
case "likes": return "heart";
default: return null;
}
}.property("type"),
method: function() {
if (this.get("type") === "time_to_first_response") {
return "average";
} else {
return "sum";
}
}.property("type"),
percentChangeString(val1, val2) {
const val = ((val1 - val2) / val2) * 100;
if (isNaN(val) || !isFinite(val)) {
return null;
} else if (val > 0) {
return "+" + val.toFixed(0) + "%";
} else {
return val.toFixed(0) + "%";
}
},
changeTitle(val1, val2, prevPeriodString) {
const percentChange = this.percentChangeString(val1, val2);
var title = "";
if (percentChange) { title += percentChange + " change. "; }
title += "Was " + val2 + " " + prevPeriodString + ".";
return title;
},
yesterdayCountTitle: function() {
return this.changeTitle(this.valueAt(1), this.valueAt(2), "two days ago");
}.property("data"),
sevenDayCountTitle: function() {
return this.changeTitle(this.valueFor(1, 7), this.valueFor(8, 14), "two weeks ago");
}.property("data"),
thirtyDayCountTitle: function() {
return this.changeTitle(this.valueFor(1, 30), this.get("prev30Days"), "in the previous 30 day period");
}.property("data"),
dataReversed: function() {
return this.get("data").toArray().reverse();
}.property("data")
});
Report.reopenClass({
find(type, startDate, endDate, categoryId) {
return Discourse.ajax("/admin/reports/" + type, {
data: {
start_date: startDate,
end_date: endDate,
category_id: categoryId
}
}).then(json => {
// Add a percent field to each tuple
let maxY = 0;
json.report.data.forEach(row => {
if (row.y > maxY) maxY = row.y;
});
if (maxY > 0) {
json.report.data.forEach(row => row.percentage = Math.round((row.y / maxY) * 100));
}
const model = Discourse.Report.create({ type: type });
model.setProperties(json.report);
return model;
});
}
});
export default Report;

View File

@ -0,0 +1,31 @@
import RestModel from 'discourse/models/rest';
const trackedProperties = [
'enabled', 'name', 'stylesheet', 'header', 'top', 'footer', 'mobile_stylesheet',
'mobile_header', 'mobile_top', 'mobile_footer', 'head_tag', 'body_tag', 'embedded_css'
];
function changed() {
const originals = this.get('originals');
if (!originals) { return false; }
return _.some(trackedProperties, (p) => originals[p] !== this.get(p));
}
const SiteCustomization = RestModel.extend({
description: function() {
return "" + this.name + (this.enabled ? ' (*)' : '');
}.property('selected', 'name', 'enabled'),
changed: changed.property.apply(changed, trackedProperties.concat('originals')),
startTrackingChanges: function() {
this.set('originals', this.getProperties(trackedProperties));
}.on('init'),
saveChanges() {
return this.save(this.getProperties(trackedProperties)).then(() => this.startTrackingChanges());
},
});
export default SiteCustomization;

View File

@ -0,0 +1,2 @@
import RestModel from 'discourse/models/rest';
export default RestModel.extend();

View File

@ -0,0 +1,8 @@
import RestModel from 'discourse/models/rest';
export default RestModel.extend({
markdown: Em.computed.equal('format', 'markdown'),
plainText: Em.computed.equal('format', 'plain'),
html: Em.computed.equal('format', 'html'),
css: Em.computed.equal('format', 'css'),
});

View File

@ -1,111 +0,0 @@
/**
Our data model for interacting with site customizations.
@class SiteCustomization
@extends Discourse.Model
@namespace Discourse
@module Discourse
**/
Discourse.SiteCustomization = Discourse.Model.extend({
trackedProperties: [
'enabled', 'name',
'stylesheet', 'header', 'top', 'footer',
'mobile_stylesheet', 'mobile_header', 'mobile_top', 'mobile_footer',
'head_tag', 'body_tag'
],
description: function() {
return "" + this.name + (this.enabled ? ' (*)' : '');
}.property('selected', 'name', 'enabled'),
changed: function() {
var self = this;
if (!this.originals) { return false; }
var changed = _.some(this.trackedProperties, function (p) {
return self.originals[p] !== self.get(p);
});
if (changed) { this.set('savingStatus', ''); }
return changed;
}.property('enabled', 'name', 'originals',
'stylesheet', 'header', 'top', 'footer',
'mobile_stylesheet', 'mobile_header', 'mobile_top', 'mobile_footer',
'head_tag', 'body_tag'),
startTrackingChanges: function() {
var self = this;
var originals = {};
_.each(this.trackedProperties, function (prop) {
originals[prop] = self.get(prop);
});
this.set('originals', originals);
}.on('init'),
previewUrl: function() { return "/?preview-style=" + this.get('key'); }.property('key'),
disableSave: function() { return !this.get('changed') || this.get('saving'); }.property('changed'),
save: function() {
this.set('savingStatus', I18n.t('saving'));
this.set('saving',true);
var data = {
name: this.name,
enabled: this.enabled,
stylesheet: this.stylesheet,
header: this.header,
top: this.top,
footer: this.footer,
mobile_stylesheet: this.mobile_stylesheet,
mobile_header: this.mobile_header,
mobile_top: this.mobile_top,
mobile_footer: this.mobile_footer,
head_tag: this.head_tag,
body_tag: this.body_tag
};
var siteCustomization = this;
return Discourse.ajax("/admin/site_customizations" + (this.id ? '/' + this.id : ''), {
data: { site_customization: data },
type: this.id ? 'PUT' : 'POST'
}).then(function (result) {
if (!siteCustomization.id) {
siteCustomization.set('id', result.id);
siteCustomization.set('key', result.key);
}
siteCustomization.set('savingStatus', I18n.t('saved'));
siteCustomization.set('saving',false);
siteCustomization.startTrackingChanges();
});
},
destroy: function() {
if (!this.id) return;
return Discourse.ajax("/admin/site_customizations/" + this.id, { type: 'DELETE' });
}
});
var SiteCustomizations = Ember.ArrayProxy.extend({
selectedItemChanged: function() {
var selected = this.get('selectedItem');
_.each(this.get('content'), function (i) {
i.set('selected', selected === i);
});
}.observes('selectedItem')
});
Discourse.SiteCustomization.reopenClass({
findAll: function() {
return Discourse.ajax("/admin/site_customizations").then(function (data) {
var content = [];
if (data) {
content = data.site_customizations.map(function(c) {
return Discourse.SiteCustomization.create(c);
});
}
return SiteCustomizations.create({ content: content });
});
}
});

View File

@ -1,21 +0,0 @@
Discourse.SiteText = Discourse.Model.extend({
markdown: Em.computed.equal('format', 'markdown'),
plainText: Em.computed.equal('format', 'plain'),
html: Em.computed.equal('format', 'html'),
css: Em.computed.equal('format', 'css'),
save: function() {
return Discourse.ajax("/admin/customize/site_text/" + this.get('text_type'), {
type: 'PUT',
data: {value: this.get('value')}
});
}
});
Discourse.SiteText.reopenClass({
find: function(type) {
return Discourse.ajax("/admin/customize/site_text/" + type).then(function (data) {
return Discourse.SiteText.create(data.site_text);
});
}
});

View File

@ -1,11 +0,0 @@
Discourse.SiteTextType = Discourse.Model.extend();
Discourse.SiteTextType.reopenClass({
findAll: function() {
return Discourse.ajax("/admin/customize/site_text_types").then(function(data) {
return data.map(function(ct) {
return Discourse.SiteTextType.create(ct);
});
});
}
});

View File

@ -1,54 +1,26 @@
var UserField = Ember.Object.extend({
destroy: function() {
var self = this;
return new Ember.RSVP.Promise(function(resolve) {
var id = self.get('id');
if (id) {
return Discourse.ajax("/admin/customize/user_fields/" + id, { type: 'DELETE' }).then(function() {
resolve();
});
}
resolve();
});
},
import RestModel from 'discourse/models/rest';
import { i18n } from 'discourse/lib/computed';
save: function(attrs) {
var id = this.get('id');
if (!id) {
return Discourse.ajax("/admin/customize/user_fields", {
type: "POST",
data: { user_field: attrs }
});
} else {
return Discourse.ajax("/admin/customize/user_fields/" + id, {
type: "PUT",
data: { user_field: attrs }
});
}
}
const UserField = RestModel.extend();
const UserFieldType = Ember.Object.extend({
name: i18n('id', 'admin.user_fields.field_types.%@')
});
UserField.reopenClass({
findAll: function() {
return Discourse.ajax("/admin/customize/user_fields").then(function(result) {
return result.user_fields.map(function(uf) {
return UserField.create(uf);
});
});
},
fieldTypes: function() {
fieldTypes() {
if (!this._fieldTypes) {
this._fieldTypes = [
Ember.Object.create({id: 'text', name: I18n.t('admin.user_fields.field_types.text') }),
Ember.Object.create({id: 'confirm', name: I18n.t('admin.user_fields.field_types.confirm') })
UserFieldType.create({ id: 'text' }),
UserFieldType.create({ id: 'confirm' }),
UserFieldType.create({ id: 'dropdown', hasOptions: true })
];
}
return this._fieldTypes;
},
fieldTypeById: function(id) {
fieldTypeById(id) {
return this.fieldTypes().findBy('id', id);
}
});

View File

@ -0,0 +1,5 @@
export default Ember.Route.extend({
model() {
return Discourse.ApiKey.find();
}
});

View File

@ -0,0 +1,5 @@
export default Ember.Route.extend({
model() {
return Discourse.Backup.find();
}
});

View File

@ -1,15 +1,15 @@
Discourse.AdminBackupsLogsRoute = Discourse.Route.extend({
export default Ember.Route.extend({
// since the logs are pushed via the message bus
// we only want to preload them (hence the beforeModel hook)
beforeModel: function() {
var logsController = this.controllerFor("adminBackupsLogs");
beforeModel() {
const logsController = this.controllerFor("adminBackupsLogs");
// preload the logs if any
PreloadStore.getAndRemove("logs").then(function (preloadedLogs) {
if (preloadedLogs && preloadedLogs.length) {
// we need to filter out message like: "[SUCCESS]"
// and convert POJOs to Ember Objects
var logs = _.chain(preloadedLogs)
const logs = _.chain(preloadedLogs)
.reject(function (log) { return log.message.length === 0 || log.message[0] === "["; })
.map(function (log) { return Em.Object.create(log); })
.value();
@ -18,6 +18,6 @@ Discourse.AdminBackupsLogsRoute = Discourse.Route.extend({
});
},
setupController: function() { /* prevent default behavior */ }
setupController() { /* prevent default behavior */ }
});

View File

@ -10,14 +10,14 @@ export default Discourse.Route.extend({
_processLogMessage(log) {
if (log.message === "[STARTED]") {
this.controllerFor("adminBackups").set("isOperationRunning", true);
this.controllerFor("adminBackups").set("model.isOperationRunning", true);
this.controllerFor("adminBackupsLogs").clear();
} else if (log.message === "[FAILED]") {
this.controllerFor("adminBackups").set("isOperationRunning", false);
this.controllerFor("adminBackups").set("model.isOperationRunning", false);
bootbox.alert(I18n.t("admin.backups.operations.failed", { operation: log.operation }));
} else if (log.message === "[SUCCESS]") {
Discourse.User.currentProp("hideReadOnlyAlert", false);
this.controllerFor("adminBackups").set("isOperationRunning", false);
this.controllerFor("adminBackups").set("model.isOperationRunning", false);
if (log.operation === "restore") {
// redirect to homepage when the restore is done (session might be lost)
window.location.pathname = Discourse.getURL("/");
@ -30,7 +30,7 @@ export default Discourse.Route.extend({
model() {
return PreloadStore.getAndRemove("operations_status", function() {
return Discourse.ajax("/admin/backups/status.json");
}).then(function (status) {
}).then(status => {
return Discourse.BackupStatus.create({
isOperationRunning: status.is_operation_running,
canRollback: status.can_rollback,
@ -50,7 +50,7 @@ export default Discourse.Route.extend({
},
backupStarted() {
this.modelFor("adminBackups").set("isOperationRunning", true);
this.controllerFor("adminBackups").set("isOperationRunning", true);
this.transitionTo("admin.backups.logs");
this.send("closeModal");
},
@ -82,7 +82,7 @@ export default Discourse.Route.extend({
Discourse.User.currentProp("hideReadOnlyAlert", true);
backup.restore().then(function() {
self.controllerFor("adminBackupsLogs").clear();
self.modelFor("adminBackups").set("isOperationRunning", true);
self.controllerFor("adminBackups").set("model.isOperationRunning", true);
self.transitionTo("admin.backups.logs");
});
}
@ -99,7 +99,7 @@ export default Discourse.Route.extend({
function(confirmed) {
if (confirmed) {
Discourse.Backup.cancel().then(function() {
self.controllerFor("adminBackups").set("isOperationRunning", false);
self.controllerFor("adminBackups").set("model.isOperationRunning", false);
});
}
}

View File

@ -1,3 +1,4 @@
import Badge from 'discourse/models/badge';
import showModal from 'discourse/lib/show-modal';
export default Ember.Route.extend({
@ -7,7 +8,7 @@ export default Ember.Route.extend({
model(params) {
if (params.badge_id === "new") {
return Discourse.Badge.create({
return Badge.create({
name: I18n.t('admin.badges.new_badge')
});
}

View File

@ -1,3 +1,5 @@
import Badge from 'discourse/models/badge';
export default Discourse.Route.extend({
_json: null,
@ -5,7 +7,7 @@ export default Discourse.Route.extend({
var self = this;
return Discourse.ajax('/admin/badges.json').then(function(json) {
self._json = json;
return Discourse.Badge.createFromJson(json);
return Badge.createFromJson(json);
});
},

Some files were not shown because too many files have changed in this diff Show More