Merge branch 'dev' into dependabot/pip/utils/Sync/pillow-6.2.0

This commit is contained in:
tmshv authored and GitHub committed 2020-02-12 22:32:14 +03:00
commit e6fbda5ae7
153 files changed
+9626 -6467

No files matched your search

-17
View File
@@ -1,17 +0,0 @@
{
"presets": [
[
"env",
{
"targets": {
"node": "8.5.0"
}
}
]
],
"plugins": [
"transform-react-jsx",
"@babel/plugin-proposal-object-rest-spread",
"transform-class-properties"
]
}
+10
View File
@@ -0,0 +1,10 @@
.git
.next
.idea
.env
node_modules
# dist
services
modules
utils
+4
View File
@@ -0,0 +1,4 @@
utils
scripts
test
src
+2 -6
View File
@@ -2,6 +2,8 @@
Site of Art school of Shlisselburg
Font: [«Shadow»](http://mishapanfilov.ru/font_shadow.html)
## Usage
### Build
@@ -36,11 +38,5 @@ PWD=<mongo_password>
mongodump -d ${DB} --gzip --archive | mongorestore -h ${HOST} -u ${USER} -p ${PWD} -d ${DB} --gzip --archive
```
## Based on:
- [NodeJS](http://nodejs.org) 10.0
- [koa.js](http://koajs.com) 2.0
- [React](https://react.org) 16.3
- [MongoDB](http://mongodb.org) 3.6
## Contributors
- Roman Timashev ([roman@tmshv.ru](mailto:roman@tmshv.ru))
+2
View File
@@ -0,0 +1,2 @@
/// <reference types="next" />
/// <reference types="next/types/global" />
+7
View File
@@ -298,6 +298,12 @@ module.exports = withCss(withSass({
'/article/2019-win500',
'/article/2019-korushka',
'/article/2019-pleinair',
'/article/2019-kotiki',
'/article/2019-serafima',
'/article/2019-competition-authors-style',
'/article/2019-survey',
'/article/2019-navigator',
'/article/2019-unikum',
],
),
...createPath(
@@ -621,6 +627,7 @@ module.exports = withCss(withSass({
'/document/7c4f6647a6e5e4b5175eb5ecae971320',
'/document/38b8b5be9a2ed9def3a4c80f98a80482',
'/document/e33c22584756e7bb9ee0cd84f7899f4b',
'/document/176559736c92b222ae27d0f54229dbcc',
]
),
}
+1 -4
View File
@@ -1,9 +1,6 @@
{
"version": 2,
"name": "hudozka",
"alias": [
"hudozka.now.sh"
],
"builds": [
{
"src": "dist/**",
@@ -16,4 +13,4 @@
"dest": "dist/$1"
}
]
}
}
+6495 -4017
View File
File diff suppressed because it is too large. Load diff
+41 -31
View File
@@ -6,9 +6,9 @@
"main": "src/bin/www.js",
"scripts": {
"start": "NODE_ENV=production node src/server.js",
"dev": "node src/server.js",
"build": "next build && next export -o dist && npm run sitemap && npm run feed && npm run robots-txt",
"robots-txt": "node scripts/robots-txt.js",
"dev": "ts-node --project server.tsconfig.json src/server.ts",
"next-dev": "next dev",
"build": "next build && next export -o dist && npm run sitemap && npm run feed",
"sitemap": "node scripts/sitemap.js",
"feed": "node scripts/feed.js",
"test": "mocha --compilers js:babel-register"
@@ -21,40 +21,48 @@
"license": "ISC",
"dependencies": {
"axios": "^0.19.0",
"classnames": "^2.2.5",
"classnames": "^2.2.6",
"co": "^4.4.0",
"ejson": "^2.1.2",
"handlebars": "^4.1.2",
"ejson": "^2.2.0",
"handlebars": "^4.5.3",
"immutable": "^3.8.2",
"instagram-node": "^0.5.1",
"koa": "^2.7.0",
"koa": "^2.11.0",
"koa-route": "^3.1.0",
"lodash": "^4.17.15",
"markdown": "^0.5.0",
"moment": "^2.22.2",
"moment": "^2.24.0",
"mongodb": "^2.1.14",
"mz": "^2.4.0",
"next": "^9.0.2",
"react": "^16.8.6",
"react-dom": "^16.8.6",
"react-redux": "^4.4.8",
"react-router": "^4.2.0",
"mz": "^2.7.0",
"next": "^9.1.4",
"react": "^16.12.0",
"react-dom": "^16.12.0",
"react-redux": "^4.4.10",
"react-router": "^4.3.1",
"react-router-redux": "^4.0.8",
"redux": "^3.7.2",
"redux-thunk": "^2.2.0",
"redux-thunk": "^2.3.0",
"request-promise": "^2.0.1",
"sitemap": "^1.5.0",
"thunkify": "^2.1.2"
"thunkify": "^2.1.2",
"use-media": "^1.4.0"
},
"devDependencies": {
"@babel/cli": "^7.4.4",
"@babel/core": "^7.4.5",
"@babel/node": "^7.4.5",
"@babel/plugin-proposal-class-properties": "^7.4.4",
"@babel/plugin-proposal-object-rest-spread": "^7.4.4",
"@babel/polyfill": "^7.0.0-beta.47",
"@babel/preset-env": "^7.4.5",
"@babel/register": "^7.0.0-beta.47",
"@babel/cli": "^7.7.4",
"@babel/core": "^7.7.4",
"@babel/node": "^7.7.4",
"@babel/plugin-proposal-class-properties": "^7.7.4",
"@babel/plugin-proposal-object-rest-spread": "^7.7.4",
"@babel/polyfill": "^7.7.0",
"@babel/preset-env": "^7.7.4",
"@babel/preset-typescript": "^7.7.4",
"@babel/register": "^7.7.4",
"@types/classnames": "^2.2.9",
"@types/koa": "^2.0.52",
"@types/koa-route": "^3.2.4",
"@types/mongodb": "^3.3.11",
"@types/node": "^12.12.12",
"@types/react": "^16.9.12",
"@zeit/next-css": "^1.0.1",
"@zeit/next-sass": "^1.0.1",
"autoprefixer": "^6.3.6",
@@ -64,15 +72,17 @@
"babel-preset-env": "^1.7.0",
"babel-register": "^6.26.0",
"cssnano": "^4.1.10",
"eslint": "^3.9.1",
"eslint": "^4.18.2",
"eslint-config-standard": "^6.2.1",
"eslint-plugin-promise": "^3.3.1",
"eslint-plugin-react": "^7.4.0",
"eslint-plugin-promise": "^3.8.0",
"eslint-plugin-react": "^7.16.0",
"eslint-plugin-standard": "^2.0.1",
"feed": "^4.0.0",
"mocha": "^6.1.4",
"node-sass": "^4.12.0",
"mocha": "^6.2.2",
"node-sass": "^4.13.0",
"should": "^8.2.2",
"webpack": "^4.32.2"
"ts-node": "^8.5.2",
"typescript": "^3.7.2",
"webpack": "^4.41.2"
}
}
}
+43
View File
@@ -0,0 +1,43 @@
import React from 'react'
import App, { Container } from 'next/app'
class MyApp extends App {
render() {
const { Component, pageProps } = this.props
return (
<Container>
<style global jsx>{`
@media (max-width: 31.25em) {
:root {
--smaller-font-size: 0.9rem;
--normal-font-size: 1rem;
--bigger-font-size: 1.1rem;
--big-font-size: 1.3rem;
--biggest-font-size: 2rem;
--font-size-h1: 1.5rem;
--font-size-h2: 1.5rem;
--font-size-h3: 1.25rem;
--content-thin: 90%;
--content-wide: 90%;
}
}
.noscroll {
overflow: hidden;
}
#__next {
height: 100%;
}
`}</style>
<Component {...pageProps} />
</Container>
)
}
}
export default MyApp
+2 -2
View File
@@ -37,6 +37,8 @@ export default class MyDocument extends Document {
href="/feed.xml"
/>
<link href='/static/shadow-font/style.css' rel='stylesheet' />
{/* Fotorama + jQuery*/}
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js" />
<link href="//cdnjs.cloudflare.com/ajax/libs/fotorama/4.6.4/fotorama.css" rel="stylesheet" />
@@ -63,8 +65,6 @@ export default class MyDocument extends Document {
<body className="custom_class">
<Main />
<NextScript />
<script src="/static/app.js" />
</body>
</Html>
);
+10 -11
View File
@@ -12,21 +12,20 @@ const Page = (props) => (
menu={buildMenu(props.pageUrl, menuModel)}
showAuthor={true}
menuPadding={true}
layout={'thin'}
>
<Head>
<title>{props.album.title}</title>
</Head>
<div className="content content_thin">
<Article
title={props.album.title}
date={props.album.date}
shareable={true}
>
<Html
html={props.album.post}
/>
</Article>
</div>
<Article
title={props.album.title}
date={props.album.date}
shareable={true}
>
<Html
html={props.album.post}
/>
</Article>
</App>
)
@@ -1,10 +1,9 @@
import { connect } from '../../../src/core/db'
import { NextApiRequest, NextApiResponse } from 'next'
import Article from '../../../src/core/Article'
import { encodeArticle } from '../../../src/api/articles'
export default async (req, res) => {
await connect()
import { encodeArticle } from '../../../src/server/articles'
import { withMiddleware } from '../../../src/middlewares/withMiddleware'
export default withMiddleware(async (req: NextApiRequest, res: NextApiResponse) => {
const {
query: { article: id }
} = req;
@@ -19,4 +18,4 @@ export default async (req, res) => {
error: `Article ${id} not found`
})
}
}
})
@@ -1,13 +1,15 @@
import { connect } from '../../../src/core/db'
import { findArticles } from '../../../src/api/articles'
import { findArticles } from '../../../src/server/articles'
import { withMiddleware } from '../../../src/middlewares/withMiddleware'
export default withMiddleware(async (req, res) => {
await connect()
const int = (value: string | string[]) => parseInt(Array.isArray(value)
? value[0]
: value
)
export default withMiddleware(async (req, res) => {
const { query } = req
const page = parseInt(query.page)
const pageSize = parseInt(query.pageSize)
const page = int(query.page)
const pageSize = int(query.pageSize)
const data = await findArticles(page, pageSize)
@@ -16,7 +18,7 @@ export default withMiddleware(async (req, res) => {
} else {
res.status(404)
res.json({
error: `Article ${id} not found`
error: `Articles not found`
})
}
})
-3
View File
@@ -1,11 +1,8 @@
import { connect } from '../../src/core/db'
import Image from '../../src/core/Image'
import { encodeImage } from '../../src/api/image'
import { withMiddleware } from '../../src/middlewares/withMiddleware'
export default withMiddleware(async (req, res) => {
await connect()
const file = req.query.file
const image = await Image.findByFile(file)
-3
View File
@@ -1,10 +1,7 @@
import { connect } from '../../../src/core/db'
import Page from '../../../src/core/Page'
import { withMiddleware } from '../../../src/middlewares/withMiddleware'
export default withMiddleware(async (req, res) => {
await connect()
const items = await Page.find({})
if (items) {
+2 -4
View File
@@ -1,13 +1,11 @@
import { connect } from '../../src/core/db'
import { findSchedule } from '../../src/core/schedule'
import { findSchedule } from '../../src/server/schedule'
import { withMiddleware } from '../../src/middlewares/withMiddleware'
export default withMiddleware(async (req, res) => {
await connect()
const period = req.query.period
const semester = req.query.semester
const data = await findSchedule(period, semester)
const data = await findSchedule(req.collection, period, semester)
if (data) {
res.json(data)
+11 -12
View File
@@ -15,23 +15,22 @@ const Page = (props) => (
menu={buildMenu(props.pageUrl, menuModel)}
showAuthor={true}
menuPadding={true}
layout={'thin'}
>
<Head>
<title>{props.article.title}</title>
<Meta meta={props.meta} />
</Head>
<div className={'content content_thin'}>
<Article
title={props.article.title}
date={props.article.date}
tags={props.article.tags}
shareable={true}
>
<Html
html={props.article.post}
/>
</Article>
</div>
<Article
title={props.article.title}
date={props.article.date}
tags={props.article.tags}
shareable={true}
>
<Html
html={props.article.post}
/>
</Article>
</App>
)
+6 -7
View File
@@ -13,18 +13,17 @@ const Page = (props) => (
menu={buildMenu(props.pageUrl, menuModel)}
showAuthor={true}
menuPadding={true}
layout={'wide'}
>
<Head>
<title>{props.title}</title>
<Meta meta={props.meta} />
</Head>
<div className="content content_wide">
<ArticleCardList
articles={props.articles}
prevPage={props.prevPage}
nextPage={props.nextPage}
/>
</div>
<ArticleCardList
articles={props.articles}
prevPage={props.prevPage}
nextPage={props.nextPage}
/>
</App>
)
+22 -23
View File
@@ -4,7 +4,7 @@ import { get } from 'lodash'
import { App } from '../src/components/App'
import { Meta } from '../src/components/Meta'
import { CollectiveImage } from '../src/components/CollectiveImage'
import PersonCard from '../src/components/PersonCard'
import { PersonCard } from '../src/components/PersonCard'
import { CardList } from '../src/components/CardList'
import menuModel from '../src/models/menu'
import { buildMenu } from '../src/lib/menu'
@@ -16,35 +16,34 @@ const Page = (props) => (
menu={buildMenu(props.pageUrl, menuModel)}
showAuthor={true}
menuPadding={true}
layout={'wide'}
>
<Head>
<title>{props.title}</title>
<Meta meta={props.meta} />
</Head>
<div className="content content_semi-wide">
{!props.image ? null : (
<CollectiveImage
data={props.image}
style={{
marginBottom: 'var(--double-margin)',
}}
{!props.image ? null : (
<CollectiveImage
data={props.image}
style={{
marginBottom: 'var(--double-margin)',
}}
/>
)}
<CardList
items={props.persons}
renderItem={(person, index) => (
<PersonCard
key={index}
profile={person}
picture={person.picture}
url={person.url}
name={person.name}
/>
)}
<CardList
items={props.persons}
renderItem={(person, index) => (
<PersonCard
key={index}
profile={person}
picture={person.picture}
url={person.url}
name={person.name}
/>
)}
/>
</div>
/>
</App>
)
@@ -56,7 +55,7 @@ Page.getInitialProps = wrapInitialProps(async (ctx) => {
const title = 'Преподаватели Шлиссельбургской ДХШ'
const imageFile = 'Images/HudozkaCollective2017.jpg'
const resImage = await requestGet(createApiUrl(ctx.req, `/api/image?file=${imageFile}`), null)
const image = get(resImage, 'data.artifacts.large', null)
const image = get(resImage, 'artifacts.large', null)
return {
persons,
+4 -5
View File
@@ -2,7 +2,7 @@ import React from 'react'
import Head from 'next/head'
import { App } from '../../src/components/App'
import Document from '../../src/components/Document'
import Share from '../../src/components/Share'
import { Share } from '../../src/components/Share'
import menuModel from '../../src/models/menu'
import { buildMenu } from '../../src/lib/menu'
import { meta } from '../../src/lib/meta'
@@ -14,15 +14,14 @@ const Page = (props) => (
menu={buildMenu(props.pageUrl, menuModel)}
showAuthor={true}
menuPadding={true}
layout={'wide'}
>
<Head>
<title>{props.file.title}</title>
<Meta meta={props.meta} />
</Head>
<div className="content content_wide">
<Document {...props.file} />
<Share />
</div>
<Document {...props.file} />
<Share />
</App>
)
+40 -22
View File
@@ -5,12 +5,19 @@ import { Meta } from '../src/components/Meta'
import menuModel from '../src/models/menu'
import { buildMenu } from '../src/lib/menu'
import { meta } from '../src/lib/meta'
import { IDocument } from '../src/types'
import DocumentList from '../src/components/DocumentList'
import { DocumentList } from '../src/components/DocumentList'
import { unique } from '../src/utils/common'
import { createApiUrl, requestGet, wrapInitialProps } from '../src/next-lib'
import { createApiUrl, requestGet, wrapInitialProps, IResponseItems } from '../src/next-lib'
import { NextPage } from 'next'
function getSorted(documents) {
interface IDocumentCategory {
name: string
items: IDocument[]
}
function getSorted(documents: IDocument[]): IDocumentCategory[] {
const compose = (...fns) => value => fns
.map(fn => fn)
.reverse()
@@ -23,7 +30,7 @@ function getSorted(documents) {
const subtract = (a, b) => a - b
const uniqueCategories = unique(i => i.category)
const uniqueCategories = unique<IDocument, string>(i => i.category)
const priority = {
'Основные документы': [
@@ -53,13 +60,16 @@ function getSorted(documents) {
'Документы для поступления',
]
const sortBy = fn => (a, b) => [a, b]
.map(fn)
.reduce(subtract)
function sortBy<T>(fn: (value: T) => number): (a: T, b: T) => number {
return (a, b) => [a, b].map(fn).reduce(subtract)
}
const getPriorityFn = (m, list) => value => list.includes(value)
? list.indexOf(value)
: m
function getPriorityFn<T>(m: number, list: T[]): (value: T) => number {
return (value: T) => {
const has = list.includes(value)
return has ? list.indexOf(value) : m
}
}
const safeSelect = (d, store, key) => key in store
? store[key]
@@ -84,33 +94,41 @@ function getSorted(documents) {
}], [])
}
const Page = (props) => (
interface IProps {
collections: IDocumentCategory[]
pageUrl: string
title: string
meta: any
}
const Page: NextPage<IProps> = props => (
<App
menu={buildMenu(props.pageUrl, menuModel)}
showAuthor={true}
menuPadding={true}
layout={'thin'}
>
<Head>
<title>{props.title}</title>
<Meta meta={props.meta} />
</Head>
<div className="content content_thin">
{props.collections.map(({ name, items }, index) => (
<DocumentList
key={index}
name={name}
documents={items}
/>
))}
</div>
<h1>{props.title}</h1>
{props.collections.map((collection, index) => (
<DocumentList
key={index}
name={collection.name}
documents={collection.items}
/>
))}
</App>
)
Page.getInitialProps = wrapInitialProps(async (ctx) => {
const pageUrl = '/documents'
const res = await requestGet(createApiUrl(ctx.req, '/api/files'), {})
const files = res.items || []
const res = await requestGet<IResponseItems<IDocument>>(createApiUrl(ctx.req, '/api/files'), { items: [] })
const files = res.items
const title = 'Документы'
const collections = getSorted(files)
+47 -32
View File
@@ -1,14 +1,14 @@
import React from 'react'
import Head from 'next/head'
import { App } from '../src/components/App'
// import Album from '../src/components/Album'
import Article from '../src/components/Article'
import { Meta } from '../src/components/Meta'
import menuModel from '../src/models/menu'
import { buildMenu } from '../src/lib/menu'
import { splitBy } from '../src/lib/array'
import { meta } from '../src/lib/meta'
import { createApiUrl, requestGet, wrapInitialProps } from '../src/next-lib'
import { NextPage } from 'next'
import { PageHeader } from '../src/components/PageHeader'
const albumsByYear = splitBy(album => new Date(album.date).getFullYear())
@@ -18,19 +18,31 @@ function getMeta() {
}
}
function resize(maxWidth, width, height) {
const ratio = maxWidth / width
return [
width * ratio,
height * ratio,
]
}
const m = 1
const AlbumImage = ({ data, alt }) => (
<picture>
<img
className="opa"
alt={alt}
src={data.src}
width={data.width * m}
height={data.height * m}
srcSet={(data.set || []).map(({ url, density }) => `${url} ${density}x`)}
/>
</picture>
)
const AlbumImage = ({ data, alt }) => {
const [width, height] = resize(200, data.width, data.height)
return (
<picture>
<img
className="opa"
alt={alt}
src={data.src}
width={width * m}
height={height * m}
srcSet={(data.set || []).map(({ url, density }) => `${url} ${density}x`)}
/>
</picture>
)
}
const GItem = ({ album }) => (
<div className="gallery-item">
@@ -51,39 +63,42 @@ const ACollection = ({ title, albums }) => (
</div>
)
interface IProps {
meta: any
pageUrl: string
title: string
collections: any[]
}
const Page = (props) => (
const Page: NextPage<IProps> = props => (
<App
menu={buildMenu(props.pageUrl, menuModel)}
showAuthor={true}
menuPadding={true}
layout={'wide'}
>
<Head>
<title>{props.title}</title>
<Meta meta={props.meta} />
</Head>
<div className="content content_semi-wide">
<Article
// title={meta.title}
title={'Галерея'}
>
{props.collections.map(([year, albums], index) => (
<ACollection
key={index}
title={year}
albums={albums}
/>
))
}
</Article>
</div>
<PageHeader
title={props.title}
/>
{props.collections.map(([year, albums], index) => (
<ACollection
key={index}
title={year}
albums={albums}
/>
))}
</App>
)
Page.getInitialProps = wrapInitialProps(async (ctx) => {
const pageUrl = ctx.req.url
const res = await requestGet(createApiUrl(ctx.req, `/api/albums`), {})
const res = await requestGet<any>(createApiUrl(ctx.req, `/api/albums`), {})
const items = res.items || []
const albumCollections = albumsByYear(items)
const title = 'Галерея'
@@ -99,4 +114,4 @@ Page.getInitialProps = wrapInitialProps(async (ctx) => {
}
})
export default Page
export default Page
+19 -10
View File
@@ -8,27 +8,36 @@ import menuModel from '../src/models/menu'
import { meta } from '../src/lib/meta'
import { buildMenu } from '../src/lib/menu'
import { createApiUrl, requestGet, wrapInitialProps } from '../src/next-lib'
import { NextPage } from 'next'
const Page = (props) => (
interface IProps {
pageUrl: string
title: string
meta: any
prevPage: number
nextPage: number
articles: any[]
}
const Page: NextPage<IProps> = props => (
<App
menu={buildMenu(props.pageUrl, menuModel)}
showAuthor={true}
menuPadding={true}
layout={'wide'}
>
<Head>
<title>{props.title}</title>
<Meta meta={props.meta} />
</Head>
<div className="content content_wide">
<HudozkaTitle />
<HudozkaTitle />
<ArticleCardList
articles={props.articles}
prevPage={props.prevPage}
nextPage={props.nextPage}
/>
</div>
<ArticleCardList
articles={props.articles}
prevPage={props.prevPage}
nextPage={props.nextPage}
/>
</App>
)
@@ -36,7 +45,7 @@ Page.getInitialProps = wrapInitialProps(async (ctx) => {
const pageUrl = '/'
const page = 1
const pageSize = ctx.query.pageSize || 15
const res = await requestGet(createApiUrl(ctx.req, `/api/articles?page=${page}&pageSize=${pageSize}`), {})
const res = await requestGet(createApiUrl(ctx.req, `/api/articles?page=${page}&pageSize=${pageSize}`), {}) as any
const articles = res.items || []
const nextPage = res.nextPage
const prevPage = res.prevPage
+10 -11
View File
@@ -1,37 +1,36 @@
import React from 'react'
import Head from 'next/head'
import { App } from '../src/components/App'
import Page from '../src/components/Page'
import { Page } from '../src/components/Page'
import menuModel from '../src/models/menu'
import { buildMenu } from '../src/lib/menu'
import { Meta } from '../src/components/Meta'
import { meta } from '../src/lib/meta'
import { createApiUrl, requestGet, wrapInitialProps } from '../src/next-lib'
const Index = (props) => (
const Index = props => (
<App
menu={buildMenu(props.pageUrl, menuModel)}
showAuthor={true}
menuPadding={true}
layout={'thin'}
>
<Head>
<title>{props.title}</title>
<Meta meta={props.meta} />
</Head>
<div className={'content content_thin'}>
<Page
shareable={true}
>
{props.content}
</Page>
</div>
<Page
showSocialShare={true}
>
{props.content}
</Page>
</App>
)
Index.getInitialProps = wrapInitialProps(async (ctx) => {
const pageUrl = ctx.req.url
// // const pageUrl = '/neighbors/2018'
const page = await requestGet(createApiUrl(ctx.req, `/api/page?page=${pageUrl}`), {})
const image = page.preview ? page.preview.artifacts.fb : {}
@@ -48,4 +47,4 @@ Index.getInitialProps = wrapInitialProps(async (ctx) => {
}
})
export default Index
export default Index
+6 -7
View File
@@ -1,8 +1,8 @@
import React from 'react'
import Head from 'next/head'
import { App } from '../src/components/App'
import Schedule from '../src/components/Schedule'
import Share from '../src/components/Share'
import { Schedule } from '../src/components/Schedule'
import { Share } from '../src/components/Share'
import menuModel from '../src/models/menu'
import { buildMenu } from '../src/lib/menu'
import { createApiUrl, requestGet, wrapInitialProps } from '../src/next-lib'
@@ -12,18 +12,17 @@ const Page = (props) => (
menu={buildMenu(props.pageUrl, menuModel)}
showAuthor={true}
menuPadding={true}
layout={'wide'}
>
<Head>
<title>{props.title}</title>
</Head>
<div className="content content_wide">
{/*<ScheduleList schedules={schedules}/>*/}
{/*<ScheduleList schedules={schedules}/>*/}
<Schedule {...props.schedule} />
<Schedule {...props.schedule} />
<Share />
</div>
<Share />
</App>
)
@@ -1,36 +1,52 @@
import React from 'react'
import axios from 'axios'
import Head from 'next/head'
import { App } from '../../src/components/App'
import Page from '../../src/components/Page'
import Article from '../../src/components/Article'
import { Meta } from '../../src/components/Meta'
import menuModel from '../../src/models/menu'
import { buildMenu } from '../../src/lib/menu'
import { meta } from '../../src/lib/meta'
import { createApiUrl, requestGet, wrapInitialProps } from '../../src/next-lib'
import { NextPage } from 'next'
import { IMeta } from '../../src/types'
import Html from '../../src/components/Html'
const Index = (props) => (
interface IProps {
pageUrl: string
title: string
meta: IMeta
person: any
}
const Index: NextPage<IProps> = props => (
<App
menu={buildMenu(props.pageUrl, menuModel)}
showAuthor={true}
menuPadding={true}
layout={'thin'}
>
<Head>
<title>{props.title}</title>
<Meta meta={props.meta} />
</Head>
<div className="content content_thin">
<Page shareable={true}>
{props.person.post}
</Page>
</div>
<Article
title={''}
tags={[]}
date={null}
shareable={true}
>
<Html
html={props.person.post}
/>
</Article>
</App>
)
Index.getInitialProps = wrapInitialProps(async (ctx) => {
const pageUrl = '/collective'
const id = ctx.query.person
const person = await requestGet(createApiUrl(ctx.req, `/api/persons/${id}`), {})
const person: any = await requestGet(createApiUrl(ctx.req, `/api/persons/${id}`), {})
const name = person.name || []
const title = name.join(' ')
const image = person.preview ? person.preview.artifacts.fb : {}
@@ -48,4 +64,4 @@ Index.getInitialProps = wrapInitialProps(async (ctx) => {
}
})
export default Index
export default Index
File renamed without changes.
File renamed without changes.

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 30 KiB

File renamed without changes.

Before

Width:  |  Height:  |  Size: 49 KiB

After

Width:  |  Height:  |  Size: 49 KiB

File renamed without changes.

Before

Width:  |  Height:  |  Size: 4.2 KiB

After

Width:  |  Height:  |  Size: 4.2 KiB

File renamed without changes.

Before

Width:  |  Height:  |  Size: 7.9 KiB

After

Width:  |  Height:  |  Size: 7.9 KiB

File renamed without changes.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

File renamed without changes.

Before

Width:  |  Height:  |  Size: 137 B

After

Width:  |  Height:  |  Size: 137 B

File renamed without changes.

Before

Width:  |  Height:  |  Size: 500 B

After

Width:  |  Height:  |  Size: 500 B

File renamed without changes.

Before

Width:  |  Height:  |  Size: 643 B

After

Width:  |  Height:  |  Size: 643 B

File renamed without changes.

Before

Width:  |  Height:  |  Size: 147 B

After

Width:  |  Height:  |  Size: 147 B

File renamed without changes.

Before

Width:  |  Height:  |  Size: 131 KiB

After

Width:  |  Height:  |  Size: 131 KiB

File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
Binary file not shown.
@@ -0,0 +1,713 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
<svg>
<metadata>
Created by FontForge 20090622 at Wed May 4 16:42:32 2016
By deploy user
</metadata>
<defs>
<font id="Shadow-Regular" horiz-adv-x="729" >
<font-face
font-family="Shadow"
font-weight="400"
font-stretch="normal"
units-per-em="1000"
panose-1="0 0 0 0 0 0 0 0 0 0"
ascent="750"
descent="-250"
x-height="635"
cap-height="638.5"
bbox="-64.1538 -251 1003 860"
underline-thickness="50"
underline-position="-50"
unicode-range="U+000D-U+20B4"
/>
<missing-glyph horiz-adv-x="500"
/>
<glyph glyph-name=".notdef" horiz-adv-x="500"
/>
<glyph glyph-name="NULL" horiz-adv-x="0"
/>
<glyph glyph-name="NULL" horiz-adv-x="0"
/>
<glyph glyph-name="nonmarkingreturn" unicode="&#xd;" horiz-adv-x="500"
/>
<glyph glyph-name="space" unicode=" " horiz-adv-x="323"
/>
<glyph glyph-name="uni0418" unicode="&#x418;" horiz-adv-x="750"
d="M7 616q0 18 4.5 21.5t23.5 1.5q20 -2 40.5 -1.5t40.5 -0.5q12 0 24.5 1t25.5 -1q15 -2 20.5 -8.5t5.5 -22.5q1 -5 0.5 -9.5t-0.5 -9.5v-264v-13.5t1 -13.5q0 -7 5 -9q6 0 9 5q4 3 7 7t5 8q51 71 100.5 148.5t99.5 147.5q12 20 28 28.5t43 7.5q26 -3 53.5 -2t53.5 0
q24 -2 31 -9t6 -31q-2 -102 -1.5 -209.5t-1.5 -209.5q-1 -39 0 -73.5t2 -73.5q0 -7 0.5 -12t-0.5 -12q-1 -9 -6 -14.5t-15 -3.5q-32 1 -65 2.5t-66 0.5q-7 0 -14 0.5t-13 3.5q-4 2 -7.5 7t-3.5 10q2 37 0 80t0 80q1 37 1 73.5t1 73.5q0 2 -1 6t-5 4q-3 0 -4.5 -2t-3.5 -4
q-48 -59 -96 -127.5t-88 -134.5l-15.5 -24l-15.5 -24q-9 -15 -22 -19t-29 -6q-12 -1 -23.5 -0.5t-23.5 0.5q-20 1 -40.5 -0.5t-40.5 0.5q-23 2 -27.5 8t-3.5 30q2 37 2.5 73.5t0.5 73.5q0 38 -1 75.5l-2 75.5l0.5 15t0.5 39v55v63.5v63.5v55z" />
<glyph glyph-name="uni0413" unicode="&#x413;" horiz-adv-x="542"
d="M8 293v50t-0.5 61l-1 64t-1 58.5t-1 44.5t-0.5 23v15t1 15q0 17 19 18q21 0 54.5 0.5t73 0.5h81h77.5t63.5 -0.5t38.5 -0.5q18 0 22 -4t6 -22q3 -31 2 -58.5t2 -58.5q2 -16 -2 -21.5t-19 -7.5q-6 -1 -33 -1.5t-61.5 -0.5t-69 -0.5t-56.5 -0.5q-16 0 -16 -17
q0 -4 -0.5 -7.5t-0.5 -7.5q1 -75 0 -156t1 -156q1 -23 0.5 -40t0.5 -40q1 -14 -2 -31q-3 -15 -19 -15q-38 -2 -72.5 -2.5t-71.5 -1.5q-8 0 -10.5 4t-3.5 10q-1 7 -1 13.5v13.5v130t-1 129h1z" />
<glyph glyph-name="uni041F" unicode="&#x41f;" horiz-adv-x="688"
d="M561 353q-2 -58 -3 -115l-2 -114q-1 -26 0.5 -47.5t2.5 -47.5q0 -15 -3.5 -19.5t-17.5 -5.5l-65.5 -4t-65.5 -3q-19 -1 -19 23q0 38 0.5 70.5t0.5 70.5q0 63 0.5 124.5t-0.5 123.5q0 27 -1 39t-6 16.5t-17 4t-34 0.5q-29 1 -58 1.5t-58 -0.5q-19 0 -23.5 -4.5t-4.5 -21.5
v-175q1 -58 1.5 -116t1.5 -116q0 -5 -1 -8q-1 -13 -2 -20t-5 -10t-11 -3.5t-20 -0.5q-28 1 -56 1.5t-56 3.5q-22 2 -27 8.5t-5 28.5v450v133q0 14 3 16t18 1q48 -2 94.5 -1.5t94.5 0.5q66 -1 129 2t127 0q16 0 31 -0.5t31 -0.5q15 0 18.5 -3t3.5 -18v-93q0 -21 0.5 -50
l1 -56t1.5 -45.5z" />
<glyph glyph-name="uni0422" unicode="&#x422;" horiz-adv-x="614"
d="M468 637q7 -1 13.5 -1t13.5 -2q20 -3 25 -8t5 -26q0 -26 -0.5 -47t-1.5 -47q-1 -17 -5 -21t-20 -3q-12 0 -30.5 -0.5t-36.5 -0.5t-32.5 -0.5t-17.5 -0.5q-15 0 -23.5 -1t-12 -5t-4 -12t0.5 -23v-32.5t-1 -75.5t-1.5 -97.5t-1.5 -97.5t-1.5 -75t-0.5 -31q-3 -30 -32 -31
h-21.5h-26t-22.5 0.5t-12 0.5q-16 0 -25 0.5t-13 4.5t-5 12.5t-1 24.5v33t0.5 60t1 77l1 83t0.5 77.5v61.5v27q1 17 -19 19q-13 0 -34 1t-41.5 1.5t-37 1.5t-19.5 1q-15 1 -20 6t-5 20v39t1 39v12q0 9 -1 19t4 16q3 5 13.5 3.5t19.5 -1.5q13 0 46.5 0.5t76.5 0.5t91 -0.5
t91 -0.5t76 -0.5t45 -0.5z" />
<glyph glyph-name="uni0428" unicode="&#x428;" horiz-adv-x="969"
d="M255 -2q-51 1 -101 1.5t-101 1.5q-10 0 -15 1q-17 2 -22.5 8.5t-5.5 23.5q-2 69 -1 136t0 136q-1 55 -0.5 110t0.5 111q1 23 0 37t-2 37q0 7 1 13t2 13q5 15 20 14q10 -1 26 -1.5t32.5 -0.5t30 0.5t16.5 0.5q13 1 21 0t12.5 -4.5t6.5 -11t3 -20.5q5 -62 4 -118t1 -119
q1 -42 -1 -86t0 -86q1 -14 4.5 -17.5t18.5 -4.5q25 -2 54 -0.5t53 0.5t29 3.5t4 27.5q0 38 -1 75.5t-1 75.5q0 54 0.5 106.5t0.5 106.5q0 16 1 26.5t-1 26.5q-2 20 16 20q34 -2 65.5 0t65.5 -1q14 -2 18 -7t4 -22q1 -87 1 -172.5v-172.5q0 -19 0.5 -37.5t1.5 -36.5
q1 -14 5.5 -18t18.5 -4q27 -1 54 -0.5t55 0.5q17 0 17 16v55q-1 41 -0.5 81t-1.5 82q-2 50 -2.5 98.5t-2.5 98.5q0 4 -0.5 7.5t-0.5 8.5q0 11 4.5 15.5t16.5 4.5h60t61 -1q11 -1 17 -6t7 -22q3 -97 4.5 -193.5t-3.5 -194.5q-2 -45 -0.5 -87.5t1.5 -87.5q0 -31 -8.5 -39
t-38.5 -8q-17 0 -59.5 -0.5t-97 -0.5h-115.5h-113.5t-90.5 0.5t-48 0.5z" />
<glyph glyph-name="uni0420" unicode="&#x420;" horiz-adv-x="614"
d="M6 483q1 36 1.5 63.5t1.5 62.5q0 10 0.5 16t3.5 9t8.5 4t15.5 2q8 1 15.5 0.5t15.5 -0.5q11 0 23 0.5t23 0.5q7 0 23 0.5t34 2t34.5 2t23.5 0.5q20 -2 39 -3.5t38 -3.5q45 -5 81.5 -25t70.5 -47q5 -4 8.5 -8t8.5 -9q24 -22 35.5 -43.5t13.5 -44.5t-3 -48t-14 -55
q-21 -67 -60 -104t-102 -56q-35 -11 -70.5 -13t-72.5 0q-23 2 -28 -2.5t-6 -27.5q-1 -34 -0.5 -68t0.5 -68q0 -20 -5 -25t-26 -4l-55.5 2l-56.5 2q-19 1 -20 23q-1 27 -1 54v54v202v17v41t0.5 50.5t1.5 46.5zM230 495q-8 0 -17 -0.5t-17 -0.5q-9 -1 -14.5 -4.5t-6.5 -13.5
q0 -29 -0.5 -60t-1.5 -60q0 -15 16 -17q36 -4 70 0.5t66 21.5q18 10 28 26q8 12 10 28.5t-3 31.5t-16 26.5t-29 14.5q-11 2 -25 3.5t-27.5 2.5t-23 1h-9.5z" />
<glyph glyph-name="uni041C" unicode="&#x41c;" horiz-adv-x="979"
d="M5 622q0 12 3.5 16t16.5 5q15 1 40.5 1t51 -1t45 -1t24.5 1q18 4 25 -12q28 -58 52.5 -103l47 -84.5l44.5 -77.5l45 -81q8 -15 17 -26q7 -11 15 0l102 165l23.5 40l31.5 56l29 53.5l17 32.5q16 36 55 33q30 -2 60 -2.5t60 -1.5q10 0 19 -3q8 -2 13 -6.5t5 -14.5
q0 -41 1 -81.5l2 -81.5q2 -66 2.5 -132t2.5 -132l2 -81l2 -82q1 -18 -7 -25t-25 -6l-105 3q-12 0 -19 1t-10 4t-3.5 9t-0.5 18q0 68 -0.5 131.5t-0.5 132.5v9.5t-1 9.5t-1.5 11t-4.5 6q-3 1 -9.5 -7.5t-8.5 -10.5l-85.5 -128.5t-78.5 -131.5q-2 -3 -3.5 -6.5t-3.5 -6.5
q-10 -16 -15 -25t-11 -12.5t-16 -4t-30 -0.5q-30 1 -59 0q-26 -3 -34 23l-5.5 15t-5.5 14q-11 25 -22 46t-22 46l-16.5 35.5l-16.5 35.5q-6 13 -11.5 26.5t-12.5 26.5q-5 11 -13.5 26t-12.5 15q-1 0 -1.5 -14.5t-0.5 -38v-53.5t0.5 -60l1 -57.5t0.5 -47.5v-11t-1 -12
q-3 -21 -24 -19q-32 1 -63.5 0t-63.5 1q-18 1 -22.5 5.5t-5.5 21.5q-1 29 -1 53t-1 53q-1 39 -1.5 77.5t-0.5 77.5q0 13 0.5 25.5t0.5 24.5v15v39.5v56v64.5t-0.5 64t-0.5 56z" />
<glyph glyph-name="uni041E" unicode="&#x41e;"
d="M654 323q-2 -46 -20 -97.5t-51 -101.5q-35 -51 -83 -82t-103 -52q-16 -6 -34.5 -10t-37.5 -5.5t-37.5 -0.5t-34.5 5q-18 4 -46 15.5t-60 29t-64 41.5t-58 54q-23 27 -34.5 59.5t-13.5 68.5q-3 54 4.5 106t30.5 102q12 26 32 54.5t51 54.5t74 48t102 36q29 6 65.5 5
t74.5 -11q28 -7 56.5 -22t53.5 -33t44 -36.5t30 -32.5q31 -40 44.5 -86t14.5 -109zM302 154q27 -1 48.5 2.5t41.5 14.5q51 32 73 79t11 106q-5 29 -20.5 53t-38.5 41t-50.5 25t-56.5 4t-55.5 -12.5t-45.5 -31.5q-37 -42 -51 -91.5t1 -106.5q3 -10 10.5 -20t15.5 -17
q27 -22 56.5 -35t60.5 -11z" />
<glyph glyph-name="uni0429" unicode="&#x429;" horiz-adv-x="1083"
d="M340 617q0 15 3 19.5t18 4.5q30 1 60 0.5t60 -1.5q17 0 17 -20q0 -44 0.5 -84t-0.5 -84q0 -66 -0.5 -132t-0.5 -132q-1 -17 2.5 -21t20.5 -5q29 -1 58.5 -1h58.5q13 0 20 1t10.5 4.5t4 10.5t0.5 19q0 42 -0.5 83.5t-0.5 83.5q-1 61 -1 122v122q0 11 0.5 17.5t3.5 10
t9 4.5t17 1q30 1 60 -0.5t60 -3.5q12 0 14 -15q2 -20 3.5 -40.5t1.5 -40.5q1 -80 0 -159t2 -159l1.5 -41t5.5 -17.5t17 -4t36 -0.5l36.5 -2t36.5 -3q19 -2 20 -19q0 -7 1.5 -13.5t2.5 -13.5q2 -47 2.5 -93t2.5 -93q0 -6 -1 -11.5l-2 -11.5q-3 -18 -21 -18q-27 1 -54 1t-54 1
q-19 0 -24 5t-7 23q-5 33 -6 66q-1 11 -5.5 16t-15.5 5q-20 0 -39 0.5t-39 0.5q-105 1 -209 1.5t-210 1.5q-67 0 -133.5 0.5t-133.5 0.5h-12t-11 2q-11 2 -17 9t-3 18q-2 21 -2 39v34.5t0.5 32.5t0.5 33q-2 52 0 103t-1 103q-4 60 -3.5 113.5t1.5 113.5v16q1 17 4.5 21
t20.5 3q17 0 34.5 -1t34.5 -1q15 -1 29.5 -1.5t28.5 0.5q19 0 19 -18q-1 -23 -1.5 -40t-0.5 -40q1 -69 1.5 -138t0.5 -138q1 -17 0.5 -33t-0.5 -33q0 -21 3 -25.5t23 -5.5l52.5 -4t52.5 -2q15 0 22.5 1t10.5 4.5t3.5 11t0.5 20.5q-1 52 -1 104t-1 105l0.5 22.5t0.5 54.5
v67.5v62.5z" />
<glyph glyph-name="uni0427" unicode="&#x427;" horiz-adv-x="656"
d="M550 471q-1 -107 -0.5 -213t-0.5 -213q0 -11 -0.5 -16.5l-1.5 -16.5q-2 -14 -6.5 -18t-18.5 -3q-30 2 -60 0t-60 2q-26 3 -26 36v117q0 14 -1 28.5l-2 29.5q-1 17 -17 9q-5 -2 -10.5 -5.5t-10.5 -5.5l-41.5 -16t-41.5 -14q-52 -14 -96.5 0t-85.5 44q-24 18 -39.5 42.5
t-17.5 55.5l-4 67.5t-3 68.5v43t0.5 39l1 39t0.5 43q0 22 20 22q5 0 21.5 0.5t36.5 0.5h39h30q12 -1 19 -2t10 -4t3.5 -9.5t0.5 -17.5q-1 -42 -2.5 -74.5t-2.5 -73.5q0 -17 1 -33t5 -33q5 -24 21 -38.5t45 -14.5q50 -1 90 29q14 11 21.5 23.5t7.5 32.5q-2 48 -1 93t1 93v8
q1 17 5.5 22t21.5 5h19h33.5h36h28.5q20 1 25 -5t7 -26q1 -17 1 -41.5v-46.5t-0.5 -37.5z" />
<glyph glyph-name="uni0426" unicode="&#x426;"
d="M6 611q-1 16 2.5 20t20.5 7q4 0 19.5 0.5t35.5 0.5t40 -0.5t32 -0.5q11 0 14.5 -4.5t3.5 -14.5q1 -28 1.5 -68t0.5 -85t-0.5 -90.5t-0.5 -84.5t-0.5 -67.5t0.5 -38.5q0 -22 24 -22h73.5t73.5 -1q20 0 18 20q-1 16 -1 47.5v72t-0.5 85.5t-0.5 87t-1 77.5t-2 56.5v10t1 10
q3 15 19 15q30 -2 60 -2.5t60 -2.5q16 -2 19.5 -5.5t4.5 -20.5q1 -24 2 -58t1.5 -73t0.5 -78.5t0.5 -73.5t0.5 -59v-34q1 -11 1 -21.5t1 -21.5q1 -17 2 -25.5t5.5 -13t13 -5.5t25.5 -1q3 0 6 0.5t5 -0.5q18 -1 27 -2t12 -5t3 -12t1 -21q4 -43 5 -83t0 -87q0 -15 -6 -23.5
t-21 -9.5q-26 0 -49 0.5t-49 -0.5q-22 0 -25 20q-2 14 -1 28.5t-1 28.5q-2 17 -17 18q-9 1 -19 1.5t-19 -1.5q-17 0 -46 -0.5t-63.5 -0.5t-71 -1t-69 -1t-58 -0.5t-37.5 -0.5h-31q-10 1 -21 0.5t-18 4.5q-5 4 -4.5 15t-0.5 21q-3 97 1 192t0 192l-2 68q-1 29 -1 61.5v60.5z
" />
<glyph glyph-name="uni042C" unicode="&#x42c;" horiz-adv-x="594"
d="M146 -2q-30 1 -52.5 1.5t-42.5 1.5q-16 0 -31 3q-7 2 -11.5 6.5t-2.5 12.5q0 48 -0.5 98t0.5 99v61.5v77v81.5v76v60v34q0 5 -0.5 9.5t0.5 9.5q3 20 24 20q30 -2 60 -3t60 -3q14 -1 22 -2t11.5 -5t4.5 -12t1 -22q1 -34 0.5 -59.5t1.5 -59.5q0 -18 3 -22t20 -5
q22 -2 49 -1.5t49 -1.5q84 -6 142 -64q48 -49 54 -122q5 -83 -38 -156q-22 -36 -53 -60.5t-73 -35.5q-52 -14 -103 -18t-95 1zM191 251q2 -10 2 -29q0 -9 0.5 -18.5t0.5 -19.5q1 -26 6.5 -32t31.5 -4q15 1 30 6q14 4 28 10t25.5 16t18.5 23.5t7 33.5q0 19 -8 31t-21.5 19.5
t-30 10.5t-34.5 5q-1 1 -4 1q-19 2 -29.5 2t-15.5 -5t-6 -16.5t-1 -33.5z" />
<glyph glyph-name="uni042A" unicode="&#x42a;" horiz-adv-x="666"
d="M76 324q-1 39 0.5 77.5t-0.5 77.5q-2 18 -6 21.5t-23 4.5q-23 1 -37.5 0t-23 3t-11 16t-1.5 39q1 14 0 27t-1 27q1 14 5 18.5t18 5.5h37.5t63.5 -0.5l69 -1t54 -1.5q3 1 9.5 1t12.5 -2.5t10.5 -8.5t4.5 -16v-28v-39v-42v-38q0 -22 20 -22q37 0 73 -3q51 -5 94 -24.5
t76 -58.5q32 -38 41 -81t-2 -91q-14 -60 -50.5 -100t-94.5 -63q-41 -16 -81.5 -19t-82.5 -5q-37 -2 -74 0l-74 4q-18 1 -21 4t-3 20q-1 48 -1.5 95t-1.5 95v12v28.5t0.5 35t0.5 32.5zM302 136q7 1 16.5 1.5t19.5 2.5q8 2 16.5 6t13.5 10q19 20 25.5 43t-2.5 50
q-15 49 -65 58q-21 4 -42 6q-17 2 -21.5 -2t-4.5 -22q-2 -66 0 -132q0 -14 3.5 -17t19.5 -4h21z" />
<glyph glyph-name="uni042B" unicode="&#x42b;" horiz-adv-x="823"
d="M7 283q1 36 1.5 89l1 104t0.5 90v48q-1 18 3 22t23 5h23t40 -0.5l43 -1t32 -0.5q16 -1 19 -3t5 -18q2 -34 0.5 -67.5t0.5 -67.5q0 -13 1 -20.5t4 -11t10 -5t21 -3.5q10 -1 19.5 -1t19.5 -2q60 -10 105 -41t72 -88q18 -38 23 -77t-7 -81q-11 -40 -36 -74.5t-66 -50.5
q-42 -17 -81.5 -20.5l-83.5 -7.5q-5 0 -24 -0.5t-44 -0.5t-50 -0.5t-40 -1.5q-23 -1 -28.5 4.5t-5.5 28.5q0 66 -0.5 130.5t-0.5 122.5zM194 167q0 -8 3 -13.5t11 -5.5q10 0 24.5 0.5t28.5 3.5t26.5 7.5t20.5 12.5t12.5 20t6 25t-0.5 26t-7 23t-18.5 18.5t-29.5 14t-33 8
t-29 1.5q-14 -2 -15 -14v-127zM543 615q0 14 3.5 19.5t17.5 4.5h62t62 -2q17 -1 20.5 -5.5t3.5 -22.5q2 -42 2.5 -79t0.5 -79v-194t-2 -194q0 -30 0.5 -43.5t-5 -18t-20 -3.5t-44.5 1q-19 -1 -37 0t-37 1q-18 0 -24 5t-6 24v150.5t-1 151.5l1 30.5t1.5 74.5t1 93t0.5 86z
" />
<glyph glyph-name="uni0411" unicode="&#x411;" horiz-adv-x="677"
d="M156 -12q-31 1 -61.5 1t-62.5 2q-17 1 -22 6t-5 22q1 34 1.5 67.5t1.5 68.5v135v246q0 44 -3 89q0 11 4 14.5t14 3.5h38.5h60.5t71.5 -0.5t73 -0.5h65.5t47 1q11 1 21.5 1.5t21.5 -0.5q18 -1 25 -8t6 -26q-1 -25 -3 -47.5t-4 -47.5q-1 -8 -2 -13t-3.5 -7t-7.5 -2.5
t-14 -0.5q-35 -1 -69.5 -0.5t-69.5 -0.5q-22 0 -45 -0.5t-44 -0.5q-16 0 -18 -16q-2 -17 -0.5 -33t0.5 -34q0 -9 5 -12t13 -3q28 -3 55.5 -2.5t56.5 0.5q29 -1 57 -7.5t56 -15.5q35 -12 60.5 -35t42.5 -55q14 -26 13 -51t-7 -62q-9 -56 -38 -90.5t-66.5 -53.5t-77.5 -25
t-73 -6h-21.5h-39h-37t-16.5 -1zM233 256q-8 2 -17 1t-19 0q-20 2 -21 -17q0 -23 -0.5 -44.5t-0.5 -44.5q0 -17 18 -20q57 -12 110 11q14 6 22.5 17t11.5 24t-0.5 25.5t-14.5 22.5q-10 8 -22.5 12.5t-25.5 7.5q-9 3 -19.5 4t-21.5 1z" />
<glyph glyph-name="uni041A" unicode="&#x41a;" horiz-adv-x="677"
d="M7 611q0 15 4 19.5t18 3.5q24 0 45 -1t46 -2q5 -1 11 -1h12q20 0 24 -3.5t5 -23.5q2 -32 2.5 -64t1.5 -64q1 -6 0 -11.5t0 -11.5l2 -10.5t3 -10.5q5 2 9 4.5t7 5.5l89 86.5l88 87.5q11 10 22 16.5t25 5.5q38 -1 75.5 -1.5t75.5 -1.5q3 0 7 -3t5 -5q1 -3 -1 -7.5t-4 -6.5
l-76 -77.5l-76 -77.5q-14 -14 -28.5 -26.5t-28.5 -26.5q-14 -13 -14.5 -18t9.5 -21l41.5 -67.5l42.5 -67.5l61 -96.5l61 -96.5q8 -12 3.5 -22t-18.5 -12q-5 -1 -11 -1h-12q-21 -1 -42.5 -1t-42.5 -2q-23 -2 -39.5 6.5t-29.5 26.5q-14 20 -31 47t-31 47l-42 60.5l-42 60.5
q-8 12 -13.5 12.5t-16.5 -9.5q-20 -16 -19 -44q2 -45 2.5 -89t1.5 -89q1 -20 -3.5 -25.5t-23.5 -5.5q-30 0 -64.5 1t-64.5 3q-23 1 -24 25q-1 18 -1 63v103.5v124v124.5v105v65z" />
<glyph glyph-name="uni041B" unicode="&#x41b;" horiz-adv-x="751"
d="M635 356q0 -48 -0.5 -95t0.5 -95q1 -42 2 -76t3 -76q1 -17 -13 -17q-35 1 -70 1.5t-70 1.5q-10 0 -12 5t-2 13v54.5t-1 55.5l-3 213q-1 25 0 50t0 51q0 11 -1 17.5t-4.5 9.5t-10 4t-18.5 2h-8q-10 0 -15.5 -0.5t-9 -2.5t-6 -7.5t-5.5 -14.5l-23.5 -84t-25.5 -83
q-15 -45 -32 -89.5t-39 -86.5q-12 -23 -31.5 -42.5l-39.5 -38.5q-17 -17 -39 -23.5t-46 -7.5q-33 -2 -64 5t-61 18q-14 5 -17.5 11.5t-1.5 21.5q6 29 11.5 59t12.5 59q4 21 25 15l9 -3.5l9 -3.5q31 -11 59.5 -2.5t46.5 35.5q8 12 14.5 25t10.5 27l27 91.5t24 91.5
q11 42 19 85t17 85q3 17 7.5 21.5t21.5 6.5q4 0 8 0.5t7 -0.5q17 0 43 0.5t56.5 0.5h62.5h61h52h35q18 -1 21.5 -5t3.5 -23q0 -47 -0.5 -93t-1.5 -93v-21.5t0.5 -24t1 -20z" />
<glyph glyph-name="uni042F" unicode="&#x42f;" horiz-adv-x="687"
d="M571 34v-23q-2 -20 -21 -18h-127q-18 1 -24 7t-6 23v54.5t1 54.5q0 17 0.5 34.5t0.5 35.5q0 15 -3.5 18t-18.5 5q-30 6 -46 -20l-57.5 -85t-55.5 -86q-7 -12 -12.5 -19.5t-13 -12.5t-19.5 -7t-31 -2h-34t-38 1q-21 0 -44 1q-6 2 -10 5q-8 6 -1 16q14 20 30 39.5t31 40.5
l48 67.5l48 68.5q9 14 8.5 18.5t-14.5 10.5q-35 16 -55 43.5t-34 60.5q-14 35 -18.5 70.5t6.5 73.5q5 18 16 32.5t25 26.5q49 41 113 57q45 11 87 11.5t82 1.5q17 -1 42.5 -1t49 0.5t40.5 0.5h19q21 -3 28 -11t7 -29v-48v-87t0.5 -111t0.5 -119v-111.5v-87.5zM407 438
q-1 4 -1 12.5t-1 17.5q-2 15 -14 16q-15 1 -43.5 2.5t-56 -1t-48.5 -12t-22 -30.5q-1 -37 17 -53.5t41 -21.5t44.5 -3.5t29.5 0.5q22 -2 32.5 1t14.5 11t4.5 23t2.5 38z" />
<glyph glyph-name="uni0414" unicode="&#x414;" horiz-adv-x="791"
d="M570 179q1 -20 4.5 -24.5t23.5 -5.5q13 -1 25.5 -1t24.5 -1q15 0 21 -4t9 -18q1 -6 1 -12v-11q0 -33 0.5 -66t0.5 -66v-11.5t-1 -11.5q-3 -17 -22 -17q-21 0 -42.5 -0.5t-42.5 -0.5q-20 0 -17 20v3q0 17 -1 26t-5 13.5t-13 5.5t-25 1q-12 0 -42 0.5t-69 1t-82.5 1
t-82 0.5h-67.5t-39 -1q-4 -1 -8 -6t-5 -10q-2 -11 -1.5 -27t0.5 -27q0 -6 -2.5 -11t-10.5 -5q-26 -1 -55 -2t-55 0q-14 0 -18 5t-5 19q-2 44 -1 87t-1 87q-1 14 2.5 17.5t17.5 1.5q22 -3 36 16l27.5 35t24.5 37q22 39 39.5 79.5t27.5 84.5q2 9 8 31.5t12 49t10 51.5t4 40
q-1 20 1.5 36.5t3.5 36.5q1 19 20 18q49 0 97 0.5t96 -0.5q72 0 143 -3q17 -1 20.5 -5t3.5 -21q0 -19 0.5 -53.5t1.5 -77l2 -88.5t1.5 -88t1.5 -76.5t2 -52.5zM400 314v18t-1 44t-1.5 55t-1.5 51q0 5 -2 11t-4 6q-11 1 -22.5 1t-22.5 -2q-9 -2 -8.5 -9t-0.5 -14
q-2 -16 -3 -29t-3 -30q-8 -65 -27.5 -128t-51.5 -121q-1 -3 -2 -5.5t-2 -5.5q-3 -6 -0.5 -9.5t8.5 -3.5q31 0 67.5 1t67.5 2q17 0 17 17v17.5t-1 17.5q-2 29 -3 58t-3 58z" />
<glyph glyph-name="uni0416" unicode="&#x416;" horiz-adv-x="928"
d="M352 369q2 0 3 12.5t2 29.5t1 36t-1 33q-2 38 -4.5 69.5t-4.5 69.5q-1 17 2.5 21t20.5 5q32 1 64 0.5t64 -0.5q11 0 13.5 -5t2.5 -15q0 -61 1 -116t2 -116v-8t2 -7q1 -2 4.5 -3t3.5 0q5 5 9 10t7 11l57.5 108t57.5 109q7 15 16.5 23t27.5 6q25 -2 50 -1t50 1q9 0 17 -1
t13 -12q4 -10 1 -17t-8 -15l-74.5 -114.5l-74.5 -114.5q-9 -15 -9 -29t8 -29l24 -46l30 -57l31.5 -60.5l28.5 -56l22 -44t12 -23.5q9 -19 -11 -22q-17 -3 -34 -3q-23 2 -46.5 1t-46.5 1q-19 1 -27 18l-59 114.5l-60 114.5q-2 3 -3.5 6.5t-3.5 7.5q-3 3 -6 3q-4 0 -4 -5
q-1 -7 -1.5 -13.5t-0.5 -13.5q2 -57 3 -111l2 -112q1 -10 -5 -16.5t-15 -3.5q-32 -1 -62 0.5t-61 -0.5q-17 -2 -20.5 2.5t-4.5 21.5l-2 114.5l-2 115.5v9.5t-1 9.5q0 5 -5 5q-5 2 -7 -2l-5.5 -7.5t-5.5 -8.5l-48.5 -81l-49.5 -82l-28 -44l-28 -44q-5 -8 -9.5 -9t-22.5 0
q-3 2 -18 2.5t-34.5 0.5h-39h-30.5q-29 2 -12 25q8 13 17 24t17 24l27.5 41.5l31.5 48.5l32 49.5l29 44.5l21 32.5t9 13.5q14 20 2 40l-21.5 39l-21.5 39q-23 38 -45 69t-45 69q-11 18 -21 36.5t-21 36.5q-10 17 11 17q13 0 33.5 -0.5t39.5 -0.5t33.5 -0.5t16.5 -0.5
q10 2 22 1.5t18 -4.5q9 -6 14.5 -17l10.5 -21l30 -55.5l30 -52l30 -51.5l31 -55q2 -3 4 -9t7 -6z" />
<glyph glyph-name="uni0425" unicode="&#x425;" horiz-adv-x="771"
d="M649 -3q-47 -2 -90.5 -1t-89.5 -1q-11 0 -17 4t-11 12q-14 18 -27.5 39t-27.5 40l-22.5 30.5l-22.5 30.5q-14 19 -19 19t-18 -19l-31.5 -47l-31.5 -48l-8 -10.5t-7 -11.5q-26 -54 -88 -48q-32 -1 -54.5 0t-48.5 1q-10 0 -22 5q-12 3 -5 15l48.5 73l48.5 73l49 75l50 74
q8 11 7 19.5t-8 17.5l-44.5 62.5l-43.5 62.5l-49.5 74l-49.5 74q-2 5 -4 9t-4 9q-3 12 10 12q41 1 81.5 1.5t81.5 1.5q8 0 12 -3.5t8 -9.5l50 -69.5l50 -69.5q2 -3 5 -6t5 -6q11 -14 21 0q5 8 10.5 15.5l11.5 15.5l38 54t37 56q15 21 38 21q33 0 66 0.5t67 1.5q9 0 12 -5
t2 -13q-3 -12 -10 -24l-55.5 -85l-54.5 -84l-28 -45.5l-29 -44.5q-6 -9 -3.5 -14.5t7.5 -12.5l48.5 -60.5l48.5 -61.5l54 -73.5l53 -74.5q5 -7 9 -14t8 -15q6 -12 3 -16.5t-16 -4.5z" />
<glyph glyph-name="uni0424" unicode="&#x424;" horiz-adv-x="812"
d="M457 646q4 -3 5 -14t1.5 -24t0.5 -23.5t2 -12.5q2 -5 7.5 -6l10.5 -2q88 -8 144 -38t76 -71q19 -41 30 -84q16 -66 -4 -121.5t-61 -103.5q-29 -35 -70 -53.5t-87 -24.5q-17 -3 -25.5 -5t-13 -6.5t-5 -13.5t-0.5 -25v-16q0 -18 -19 -21q-33 -3 -65.5 -3.5t-65.5 6.5
q-20 3 -20 23q-1 14 -2.5 28.5t-2.5 28.5q-14 3 -28 5.5t-28 5.5q-20 5 -39.5 9t-39.5 10q-26 9 -50.5 23t-45 35t-34.5 49t-20 64q-10 57 4.5 107.5t45.5 97.5q17 25 40 42t51 28q29 12 60.5 19t63.5 8q10 0 16 1t8.5 4t3 9.5t0.5 17.5v15q-3 27 5.5 33.5t33.5 8.5
q6 1 23.5 0.5t37 -1.5t36 -3.5t20.5 -5.5zM298 337h1q0 17 0.5 33t0.5 33q-1 17 -4 22t-21 3q-9 0 -26.5 -8.5t-34.5 -23t-29.5 -33.5t-11.5 -41q1 -32 13.5 -53.5t28 -34.5t32 -18t27.5 -5q9 1 15.5 3t7.5 16q0 27 0.5 53.5t0.5 53.5zM462 225q0 -17 15 -14q24 5 45.5 14.5
t35.5 29.5q20 26 21.5 56t-9.5 61q-11 26 -32 35t-44 14q-2 0 -8 2q-14 2 -18 -0.5t-5 -16.5q0 -11 -0.5 -36t-0.5 -53.5v-54v-37.5z" />
<glyph glyph-name="uni0423" unicode="&#x423;"
d="M159 641q14 0 22 -1.5t11.5 -5t3.5 -11t-2 -19.5q-5 -29 -0.5 -56t12.5 -54q16 -53 53 -81t84 -45q13 -5 17.5 -2t11.5 18l24 59l23 60l21 56l21 56q5 18 21 18l70 2t70 0q23 0 30 -9t-1 -32q-21 -62 -45 -120q-35 -94 -79 -181.5t-94 -173.5q-16 -28 -38 -49t-49 -38
q-28 -17 -57.5 -30.5t-64.5 -16.5q-20 -1 -40 -0.5t-40 7.5q-28 9 -55.5 17t-52.5 25q-15 10 -16.5 14.5t5.5 22.5q10 28 18.5 55.5t19.5 54.5q8 22 18.5 24.5t30.5 -11.5q11 -8 22.5 -14.5t24.5 -11.5q38 -14 74 2t57 47q11 14 -7 20l-39 16l-39 16q-38 17 -68.5 42.5
t-56.5 54.5q-27 31 -40.5 68t-20.5 77q-5 29 -8 54.5t-6 55.5q-1 14 2 17.5t17 3.5h28.5h40.5t39.5 -0.5t26.5 -0.5z" />
<glyph glyph-name="uni0401" unicode="&#x401;" horiz-adv-x="593"
d="M475 634q19 0 21 -18q0 -4 0.5 -20t0.5 -34t-0.5 -33t-0.5 -16q-1 -14 -4.5 -18t-18.5 -4q-16 0 -52.5 -0.5t-78 -1t-78.5 -1.5t-54 -1q-15 0 -20.5 -5.5t-6.5 -19.5q-2 -20 -2 -32v-31q0 -20 23 -20q21 0 41.5 -1l41.5 -2q19 -2 15 -21q-2 -14 -1.5 -28.5t-1.5 -28.5
q-2 -17 -7.5 -21.5t-22.5 -4.5t-33 0.5t-33 0.5q-14 -1 -19 -5t-5 -18q1 -20 0 -40.5t1 -40.5q2 -17 7.5 -20.5t21.5 -2.5q27 0 56 0.5t56 0.5q34 -1 68 -1.5t68 -2.5q18 -1 24 -7t5 -23v-24.5t0.5 -28.5t0.5 -24.5v-12.5q-1 -16 -6.5 -21t-22.5 -5h-40h-75.5h-93.5h-93.5
h-76h-40.5q-13 0 -20 0.5t-10.5 4t-4.5 10.5t-1 19q-1 61 -1 120t-1 120v89q1 43 2 78.5t2 78.5q1 24 0 48t0 48q0 17 3.5 20.5t20.5 3.5q47 1 93 0.5t93 -0.5l28.5 0.5t69 0t85 -1.5t77.5 -2zM127 695q-16 1 -29.5 7t-23.5 16.5t-15.5 23.5t-4.5 28q1 13 7.5 25t16.5 21
t22.5 14.5t25.5 5.5q12 0 24.5 -6.5t22 -17t15.5 -23t6 -24.5q0 -15 -5.5 -28t-14.5 -22.5t-21.5 -15t-25.5 -4.5zM396 831q12 0 23.5 -5t20.5 -13.5t14 -19t5 -22.5q-1 -30 -18.5 -49.5t-44.5 -18.5q-29 0 -48 19.5t-19 49.5q-1 26 18 42.5t49 16.5z" />
<glyph glyph-name="uni0419" unicode="&#x419;" horiz-adv-x="708"
d="M6 621q0 16 6 23t21 5q35 -2 67.5 0t67.5 -2q22 -2 20 -23v-35.5v-61.5t0.5 -73.5t1 -71t1.5 -53.5t2 -21q11 0 15 6q14 17 26.5 34l25.5 34l45.5 65l45.5 65l39.5 55l39.5 56q5 7 8.5 11t9 6.5t13 3t21.5 0.5h78q16 0 24 -0.5t12 -3.5t4.5 -10.5t1.5 -20.5
q1 -25 1.5 -73t0.5 -106.5v-121t-0.5 -115t-0.5 -89.5v-45q0 -12 0.5 -20.5t-1.5 -20.5q-2 -13 -7 -17t-19 -3q-26 2 -52.5 0.5t-52.5 0.5q-9 1 -21.5 0t-15.5 2t-2 19t0 27q0 44 0.5 79t-0.5 79q0 23 -0.5 46.5t-1.5 46.5q0 7 -4 10q-4 2 -9 -3q-4 -4 -10 -12l-79 -103.5
l-79 -103.5q-14 -20 -28.5 -37t-28.5 -37q-10 -15 -29 -15q-35 2 -69.5 1t-69.5 1q-8 0 -10.5 4t-3.5 11v13.5t-1 13.5q0 70 -0.5 139.5t-1.5 140.5q-1 0 -1 21v52.5v69v71v57.5v29zM308 710q-15 0 -29 6t-24 15.5t-16 21.5t-5 25q2 29 25 48.5t55 18.5q65 -1 68 -72
q1 -12 -5.5 -23.5t-17 -20.5t-24 -14t-27.5 -5z" />
<glyph glyph-name="uni042E" unicode="&#x42e;" horiz-adv-x="969"
d="M184 23q-1 -16 -5 -20.5t-19 -4.5q-29 1 -59 1t-59 2q-13 0 -20 1t-10 4.5t-3.5 10t-0.5 18.5q-2 79 -0.5 157t-0.5 157q-1 32 -1.5 64.5t1.5 64.5q2 37 2 70.5t-2 71.5q-1 14 1.5 18t13.5 4q36 0 69 -0.5t69 -0.5q16 -2 16 -17q1 -14 1 -27v-27q1 -37 0 -70.5t1 -71.5
q0 -19 3.5 -22t21.5 -5q14 -1 27 -0.5t26 -0.5q17 -1 23 16q5 11 9.5 22.5t9.5 22.5q34 78 95 121t142 61q66 15 123 -1.5t107 -58.5q35 -31 60.5 -69t37.5 -86q9 -36 15 -72t2 -74q-5 -44 -17 -83.5t-38 -76.5q-19 -26 -40 -50t-49 -41q-53 -32 -109.5 -41.5t-117.5 -6.5
q-42 3 -79 18t-72 38q-33 22 -52.5 54t-30.5 69q-7 22 -11.5 44l-9.5 45q-4 17 -20 18q-18 1 -28 0t-15.5 -6.5t-7 -15.5t-1.5 -28q0 -11 0.5 -38t0.5 -57.5t0.5 -59t0.5 -41.5zM442 324q0 -6 -0.5 -12t-0.5 -11q0 -34 15 -59.5t36.5 -43t44.5 -26t38 -8.5q72 0 111 47.5
t39 125.5q0 12 -2 33.5t-13.5 44t-34.5 41t-65 26.5q-61 10 -104.5 -22t-59.5 -90q-2 -6 -2.5 -13.5l-1 -15t-0.5 -12.5v-5z" />
<glyph glyph-name="uni0412" unicode="&#x412;" horiz-adv-x="646"
d="M429 377q14 -5 25 -10l22 -10q9 -4 20 -16t20.5 -32t16 -48.5t6.5 -64.5q0 -29 -14 -58t-35.5 -54.5t-47.5 -45t-50 -28.5q-36 -14 -73.5 -19t-75.5 -6q-2 0 -4 0.5t-4 -0.5q-17 -2 -49.5 -1.5t-65.5 1.5q-39 1 -82 2q-7 0 -12 2t-9 5t-6 9q-5 17 -5 33q-1 79 -1 157.5
v157.5q0 44 0.5 87t0.5 87q1 29 0.5 57.5t-2.5 57.5q0 15 12 15q64 1 120.5 2t120.5 0q23 0 45.5 -5t45.5 -11q29 -8 53 -25.5t44 -40.5q12 -15 17 -37q4 -20 6 -39.5t0.5 -37.5t-7.5 -35.5t-19 -33.5q-2 -3 -5 -6.5t-8 -8.5zM186 205v-26q-2 -20 -2 -30t4.5 -14t14.5 -4
t28 -1q30 -2 57 8t51 27q40 27 14 70q-10 15 -28 27q-29 19 -59.5 19.5t-62.5 -3.5q-10 -2 -13 -7t-3 -14q0 -7 -0.5 -15.5t-0.5 -16.5v-20zM183 478v-41.5t6 -19.5t20 -4t43 4q12 2 23 6.5t22 10.5q14 8 20 21.5t5 29.5t-11 25.5t-24 13.5q-12 3 -24.5 4l-25.5 2
q-12 1 -24 0t-23 -1q-2 -13 -3.5 -25.5t-3.5 -25.5z" />
<glyph glyph-name="uni0421" unicode="&#x421;" horiz-adv-x="688"
d="M-20 334q0 53 15.5 96.5t40.5 77t55.5 59t61 42.5t57 27t42.5 13q94 20 179 -19q19 -8 37.5 -19.5l35.5 -22.5q11 -6 10.5 -10.5t-9.5 -13.5l-45.5 -41.5l-45.5 -41.5q-14 -13 -32 -6q-30 11 -58 9q-18 -1 -44.5 -11t-51 -30t-42 -51.5t-17.5 -75.5q0 -53 23 -84.5
t54 -47.5t62.5 -19.5t49.5 -0.5q32 5 57 22.5t45 43.5l9 10.5t6 4.5t7 -1.5t11 -7.5l39 -25t39 -26q14 -10 16 -16.5t-5 -21.5q-15 -34 -39 -60t-55 -46q-36 -23 -74.5 -39.5t-83.5 -18.5q-92 0 -153.5 26t-100.5 65t-58.5 84.5t-28 84.5t-9 65z" />
<glyph glyph-name="uni042D" unicode="&#x42d;" horiz-adv-x="719"
d="M624 300q1 -40 -9 -80.5t-31 -78.5t-54 -62q-34 -25 -68.5 -44.5t-75.5 -32.5q-73 -23 -141.5 -11.5t-135.5 40.5q-52 22 -95 62q-5 5 -8.5 9.5t-0.5 12.5l27 65.5l27 64.5q5 13 17 19q18 9 34 -7q14 -14 29 -27t32 -24q49 -33 100 -32.5t103 23.5q41 18 55 64
q6 20 -14 20h-33t-58 -0.5t-58 -0.5h-34h-17t-17 1q-20 0 -20 21q0 11 -2 21t-2 21q-1 21 6.5 28.5t28.5 8.5q6 0 21.5 0.5t35.5 0.5h42.5h42.5t35.5 0.5t21.5 0.5q14 2 16 5.5t-2 16.5q-10 29 -32.5 44t-49.5 23q-92 26 -173 -18q-17 -9 -24.5 -5.5t-15.5 16.5l-24.5 39
l-23.5 39q-3 5 -6 9.5t-7 8.5q-10 12 -9.5 16t11.5 14q78 66 178 69q61 3 121 -6q56 -8 99.5 -37.5t78.5 -71.5q44 -52 64 -112.5t15 -132.5z" />
<glyph glyph-name="uni0417" unicode="&#x417;" horiz-adv-x="593"
d="M403 626q44 -21 65.5 -57.5t23.5 -75.5t-13.5 -74.5t-45.5 -54.5q-6 -4 -9 -7q-4 -4 -4 -6.5t6 -6.5q11 -7 21 -15l20 -16q18 -16 28 -41.5t12 -53.5t-4 -54.5t-19 -44.5q-39 -54 -90 -83.5t-115 -38.5q-16 -2 -31.5 -3t-30.5 -1q-29 -2 -54.5 4t-49.5 16.5t-47.5 23.5
l-46.5 27q-8 5 -11.5 13.5t0.5 18.5l22.5 52l22.5 52q2 4 8 6t11 1t9.5 -4.5t9.5 -5.5q35 -20 72.5 -34t79.5 -17q21 -2 38 6l34 16q5 3 8.5 10t5 15.5t1.5 17.5t-3 15q-17 42 -60 48q-14 2 -27.5 2t-27.5 1q-16 0 -16 15q-2 18 -3.5 36.5t-3.5 36.5q18 5 35.5 8.5t35.5 8.5
l24 8t23 12q14 10 20.5 23t5 26t-10 24.5t-24.5 19.5q-20 11 -41 13t-44 -6t-45 -16.5t-43 -20.5q-19 -11 -27 -9.5t-20 21.5q-13 20 -25 40.5t-23 41.5q-2 4 -1 10t4 10q5 5 11 9t13 7q44 24 87 32t91 20q6 2 24.5 3t43 -0.5t51 -6.5t49.5 -17z" />
<glyph glyph-name="one" unicode="1" horiz-adv-x="478"
d="M387 29q1 -6 0.5 -14.5t-2.5 -10.5q-5 -4 -9.5 -3.5t-10.5 0.5q-29 -1 -58 -1h-58q-14 0 -18.5 5t-5.5 21q-3 78 -3 157q-1 50 0 99t1 99v12t-1 11q-1 6 -4.5 8t-8.5 -3l-10.5 -8t-10.5 -9l-34.5 -29.5t-35.5 -29.5q-14 -11 -22.5 -10.5t-20.5 13.5q-17 19 -33 39l-33 40
q-13 16 2 31l21 19t20 20q36 38 76 70l82 65q10 8 20.5 13t23.5 4q30 0 58.5 1t58.5 -1q14 -1 17 -4t4 -19q0 -15 -0.5 -31t-0.5 -31q0 -35 0.5 -69t0.5 -68q-2 -105 -3 -189q0 -36 -0.5 -70.5t-1 -62t-0.5 -45v-19.5z" />
<glyph glyph-name="two" unicode="2" horiz-adv-x="541"
d="M225 0h-183q-14 0 -21.5 1t-11.5 5t-4.5 12t-0.5 22v39t-1 38q-2 28 19 44l40 32l40 31q40 30 74 65t62 77q11 16 14.5 33.5t-3.5 36.5q-11 37 -51 40q-23 2 -42.5 -5t-36.5 -21q-17 -16 -33 0l-36 35.5l-36 35.5q-7 6 -5.5 12t6.5 12q33 39 75 61q47 26 96 35.5
t103 -2.5q28 -6 51.5 -20.5t40.5 -33.5t28 -41t15 -44q16 -87 -13.5 -155t-91.5 -125l-30.5 -27.5l-30.5 -27.5q-2 -2 -2.5 -6t-0.5 -7q0 -1 3.5 -2.5t5.5 -1.5h144q5 0 9.5 0.5t9.5 0.5q14 2 16 -12q2 -28 0.5 -55t-0.5 -54q0 -17 -6 -22t-22 -7h-43q-20 0 -45 0.5l-48 1
t-38.5 0.5t-15.5 -1z" />
<glyph glyph-name="zero" unicode="0" horiz-adv-x="552"
d="M462 311q-3 -32 -4.5 -59.5t-5.5 -53.5q-8 -65 -36 -115t-82 -86q-30 -20 -68 -21.5t-72 5.5q-37 7 -68.5 25t-58.5 44q-20 19 -30.5 43t-15.5 50q-15 74 -17.5 147.5t12.5 148.5q7 34 17 65t34 57l26 28t27 25q42 32 92.5 35t98.5 -15q65 -23 97.5 -71t41.5 -114
q5 -36 7.5 -71.5zM318 298v34q0 14 0.5 29.5t0.5 26.5q0 23 -8 44.5t-21 40.5q-6 9 -15.5 15t-21.5 8.5t-24.5 0.5t-23.5 -11q-22 -17 -31 -38.5t-14 -45.5q-11 -51 -8 -101t11 -101q2 -13 6.5 -25.5t12.5 -23.5q9 -14 23.5 -21t30.5 -6t30.5 8.5t22.5 22.5q9 15 16 31t7 33
q0 20 3 39.5t3 39.5z" />
<glyph glyph-name="three" unicode="3" horiz-adv-x="594"
d="M226 -12q-22 0 -47.5 9t-48.5 18q-35 13 -66 34l-62 43q-5 4 -8.5 9t1.5 13l60 90q7 11 18 3l25 -18l24 -18q28 -15 55.5 -21.5t56.5 -7.5q22 -2 43.5 8.5t32.5 30.5q5 10 5 22.5t-4 24t-12 21t-18 14.5q-12 6 -25.5 7.5t-30.5 0.5q-8 3 -13 7t-6 14q-2 13 -1.5 26
t-1.5 27q-3 19 18 29l18.5 5.5l16.5 5t16 6t19 10.5q5 3 9.5 12t7.5 20t4 21.5t0 16.5q-2 6 -8 14.5t-17.5 14.5t-28 6t-38.5 -11q-13 -8 -26 -20.5t-24 -17.5q-13 -6 -20 -5.5t-18 10.5q-8 8 -15 17t-15 18q-12 14 -18.5 22.5t-6 15.5t7.5 14.5t22 20.5q42 35 88 58t103 23
q63 -1 105 -30.5t62 -87.5q15 -46 5.5 -89t-44.5 -79q-7 -8 -7 -13t10 -10q28 -15 43 -39.5t19 -52.5t-1 -57t-17 -52q-9 -17 -21.5 -43t-38.5 -50.5t-70.5 -42t-116.5 -17.5z" />
<glyph glyph-name="four" unicode="4" horiz-adv-x="593"
d="M472 329q0 -69 -1 -130.5t-1 -121.5q0 -16 1 -30.5t1 -30.5q1 -11 -4.5 -15t-19.5 -3q-27 1 -54.5 0t-54.5 -1q-20 1 -25 5t-5 24q-1 26 -1 53t-1 53q-1 17 -5.5 22t-21.5 7q-58 3 -116 2.5t-114 -0.5q-23 -3 -32.5 4.5t-11.5 29.5q-2 20 -2 39t-1 39q-1 19 13 35
l145 156.5l144 157.5q16 18 37 15q28 -2 55 -1t55 -1q21 0 21 -21q0 -20 1 -39t0 -39q-1 -54 -0.5 -108t-1.5 -101zM231 295h58q18 0 18 16q1 52 0 105q0 12 -6 14.5t-14 -5.5l-39.5 -38l-38.5 -39q-11 -11 -23.5 -22t-16.5 -28q7 -1 18 -1.5t20.5 -1t16.5 -0.5h7z" />
<glyph glyph-name="five" unicode="5" horiz-adv-x="583"
d="M233 640q39 1 77.5 1h77.5q17 0 20 -3t6 -19l8 -40.5l8 -40.5q1 -5 0.5 -9t-0.5 -9q-1 -15 -6 -19t-20 -4q-32 2 -65 2.5t-66 -0.5q-18 0 -23.5 -5.5t-8.5 -22.5q-2 -11 -6 -23.5t1 -20.5q3 -5 8 -5.5t10.5 1l11.5 3t12 1.5q42 -2 79.5 -14t70.5 -38q19 -14 30 -34
t19 -42q10 -26 10 -62.5t-8.5 -73t-25.5 -69.5t-41 -53q-21 -17 -44.5 -27.5t-49.5 -18.5q-66 -18 -130.5 -15t-129.5 23q-18 6 -35 17l-34 22q-21 13 -13 36l20 52.5t21 52.5q7 16 24 2q26 -23 56.5 -34.5t63.5 -16.5q29 -5 58 -3t56 17q10 6 19.5 14t16.5 18q9 13 11 28.5
t-2 30.5t-13.5 27.5t-24.5 20.5q-11 6 -24 10.5t-26 4.5q-27 0 -54 -1.5t-53 -15.5q-9 -7 -20 0q-24 16 -37.5 28t-18 25t-1.5 30.5t11 46.5l29 101.5l28 101.5q3 12 8 18t19 5q11 -1 26.5 -1h29.5h34z" />
<glyph glyph-name="six" unicode="6" horiz-adv-x="605"
d="M8 287q0 75 18 129.5t45 93t60 63t62 38.5t51 19.5t28 7.5q16 4 44 4t55.5 -2t48.5 -5.5t24 -7.5t6 -19.5t5 -34l4 -36.5l3 -27q1 -11 -2 -14t-14 -1q-8 1 -24.5 3.5t-37.5 4t-44 0.5t-42 -8q-12 -4 -28 -15t-31.5 -26.5t-29 -35t-19.5 -41.5q-1 -3 -1 -8t2 -6
q2 -2 7 -0.5t7 3.5q21 17 44.5 24.5t49.5 11.5q34 6 65.5 -1t62.5 -22q18 -9 32.5 -27t25.5 -42t17 -53t6 -59q0 -61 -26.5 -104t-91.5 -82q-47 -24 -92.5 -27.5t-87.5 8.5t-78.5 36.5t-63.5 56.5q-18 21 -29.5 48.5t-18 55.5t-9.5 53.5t-3 43.5zM285 148q7 0 10.5 -0.5
t5.5 -0.5q26 0 42.5 16.5t16.5 43.5q-1 52 -58 52q-33 -2 -53 -23l-11.5 -13t-10.5 -13q-13 -17 -8.5 -31t24.5 -22q11 -4 22.5 -5.5t19.5 -3.5z" />
<glyph glyph-name="seven" unicode="7" horiz-adv-x="573"
d="M225 637q39 0 78 -0.5t78 -1.5q17 -1 35.5 0.5t35.5 -0.5q12 -1 18 -7.5t7 -17.5q2 -16 0.5 -34t-0.5 -34q1 -4 -1.5 -8.5t-4.5 -8.5q-35 -54 -61.5 -111l-52.5 -115l-64 -137.5l-64 -137.5q-5 -10 -12 -17t-20 -7h-140q-17 0 -10 15l12.5 24l12.5 24l91.5 191.5
l91.5 191.5q12 25 9 30t-32 5h-100.5t-100.5 -1q-11 0 -17 3.5t-7 14.5q-2 29 -1.5 58.5t-0.5 58.5q-1 20 21 22h20q22 0 53 -0.5t59 -0.5t47.5 0.5z" />
<glyph glyph-name="eight" unicode="8" horiz-adv-x="541"
d="M245 653q41 0 74.5 -13.5t60.5 -45.5q16 -20 23.5 -45t7.5 -51.5t-6 -50.5t-18 -42q-9 -13 -8 -16.5t12 -14.5q43 -39 61.5 -87.5t16.5 -105.5q-2 -39 -22.5 -74.5t-51 -63.5t-68 -44.5t-73.5 -17.5q-61 2 -117 28t-92 68.5t-44.5 98t27.5 115.5q26 47 70 81
q9 7 11.5 13.5t-4.5 17.5q-9 14 -12 30.5l-6 33.5q-6 35 3 65t27 58q21 31 54.5 47t73.5 16zM309 186q0 11 -4.5 24t-11.5 25t-16 22t-19 15q-7 5 -17 1q-20 -10 -36 -23.5t-24 -34.5q-6 -13 -3 -28q2 -13 11.5 -24.5t22 -20t27 -11.5t27.5 0q8 2 16 8t14 13.5t9.5 16
t3.5 17.5zM248 522q-14 -1 -22 -6t-9 -15q-2 -23 4 -42.5t25 -33.5q2 -2 6 -2t6 2q12 14 19.5 30.5t5.5 36.5q-3 32 -35 30z" />
<glyph glyph-name="nine" unicode="9" horiz-adv-x="604"
d="M505 337q-2 -44 -7.5 -86t-20.5 -83q-38 -101 -132 -147q-145 -71 -286 15l-23 14t-23 15q-15 12 -4 31q14 23 27 47t27 47q5 8 9.5 10t14.5 -3q40 -24 83 -43q29 -14 58.5 -11t58.5 14q33 13 48 39t18 62q1 7 -3 9t-9 -2q-5 -2 -8.5 -5t-8.5 -5q-103 -60 -198 17
q-20 16 -36.5 33t-28.5 39q-13 22 -18.5 49.5t-3 55t12 53.5t25.5 46q22 27 52 52.5t62 36.5q12 6 35.5 8t50.5 0.5t53.5 -7t46.5 -15.5q52 -25 77 -68.5t37 -94.5q8 -30 9.5 -61t4.5 -62zM322 431q1 18 -5.5 33t-17 24.5t-25 13t-30.5 -0.5q-14 -4 -25 -12.5t-13 -22.5
q-3 -16 -6.5 -32.5t9.5 -33.5q11 -14 32.5 -21.5t40.5 -2.5q37 9 40 55z" />
<glyph glyph-name="hyphen" unicode="-" horiz-adv-x="302"
d="M125 293h95q11 0 9 -11l-3 -60q-1 -15 -5 -20t-19 -6q-20 -2 -39 -2h-39h-84q-17 0 -22.5 5t-10.5 20q-1 2 -1 3t-1 3q-2 26 -2.5 40t4.5 20t17.5 6h36.5h19t21 0.5t17 1z" />
<glyph glyph-name="equal" unicode="=" horiz-adv-x="396"
d="M29 308q-18 0 -20 20l-2 31.5t-1 31.5q0 11 4 14.5t15 4.5h17.5h39h52h55.5h50.5h36.5q19 0 20 -18q2 -12 4.5 -24.5t4.5 -24.5q3 -26 -22 -30q-4 -1 -21 -1.5t-41.5 -1t-53 -1l-55.5 -1t-49.5 -0.5h-33.5zM154 243h120q13 0 15 -2t1 -15q0 -17 0.5 -32.5t0.5 -31.5
q-1 -14 -5 -18t-18 -5h-11l-219 3q-19 0 -23.5 4t-6.5 23q-2 13 -1.5 26t0.5 27q-1 13 2.5 16.5t17.5 4.5h127z" />
<glyph glyph-name="parenleft" unicode="(" horiz-adv-x="323"
d="M246 -14q-5 -2 -9 -4t-9 -2q-22 0 -43.5 -0.5t-44.5 0.5q-13 2 -22 14l-23.5 33.5t-20.5 34.5l-28.5 63l-26.5 63q-11 25 -13 50t0 51q5 73 33.5 135t74.5 117q6 7 12 13t11 14q26 32 60.5 38t71.5 2q6 0 6.5 -4.5t-2.5 -8.5l-15 -20.5t-15 -18.5q-21 -23 -37 -49.5
t-29 -55.5q-26 -57 -31 -117t4 -121q6 -46 22 -87.5t37 -81.5q8 -15 17.5 -29z" />
<glyph glyph-name="parenright" unicode=")" horiz-adv-x="312"
d="M70 -20q-18 1 -27 2.5t-11.5 6t0.5 13.5t11 25l25 52l26 52q29 60 35.5 122t-4.5 127q-11 62 -36 116t-69 100q-6 7 -13 21q-5 11 -2 15t14 5h42t42 -1q5 -1 10.5 -4t9.5 -7q38 -36 65.5 -78.5t40.5 -93.5q14 -56 21.5 -112.5t-0.5 -115.5q-5 -41 -19 -79t-34 -73
q-11 -20 -24.5 -38.5t-24.5 -38.5q-11 -18 -32 -18h-35q-2 0 -4 1q-2 0 -3.5 0.5t-3.5 0.5z" />
<glyph glyph-name="period" unicode="." horiz-adv-x="229"
d="M84 -4q-4 1 -10.5 2t-14.5 2q-15 3 -26.5 12t-18.5 21.5t-9 28.5t3 32q8 26 34 38.5t55 3.5q18 -6 32 -15q42 -28 28 -73q-7 -23 -26.5 -37.5t-46.5 -14.5z" />
<glyph glyph-name="colon" unicode=":" horiz-adv-x="209"
d="M154 355q-5 -38 -38 -58q-13 -8 -30 -8.5t-32.5 5t-28.5 16t-18 24.5q-6 16 -2.5 31.5t13.5 29.5q13 19 36 28.5t44 2.5q24 -7 40 -27t16 -44zM75 0q-36 2 -54 20.5t-16 52.5q1 14 6.5 26.5t15 21.5t21.5 14t25 4q73 -5 70 -74q-1 -29 -20.5 -48t-47.5 -17z" />
<glyph glyph-name="comma" unicode="," horiz-adv-x="219"
d="M145 46q0 -20 -7.5 -40t-20 -37.5t-29.5 -30.5t-35 -18q-3 -1 -6.5 0t-6.5 1q1 3 1 6.5t1 6.5q2 6 5.5 12.5t5.5 12.5q4 14 2 18.5t-15 12.5q-24 15 -32 40t3 48q12 23 37 31.5t51 -1.5q14 -5 23 -10.5t14 -12t7 -16t2 -23.5z" />
<glyph glyph-name="semicolon" unicode=";" horiz-adv-x="239"
d="M159 49q0 -16 -4.5 -29.5t-12.5 -27.5q-15 -29 -39 -45t-53 -27q-5 -2 -9.5 0.5t-9.5 3.5q2 4 3.5 7.5t3.5 7.5q3 5 7 9.5t7 10.5q7 12 4.5 18.5t-13.5 15.5q-6 5 -11.5 9t-10.5 9q-12 13 -15 29.5t1.5 32.5t15 29t25.5 18q20 7 38.5 6.5t37.5 -5.5q19 -4 24 -24
q4 -11 6.5 -23.5t4.5 -24.5zM91 282q-17 0 -32 6t-27 16t-19.5 23t-7.5 27q0 15 6.5 29.5t17.5 26t25.5 18t29.5 6.5q36 0 60 -22.5t24 -54.5q-1 -33 -23 -54.5t-54 -20.5z" />
<glyph glyph-name="quotesingle" unicode="'" horiz-adv-x="833"
/>
<glyph glyph-name="slash" unicode="/" horiz-adv-x="323"
d="M57 -3q-9 0 -17.5 -0.5t-17.5 -0.5q-14 1 -17 4.5t1 17.5q11 42 19.5 84l17 84.5l17.5 85t21 83.5q14 49 25 97.5l23 97.5q2 8 3.5 12.5t4.5 7t7.5 3t12.5 0.5q39 1 78 0q14 0 18 -5t1 -19q-5 -26 -9.5 -52t-11.5 -52l-47 -195l-48 -195q-2 -10 -5 -19l-6 -18
q-8 -24 -31 -23q-10 1 -19.5 1h-19.5v1z" />
<glyph glyph-name="backslash" unicode="\" horiz-adv-x="344"
d="M195 -6q-1 0 -4 -1t-6 -1q-15 -2 -24.5 -1t-15.5 5t-10 13t-8 24l-29.5 116.5l-29.5 116.5q-6 26 -13.5 52.5t-13.5 53.5q-4 19 -6 38t-6 38l-10 39.5l-10 39.5q-2 5 -3 10l-2 10q-2 8 1 13t11 5q26 1 51 1.5t51 0.5q6 0 8.5 -4.5t4.5 -9.5l63 -257.5l62 -257.5
q2 -5 2.5 -10t1.5 -10q4 -16 0 -21t-19 -5q-11 -1 -21.5 0t-24.5 2z" />
<glyph glyph-name="plus" unicode="+" horiz-adv-x="407"
d="M175 425q23 -1 35.5 -1.5t18 -6t6 -17.5t-0.5 -36q-1 -2 -0.5 -3.5t0.5 -3.5q0 -17 1 -25t5.5 -11t13 -2.5t25.5 0.5h42q17 0 17 -17q0 -37 3 -71q1 -18 -15 -18q-17 -1 -32.5 -1t-31.5 -1q-14 0 -17 -3t-4 -17q-1 -12 -1 -27.5v-27.5q0 -24 -18 -19q-17 4 -33.5 3
l-33.5 -2t-22 5t-6 24q-1 11 -1 26v26q-1 19 -20 19q-8 -1 -16 -1h-16q-7 0 -13 -1t-12 0q-14 1 -22 2t-13 4.5t-6.5 11.5t-1.5 25q0 10 -1.5 19t-1.5 19q1 12 5 16.5t17 5.5q15 1 30 0t30 -1t23.5 1t12 4.5t4 12t0.5 23.5q-1 14 -1.5 25.5t-1.5 25.5q0 17 18 17
q9 0 18 -0.5t17 -1.5z" />
<glyph glyph-name="uni0410" unicode="&#x410;" horiz-adv-x="760"
d="M259 135q-11 0 -16.5 -1t-9 -3.5t-6 -8.5t-5.5 -16q-5 -18 -11 -35.5t-11 -35.5q-7 -34 -40 -34q-36 -2 -71.5 -2t-71.5 -1q-16 0 -11 16l47.5 144.5l46.5 145.5q14 44 26 87.5t26 87.5l20.5 60t19.5 61q6 20 18 28t30 8q21 -1 41.5 -1.5t40.5 -0.5q23 0 46 0.5t46 0.5
q13 0 25.5 0.5t25.5 0.5q12 0 19 -1t11 -4t6.5 -9.5t5.5 -18.5l40 -155.5l41 -155.5l32.5 -116l33.5 -115q6 -24 8.5 -36.5t-1 -18.5t-14 -6.5t-30.5 0.5q-34 0 -67.5 1l-67.5 2q-18 1 -21 18q-2 15 -5 30.5l-6 30.5q-2 8 -4 15t-4 15q-5 20 -24 20q-13 -1 -25.5 -0.5
t-24.5 0.5l-12 0.5t-29 1t-36 1t-32 0.5zM360 481q-2 3 -6 -6.5t-6 -12.5l-27 -81l-23 -65l-23 -66q-5 -14 -1.5 -18t18.5 -4q24 -1 48 -1h48q19 1 22 4.5t-2 23.5q-8 41 -17 81l-18 81q-2 7 -3.5 18t-3.5 21l-3.5 17.5t-2.5 7.5z" />
<glyph glyph-name="uni041D" unicode="&#x41d;" horiz-adv-x="667"
d="M554 94q1 -26 1.5 -41.5t0.5 -41.5q0 -11 -4.5 -14.5t-17.5 -2.5q-29 1 -58 1.5t-58 0.5q-17 0 -20.5 3t-4.5 20q-2 47 -4.5 96t-4.5 96v11t-1 12q0 12 -15 14q-40 2 -79.5 0.5t-78.5 0.5q-20 1 -18 -19q1 -49 -1 -95t0 -99q1 -7 1.5 -13.5t-0.5 -13.5q0 -14 -14 -14
q-10 0 -19.5 0.5t-19.5 1.5q-27 2 -54 0.5t-54 0.5q-18 2 -23 6.5t-5 21.5q0 56 -1 104.5t0 104.5q1 89 2.5 176.5t3.5 176.5v31q0 19 19 19q14 0 28.5 0.5t29.5 -0.5q20 -1 38.5 -1.5t38.5 -2.5t24.5 -5.5t4.5 -23.5q1 -48 1 -85.5t-1 -84.5q0 -18 0.5 -28.5t5 -15.5
t14.5 -6t28 -1q32 0 62.5 1.5t61.5 2.5q20 0 20 17q-1 5 -0.5 10t0.5 10q-2 54 -3 98t-3 98q-2 16 12 16h123q11 0 16 -1q15 -2 19.5 -6.5t5.5 -20.5q3 -72 3 -143q0 -39 -1 -77.5l-2 -77.5v-24v-57.5t0.5 -71t0.5 -64.5z" />
<glyph glyph-name="uni0415" unicode="&#x415;" horiz-adv-x="594"
d="M88 -1h-54q-22 -1 -25.5 3t-3.5 27q0 25 0.5 50t0.5 50v227t1 226q0 5 -0.5 8.5t-0.5 7.5q0 15 0.5 23.5t5 13t13 6t24.5 1.5h38t71 -0.5t88 -1t89.5 -0.5h75t44.5 1q21 0 26.5 -6.5t5.5 -24.5q0 -26 -0.5 -49.5t0.5 -48.5q0 -22 -21 -22q-12 0 -23.5 1t-23.5 1h-147h-81
q-15 0 -19 -4t-3 -19q1 -20 2 -36t2 -36q1 -22 22 -22h19.5h26h26h19.5q23 2 21 -20v-66q0 -11 -16 -13q-7 0 -19.5 -0.5t-26 -1.5t-26 -1.5t-19.5 -0.5q-11 -1 -16 -5.5t-5 -15.5v-78q-2 -21 21 -21q11 0 21 0.5t21 0.5q40 -1 79.5 -1t79.5 -1q16 0 31 0.5t31 0.5
q14 0 19.5 -4t6.5 -17q2 -26 3.5 -51t1.5 -51q0 -21 -6.5 -27t-27.5 -5h-41.5h-63h-75.5t-76.5 0.5t-67.5 0.5t-48 1z" />
<glyph glyph-name="question" unicode="?" horiz-adv-x="552"
d="M231 184q-14 0 -27 -0.5t-27 0.5t-19.5 7t-5.5 20q0 31 10 58t35 47q18 15 37 27t42 20q21 7 30 22.5t13 35.5q6 36 -24 57q-8 6 -13 7q-17 4 -38 3t-40.5 -7.5t-35.5 -18.5t-23 -29q-3 -6 -5 -12.5t-13 -8.5q-11 -3 -20 -3.5t-20 6.5q-18 13 -36.5 24l-37.5 22
q-11 6 -10.5 11.5t4.5 13.5q32 63 82 102t121 52q39 7 76.5 4t75.5 -14q42 -12 68 -41.5t40 -69.5q16 -44 10.5 -85.5t-24.5 -81.5q-6 -13 -17.5 -23t-22.5 -18t-23 -14t-23 -13q-23 -13 -39 -31t-21 -44q-3 -14 -10.5 -18.5t-18.5 -4.5q-7 0 -15 -0.5t-16 -0.5
q-9 -1 -19 -1zM316 56q0 -14 -2 -22.5t-7 -14.5t-13 -11t-21 -10q-31 -11 -63.5 -2t-48.5 36q-11 20 -8 40q4 33 31 53t63 17q31 -2 50.5 -26.5t18.5 -59.5z" />
<glyph glyph-name="exclam" unicode="!" horiz-adv-x="270"
d="M157 636q13 -1 21.5 -2.5t12.5 -5.5t5 -12t1 -21q-1 -26 -3 -51.5t-5 -50.5l-15.5 -125.5l-15.5 -125.5q-1 -5 -1 -9.5t-1 -9.5q-3 -17 -8 -21t-23 -4q-21 0 -42 1t-42 1q-15 0 -15 12q-2 21 -3 41.5l-2 40.5q-4 78 -7 152t-7 152q0 4 -0.5 7.5t-0.5 7.5q1 14 5 19t18 4
h27h38h37.5h25.5zM87 0q-34 1 -58 22t-23 50q0 18 7.5 33.5t19.5 27.5t27.5 19t32.5 7q16 0 31 -6.5t25.5 -17.5t16 -25.5t4.5 -30.5q-2 -15 -7.5 -29.5t-15.5 -26t-24.5 -18t-35.5 -5.5z" />
<glyph glyph-name="emdash" unicode="&#x2014;" horiz-adv-x="510"
d="M390 301q15 0 18 -2.5t4 -16.5q2 -17 2 -32.5t1 -32.5q0 -18 -16 -19l-30 -2t-30 -1q-26 0 -72 -1t-92.5 -2.5t-84 -2.5t-47.5 -2q-19 -1 -28 3t-10 25q-2 20 -0.5 34.5t-0.5 31.5q-2 11 2.5 14.5t16.5 4.5h38h63h76.5h77.5t67 0.5t45 0.5z" />
<glyph glyph-name="endash" unicode="&#x2013;" horiz-adv-x="375"
d="M154 296h120q13 0 15 -2t1 -16q0 -16 0.5 -31.5t0.5 -32.5q-1 -14 -5 -17.5t-18 -5.5h-11l-219 3q-19 0 -23.5 4t-6.5 23q-2 14 -1.5 27t0.5 26q-1 13 2.5 17t17.5 4q32 1 63.5 0.5t63.5 -0.5v1z" />
<glyph glyph-name="uni0430" unicode="&#x430;" horiz-adv-x="760"
d="M259 135q-11 0 -16.5 -1t-9 -3.5t-6 -8.5t-5.5 -16q-5 -18 -11 -35.5t-11 -35.5q-7 -34 -40 -34q-36 -2 -71.5 -2t-71.5 -1q-16 0 -11 16l47.5 144.5l46.5 145.5q14 44 26 87.5t26 87.5l20.5 60t19.5 61q6 20 18 28t30 8q21 -1 41.5 -1.5t40.5 -0.5q23 0 46 0.5t46 0.5
q13 0 25.5 0.5t25.5 0.5q12 0 19 -1t11 -4t6.5 -9.5t5.5 -18.5l40 -155.5l41 -155.5l32.5 -116l33.5 -115q6 -24 8.5 -36.5t-1 -18.5t-14 -6.5t-30.5 0.5q-34 0 -67.5 1l-67.5 2q-18 1 -21 18q-2 15 -5 30.5l-6 30.5q-2 8 -4 15t-4 15q-5 20 -24 20q-13 -1 -25.5 -0.5
t-24.5 0.5l-12 0.5t-29 1t-36 1t-32 0.5zM360 481q-2 3 -6 -6.5t-6 -12.5l-27 -81l-23 -65l-23 -66q-5 -14 -1.5 -18t18.5 -4q24 -1 48 -1h48q19 1 22 4.5t-2 23.5q-8 41 -17 81l-18 81q-2 7 -3.5 18t-3.5 21l-3.5 17.5t-2.5 7.5z" />
<glyph glyph-name="uni0431" unicode="&#x431;" horiz-adv-x="635"
d="M156 -12q-31 1 -61.5 1t-62.5 2q-17 1 -22 6t-5 22q1 34 1.5 67.5t1.5 68.5v135v246q0 44 -3 89q0 11 4 14.5t14 3.5h38.5h60.5t71.5 -0.5t73 -0.5h65.5t47 1q11 1 21.5 1.5t21.5 -0.5q18 -1 25 -8t6 -26q-1 -25 -3 -47.5t-4 -47.5q-1 -8 -2 -13t-3.5 -7t-7.5 -2.5
t-14 -0.5q-35 -1 -69.5 -0.5t-69.5 -0.5q-22 0 -45 -0.5t-44 -0.5q-16 0 -18 -16q-2 -17 -0.5 -33t0.5 -34q0 -9 5 -12t13 -3q28 -3 55.5 -2.5t56.5 0.5q29 -1 57 -7.5t56 -15.5q35 -12 60.5 -35t42.5 -55q14 -26 13 -51t-7 -62q-9 -56 -38 -90.5t-66.5 -53.5t-77.5 -25
t-73 -6h-21.5h-39h-37t-16.5 -1zM233 256q-8 2 -17 1t-19 0q-20 2 -21 -17q0 -23 -0.5 -44.5t-0.5 -44.5q0 -17 18 -20q57 -12 110 11q14 6 22.5 17t11.5 24t-0.5 25.5t-14.5 22.5q-10 8 -22.5 12.5t-25.5 7.5q-9 3 -19.5 4t-21.5 1z" />
<glyph glyph-name="uni0432" unicode="&#x432;" horiz-adv-x="646"
d="M429 377q14 -5 25 -10l22 -10q9 -4 20 -16t20.5 -32t16 -48.5t6.5 -64.5q0 -29 -14 -58t-35.5 -54.5t-47.5 -45t-50 -28.5q-36 -14 -73.5 -19t-75.5 -6q-2 0 -4 0.5t-4 -0.5q-17 -2 -49.5 -1.5t-65.5 1.5q-39 1 -82 2q-7 0 -12 2t-9 5t-6 9q-5 17 -5 33q-1 79 -1 157.5
v157.5q0 44 0.5 87t0.5 87q1 29 0.5 57.5t-2.5 57.5q0 15 12 15q64 1 120.5 2t120.5 0q23 0 45.5 -5t45.5 -11q29 -8 53 -25.5t44 -40.5q12 -15 17 -37q4 -20 6 -39.5t0.5 -37.5t-7.5 -35.5t-19 -33.5q-2 -3 -5 -6.5t-8 -8.5zM186 205v-26q-2 -20 -2 -30t4.5 -14t14.5 -4
t28 -1q30 -2 57 8t51 27q40 27 14 70q-10 15 -28 27q-29 19 -59.5 19.5t-62.5 -3.5q-10 -2 -13 -7t-3 -14q0 -7 -0.5 -15.5t-0.5 -16.5v-20zM183 478v-41.5t6 -19.5t20 -4t43 4q12 2 23 6.5t22 10.5q14 8 20 21.5t5 29.5t-11 25.5t-24 13.5q-12 3 -24.5 4l-25.5 2
q-12 1 -24 0t-23 -1q-2 -13 -3.5 -25.5t-3.5 -25.5z" />
<glyph glyph-name="uni0433" unicode="&#x433;" horiz-adv-x="542"
d="M8 293v50t-0.5 61l-1 64t-1 58.5t-1 44.5t-0.5 23v15t1 15q0 17 19 18q21 0 54.5 0.5t73 0.5h81h77.5t63.5 -0.5t38.5 -0.5q18 0 22 -4t6 -22q3 -31 2 -58.5t2 -58.5q2 -16 -2 -21.5t-19 -7.5q-6 -1 -33 -1.5t-61.5 -0.5t-69 -0.5t-56.5 -0.5q-16 0 -16 -17
q0 -4 -0.5 -7.5t-0.5 -7.5q1 -75 0 -156t1 -156q1 -23 0.5 -40t0.5 -40q1 -14 -2 -31q-3 -15 -19 -15q-38 -2 -72.5 -2.5t-71.5 -1.5q-8 0 -10.5 4t-3.5 10q-1 7 -1 13.5v13.5v130t-1 129h1z" />
<glyph glyph-name="uni0434" unicode="&#x434;" horiz-adv-x="792"
d="M570 179q1 -20 4.5 -24.5t23.5 -5.5q13 -1 25.5 -1t24.5 -1q15 0 21 -4t9 -18q1 -6 1 -12v-11q0 -33 0.5 -66t0.5 -66v-11.5t-1 -11.5q-3 -17 -22 -17q-21 0 -42.5 -0.5t-42.5 -0.5q-20 0 -17 20v3q0 17 -1 26t-5 13.5t-13 5.5t-25 1q-12 0 -42 0.5t-69 1t-82.5 1
t-82 0.5h-67.5t-39 -1q-4 -1 -8 -6t-5 -10q-2 -11 -1.5 -27t0.5 -27q0 -6 -2.5 -11t-10.5 -5q-26 -1 -55 -2t-55 0q-14 0 -18 5t-5 19q-2 44 -1 87t-1 87q-1 14 2.5 17.5t17.5 1.5q22 -3 36 16l27.5 35t24.5 37q22 39 39.5 79.5t27.5 84.5q2 9 8 31.5t12 49t10 51.5t4 40
q-1 20 1.5 36.5t3.5 36.5q1 19 20 18q49 0 97 0.5t96 -0.5q72 0 143 -3q17 -1 20.5 -5t3.5 -21q0 -19 0.5 -53.5t1.5 -77l2 -88.5t1.5 -88t1.5 -76.5t2 -52.5zM400 314v18t-1 44t-1.5 55t-1.5 51q0 5 -2 11t-4 6q-11 1 -22.5 1t-22.5 -2q-9 -2 -8.5 -9t-0.5 -14
q-2 -16 -3 -29t-3 -30q-8 -65 -27.5 -128t-51.5 -121q-1 -3 -2 -5.5t-2 -5.5q-3 -6 -0.5 -9.5t8.5 -3.5q31 0 67.5 1t67.5 2q17 0 17 17v17.5t-1 17.5q-2 29 -3 58t-3 58z" />
<glyph glyph-name="uni0435" unicode="&#x435;" horiz-adv-x="594"
d="M88 -1h-54q-22 -1 -25.5 3t-3.5 27q0 25 0.5 50t0.5 50v227t1 226q0 5 -0.5 8.5t-0.5 7.5q0 15 0.5 23.5t5 13t13 6t24.5 1.5h38t71 -0.5t88 -1t89.5 -0.5h75t44.5 1q21 0 26.5 -6.5t5.5 -24.5q0 -26 -0.5 -49.5t0.5 -48.5q0 -22 -21 -22q-12 0 -23.5 1t-23.5 1h-147h-81
q-15 0 -19 -4t-3 -19q1 -20 2 -36t2 -36q1 -22 22 -22h19.5h26h26h19.5q23 2 21 -20v-66q0 -11 -16 -13q-7 0 -19.5 -0.5t-26 -1.5t-26 -1.5t-19.5 -0.5q-11 -1 -16 -5.5t-5 -15.5v-78q-2 -21 21 -21q11 0 21 0.5t21 0.5q40 -1 79.5 -1t79.5 -1q16 0 31 0.5t31 0.5
q14 0 19.5 -4t6.5 -17q2 -26 3.5 -51t1.5 -51q0 -21 -6.5 -27t-27.5 -5h-41.5h-63h-75.5t-76.5 0.5t-67.5 0.5t-48 1z" />
<glyph glyph-name="uni0451" unicode="&#x451;" horiz-adv-x="594"
d="M475 634q19 0 21 -18q0 -4 0.5 -20t0.5 -34t-0.5 -33t-0.5 -16q-1 -14 -4.5 -18t-18.5 -4q-16 0 -52.5 -0.5t-78 -1t-78.5 -1.5t-54 -1q-15 0 -20.5 -5.5t-6.5 -19.5q-2 -20 -2 -32v-31q0 -20 23 -20q21 0 41.5 -1l41.5 -2q19 -2 15 -21q-2 -14 -1.5 -28.5t-1.5 -28.5
q-2 -17 -7.5 -21.5t-22.5 -4.5t-33 0.5t-33 0.5q-14 -1 -19 -5t-5 -18q1 -20 0 -40.5t1 -40.5q2 -17 7.5 -20.5t21.5 -2.5q27 0 56 0.5t56 0.5q34 -1 68 -1.5t68 -2.5q18 -1 24 -7t5 -23v-24.5t0.5 -28.5t0.5 -24.5v-12.5q-1 -16 -6.5 -21t-22.5 -5h-40h-75.5h-93.5h-93.5
h-76h-40.5q-13 0 -20 0.5t-10.5 4t-4.5 10.5t-1 19q-1 61 -1 120t-1 120v89q1 43 2 78.5t2 78.5q1 24 0 48t0 48q0 17 3.5 20.5t20.5 3.5q47 1 93 0.5t93 -0.5l28.5 0.5t69 0t85 -1.5t77.5 -2zM127 695q-16 1 -29.5 7t-23.5 16.5t-15.5 23.5t-4.5 28q1 13 7.5 25t16.5 21
t22.5 14.5t25.5 5.5q12 0 24.5 -6.5t22 -17t15.5 -23t6 -24.5q0 -15 -5.5 -28t-14.5 -22.5t-21.5 -15t-25.5 -4.5zM396 831q12 0 23.5 -5t20.5 -13.5t14 -19t5 -22.5q-1 -30 -18.5 -49.5t-44.5 -18.5q-29 0 -48 19.5t-19 49.5q-1 26 18 42.5t49 16.5z" />
<glyph glyph-name="uni0436" unicode="&#x436;" horiz-adv-x="927"
d="M352 369q2 0 3 12.5t2 29.5t1 36t-1 33q-2 38 -4.5 69.5t-4.5 69.5q-1 17 2.5 21t20.5 5q32 1 64 0.5t64 -0.5q11 0 13.5 -5t2.5 -15q0 -61 1 -116t2 -116v-8t2 -7q1 -2 4.5 -3t3.5 0q5 5 9 10t7 11l57.5 108t57.5 109q7 15 16.5 23t27.5 6q25 -2 50 -1t50 1q9 0 17 -1
t13 -12q4 -10 1 -17t-8 -15l-74.5 -114.5l-74.5 -114.5q-9 -15 -9 -29t8 -29l24 -46l30 -57l31.5 -60.5l28.5 -56l22 -44t12 -23.5q9 -19 -11 -22q-17 -3 -34 -3q-23 2 -46.5 1t-46.5 1q-19 1 -27 18l-59 114.5l-60 114.5q-2 3 -3.5 6.5t-3.5 7.5q-3 3 -6 3q-4 0 -4 -5
q-1 -7 -1.5 -13.5t-0.5 -13.5q2 -57 3 -111l2 -112q1 -10 -5 -16.5t-15 -3.5q-32 -1 -62 0.5t-61 -0.5q-17 -2 -20.5 2.5t-4.5 21.5l-2 114.5l-2 115.5v9.5t-1 9.5q0 5 -5 5q-5 2 -7 -2l-5.5 -7.5t-5.5 -8.5l-48.5 -81l-49.5 -82l-28 -44l-28 -44q-5 -8 -9.5 -9t-22.5 0
q-3 2 -18 2.5t-34.5 0.5h-39h-30.5q-29 2 -12 25q8 13 17 24t17 24l27.5 41.5l31.5 48.5l32 49.5l29 44.5l21 32.5t9 13.5q14 20 2 40l-21.5 39l-21.5 39q-23 38 -45 69t-45 69q-11 18 -21 36.5t-21 36.5q-10 17 11 17q13 0 33.5 -0.5t39.5 -0.5t33.5 -0.5t16.5 -0.5
q10 2 22 1.5t18 -4.5q9 -6 14.5 -17l10.5 -21l30 -55.5l30 -52l30 -51.5l31 -55q2 -3 4 -9t7 -6z" />
<glyph glyph-name="uni0437" unicode="&#x437;" horiz-adv-x="593"
d="M403 626q44 -21 65.5 -57.5t23.5 -75.5t-13.5 -74.5t-45.5 -54.5q-6 -4 -9 -7q-4 -4 -4 -6.5t6 -6.5q11 -7 21 -15l20 -16q18 -16 28 -41.5t12 -53.5t-4 -54.5t-19 -44.5q-39 -54 -90 -83.5t-115 -38.5q-16 -2 -31.5 -3t-30.5 -1q-29 -2 -54.5 4t-49.5 16.5t-47.5 23.5
l-46.5 27q-8 5 -11.5 13.5t0.5 18.5l22.5 52l22.5 52q2 4 8 6t11 1t9.5 -4.5t9.5 -5.5q35 -20 72.5 -34t79.5 -17q21 -2 38 6l34 16q5 3 8.5 10t5 15.5t1.5 17.5t-3 15q-17 42 -60 48q-14 2 -27.5 2t-27.5 1q-16 0 -16 15q-2 18 -3.5 36.5t-3.5 36.5q18 5 35.5 8.5t35.5 8.5
l24 8t23 12q14 10 20.5 23t5 26t-10 24.5t-24.5 19.5q-20 11 -41 13t-44 -6t-45 -16.5t-43 -20.5q-19 -11 -27 -9.5t-20 21.5q-13 20 -25 40.5t-23 41.5q-2 4 -1 10t4 10q5 5 11 9t13 7q44 24 87 32t91 20q6 2 24.5 3t43 -0.5t51 -6.5t49.5 -17z" />
<glyph glyph-name="uni0438" unicode="&#x438;" horiz-adv-x="750"
d="M7 616q0 18 4.5 21.5t23.5 1.5q20 -2 40.5 -1.5t40.5 -0.5q12 0 24.5 1t25.5 -1q15 -2 20.5 -8.5t5.5 -22.5q1 -5 0.5 -9.5t-0.5 -9.5v-264v-13.5t1 -13.5q0 -7 5 -9q6 0 9 5q4 3 7 7t5 8q51 71 100.5 148.5t99.5 147.5q12 20 28 28.5t43 7.5q26 -3 53.5 -2t53.5 0
q24 -2 31 -9t6 -31q-2 -102 -1.5 -209.5t-1.5 -209.5q-1 -39 0 -73.5t2 -73.5q0 -7 0.5 -12t-0.5 -12q-1 -9 -6 -14.5t-15 -3.5q-32 1 -65 2.5t-66 0.5q-7 0 -14 0.5t-13 3.5q-4 2 -7.5 7t-3.5 10q2 37 0 80t0 80q1 37 1 73.5t1 73.5q0 2 -1 6t-5 4q-3 0 -4.5 -2t-3.5 -4
q-48 -59 -96 -127.5t-88 -134.5l-15.5 -24l-15.5 -24q-9 -15 -22 -19t-29 -6q-12 -1 -23.5 -0.5t-23.5 0.5q-20 1 -40.5 -0.5t-40.5 0.5q-23 2 -27.5 8t-3.5 30q2 37 2.5 73.5t0.5 73.5q0 38 -1 75.5l-2 75.5l0.5 15t0.5 39v55v63.5v63.5v55z" />
<glyph glyph-name="uni0439" unicode="&#x439;" horiz-adv-x="708"
d="M6 621q0 16 6 23t21 5q35 -2 67.5 0t67.5 -2q22 -2 20 -23v-35.5v-61.5t0.5 -73.5t1 -71t1.5 -53.5t2 -21q11 0 15 6q14 17 26.5 34l25.5 34l45.5 65l45.5 65l39.5 55l39.5 56q5 7 8.5 11t9 6.5t13 3t21.5 0.5h78q16 0 24 -0.5t12 -3.5t4.5 -10.5t1.5 -20.5
q1 -25 1.5 -73t0.5 -106.5v-121t-0.5 -115t-0.5 -89.5v-45q0 -12 0.5 -20.5t-1.5 -20.5q-2 -13 -7 -17t-19 -3q-26 2 -52.5 0.5t-52.5 0.5q-9 1 -21.5 0t-15.5 2t-2 19t0 27q0 44 0.5 79t-0.5 79q0 23 -0.5 46.5t-1.5 46.5q0 7 -4 10q-4 2 -9 -3q-4 -4 -10 -12l-79 -103.5
l-79 -103.5q-14 -20 -28.5 -37t-28.5 -37q-10 -15 -29 -15q-35 2 -69.5 1t-69.5 1q-8 0 -10.5 4t-3.5 11v13.5t-1 13.5q0 70 -0.5 139.5t-1.5 140.5q-1 0 -1 21v52.5v69v71v57.5v29zM308 710q-15 0 -29 6t-24 15.5t-16 21.5t-5 25q2 29 25 48.5t55 18.5q65 -1 68 -72
q1 -12 -5.5 -23.5t-17 -20.5t-24 -14t-27.5 -5z" />
<glyph glyph-name="uni043A" unicode="&#x43a;" horiz-adv-x="677"
d="M7 611q0 15 4 19.5t18 3.5q24 0 45 -1t46 -2q5 -1 11 -1h12q20 0 24 -3.5t5 -23.5q2 -32 2.5 -64t1.5 -64q1 -6 0 -11.5t0 -11.5l2 -10.5t3 -10.5q5 2 9 4.5t7 5.5l89 86.5l88 87.5q11 10 22 16.5t25 5.5q38 -1 75.5 -1.5t75.5 -1.5q3 0 7 -3t5 -5q1 -3 -1 -7.5t-4 -6.5
l-76 -77.5l-76 -77.5q-14 -14 -28.5 -26.5t-28.5 -26.5q-14 -13 -14.5 -18t9.5 -21l41.5 -67.5l42.5 -67.5l61 -96.5l61 -96.5q8 -12 3.5 -22t-18.5 -12q-5 -1 -11 -1h-12q-21 -1 -42.5 -1t-42.5 -2q-23 -2 -39.5 6.5t-29.5 26.5q-14 20 -31 47t-31 47l-42 60.5l-42 60.5
q-8 12 -13.5 12.5t-16.5 -9.5q-20 -16 -19 -44q2 -45 2.5 -89t1.5 -89q1 -20 -3.5 -25.5t-23.5 -5.5q-30 0 -64.5 1t-64.5 3q-23 1 -24 25q-1 18 -1 63v103.5v124v124.5v105v65z" />
<glyph glyph-name="uni043B" unicode="&#x43b;" horiz-adv-x="750"
d="M635 356q0 -48 -0.5 -95t0.5 -95q1 -42 2 -76t3 -76q1 -17 -13 -17q-35 1 -70 1.5t-70 1.5q-10 0 -12 5t-2 13v54.5t-1 55.5l-3 213q-1 25 0 50t0 51q0 11 -1 17.5t-4.5 9.5t-10 4t-18.5 2h-8q-10 0 -15.5 -0.5t-9 -2.5t-6 -7.5t-5.5 -14.5l-23.5 -84t-25.5 -83
q-15 -45 -32 -89.5t-39 -86.5q-12 -23 -31.5 -42.5l-39.5 -38.5q-17 -17 -39 -23.5t-46 -7.5q-33 -2 -64 5t-61 18q-14 5 -17.5 11.5t-1.5 21.5q6 29 11.5 59t12.5 59q4 21 25 15l9 -3.5l9 -3.5q31 -11 59.5 -2.5t46.5 35.5q8 12 14.5 25t10.5 27l27 91.5t24 91.5
q11 42 19 85t17 85q3 17 7.5 21.5t21.5 6.5q4 0 8 0.5t7 -0.5q17 0 43 0.5t56.5 0.5h62.5h61h52h35q18 -1 21.5 -5t3.5 -23q0 -47 -0.5 -93t-1.5 -93v-21.5t0.5 -24t1 -20z" />
<glyph glyph-name="uni043C" unicode="&#x43c;" horiz-adv-x="979"
d="M5 622q0 12 3.5 16t16.5 5q15 1 40.5 1t51 -1t45 -1t24.5 1q18 4 25 -12q28 -58 52.5 -103l47 -84.5l44.5 -77.5l45 -81q8 -15 17 -26q7 -11 15 0l102 165l23.5 40l31.5 56l29 53.5l17 32.5q16 36 55 33q30 -2 60 -2.5t60 -1.5q10 0 19 -3q8 -2 13 -6.5t5 -14.5
q0 -41 1 -81.5l2 -81.5q2 -66 2.5 -132t2.5 -132l2 -81l2 -82q1 -18 -7 -25t-25 -6l-105 3q-12 0 -19 1t-10 4t-3.5 9t-0.5 18q0 68 -0.5 131.5t-0.5 132.5v9.5t-1 9.5t-1.5 11t-4.5 6q-3 1 -9.5 -7.5t-8.5 -10.5l-85.5 -128.5t-78.5 -131.5q-2 -3 -3.5 -6.5t-3.5 -6.5
q-10 -16 -15 -25t-11 -12.5t-16 -4t-30 -0.5q-30 1 -59 0q-26 -3 -34 23l-5.5 15t-5.5 14q-11 25 -22 46t-22 46l-16.5 35.5l-16.5 35.5q-6 13 -11.5 26.5t-12.5 26.5q-5 11 -13.5 26t-12.5 15q-1 0 -1.5 -14.5t-0.5 -38v-53.5t0.5 -60l1 -57.5t0.5 -47.5v-11t-1 -12
q-3 -21 -24 -19q-32 1 -63.5 0t-63.5 1q-18 1 -22.5 5.5t-5.5 21.5q-1 29 -1 53t-1 53q-1 39 -1.5 77.5t-0.5 77.5q0 13 0.5 25.5t0.5 24.5v15v39.5v56v64.5t-0.5 64t-0.5 56z" />
<glyph glyph-name="uni043D" unicode="&#x43d;" horiz-adv-x="667"
d="M554 94q1 -26 1.5 -41.5t0.5 -41.5q0 -11 -4.5 -14.5t-17.5 -2.5q-29 1 -58 1.5t-58 0.5q-17 0 -20.5 3t-4.5 20q-2 47 -4.5 96t-4.5 96v11t-1 12q0 12 -15 14q-40 2 -79.5 0.5t-78.5 0.5q-20 1 -18 -19q1 -49 -1 -95t0 -99q1 -7 1.5 -13.5t-0.5 -13.5q0 -14 -14 -14
q-10 0 -19.5 0.5t-19.5 1.5q-27 2 -54 0.5t-54 0.5q-18 2 -23 6.5t-5 21.5q0 56 -1 104.5t0 104.5q1 89 2.5 176.5t3.5 176.5v31q0 19 19 19q14 0 28.5 0.5t29.5 -0.5q20 -1 38.5 -1.5t38.5 -2.5t24.5 -5.5t4.5 -23.5q1 -48 1 -85.5t-1 -84.5q0 -18 0.5 -28.5t5 -15.5
t14.5 -6t28 -1q32 0 62.5 1.5t61.5 2.5q20 0 20 17q-1 5 -0.5 10t0.5 10q-2 54 -3 98t-3 98q-2 16 12 16h123q11 0 16 -1q15 -2 19.5 -6.5t5.5 -20.5q3 -72 3 -143q0 -39 -1 -77.5l-2 -77.5v-24v-57.5t0.5 -71t0.5 -64.5z" />
<glyph glyph-name="uni043E" unicode="&#x43e;"
d="M654 323q-2 -46 -20 -97.5t-51 -101.5q-35 -51 -83 -82t-103 -52q-16 -6 -34.5 -10t-37.5 -5.5t-37.5 -0.5t-34.5 5q-18 4 -46 15.5t-60 29t-64 41.5t-58 54q-23 27 -34.5 59.5t-13.5 68.5q-3 54 4.5 106t30.5 102q12 26 32 54.5t51 54.5t74 48t102 36q29 6 65.5 5
t74.5 -11q28 -7 56.5 -22t53.5 -33t44 -36.5t30 -32.5q31 -40 44.5 -86t14.5 -109zM302 154q27 -1 48.5 2.5t41.5 14.5q51 32 73 79t11 106q-5 29 -20.5 53t-38.5 41t-50.5 25t-56.5 4t-55.5 -12.5t-45.5 -31.5q-37 -42 -51 -91.5t1 -106.5q3 -10 10.5 -20t15.5 -17
q27 -22 56.5 -35t60.5 -11z" />
<glyph glyph-name="uni043F" unicode="&#x43f;" horiz-adv-x="688"
d="M561 353q-2 -58 -3 -115l-2 -114q-1 -26 0.5 -47.5t2.5 -47.5q0 -15 -3.5 -19.5t-17.5 -5.5l-65.5 -4t-65.5 -3q-19 -1 -19 23q0 38 0.5 70.5t0.5 70.5q0 63 0.5 124.5t-0.5 123.5q0 27 -1 39t-6 16.5t-17 4t-34 0.5q-29 1 -58 1.5t-58 -0.5q-19 0 -23.5 -4.5t-4.5 -21.5
v-175q1 -58 1.5 -116t1.5 -116q0 -5 -1 -8q-1 -13 -2 -20t-5 -10t-11 -3.5t-20 -0.5q-28 1 -56 1.5t-56 3.5q-22 2 -27 8.5t-5 28.5v450v133q0 14 3 16t18 1q48 -2 94.5 -1.5t94.5 0.5q66 -1 129 2t127 0q16 0 31 -0.5t31 -0.5q15 0 18.5 -3t3.5 -18v-93q0 -21 0.5 -50
l1 -56t1.5 -45.5z" />
<glyph glyph-name="uni0440" unicode="&#x440;" horiz-adv-x="615"
d="M6 483q1 36 1.5 63.5t1.5 62.5q0 10 0.5 16t3.5 9t8.5 4t15.5 2q8 1 15.5 0.5t15.5 -0.5q11 0 23 0.5t23 0.5q7 0 23 0.5t34 2t34.5 2t23.5 0.5q20 -2 39 -3.5t38 -3.5q45 -5 81.5 -25t70.5 -47q5 -4 8.5 -8t8.5 -9q24 -22 35.5 -43.5t13.5 -44.5t-3 -48t-14 -55
q-21 -67 -60 -104t-102 -56q-35 -11 -70.5 -13t-72.5 0q-23 2 -28 -2.5t-6 -27.5q-1 -34 -0.5 -68t0.5 -68q0 -20 -5 -25t-26 -4l-55.5 2l-56.5 2q-19 1 -20 23q-1 27 -1 54v54v202v17v41t0.5 50.5t1.5 46.5zM230 495q-8 0 -17 -0.5t-17 -0.5q-9 -1 -14.5 -4.5t-6.5 -13.5
q0 -29 -0.5 -60t-1.5 -60q0 -15 16 -17q36 -4 70 0.5t66 21.5q18 10 28 26q8 12 10 28.5t-3 31.5t-16 26.5t-29 14.5q-11 2 -25 3.5t-27.5 2.5t-23 1h-9.5z" />
<glyph glyph-name="uni0441" unicode="&#x441;" horiz-adv-x="688"
d="M-20 334q0 53 15.5 96.5t40.5 77t55.5 59t61 42.5t57 27t42.5 13q94 20 179 -19q19 -8 37.5 -19.5l35.5 -22.5q11 -6 10.5 -10.5t-9.5 -13.5l-45.5 -41.5l-45.5 -41.5q-14 -13 -32 -6q-30 11 -58 9q-18 -1 -44.5 -11t-51 -30t-42 -51.5t-17.5 -75.5q0 -53 23 -84.5
t54 -47.5t62.5 -19.5t49.5 -0.5q32 5 57 22.5t45 43.5l9 10.5t6 4.5t7 -1.5t11 -7.5l39 -25t39 -26q14 -10 16 -16.5t-5 -21.5q-15 -34 -39 -60t-55 -46q-36 -23 -74.5 -39.5t-83.5 -18.5q-92 0 -153.5 26t-100.5 65t-58.5 84.5t-28 84.5t-9 65z" />
<glyph glyph-name="uni0442" unicode="&#x442;" horiz-adv-x="615"
d="M468 637q7 -1 13.5 -1t13.5 -2q20 -3 25 -8t5 -26q0 -26 -0.5 -47t-1.5 -47q-1 -17 -5 -21t-20 -3q-12 0 -30.5 -0.5t-36.5 -0.5t-32.5 -0.5t-17.5 -0.5q-15 0 -23.5 -1t-12 -5t-4 -12t0.5 -23v-32.5t-1 -75.5t-1.5 -97.5t-1.5 -97.5t-1.5 -75t-0.5 -31q-3 -30 -32 -31
h-21.5h-26t-22.5 0.5t-12 0.5q-16 0 -25 0.5t-13 4.5t-5 12.5t-1 24.5v33t0.5 60t1 77l1 83t0.5 77.5v61.5v27q1 17 -19 19q-13 0 -34 1t-41.5 1.5t-37 1.5t-19.5 1q-15 1 -20 6t-5 20v39t1 39v12q0 9 -1 19t4 16q3 5 13.5 3.5t19.5 -1.5q13 0 46.5 0.5t76.5 0.5t91 -0.5
t91 -0.5t76 -0.5t45 -0.5z" />
<glyph glyph-name="uni0443" unicode="&#x443;"
d="M159 641q14 0 22 -1.5t11.5 -5t3.5 -11t-2 -19.5q-5 -29 -0.5 -56t12.5 -54q16 -53 53 -81t84 -45q13 -5 17.5 -2t11.5 18l24 59l23 60l21 56l21 56q5 18 21 18l70 2t70 0q23 0 30 -9t-1 -32q-21 -62 -45 -120q-35 -94 -79 -181.5t-94 -173.5q-16 -28 -38 -49t-49 -38
q-28 -17 -57.5 -30.5t-64.5 -16.5q-20 -1 -40 -0.5t-40 7.5q-28 9 -55.5 17t-52.5 25q-15 10 -16.5 14.5t5.5 22.5q10 28 18.5 55.5t19.5 54.5q8 22 18.5 24.5t30.5 -11.5q11 -8 22.5 -14.5t24.5 -11.5q38 -14 74 2t57 47q11 14 -7 20l-39 16l-39 16q-38 17 -68.5 42.5
t-56.5 54.5q-27 31 -40.5 68t-20.5 77q-5 29 -8 54.5t-6 55.5q-1 14 2 17.5t17 3.5h28.5h40.5t39.5 -0.5t26.5 -0.5z" />
<glyph glyph-name="uni0444" unicode="&#x444;" horiz-adv-x="812"
d="M457 646q4 -3 5 -14t1.5 -24t0.5 -23.5t2 -12.5q2 -5 7.5 -6l10.5 -2q88 -8 144 -38t76 -71q19 -41 30 -84q16 -66 -4 -121.5t-61 -103.5q-29 -35 -70 -53.5t-87 -24.5q-17 -3 -25.5 -5t-13 -6.5t-5 -13.5t-0.5 -25v-16q0 -18 -19 -21q-33 -3 -65.5 -3.5t-65.5 6.5
q-20 3 -20 23q-1 14 -2.5 28.5t-2.5 28.5q-14 3 -28 5.5t-28 5.5q-20 5 -39.5 9t-39.5 10q-26 9 -50.5 23t-45 35t-34.5 49t-20 64q-10 57 4.5 107.5t45.5 97.5q17 25 40 42t51 28q29 12 60.5 19t63.5 8q10 0 16 1t8.5 4t3 9.5t0.5 17.5v15q-3 27 5.5 33.5t33.5 8.5
q6 1 23.5 0.5t37 -1.5t36 -3.5t20.5 -5.5zM298 337h1q0 17 0.5 33t0.5 33q-1 17 -4 22t-21 3q-9 0 -26.5 -8.5t-34.5 -23t-29.5 -33.5t-11.5 -41q1 -32 13.5 -53.5t28 -34.5t32 -18t27.5 -5q9 1 15.5 3t7.5 16q0 27 0.5 53.5t0.5 53.5zM462 225q0 -17 15 -14q24 5 45.5 14.5
t35.5 29.5q20 26 21.5 56t-9.5 61q-11 26 -32 35t-44 14q-2 0 -8 2q-14 2 -18 -0.5t-5 -16.5q0 -11 -0.5 -36t-0.5 -53.5v-54v-37.5z" />
<glyph glyph-name="uni0445" unicode="&#x445;" horiz-adv-x="770"
d="M649 -3q-47 -2 -90.5 -1t-89.5 -1q-11 0 -17 4t-11 12q-14 18 -27.5 39t-27.5 40l-22.5 30.5l-22.5 30.5q-14 19 -19 19t-18 -19l-31.5 -47l-31.5 -48l-8 -10.5t-7 -11.5q-26 -54 -88 -48q-32 -1 -54.5 0t-48.5 1q-10 0 -22 5q-12 3 -5 15l48.5 73l48.5 73l49 75l50 74
q8 11 7 19.5t-8 17.5l-44.5 62.5l-43.5 62.5l-49.5 74l-49.5 74q-2 5 -4 9t-4 9q-3 12 10 12q41 1 81.5 1.5t81.5 1.5q8 0 12 -3.5t8 -9.5l50 -69.5l50 -69.5q2 -3 5 -6t5 -6q11 -14 21 0q5 8 10.5 15.5l11.5 15.5l38 54t37 56q15 21 38 21q33 0 66 0.5t67 1.5q9 0 12 -5
t2 -13q-3 -12 -10 -24l-55.5 -85l-54.5 -84l-28 -45.5l-29 -44.5q-6 -9 -3.5 -14.5t7.5 -12.5l48.5 -60.5l48.5 -61.5l54 -73.5l53 -74.5q5 -7 9 -14t8 -15q6 -12 3 -16.5t-16 -4.5z" />
<glyph glyph-name="uni0446" unicode="&#x446;"
d="M6 611q-1 16 2.5 20t20.5 7q4 0 19.5 0.5t35.5 0.5t40 -0.5t32 -0.5q11 0 14.5 -4.5t3.5 -14.5q1 -28 1.5 -68t0.5 -85t-0.5 -90.5t-0.5 -84.5t-0.5 -67.5t0.5 -38.5q0 -22 24 -22h73.5t73.5 -1q20 0 18 20q-1 16 -1 47.5v72t-0.5 85.5t-0.5 87t-1 77.5t-2 56.5v10t1 10
q3 15 19 15q30 -2 60 -2.5t60 -2.5q16 -2 19.5 -5.5t4.5 -20.5q1 -24 2 -58t1.5 -73t0.5 -78.5t0.5 -73.5t0.5 -59v-34q1 -11 1 -21.5t1 -21.5q1 -17 2 -25.5t5.5 -13t13 -5.5t25.5 -1q3 0 6 0.5t5 -0.5q18 -1 27 -2t12 -5t3 -12t1 -21q4 -43 5 -83t0 -87q0 -15 -6 -23.5
t-21 -9.5q-26 0 -49 0.5t-49 -0.5q-22 0 -25 20q-2 14 -1 28.5t-1 28.5q-2 17 -17 18q-9 1 -19 1.5t-19 -1.5q-17 0 -46 -0.5t-63.5 -0.5t-71 -1t-69 -1t-58 -0.5t-37.5 -0.5h-31q-10 1 -21 0.5t-18 4.5q-5 4 -4.5 15t-0.5 21q-3 97 1 192t0 192l-2 68q-1 29 -1 61.5v60.5z
" />
<glyph glyph-name="uni0447" unicode="&#x447;" horiz-adv-x="656"
d="M550 471q-1 -107 -0.5 -213t-0.5 -213q0 -11 -0.5 -16.5l-1.5 -16.5q-2 -14 -6.5 -18t-18.5 -3q-30 2 -60 0t-60 2q-26 3 -26 36v117q0 14 -1 28.5l-2 29.5q-1 17 -17 9q-5 -2 -10.5 -5.5t-10.5 -5.5l-41.5 -16t-41.5 -14q-52 -14 -96.5 0t-85.5 44q-24 18 -39.5 42.5
t-17.5 55.5l-4 67.5t-3 68.5v43t0.5 39l1 39t0.5 43q0 22 20 22q5 0 21.5 0.5t36.5 0.5h39h30q12 -1 19 -2t10 -4t3.5 -9.5t0.5 -17.5q-1 -42 -2.5 -74.5t-2.5 -73.5q0 -17 1 -33t5 -33q5 -24 21 -38.5t45 -14.5q50 -1 90 29q14 11 21.5 23.5t7.5 32.5q-2 48 -1 93t1 93v8
q1 17 5.5 22t21.5 5h19h33.5h36h28.5q20 1 25 -5t7 -26q1 -17 1 -41.5v-46.5t-0.5 -37.5z" />
<glyph glyph-name="uni0448" unicode="&#x448;" horiz-adv-x="969"
d="M255 -2q-51 1 -101 1.5t-101 1.5q-10 0 -15 1q-17 2 -22.5 8.5t-5.5 23.5q-2 69 -1 136t0 136q-1 55 -0.5 110t0.5 111q1 23 0 37t-2 37q0 7 1 13t2 13q5 15 20 14q10 -1 26 -1.5t32.5 -0.5t30 0.5t16.5 0.5q13 1 21 0t12.5 -4.5t6.5 -11t3 -20.5q5 -62 4 -118t1 -119
q1 -42 -1 -86t0 -86q1 -14 4.5 -17.5t18.5 -4.5q25 -2 54 -0.5t53 0.5t29 3.5t4 27.5q0 38 -1 75.5t-1 75.5q0 54 0.5 106.5t0.5 106.5q0 16 1 26.5t-1 26.5q-2 20 16 20q34 -2 65.5 0t65.5 -1q14 -2 18 -7t4 -22q1 -87 1 -172.5v-172.5q0 -19 0.5 -37.5t1.5 -36.5
q1 -14 5.5 -18t18.5 -4q27 -1 54 -0.5t55 0.5q17 0 17 16v55q-1 41 -0.5 81t-1.5 82q-2 50 -2.5 98.5t-2.5 98.5q0 4 -0.5 7.5t-0.5 8.5q0 11 4.5 15.5t16.5 4.5h60t61 -1q11 -1 17 -6t7 -22q3 -97 4.5 -193.5t-3.5 -194.5q-2 -45 -0.5 -87.5t1.5 -87.5q0 -31 -8.5 -39
t-38.5 -8q-17 0 -59.5 -0.5t-97 -0.5h-115.5h-113.5t-90.5 0.5t-48 0.5z" />
<glyph glyph-name="uni0449" unicode="&#x449;" horiz-adv-x="1083"
d="M340 617q0 15 3 19.5t18 4.5q30 1 60 0.5t60 -1.5q17 0 17 -20q0 -44 0.5 -84t-0.5 -84q0 -66 -0.5 -132t-0.5 -132q-1 -17 2.5 -21t20.5 -5q29 -1 58.5 -1h58.5q13 0 20 1t10.5 4.5t4 10.5t0.5 19q0 42 -0.5 83.5t-0.5 83.5q-1 61 -1 122v122q0 11 0.5 17.5t3.5 10
t9 4.5t17 1q30 1 60 -0.5t60 -3.5q12 0 14 -15q2 -20 3.5 -40.5t1.5 -40.5q1 -80 0 -159t2 -159l1.5 -41t5.5 -17.5t17 -4t36 -0.5l36.5 -2t36.5 -3q19 -2 20 -19q0 -7 1.5 -13.5t2.5 -13.5q2 -47 2.5 -93t2.5 -93q0 -6 -1 -11.5l-2 -11.5q-3 -18 -21 -18q-27 1 -54 1t-54 1
q-19 0 -24 5t-7 23q-5 33 -6 66q-1 11 -5.5 16t-15.5 5q-20 0 -39 0.5t-39 0.5q-105 1 -209 1.5t-210 1.5q-67 0 -133.5 0.5t-133.5 0.5h-12t-11 2q-11 2 -17 9t-3 18q-2 21 -2 39v34.5t0.5 32.5t0.5 33q-2 52 0 103t-1 103q-4 60 -3.5 113.5t1.5 113.5v16q1 17 4.5 21
t20.5 3q17 0 34.5 -1t34.5 -1q15 -1 29.5 -1.5t28.5 0.5q19 0 19 -18q-1 -23 -1.5 -40t-0.5 -40q1 -69 1.5 -138t0.5 -138q1 -17 0.5 -33t-0.5 -33q0 -21 3 -25.5t23 -5.5l52.5 -4t52.5 -2q15 0 22.5 1t10.5 4.5t3.5 11t0.5 20.5q-1 52 -1 104t-1 105l0.5 22.5t0.5 54.5
v67.5v62.5z" />
<glyph glyph-name="uni044A" unicode="&#x44a;" horiz-adv-x="667"
d="M76 324q-1 39 0.5 77.5t-0.5 77.5q-2 18 -6 21.5t-23 4.5q-23 1 -37.5 0t-23 3t-11 16t-1.5 39q1 14 0 27t-1 27q1 14 5 18.5t18 5.5h37.5t63.5 -0.5l69 -1t54 -1.5q3 1 9.5 1t12.5 -2.5t10.5 -8.5t4.5 -16v-28v-39v-42v-38q0 -22 20 -22q37 0 73 -3q51 -5 94 -24.5
t76 -58.5q32 -38 41 -81t-2 -91q-14 -60 -50.5 -100t-94.5 -63q-41 -16 -81.5 -19t-82.5 -5q-37 -2 -74 0l-74 4q-18 1 -21 4t-3 20q-1 48 -1.5 95t-1.5 95v12v28.5t0.5 35t0.5 32.5zM302 136q7 1 16.5 1.5t19.5 2.5q8 2 16.5 6t13.5 10q19 20 25.5 43t-2.5 50
q-15 49 -65 58q-21 4 -42 6q-17 2 -21.5 -2t-4.5 -22q-2 -66 0 -132q0 -14 3.5 -17t19.5 -4h21z" />
<glyph glyph-name="uni044B" unicode="&#x44b;" horiz-adv-x="823"
d="M7 283q1 36 1.5 89l1 104t0.5 90v48q-1 18 3 22t23 5h23t40 -0.5l43 -1t32 -0.5q16 -1 19 -3t5 -18q2 -34 0.5 -67.5t0.5 -67.5q0 -13 1 -20.5t4 -11t10 -5t21 -3.5q10 -1 19.5 -1t19.5 -2q60 -10 105 -41t72 -88q18 -38 23 -77t-7 -81q-11 -40 -36 -74.5t-66 -50.5
q-42 -17 -81.5 -20.5l-83.5 -7.5q-5 0 -24 -0.5t-44 -0.5t-50 -0.5t-40 -1.5q-23 -1 -28.5 4.5t-5.5 28.5q0 66 -0.5 130.5t-0.5 122.5zM194 167q0 -8 3 -13.5t11 -5.5q10 0 24.5 0.5t28.5 3.5t26.5 7.5t20.5 12.5t12.5 20t6 25t-0.5 26t-7 23t-18.5 18.5t-29.5 14t-33 8
t-29 1.5q-14 -2 -15 -14v-127zM543 615q0 14 3.5 19.5t17.5 4.5h62t62 -2q17 -1 20.5 -5.5t3.5 -22.5q2 -42 2.5 -79t0.5 -79v-194t-2 -194q0 -30 0.5 -43.5t-5 -18t-20 -3.5t-44.5 1q-19 -1 -37 0t-37 1q-18 0 -24 5t-6 24v150.5t-1 151.5l1 30.5t1.5 74.5t1 93t0.5 86z
" />
<glyph glyph-name="uni044C" unicode="&#x44c;" horiz-adv-x="593"
d="M146 -2q-30 1 -52.5 1.5t-42.5 1.5q-16 0 -31 3q-7 2 -11.5 6.5t-2.5 12.5q0 48 -0.5 98t0.5 99v61.5v77v81.5v76v60v34q0 5 -0.5 9.5t0.5 9.5q3 20 24 20q30 -2 60 -3t60 -3q14 -1 22 -2t11.5 -5t4.5 -12t1 -22q1 -34 0.5 -59.5t1.5 -59.5q0 -18 3 -22t20 -5
q22 -2 49 -1.5t49 -1.5q84 -6 142 -64q48 -49 54 -122q5 -83 -38 -156q-22 -36 -53 -60.5t-73 -35.5q-52 -14 -103 -18t-95 1zM191 251q2 -10 2 -29q0 -9 0.5 -18.5t0.5 -19.5q1 -26 6.5 -32t31.5 -4q15 1 30 6q14 4 28 10t25.5 16t18.5 23.5t7 33.5q0 19 -8 31t-21.5 19.5
t-30 10.5t-34.5 5q-1 1 -4 1q-19 2 -29.5 2t-15.5 -5t-6 -16.5t-1 -33.5z" />
<glyph glyph-name="uni044D" unicode="&#x44d;"
d="M624 300q1 -40 -9 -80.5t-31 -78.5t-54 -62q-34 -25 -68.5 -44.5t-75.5 -32.5q-73 -23 -141.5 -11.5t-135.5 40.5q-52 22 -95 62q-5 5 -8.5 9.5t-0.5 12.5l27 65.5l27 64.5q5 13 17 19q18 9 34 -7q14 -14 29 -27t32 -24q49 -33 100 -32.5t103 23.5q41 18 55 64
q6 20 -14 20h-30t-51 -0.5t-51 -0.5h-31h-17t-17 1q-20 0 -20 21q0 11 -2 21t-2 21q-1 21 6.5 28.5t28.5 8.5q9 0 34.5 0.5t55 0.5t55 0.5t34.5 0.5q14 2 16 5.5t-2 16.5q-10 29 -32.5 44t-49.5 23q-92 26 -173 -18q-17 -9 -24.5 -5.5t-15.5 16.5l-24.5 39l-23.5 39
q-3 5 -6 9.5t-7 8.5q-10 12 -9.5 16t11.5 14q78 66 178 69q61 3 121 -6q56 -8 99.5 -37.5t78.5 -71.5q44 -52 64 -112.5t15 -132.5z" />
<glyph glyph-name="uni044E" unicode="&#x44e;" horiz-adv-x="969"
d="M184 23q-1 -16 -5 -20.5t-19 -4.5q-29 1 -59 1t-59 2q-13 0 -20 1t-10 4.5t-3.5 10t-0.5 18.5q-2 79 -0.5 157t-0.5 157q-1 32 -1.5 64.5t1.5 64.5q2 37 2 70.5t-2 71.5q-1 14 1.5 18t13.5 4q36 0 69 -0.5t69 -0.5q16 -2 16 -17q1 -14 1 -27v-27q1 -37 0 -70.5t1 -71.5
q0 -19 3.5 -22t21.5 -5q14 -1 27 -0.5t26 -0.5q17 -1 23 16q5 11 9.5 22.5t9.5 22.5q34 78 95 121t142 61q66 15 123 -1.5t107 -58.5q35 -31 60.5 -69t37.5 -86q9 -36 15 -72t2 -74q-5 -44 -17 -83.5t-38 -76.5q-19 -26 -40 -50t-49 -41q-53 -32 -109.5 -41.5t-117.5 -6.5
q-42 3 -79 18t-72 38q-33 22 -52.5 54t-30.5 69q-7 22 -11.5 44l-9.5 45q-4 17 -20 18q-18 1 -28 0t-15.5 -6.5t-7 -15.5t-1.5 -28q0 -11 0.5 -38t0.5 -57.5t0.5 -59t0.5 -41.5zM442 324q0 -6 -0.5 -12t-0.5 -11q0 -34 15 -59.5t36.5 -43t44.5 -26t38 -8.5q72 0 111 47.5
t39 125.5q0 12 -2 33.5t-13.5 44t-34.5 41t-65 26.5q-61 10 -104.5 -22t-59.5 -90q-2 -6 -2.5 -13.5l-1 -15t-0.5 -12.5v-5z" />
<glyph glyph-name="uni044F" unicode="&#x44f;" horiz-adv-x="688"
d="M571 34v-23q-2 -20 -21 -18h-127q-18 1 -24 7t-6 23v54.5t1 54.5q0 17 0.5 34.5t0.5 35.5q0 15 -3.5 18t-18.5 5q-30 6 -46 -20l-57.5 -85t-55.5 -86q-7 -12 -12.5 -19.5t-13 -12.5t-19.5 -7t-31 -2h-34t-38 1q-21 0 -44 1q-6 2 -10 5q-8 6 -1 16q14 20 30 39.5t31 40.5
l48 67.5l48 68.5q9 14 8.5 18.5t-14.5 10.5q-35 16 -55 43.5t-34 60.5q-14 35 -18.5 70.5t6.5 73.5q5 18 16 32.5t25 26.5q49 41 113 57q45 11 87 11.5t82 1.5q17 -1 42.5 -1t49 0.5t40.5 0.5h19q21 -3 28 -11t7 -29v-48v-87t0.5 -111t0.5 -119v-111.5v-87.5zM407 438
q-1 4 -1 12.5t-1 17.5q-2 15 -14 16q-15 1 -43.5 2.5t-56 -1t-48.5 -12t-22 -30.5q-1 -37 17 -53.5t41 -21.5t44.5 -3.5t29.5 0.5q22 -2 32.5 1t14.5 11t4.5 23t2.5 38z" />
<glyph glyph-name="A" unicode="A" horiz-adv-x="708"
d="M436 638q18 1 23.5 -3t9.5 -21q8 -33 14.5 -64t14.5 -64l34 -142l34 -141l15.5 -64.5l15.5 -64.5l6 -25.5l6 -24.5q6 -23 -16 -27h-7q-36 -2 -72 -0.5t-71 -0.5q-15 0 -18.5 5t-5.5 22q-3 44 -16 88q-2 10 -8.5 11t-11.5 1q-36 1 -72 0l-71 -2q-8 0 -12 -4t-6 -11
q-6 -23 -12.5 -43t-12.5 -43q-3 -11 -7.5 -15.5t-18.5 -4.5h-31h-50t-47.5 0.5t-22.5 0.5q-24 2 -16 25l20 60l21 59l42 133.5l43 133.5l17 56l19.5 64l16.5 53t8 24q3 10 4.5 16t5 9t11 4t21.5 1q12 0 40.5 -0.5t60 -0.5h60.5h42zM361 243q16 1 12 17l-16.5 71l-16.5 71
q-1 3 -3 6.5t-6 3.5t-4.5 -3t-1.5 -5l-22 -64.5l-22 -64.5q-5 -15 -7 -22.5t0.5 -10.5t10 -3h21.5l6.5 0.5t15 1t18 1t15.5 1.5z" />
<glyph glyph-name="a" unicode="a" horiz-adv-x="708"
d="M436 638q18 1 23.5 -3t9.5 -21q8 -33 14.5 -64t14.5 -64l34 -142l34 -141l15.5 -64.5l15.5 -64.5l6 -25.5l6 -24.5q6 -23 -16 -27h-7q-36 -2 -72 -0.5t-71 -0.5q-15 0 -18.5 5t-5.5 22q-3 44 -16 88q-2 10 -8.5 11t-11.5 1q-36 1 -72 0l-71 -2q-8 0 -12 -4t-6 -11
q-6 -23 -12.5 -43t-12.5 -43q-3 -11 -7.5 -15.5t-18.5 -4.5h-31h-50t-47.5 0.5t-22.5 0.5q-24 2 -16 25l20 60l21 59l42 133.5l43 133.5l17 56l19.5 64l16.5 53t8 24q3 10 4.5 16t5 9t11 4t21.5 1q12 0 40.5 -0.5t60 -0.5h60.5h42zM361 243q16 1 12 17l-16.5 71l-16.5 71
q-1 3 -3 6.5t-6 3.5t-4.5 -3t-1.5 -5l-22 -64.5l-22 -64.5q-5 -15 -7 -22.5t0.5 -10.5t10 -3h21.5l6.5 0.5t15 1t18 1t15.5 1.5z" />
<glyph glyph-name="B" unicode="B" horiz-adv-x="636"
d="M3 604q0 14 5 21t19 10q8 1 16 1h16q37 -2 75 0q51 1 101.5 -1.5t101.5 -8.5q31 -4 54.5 -18t42.5 -37q6 -7 10.5 -19.5t8.5 -25.5t6.5 -23t2.5 -11q4 -35 -9.5 -64.5t-36.5 -54.5q-9 -10 -8 -12.5t14 -8.5l27.5 -13.5t25.5 -15.5q46 -36 48 -96q1 -89 -54 -163
q-8 -11 -20.5 -19.5l-24.5 -16.5q-18 -12 -38.5 -18t-42.5 -8q-17 -1 -44 -1.5t-58.5 -0.5h-64.5t-61.5 0.5t-49.5 1t-29 0.5q-20 1 -26.5 8.5t-6.5 27.5v283l0.5 31t0.5 75t-0.5 92.5t-0.5 84.5zM171 140q0 -18 17 -17q12 1 24 0.5t23 1.5q20 4 39 10.5t35 21.5
q23 23 19.5 48.5t-32.5 39.5q-26 11 -54.5 14.5t-57.5 2.5q-16 0 -16 -19q0 -6 0.5 -20.5l1 -30.5l1 -30.5t0.5 -21.5zM170 424q0 -19 16 -18q17 1 34 1.5t34 2.5q15 3 28 10.5t16 25.5q8 37 -21 57q-34 25 -77 24q-20 0 -24 -4t-5 -24v-13t-0.5 -22t-0.5 -23v-17z" />
<glyph glyph-name="b" unicode="b" horiz-adv-x="636"
d="M3 604q0 14 5 21t19 10q8 1 16 1h16q37 -2 75 0q51 1 101.5 -1.5t101.5 -8.5q31 -4 54.5 -18t42.5 -37q6 -7 10.5 -19.5t8.5 -25.5t6.5 -23t2.5 -11q4 -35 -9.5 -64.5t-36.5 -54.5q-9 -10 -8 -12.5t14 -8.5l27.5 -13.5t25.5 -15.5q46 -36 48 -96q1 -89 -54 -163
q-8 -11 -20.5 -19.5l-24.5 -16.5q-18 -12 -38.5 -18t-42.5 -8q-17 -1 -44 -1.5t-58.5 -0.5h-64.5t-61.5 0.5t-49.5 1t-29 0.5q-20 1 -26.5 8.5t-6.5 27.5v283l0.5 31t0.5 75t-0.5 92.5t-0.5 84.5zM171 140q0 -18 17 -17q12 1 24 0.5t23 1.5q20 4 39 10.5t35 21.5
q23 23 19.5 48.5t-32.5 39.5q-26 11 -54.5 14.5t-57.5 2.5q-16 0 -16 -19q0 -6 0.5 -20.5l1 -30.5l1 -30.5t0.5 -21.5zM170 424q0 -19 16 -18q17 1 34 1.5t34 2.5q15 3 28 10.5t16 25.5q8 37 -21 57q-34 25 -77 24q-20 0 -24 -4t-5 -24v-13t-0.5 -22t-0.5 -23v-17z" />
<glyph glyph-name="C" unicode="C" horiz-adv-x="687"
d="M-17 288q0 64 16 120.5t47 108.5q14 23 32.5 40.5t41.5 31.5q55 34 114 49t124 9q39 -4 75 -18.5l71 -29.5q25 -10 7 -34l-40.5 -49l-41.5 -49q-7 -8 -15 -9.5t-19 0.5q-21 4 -42.5 5t-41.5 -2q-30 -3 -53.5 -16t-40 -33t-24.5 -46t-6 -55l4 -34.5t7 -33.5
q9 -28 27.5 -45.5t49.5 -21.5q20 -3 40 -5t40 3q28 7 46 20.5t38 39.5q14 29 38 12l51 -34t50 -36q15 -11 11 -20.5t-15 -26.5q-6 -8 -26 -26.5t-47 -38t-57 -37t-56 -24.5q-33 -9 -66 -11t-68 2q-45 6 -85.5 22.5t-75.5 45.5q-6 5 -16.5 14.5t-22 22t-23 27.5t-18.5 32
t-12.5 33t-10.5 33q-4 17 -4.5 33.5t-2.5 30.5z" />
<glyph glyph-name="c" unicode="c" horiz-adv-x="708"
d="M3 288q0 64 16 120.5t47 108.5q14 23 32.5 40.5t41.5 31.5q55 34 114 49t124 9q39 -4 75 -18.5l71 -29.5q25 -10 7 -34l-40.5 -49l-41.5 -49q-7 -8 -15 -9.5t-19 0.5q-21 4 -42.5 5t-41.5 -2q-30 -3 -53.5 -16t-40 -33t-24.5 -46t-6 -55l4 -34.5t7 -33.5
q9 -28 27.5 -45.5t49.5 -21.5q20 -3 40 -5t40 3q28 7 46 20.5t38 39.5q14 29 38 12l51 -34t50 -36q15 -11 11 -20.5t-15 -26.5q-6 -8 -26 -26.5t-47 -38t-57 -37t-56 -24.5q-33 -9 -66 -11t-68 2q-45 6 -85.5 22.5t-75.5 45.5q-6 5 -16.5 14.5t-22 22t-23 27.5t-18.5 32
t-12.5 33t-10.5 33q-4 17 -4.5 33.5t-2.5 30.5z" />
<glyph glyph-name="D" unicode="D" horiz-adv-x="709"
d="M4 576q0 21 1 32.5t6.5 17t16.5 7t32 2.5q11 0 44 0.5t72 0.5t76 -1t57 -3q24 -2 48 -4.5t47 -10.5q21 -7 41.5 -18t38.5 -25q30 -20 52.5 -53.5t38 -68.5t24.5 -66t12 -47q13 -72 -9 -131t-71 -110q-34 -35 -74 -57t-89 -29q-63 -9 -124.5 -12.5t-124.5 -1.5
q-26 0 -50.5 2t-49.5 2q-11 -1 -13.5 4t-2.5 13q0 4 -0.5 7.5t-0.5 7.5q0 71 0.5 141.5t0.5 141.5l0.5 28t0.5 68.5v85v77.5zM202 315q0 -33 -0.5 -66t-1.5 -66q0 -20 20 -21q43 -4 82 6t74 36q17 13 30 28t18 36q7 28 4.5 56t-11.5 56q-8 21 -22 37.5t-36 25.5
q-32 14 -64.5 16t-65.5 2q-20 0 -23.5 -4t-3.5 -24q-1 -15 -0.5 -35t0.5 -39v-44z" />
<glyph glyph-name="d" unicode="d" horiz-adv-x="708"
d="M4 576q0 21 1 32.5t6.5 17t16.5 7t32 2.5q11 0 44 0.5t72 0.5t76 -1t57 -3q24 -2 48 -4.5t47 -10.5q21 -7 41.5 -18t38.5 -25q30 -20 52.5 -53.5t38 -68.5t24.5 -66t12 -47q13 -72 -9 -131t-71 -110q-34 -35 -74 -57t-89 -29q-63 -9 -124.5 -12.5t-124.5 -1.5
q-26 0 -50.5 2t-49.5 2q-11 -1 -13.5 4t-2.5 13q0 4 -0.5 7.5t-0.5 7.5q0 71 0.5 141.5t0.5 141.5l0.5 28t0.5 68.5v85v77.5zM202 315q0 -33 -0.5 -66t-1.5 -66q0 -20 20 -21q43 -4 82 6t74 36q17 13 30 28t18 36q7 28 4.5 56t-11.5 56q-8 21 -22 37.5t-36 25.5
q-32 14 -64.5 16t-65.5 2q-20 0 -23.5 -4t-3.5 -24q-1 -15 -0.5 -35t0.5 -39v-44z" />
<glyph glyph-name="E" unicode="E" horiz-adv-x="583"
d="M9 431q0 38 -1.5 75.5t-3.5 75.5q0 5 -0.5 10.5t-0.5 11.5q0 17 4 25t27 7q26 -1 65.5 -1h83h88.5t82.5 0.5t64.5 0.5h36q20 0 21 -19q1 -26 1 -57v-57q0 -3 -4.5 -7t-7.5 -4q-14 -2 -27.5 -3.5t-27.5 -1.5q-49 -1 -95 -1t-95 -1q-17 0 -26.5 -1t-13.5 -5.5t-4 -14
t1 -27.5q0 -10 -0.5 -13t0.5 -12q1 -12 2 -19t4 -10.5t10 -4.5t20 -2q10 -2 27.5 -1t28.5 0q12 -1 17.5 -3.5t7.5 -7.5t1.5 -13t-0.5 -20q0 -4 -0.5 -7.5t0.5 -7.5q0 -18 -18 -18q-30 -2 -59 0q-16 0 -25 -0.5t-12.5 -4.5t-4 -12.5t-0.5 -23.5v-74q1 -21 21 -21h243
q18 2 25 -2.5t8 -22.5q2 -28 2.5 -62t-0.5 -62q0 -4 -4.5 -8.5t-8.5 -5.5q-6 -1 -27.5 -1h-52t-66.5 0.5l-71 1t-66 0.5h-50q-23 -1 -47 0l-47 2q-19 1 -24.5 6.5t-5.5 24.5v66t1 66q0 23 0.5 44.5t1.5 44.5q-1 0 -0.5 19.5t1 47t1 58t0.5 52.5z" />
<glyph glyph-name="e" unicode="e" horiz-adv-x="583"
d="M9 431q0 38 -1.5 75.5t-3.5 75.5q0 5 -0.5 10.5t-0.5 11.5q0 17 4 25t27 7q26 -1 65.5 -1h83h88.5t82.5 0.5t64.5 0.5h36q20 0 21 -19q1 -26 1 -57v-57q0 -3 -4.5 -7t-7.5 -4q-14 -2 -27.5 -3.5t-27.5 -1.5q-49 -1 -95 -1t-95 -1q-17 0 -26.5 -1t-13.5 -5.5t-4 -14
t1 -27.5q0 -10 -0.5 -13t0.5 -12q1 -12 2 -19t4 -10.5t10 -4.5t20 -2q10 -2 27.5 -1t28.5 0q12 -1 17.5 -3.5t7.5 -7.5t1.5 -13t-0.5 -20q0 -4 -0.5 -7.5t0.5 -7.5q0 -18 -18 -18q-30 -2 -59 0q-16 0 -25 -0.5t-12.5 -4.5t-4 -12.5t-0.5 -23.5v-74q1 -21 21 -21h243
q18 2 25 -2.5t8 -22.5q2 -28 2.5 -62t-0.5 -62q0 -4 -4.5 -8.5t-8.5 -5.5q-6 -1 -27.5 -1h-52t-66.5 0.5l-71 1t-66 0.5h-50q-23 -1 -47 0l-47 2q-19 1 -24.5 6.5t-5.5 24.5v66t1 66q0 23 0.5 44.5t1.5 44.5q-1 0 -0.5 19.5t1 47t1 58t0.5 52.5z" />
<glyph glyph-name="F" unicode="F" horiz-adv-x="635"
d="M440 638q20 -1 40.5 -1.5t41.5 -0.5q11 0 13.5 -5t2.5 -14q1 -28 1 -56t1 -55q0 -19 -4 -24.5t-24 -5.5h-72t-72 1q-26 0 -51 0.5t-51 0.5q-10 0 -19.5 0.5t-19.5 -0.5q-21 -2 -25.5 -7t-5.5 -25q-1 -19 -1.5 -34t-1.5 -34q0 -23 4 -28.5t28 -7.5q29 -3 58.5 -1.5
t58.5 -0.5q11 -1 23 -0.5t23 -0.5q18 -2 26.5 -2t11.5 -3.5t3 -11.5t2 -24q2 -20 2 -41t-1 -41q0 -13 -4 -16.5t-17 -3.5q-45 -1 -90 -1t-90 -1q-4 0 -7.5 0.5t-7.5 0.5q-18 0 -21.5 -3t-3.5 -20q-1 -27 -1 -61t-1 -61q0 -20 -1.5 -30.5t-6.5 -15t-15 -5t-29 -0.5
q-25 1 -49 1.5t-49 1.5q-20 2 -25 6.5t-6 22.5q-1 50 -1 99.5t-1 99.5q0 19 -1 64.5t-1 97.5t0.5 99.5t2.5 70.5q2 15 1.5 25.5t1.5 26.5q1 18 5 21.5t23 4.5h16q16 -1 46.5 -1h68h78.5h78.5t68 -0.5t46.5 -0.5z" />
<glyph glyph-name="f" unicode="f" horiz-adv-x="635"
d="M440 638q20 -1 40.5 -1.5t41.5 -0.5q11 0 13.5 -5t2.5 -14q1 -28 1 -56t1 -55q0 -19 -4 -24.5t-24 -5.5h-72t-72 1q-26 0 -51 0.5t-51 0.5q-10 0 -19.5 0.5t-19.5 -0.5q-21 -2 -25.5 -7t-5.5 -25q-1 -19 -1.5 -34t-1.5 -34q0 -23 4 -28.5t28 -7.5q29 -3 58.5 -1.5
t58.5 -0.5q11 -1 23 -0.5t23 -0.5q18 -2 26.5 -2t11.5 -3.5t3 -11.5t2 -24q2 -20 2 -41t-1 -41q0 -13 -4 -16.5t-17 -3.5q-45 -1 -90 -1t-90 -1q-4 0 -7.5 0.5t-7.5 0.5q-18 0 -21.5 -3t-3.5 -20q-1 -27 -1 -61t-1 -61q0 -20 -1.5 -30.5t-6.5 -15t-15 -5t-29 -0.5
q-25 1 -49 1.5t-49 1.5q-20 2 -25 6.5t-6 22.5q-1 50 -1 99.5t-1 99.5q0 19 -1 64.5t-1 97.5t0.5 99.5t2.5 70.5q2 15 1.5 25.5t1.5 26.5q1 18 5 21.5t23 4.5h16q16 -1 46.5 -1h68h78.5h78.5t68 -0.5t46.5 -0.5z" />
<glyph glyph-name="G" unicode="G" horiz-adv-x="718"
d="M475 362h58t58 -1q17 -1 20.5 -4t6.5 -19q5 -32 -0.5 -62.5t-15.5 -59.5q-12 -37 -33 -68t-47 -59q-32 -35 -71 -58t-87 -31q-50 -8 -98.5 -6t-96.5 24q-26 11 -49 22t-45 29q-13 11 -22 24t-20 27q-7 14 -15.5 29.5t-13.5 31.5q-31 89 -18 171.5t60 160.5q27 45 69 73
t93 43q55 17 109.5 16.5t109.5 -11.5q26 -5 48 -17t45 -23q8 -4 8 -10t-6 -11l-50.5 -45.5l-50.5 -45.5q-4 -3 -10.5 -5t-8.5 0q-20 14 -41.5 12l-42.5 -4q-17 -2 -33.5 -6t-31.5 -11q-29 -14 -51.5 -41.5t-32.5 -62t-5.5 -72.5t29.5 -74q23 -33 56.5 -47t74.5 -9q19 2 37 7
t33 18q7 5 13 11t11 13q5 8 10 18.5t3 18.5q-1 5 -4.5 7t-8.5 2t-10.5 -0.5t-9.5 0.5q-7 1 -13 1t-13 1q-22 2 -28 8.5t-7 28.5q-1 13 -1 25t-2 24q-1 20 16 20q23 0 47 -0.5t47 -0.5q8 -1 15.5 -1.5t15.5 -0.5z" />
<glyph glyph-name="g" unicode="g" horiz-adv-x="719"
d="M474 362h58t58 -1q17 -1 20.5 -4t6.5 -19q5 -32 -0.5 -62.5t-15.5 -59.5q-12 -37 -33 -68t-47 -59q-32 -35 -71 -58t-87 -31q-50 -8 -98.5 -6t-96.5 24q-26 11 -49 22t-45 29q-13 11 -22 24t-20 27q-7 14 -15.5 29.5t-13.5 31.5q-31 89 -18 171.5t60 160.5q27 45 69 73
t93 43q55 17 109.5 16.5t109.5 -11.5q26 -5 48 -17t45 -23q8 -4 8 -10t-6 -11l-50.5 -45.5l-50.5 -45.5q-4 -3 -10.5 -5t-8.5 0q-20 14 -41.5 12l-42.5 -4q-17 -2 -33.5 -6t-31.5 -11q-29 -14 -51.5 -41.5t-32.5 -62t-5.5 -72.5t29.5 -74q23 -33 56.5 -47t74.5 -9q19 2 37 7
t33 18q7 5 13 11t11 13q5 8 10 18.5t3 18.5q-1 5 -4.5 7t-8.5 2t-10.5 -0.5t-9.5 0.5q-7 1 -13 1t-13 1q-22 2 -28 8.5t-7 28.5q-1 13 -1 25t-2 24q-1 20 16 20q23 0 47 -0.5t47 -0.5q8 -1 15.5 -1.5t15.5 -0.5z" />
<glyph glyph-name="H" unicode="H" horiz-adv-x="645"
d="M9 518q0 22 -0.5 49t-0.5 49q0 12 4 16.5t15 4.5h63t62 -1q30 -1 33 -32q1 -11 0.5 -25.5t-0.5 -25.5q-1 -30 -1.5 -60.5t-0.5 -60.5q0 -8 0.5 -16.5t2.5 -16.5q2 -5 7 -9t8 -4h15h106q18 0 28 0.5t15 5t6.5 14t1.5 27.5q2 41 1.5 84t-0.5 84q0 6 -0.5 11.5t1.5 10.5
q1 15 18 15q31 -2 61.5 -1.5t62.5 -1.5q14 -1 16 -4t2 -19q0 -26 0.5 -56.5t0.5 -56.5q-1 -24 -1.5 -47.5t-0.5 -47.5q-1 -28 -0.5 -55.5t0.5 -55.5q1 -60 1 -118v-118q0 -7 0.5 -13t-0.5 -13q-2 -17 -9 -23.5t-24 -6.5q-29 -1 -57 -0.5t-57 -0.5q-16 0 -16 16
q0 13 0.5 25.5t-0.5 25.5q-1 35 -1.5 68.5t-2.5 68.5q-1 10 -2 16t-4 8.5t-9 3.5t-16 1l-63 2t-62 -1q-10 -2 -15.5 -2.5t-8.5 -3.5t-4 -8.5t-1 -16.5q-1 -39 -1 -80.5v-80.5q0 -21 -7.5 -30t-29.5 -12q-1 -1 -3 -1q-29 0 -57 0.5t-57 0.5q-11 0 -15.5 5.5t-5.5 15.5
q-1 13 -1.5 25.5t-0.5 25.5v123.5t1 123.5l0.5 22t1 53l1 65t0.5 59z" />
<glyph glyph-name="h" unicode="h" horiz-adv-x="646"
d="M9 518q0 22 -0.5 49t-0.5 49q0 12 4 16.5t15 4.5h63t62 -1q30 -1 33 -32q1 -11 0.5 -25.5t-0.5 -25.5q-1 -30 -1.5 -60.5t-0.5 -60.5q0 -8 0.5 -16.5t2.5 -16.5q2 -5 7 -9t8 -4h15h106q18 0 28 0.5t15 5t6.5 14t1.5 27.5q2 41 1.5 84t-0.5 84q0 6 -0.5 11.5t1.5 10.5
q1 15 18 15q31 -2 61.5 -1.5t62.5 -1.5q14 -1 16 -4t2 -19q0 -26 0.5 -56.5t0.5 -56.5q-1 -24 -1.5 -47.5t-0.5 -47.5q-1 -28 -0.5 -55.5t0.5 -55.5q1 -60 1 -118v-118q0 -7 0.5 -13t-0.5 -13q-2 -17 -9 -23.5t-24 -6.5q-29 -1 -57 -0.5t-57 -0.5q-16 0 -16 16
q0 13 0.5 25.5t-0.5 25.5q-1 35 -1.5 68.5t-2.5 68.5q-1 10 -2 16t-4 8.5t-9 3.5t-16 1l-63 2t-62 -1q-10 -2 -15.5 -2.5t-8.5 -3.5t-4 -8.5t-1 -16.5q-1 -39 -1 -80.5v-80.5q0 -21 -7.5 -30t-29.5 -12q-1 -1 -3 -1q-29 0 -57 0.5t-57 0.5q-11 0 -15.5 5.5t-5.5 15.5
q-1 13 -1.5 25.5t-0.5 25.5v123.5t1 123.5l0.5 22t1 53l1 65t0.5 59z" />
<glyph glyph-name="I" unicode="I" horiz-adv-x="302"
d="M198 248v-226q0 -16 -4.5 -19.5t-21.5 -1.5q-33 4 -66 1.5t-69 -1.5q-31 -5 -31 26q-1 18 -0.5 34t0.5 35q1 45 1 90v90q0 68 -0.5 144t-1.5 144q0 12 0.5 24t1.5 24q2 14 5.5 17.5t16.5 5.5q38 4 74 3.5t73 -5.5q11 -1 18 -2t8 -12q2 -10 1.5 -25t-0.5 -25
q-1 -66 -2 -148.5t-3 -172.5z" />
<glyph glyph-name="i" unicode="i" horiz-adv-x="302"
d="M198 248v-226q0 -16 -4.5 -19.5t-21.5 -1.5q-33 4 -66 1.5t-69 -1.5q-31 -5 -31 26q-1 18 -0.5 34t0.5 35q1 45 1 90v90q0 68 -0.5 144t-1.5 144q0 12 0.5 24t1.5 24q2 14 5.5 17.5t16.5 5.5q38 4 74 3.5t73 -5.5q11 -1 18 -2t8 -12q2 -10 1.5 -25t-0.5 -25
q-1 -66 -2 -148.5t-3 -172.5z" />
<glyph glyph-name="J" unicode="J" horiz-adv-x="636"
d="M524 240q-8 -52 -27.5 -99t-53.5 -88q-19 -23 -42.5 -37.5t-53.5 -20.5q-20 -4 -38.5 -6.5t-38.5 -1.5q-6 0 -30.5 1.5t-56.5 10t-66.5 27.5t-60.5 55q-13 21 -22 44.5t-15 47.5q-7 29 -10.5 59.5t-7.5 60.5q-1 10 0 16.5t4 10.5t9 6.5t16 4.5h15.5h35.5t43 -0.5t38 -0.5
q17 0 17 -19q-1 -13 -1 -26t2 -26q5 -39 29 -57t64 -12q36 6 53.5 21.5t25.5 52.5q9 48 9 96q0 59 -1.5 112t-2.5 113q-1 17 0 27t5.5 15t13.5 7t26 2q45 2 92 0q25 -1 31.5 -8.5t8.5 -34.5v-34.5v-58t-1 -72l-2 -74.5t-2.5 -66.5t-4.5 -47.5z" />
<glyph glyph-name="j" unicode="j" horiz-adv-x="635"
d="M524 240q-8 -52 -27.5 -99t-53.5 -88q-19 -23 -42.5 -37.5t-53.5 -20.5q-20 -4 -38.5 -6.5t-38.5 -1.5q-6 0 -30.5 1.5t-56.5 10t-66.5 27.5t-60.5 55q-13 21 -22 44.5t-15 47.5q-7 29 -10.5 59.5t-7.5 60.5q-1 10 0 16.5t4 10.5t9 6.5t16 4.5h15.5h35.5t43 -0.5t38 -0.5
q17 0 17 -19q-1 -13 -1 -26t2 -26q5 -39 29 -57t64 -12q36 6 53.5 21.5t25.5 52.5q9 48 9 96q0 59 -1.5 112t-2.5 113q-1 17 0 27t5.5 15t13.5 7t26 2q45 2 92 0q25 -1 31.5 -8.5t8.5 -34.5v-34.5v-58t-1 -72l-2 -74.5t-2.5 -66.5t-4.5 -47.5z" />
<glyph glyph-name="K" unicode="K" horiz-adv-x="656"
d="M3 609q0 20 5.5 24.5t25.5 5.5h44t44 -1q26 -1 35 -12.5t8 -38.5q-2 -37 -0.5 -74t1.5 -74q0 -7 4 -9t10 2l63.5 55.5l63.5 56.5q18 16 38 39t38 40q11 11 23 14t27 2q55 -3 111 -3q8 0 16.5 -1t11.5 -10q6 -19 -11 -33q-20 -17 -41 -41t-41 -42l-62.5 -56.5l-62.5 -56.5
q-8 -7 -12 -11t-4.5 -7.5t1.5 -8.5t7 -13l58 -99l58 -98l39.5 -62.5l39.5 -61.5q4 -6 7 -11t-2 -12q-7 -13 -25 -13q-9 1 -28 0.5t-39.5 -0.5t-39 0.5t-26.5 3.5t-14 10.5t-11 17t-9.5 19t-8.5 16.5l-54 90.5l-52 91.5l-12 18q-8 13 -18 4q-9 -8 -17.5 -16.5t-17.5 -16.5
q-8 -7 -9 -16t-1 -18q0 -39 0.5 -77.5t0.5 -77.5v-26q-2 -20 -21 -20q-29 2 -57 0t-57 0q-16 2 -21.5 9t-5.5 24q-1 38 -1 79v79q0 33 0.5 66t0.5 66q-1 0 -1 31v75.5t0.5 93.5t0.5 84z" />
<glyph glyph-name="k" unicode="k" horiz-adv-x="656"
d="M3 609q0 20 5.5 24.5t25.5 5.5h44t44 -1q26 -1 35 -12.5t8 -38.5q-2 -37 -0.5 -74t1.5 -74q0 -7 4 -9t10 2l63.5 55.5l63.5 56.5q18 16 38 39t38 40q11 11 23 14t27 2q55 -3 111 -3q8 0 16.5 -1t11.5 -10q6 -19 -11 -33q-20 -17 -41 -41t-41 -42l-62.5 -56.5l-62.5 -56.5
q-8 -7 -12 -11t-4.5 -7.5t1.5 -8.5t7 -13l58 -99l58 -98l39.5 -62.5l39.5 -61.5q4 -6 7 -11t-2 -12q-7 -13 -25 -13q-9 1 -28 0.5t-39.5 -0.5t-39 0.5t-26.5 3.5t-14 10.5t-11 17t-9.5 19t-8.5 16.5l-54 90.5l-52 91.5l-12 18q-8 13 -18 4q-9 -8 -17.5 -16.5t-17.5 -16.5
q-8 -7 -9 -16t-1 -18q0 -39 0.5 -77.5t0.5 -77.5v-26q-2 -20 -21 -20q-29 2 -57 0t-57 0q-16 2 -21.5 9t-5.5 24q-1 38 -1 79v79q0 33 0.5 66t0.5 66q-1 0 -1 31v75.5t0.5 93.5t0.5 84z" />
<glyph glyph-name="L" unicode="L" horiz-adv-x="521"
d="M3 616q0 18 16 19q29 2 54.5 1.5t54.5 0.5q23 1 30 -6t8 -30q3 -71 3.5 -147.5t3.5 -147.5q1 -30 -0.5 -57t0.5 -56q1 -19 5 -23t24 -4q35 -2 70 -2h70h47t20.5 -6t6 -20t2.5 -42q2 -20 2.5 -38.5t2.5 -38.5q1 -20 -21 -20q-23 1 -47 1.5t-48 0.5h-124t-123 1h-11.5
t-10.5 1q-20 2 -27 9.5t-7 28.5q0 42 0.5 84.5t0.5 84.5v21v55t0.5 77.5t0 89l-1 88t-1.5 75.5z" />
<glyph glyph-name="l" unicode="l" horiz-adv-x="521"
d="M3 616q0 18 16 19q29 2 54.5 1.5t54.5 0.5q23 1 30 -6t8 -30q3 -71 3.5 -147.5t3.5 -147.5q1 -30 -0.5 -57t0.5 -56q1 -19 5 -23t24 -4q35 -2 70 -2h70h47t20.5 -6t6 -20t2.5 -42q2 -20 2.5 -38.5t2.5 -38.5q1 -20 -21 -20q-23 1 -47 1.5t-48 0.5h-124t-123 1h-11.5
t-10.5 1q-20 2 -27 9.5t-7 28.5q0 42 0.5 84.5t0.5 84.5v21v55t0.5 77.5t0 89l-1 88t-1.5 75.5z" />
<glyph glyph-name="M" unicode="M" horiz-adv-x="980"
d="M181 299q0 -7 -0.5 -8.5t0.5 -5.5l6 -131l6 -131q1 -14 -2 -17t-19 -5q-17 -2 -33 -2h-32h-45t-44 1q-15 0 -12 15q-1 57 -0.5 113.5t0.5 113.5q-3 184 -3 368q-1 17 3 21t20 5h26.5h39.5h40.5h28.5q16 2 25.5 -4t17.5 -20l59.5 -110.5l60.5 -109.5l72 -132
q8 -14 13 -13.5t13 14.5l27 45l27 45q20 34 41.5 66.5t41.5 67.5l34.5 61.5l32.5 62.5q8 14 17.5 22.5t26.5 6.5q6 -1 25.5 -1h41t39.5 0.5t20 0.5q17 0 26 -1t13.5 -5.5t5 -14t0.5 -27.5q0 -99 1 -197t3 -197q1 -44 0.5 -84.5t1.5 -83.5q1 -23 -2.5 -27t-25.5 -3
q-9 0 -27.5 0.5t-38.5 0.5h-38h-25q-14 -1 -18.5 3t-4.5 19q-1 69 -1.5 136t-1.5 136q0 8 -1 11q0 5 -4 9q-2 2 -3.5 0t-2.5 -3l-9 -13t-8 -13l-76.5 -131.5l-76.5 -132.5q-5 -8 -11 -14t-20 -6h-87q-22 0 -29 8.5t-15 25.5l-57 118l-59 117q-4 8 -8.5 16t-9.5 16
q-1 2 -3.5 3.5t-2.5 -5.5z" />
<glyph glyph-name="m" unicode="m" horiz-adv-x="979"
d="M181 299q0 -7 -0.5 -8.5t0.5 -5.5l6 -131l6 -131q1 -14 -2 -17t-19 -5q-17 -2 -33 -2h-32h-45t-44 1q-15 0 -12 15q-1 57 -0.5 113.5t0.5 113.5q-3 184 -3 368q-1 17 3 21t20 5h26.5h39.5h40.5h28.5q16 2 25.5 -4t17.5 -20l59.5 -110.5l60.5 -109.5l72 -132
q8 -14 13 -13.5t13 14.5l27 45l27 45q20 34 41.5 66.5t41.5 67.5l34.5 61.5l32.5 62.5q8 14 17.5 22.5t26.5 6.5q6 -1 25.5 -1h41t39.5 0.5t20 0.5q17 0 26 -1t13.5 -5.5t5 -14t0.5 -27.5q0 -99 1 -197t3 -197q1 -44 0.5 -84.5t1.5 -83.5q1 -23 -2.5 -27t-25.5 -3
q-9 0 -27.5 0.5t-38.5 0.5h-38h-25q-14 -1 -18.5 3t-4.5 19q-1 69 -1.5 136t-1.5 136q0 8 -1 11q0 5 -4 9q-2 2 -3.5 0t-2.5 -3l-9 -13t-8 -13l-76.5 -131.5l-76.5 -132.5q-5 -8 -11 -14t-20 -6h-87q-22 0 -29 8.5t-15 25.5l-57 118l-59 117q-4 8 -8.5 16t-9.5 16
q-1 2 -3.5 3.5t-2.5 -5.5z" />
<glyph glyph-name="n" unicode="n" horiz-adv-x="750"
d="M4 601v22q2 17 17 14q38 1 71.5 0t68.5 1q13 1 19.5 -3.5t13.5 -13.5q27 -39 54 -83l55.5 -87.5l58 -86t60.5 -78.5q7 -8 17 -18.5t14 -10.5t5 15t1 26q-1 33 -1.5 72t-1.5 78.5t-1.5 78.5t-1.5 72q-1 22 3.5 28t25.5 7q29 2 57 3t57 0q26 0 32 -6.5t6 -31.5
q0 -21 -0.5 -48l-1 -55l-1 -55t-0.5 -48q2 -55 3.5 -110t3.5 -111q2 -38 2 -75.5t1 -75.5q0 -13 -3 -16.5t-16 -3.5h-84.5t-85.5 2q-6 0 -13 3.5t-12 8.5q-29 27 -50 54q-11 13 -27 35t-33.5 48.5l-36 55l-34.5 52.5l-27.5 41.5l-15.5 23.5q-1 2 -4 2t-5 1q-1 -1 -1 -2
q-1 -1 -1 -5v-46.5t1 -46.5l2 -96t3 -96q0 -23 -7 -30t-30 -6l-31.5 2t-31.5 1q-16 -1 -37.5 0t-38.5 -2q-13 -3 -16 10q-2 8 -1 13t1 13q-3 68 -2 135t-1 134q-1 36 0 72t1 72l-0.5 17.5t-0.5 41.5t0.5 49.5t0.5 42.5z" />
<glyph glyph-name="N" unicode="N" horiz-adv-x="750"
d="M4 601v22q2 17 17 14q38 1 71.5 0t68.5 1q13 1 19.5 -3.5t13.5 -13.5q27 -39 54 -83l55.5 -87.5l58 -86t60.5 -78.5q7 -8 17 -18.5t14 -10.5t5 15t1 26q-1 33 -1.5 72t-1.5 78.5t-1.5 78.5t-1.5 72q-1 22 3.5 28t25.5 7q29 2 57 3t57 0q26 0 32 -6.5t6 -31.5
q0 -21 -0.5 -48l-1 -55l-1 -55t-0.5 -48q2 -55 3.5 -110t3.5 -111q2 -38 2 -75.5t1 -75.5q0 -13 -3 -16.5t-16 -3.5h-84.5t-85.5 2q-6 0 -13 3.5t-12 8.5q-29 27 -50 54q-11 13 -27 35t-33.5 48.5l-36 55l-34.5 52.5l-27.5 41.5l-15.5 23.5q-1 2 -4 2t-5 1q-1 -1 -1 -2
q-1 -1 -1 -5v-46.5t1 -46.5l2 -96t3 -96q0 -23 -7 -30t-30 -6l-31.5 2t-31.5 1q-16 -1 -37.5 0t-38.5 -2q-13 -3 -16 10q-2 8 -1 13t1 13q-3 68 -2 135t-1 134q-1 36 0 72t1 72l-0.5 17.5t-0.5 41.5t0.5 49.5t0.5 42.5z" />
<glyph glyph-name="O" unicode="O" horiz-adv-x="728"
d="M632 326q-5 -46 -15 -89t-29.5 -81.5t-49 -71t-71.5 -56.5q-33 -19 -68 -29t-73 -10q-62 0 -110.5 15.5t-85 40t-62 55t-42 60t-24.5 54.5t-9 40q-2 27 -4.5 54t2.5 55q10 49 33.5 96t60 85t86.5 64.5t112 33.5q37 5 73.5 -1t71.5 -19q60 -23 101 -64.5t67 -100.5
q14 -32 26 -63t10 -68zM466 330q0 12 -0.5 18.5t-1.5 10.5t-2 7.5t-2 9.5q-3 15 -16.5 32.5t-33 33t-43 26t-45.5 10.5q-45 0 -75.5 -18t-49 -44.5t-27.5 -57.5t-10 -57q-1 -17 8.5 -39.5t29 -43t48 -35t64.5 -14.5q40 0 69 16.5t48.5 40.5t29 52t9.5 52z" />
<glyph glyph-name="o" unicode="o"
d="M634 326q-5 -46 -15 -89t-29.5 -81.5t-49 -71t-71.5 -56.5q-33 -19 -68 -29t-73 -10q-62 0 -110.5 15.5t-85 40t-62 55t-42 60t-24.5 54.5t-9 40q-2 27 -4.5 54t2.5 55q10 49 33.5 96t60 85t86.5 64.5t112 33.5q37 5 73.5 -1t71.5 -19q60 -23 101 -64.5t67 -100.5
q14 -32 26 -63t10 -68zM468 330q0 12 -0.5 18.5t-1.5 10.5t-2 7.5t-2 9.5q-3 15 -16.5 32.5t-33 33t-43 26t-45.5 10.5q-45 0 -75.5 -18t-49 -44.5t-27.5 -57.5t-10 -57q-1 -17 8.5 -39.5t29 -43t48 -35t64.5 -14.5q40 0 69 16.5t48.5 40.5t29 52t9.5 52z" />
<glyph glyph-name="p" unicode="p" horiz-adv-x="635"
d="M11 527q1 17 0 34.5t-1 35.5q1 21 8 29t28 10q17 2 33 2h32q54 -1 108 -1t108 -2q56 -3 105 -21q14 -5 35.5 -21.5t41 -42t33.5 -58t14 -68.5q0 -56 -19 -95t-49 -66.5t-66.5 -45t-71.5 -28.5q-59 -18 -122 -12q-21 2 -25 -4t-4 -29q-1 -30 -0.5 -55.5t2.5 -54.5
q1 -21 -6 -30t-28 -8q-31 0 -65 -1.5t-65 0.5q-14 1 -18.5 6.5t-6.5 20.5q-2 27 -1 54t0 54q-2 51 -2.5 100.5t-2.5 100.5l0.5 21.5t1 52t1.5 64.5t2 58zM225 520q-20 -2 -24 -6t-3 -24q0 -27 0.5 -64t1.5 -64q1 -14 5 -19t17 -4q10 1 34.5 2t50 9t44.5 25t19 50
q0 26 -10.5 43.5t-26 28.5t-34 16t-34.5 6.5t-27 1t-13 -0.5z" />
<glyph glyph-name="P" unicode="P" horiz-adv-x="635"
d="M11 527q1 17 0 34.5t-1 35.5q1 21 8 29t28 10q17 2 33 2h32q54 -1 108 -1t108 -2q56 -3 105 -21q14 -5 35.5 -21.5t41 -42t33.5 -58t14 -68.5q0 -56 -19 -95t-49 -66.5t-66.5 -45t-71.5 -28.5q-59 -18 -122 -12q-21 2 -25 -4t-4 -29q-1 -30 -0.5 -55.5t2.5 -54.5
q1 -21 -6 -30t-28 -8q-31 0 -65 -1.5t-65 0.5q-14 1 -18.5 6.5t-6.5 20.5q-2 27 -1 54t0 54q-2 51 -2.5 100.5t-2.5 100.5l0.5 21.5t1 52t1.5 64.5t2 58zM225 520q-20 -2 -24 -6t-3 -24q0 -27 0.5 -64t1.5 -64q1 -14 5 -19t17 -4q10 1 34.5 2t50 9t44.5 25t19 50
q0 26 -10.5 43.5t-26 28.5t-34 16t-34.5 6.5t-27 1t-13 -0.5z" />
<glyph glyph-name="q" unicode="q" horiz-adv-x="792"
d="M679 27q13 -13 0 -21l-55 -38.5l-55 -37.5q-12 -8 -23 5l-27.5 33.5l-27.5 34.5q-12 17 -32 10q-16 -6 -32 -11t-33 -8q-42 -8 -82 -0.5t-79 21.5q-16 5 -31.5 12t-30.5 15q-47 23 -83.5 56.5t-55.5 83.5q-7 18 -12 39.5t-8.5 42.5t-5 40t-1.5 32q0 22 6.5 48t18.5 52.5
t29 52t38 46.5q50 50 110 76.5t127 34.5q45 6 88.5 -5t82.5 -36q66 -40 102 -97.5t51 -132.5q11 -58 -0.5 -110t-37.5 -103l-12 -26t-3.5 -16.5t7 -16t19.5 -22.5l24 -27.5zM471 256q14 42 11.5 84t-26.5 76q-22 30 -49 43.5t-51.5 17.5t-42 2.5t-20.5 -1.5
q-20 -5 -38.5 -17.5t-29.5 -30.5q-16 -25 -28 -55t-12 -56t5.5 -39.5l12.5 -30.5q20 -46 62 -64.5t93 -15.5q43 2 71 24.5t42 62.5z" />
<glyph glyph-name="Q" unicode="Q" horiz-adv-x="792"
d="M679 27q13 -13 0 -21l-55 -38.5l-55 -37.5q-12 -8 -23 5l-27.5 33.5l-27.5 34.5q-12 17 -32 10q-16 -6 -32 -11t-33 -8q-42 -8 -82 -0.5t-79 21.5q-16 5 -31.5 12t-30.5 15q-47 23 -83.5 56.5t-55.5 83.5q-7 18 -12 39.5t-8.5 42.5t-5 40t-1.5 32q0 22 6.5 48t18.5 52.5
t29 52t38 46.5q50 50 110 76.5t127 34.5q45 6 88.5 -5t82.5 -36q66 -40 102 -97.5t51 -132.5q11 -58 -0.5 -110t-37.5 -103l-12 -26t-3.5 -16.5t7 -16t19.5 -22.5l24 -27.5zM471 256q14 42 11.5 84t-26.5 76q-22 30 -49 43.5t-51.5 17.5t-42 2.5t-20.5 -1.5
q-20 -5 -38.5 -17.5t-29.5 -30.5q-16 -25 -28 -55t-12 -56t5.5 -39.5l12.5 -30.5q20 -46 62 -64.5t93 -15.5q43 2 71 24.5t42 62.5z" />
<glyph glyph-name="R" unicode="R" horiz-adv-x="656"
d="M235 638q54 -2 107.5 -6t105.5 -25q26 -11 47 -26.5t36 -38.5q23 -34 32 -71.5t6 -74t-16 -70t-34 -60.5q-10 -12 -24.5 -21.5l-28.5 -18.5q-8 -5 -9.5 -10t3.5 -13l34.5 -57.5l35.5 -57.5q7 -11 17 -30t18 -30q7 -12 2 -24q-3 -8 -8.5 -9t-12.5 -1q-32 2 -63 1t-63 -1
q-11 0 -16 4t-10 12l-41.5 78.5t-42.5 78.5q-4 7 -8 13l-8 12q-8 15 -27 15q-11 0 -20.5 1.5t-20.5 1.5q-16 1 -21.5 -3.5t-5.5 -21.5l2 -78l2 -78q1 -14 -3 -20t-17 -9q-5 -2 -11 -2h-11q-26 0 -50.5 -0.5t-50.5 -0.5q-8 0 -15 0.5t-15 1.5q-17 2 -20 19q-1 8 -2.5 16.5
t-1.5 16.5q1 40 1 80t2 80q1 38 1 74.5v74.5q1 61 0 121.5t-1 121.5q0 22 6 27.5t29 4.5h84l11.5 0.5t28.5 1.5t35 1.5t32 -0.5zM201 413q-1 -14 -1 -27v-41q0 -17 18 -17q20 2 39.5 2.5t39.5 2.5q20 3 38.5 11t33.5 24q11 12 14.5 29t0 33.5t-13.5 29t-25 16.5
q-68 17 -133 14q-3 -1 -6.5 -5.5t-3.5 -7.5q-1 -14 -1 -32v-32z" />
<glyph glyph-name="r" unicode="r" horiz-adv-x="656"
d="M235 638q54 -2 107.5 -6t105.5 -25q26 -11 47 -26.5t36 -38.5q23 -34 32 -71.5t6 -74t-16 -70t-34 -60.5q-10 -12 -24.5 -21.5l-28.5 -18.5q-8 -5 -9.5 -10t3.5 -13l34.5 -57.5l35.5 -57.5q7 -11 17 -30t18 -30q7 -12 2 -24q-3 -8 -8.5 -9t-12.5 -1q-32 2 -63 1t-63 -1
q-11 0 -16 4t-10 12l-41.5 78.5t-42.5 78.5q-4 7 -8 13l-8 12q-8 15 -27 15q-11 0 -20.5 1.5t-20.5 1.5q-16 1 -21.5 -3.5t-5.5 -21.5l2 -78l2 -78q1 -14 -3 -20t-17 -9q-5 -2 -11 -2h-11q-26 0 -50.5 -0.5t-50.5 -0.5q-8 0 -15 0.5t-15 1.5q-17 2 -20 19q-1 8 -2.5 16.5
t-1.5 16.5q1 40 1 80t2 80q1 38 1 74.5v74.5q1 61 0 121.5t-1 121.5q0 22 6 27.5t29 4.5h84l11.5 0.5t28.5 1.5t35 1.5t32 -0.5zM201 413q-1 -14 -1 -27v-41q0 -17 18 -17q20 2 39.5 2.5t39.5 2.5q20 3 38.5 11t33.5 24q11 12 14.5 29t0 33.5t-13.5 29t-25 16.5
q-68 17 -133 14q-3 -1 -6.5 -5.5t-3.5 -7.5q-1 -14 -1 -32v-32z" />
<glyph glyph-name="s" unicode="s" horiz-adv-x="584"
d="M384 631q26 -11 44 -30l37 -38q6 -6 4 -14t-7 -13l-36 -39.5l-37 -38.5q-8 -9 -20 -2l-20 16t-21 14l-28 15.5t-28 12.5q-17 6 -30.5 1.5t-20.5 -18.5q-6 -12 -3.5 -28.5t14.5 -25.5q16 -11 32.5 -20.5l33.5 -18.5l48.5 -27.5t47.5 -27.5t41.5 -33.5t35.5 -40.5
q20 -26 24.5 -56t0.5 -61q-14 -120 -131 -161q-46 -16 -90.5 -14.5t-90.5 14.5q-42 11 -77 31.5l-70 42.5q-6 3 -12 9q-9 8 -13.5 12.5t-5.5 9.5t1.5 11.5t8.5 17.5q11 21 20.5 43l19.5 44q4 8 7 15t8 14q3 5 8 6.5t10 -3.5l22 -22l22 -22q26 -25 57.5 -39.5t64.5 -25.5
q13 -4 30 -1q15 3 25 12t13.5 21t0.5 25t-14 24q-13 13 -28 23.5t-31 19.5q-26 16 -53 30.5t-55 27.5q-42 20 -65.5 52.5t-35.5 75.5q-15 62 21 112q14 20 28 33.5t44 28.5q41 20 80 25.5t71.5 3t58 -9.5t39.5 -13z" />
<glyph glyph-name="S" unicode="S" horiz-adv-x="584"
d="M384 631q26 -11 44 -30l37 -38q6 -6 4 -14t-7 -13l-36 -39.5l-37 -38.5q-8 -9 -20 -2l-20 16t-21 14l-28 15.5t-28 12.5q-17 6 -30.5 1.5t-20.5 -18.5q-6 -12 -3.5 -28.5t14.5 -25.5q16 -11 32.5 -20.5l33.5 -18.5l48.5 -27.5t47.5 -27.5t41.5 -33.5t35.5 -40.5
q20 -26 24.5 -56t0.5 -61q-14 -120 -131 -161q-46 -16 -90.5 -14.5t-90.5 14.5q-42 11 -77 31.5l-70 42.5q-6 3 -12 9q-9 8 -13.5 12.5t-5.5 9.5t1.5 11.5t8.5 17.5q11 21 20.5 43l19.5 44q4 8 7 15t8 14q3 5 8 6.5t10 -3.5l22 -22l22 -22q26 -25 57.5 -39.5t64.5 -25.5
q13 -4 30 -1q15 3 25 12t13.5 21t0.5 25t-14 24q-13 13 -28 23.5t-31 19.5q-26 16 -53 30.5t-55 27.5q-42 20 -65.5 52.5t-35.5 75.5q-15 62 21 112q14 20 28 33.5t44 28.5q41 20 80 25.5t71.5 3t58 -9.5t39.5 -13z" />
<glyph glyph-name="T" unicode="T" horiz-adv-x="646"
d="M350 32q0 -20 -5.5 -25.5t-25.5 -6.5q-26 0 -51.5 -0.5t-51.5 -0.5q-16 -1 -20 3t-5 20q-1 63 -1 125t-1 125q-1 35 -1.5 77.5t-2.5 77.5q-1 15 -1 22.5t-3 11t-11 4t-24 0.5h-103q-11 0 -17.5 1t-10 4t-5 9t-2.5 17q-2 30 -2.5 60.5t-0.5 60.5q0 10 6 13.5t14 3.5
q120 3 239 3t239 -4q17 -1 27 -9t11 -22q2 -30 2.5 -59.5t1.5 -58.5q0 -18 -19 -16l-39 2t-38 1q-39 1 -78 0q-14 -1 -17 -4.5t-3 -17.5v-50t-0.5 -74t0 -85.5t0 -85t-0.5 -73.5v-49z" />
<glyph glyph-name="t" unicode="t" horiz-adv-x="646"
d="M350 32q0 -20 -5.5 -25.5t-25.5 -6.5q-26 0 -51.5 -0.5t-51.5 -0.5q-16 -1 -20 3t-5 20q-1 63 -1 125t-1 125q-1 35 -1.5 77.5t-2.5 77.5q-1 15 -1 22.5t-3 11t-11 4t-24 0.5h-103q-11 0 -17.5 1t-10 4t-5 9t-2.5 17q-2 30 -2.5 60.5t-0.5 60.5q0 10 6 13.5t14 3.5
q120 3 239 3t239 -4q17 -1 27 -9t11 -22q2 -30 2.5 -59.5t1.5 -58.5q0 -18 -19 -16l-39 2t-38 1q-39 1 -78 0q-14 -1 -17 -4.5t-3 -17.5v-50t-0.5 -74t0 -85.5t0 -85t-0.5 -73.5v-49z" />
<glyph glyph-name="U" unicode="U" horiz-adv-x="656"
d="M6 611q0 18 4 22t24 4q30 -2 60 -0.5t60 0.5q17 -1 20 -3.5t3 -19.5l-2 -61.5l-2 -61.5q-1 -45 -0.5 -88.5t0.5 -87.5q0 -25 6 -48.5t20 -44.5q37 -61 105 -49q23 3 36 22q43 58 40 126q-2 60 -0.5 120t-0.5 120q0 5 -0.5 14.5t-1 20l-1 20.5t-0.5 15q0 6 17.5 7.5
t41.5 1.5t47.5 -1.5t35.5 -2.5q9 -1 14.5 -0.5t9 0t5 -4t2.5 -12.5q2 -26 3.5 -56.5t2.5 -55.5q2 -37 0.5 -73.5t-2.5 -73.5q0 -25 -1.5 -50t-5.5 -50q-11 -73 -43 -132.5t-97 -100.5q-20 -13 -45.5 -20t-50 -10t-45.5 -3t-33 1q-8 1 -27.5 4.5t-44 13.5t-51.5 27t-49 44
t-36.5 65.5t-14.5 91.5q-1 47 -1 93.5v93.5l-0.5 19.5t-1 48t-0.5 60v55.5z" />
<glyph glyph-name="u" unicode="u" horiz-adv-x="656"
d="M6 611q0 18 4 22t24 4q30 -2 60 -0.5t60 0.5q17 -1 20 -3.5t3 -19.5l-2 -61.5l-2 -61.5q-1 -45 -0.5 -88.5t0.5 -87.5q0 -25 6 -48.5t20 -44.5q37 -61 105 -49q23 3 36 22q43 58 40 126q-2 60 -0.5 120t-0.5 120q0 5 -0.5 14.5t-1 20l-1 20.5t-0.5 15q0 6 17.5 7.5
t41.5 1.5t47.5 -1.5t35.5 -2.5q9 -1 14.5 -0.5t9 0t5 -4t2.5 -12.5q2 -26 3.5 -56.5t2.5 -55.5q2 -37 0.5 -73.5t-2.5 -73.5q0 -25 -1.5 -50t-5.5 -50q-11 -73 -43 -132.5t-97 -100.5q-20 -13 -45.5 -20t-50 -10t-45.5 -3t-33 1q-8 1 -27.5 4.5t-44 13.5t-51.5 27t-49 44
t-36.5 65.5t-14.5 91.5q-1 47 -1 93.5v93.5l-0.5 19.5t-1 48t-0.5 60v55.5z" />
<glyph glyph-name="V" unicode="V" horiz-adv-x="719"
d="M177 635q9 0 12 -5.5t5 -10.5q5 -10 8 -20l6 -20l37 -137.5l37 -137.5q3 -10 8 -22q2 -2 4.5 -3t4.5 -3q2 0 5 5q4 10 6 14q29 76 61 151.5t55 153.5q11 35 44 35h40h49.5h43h20.5q14 -3 10 -17q0 -4 -1.5 -7.5t-3.5 -7.5l-21 -56t-21 -55l-60.5 -140.5l-59.5 -139.5
l-39 -94.5l-39 -95.5q-8 -20 -14 -21.5t-25 -1.5h-167q-9 1 -11 7t-4 13l-15.5 51.5l-14.5 51.5l-38.5 145.5l-38.5 144.5q-12 43 -25 85l-26 84q-2 6 -3.5 11.5t-3.5 11.5q-5 19 1 25t26 5q4 0 24 0.5t44.5 0.5h47.5h32z" />
<glyph glyph-name="v" unicode="v" horiz-adv-x="719"
d="M177 635q9 0 12 -5.5t5 -10.5q5 -10 8 -20l6 -20l37 -137.5l37 -137.5q3 -10 8 -22q2 -2 4.5 -3t4.5 -3q2 0 5 5q4 10 6 14q29 76 61 151.5t55 153.5q11 35 44 35h40h49.5h43h20.5q14 -3 10 -17q0 -4 -1.5 -7.5t-3.5 -7.5l-21 -56t-21 -55l-60.5 -140.5l-59.5 -139.5
l-39 -94.5l-39 -95.5q-8 -20 -14 -21.5t-25 -1.5h-167q-9 1 -11 7t-4 13l-15.5 51.5l-14.5 51.5l-38.5 145.5l-38.5 144.5q-12 43 -25 85l-26 84q-2 6 -3.5 11.5t-3.5 11.5q-5 19 1 25t26 5q4 0 24 0.5t44.5 0.5h47.5h32z" />
<glyph glyph-name="W" unicode="W" horiz-adv-x="927"
d="M604 308q2 0 3.5 4.5t2.5 11t1.5 13t1.5 10.5q11 63 21 130.5l20 130.5q1 5 2 9t2 9q3 12 16 12q35 -2 70 -1t70 -1q18 -2 21.5 -7.5t0.5 -23.5q-11 -57 -21.5 -122.5t-21.5 -122.5l-23.5 -133l-22.5 -132q-3 -17 -7.5 -34.5t-7.5 -33.5q-4 -16 -7 -19.5t-19 -4.5
q-35 -1 -69.5 0.5t-69.5 -0.5q-16 -1 -24.5 6t-13.5 21l-25.5 61.5l-25.5 60.5l-26 59.5l-26 59.5q-2 2 -3.5 5.5t-5.5 3.5q-3 0 -5 -4t-4 -7q-34 -59 -61.5 -121l-53.5 -125q-2 -10 -6 -13q-4 -4 -8 -7t-9 -3q-29 -2 -57 -0.5t-57 -0.5q-14 0 -18 14l-24.5 105.5
l-24.5 105.5l-22.5 103l-23.5 102q-4 18 -8 40l-8 45.5t-8.5 45.5l-8.5 40q-1 4 -2 7t-2 7q-2 14 4.5 19t20.5 4q9 -1 29 -1.5t42.5 -0.5t42 0.5t28.5 1.5q8 0 10.5 -3t4.5 -9q4 -14 7.5 -31l7 -35l7 -35.5t6.5 -30.5l19 -73.5t19 -72.5q1 -3 2.5 -6.5t6.5 -3.5q3 0 7 8
l42 69t40 70q17 35 55 32q21 -2 42 -0.5t43 0.5q8 0 12 -4t8 -12q19 -45 39 -87.5l40 -86.5q2 -5 5.5 -11.5t7.5 -6.5z" />
<glyph glyph-name="w" unicode="w" horiz-adv-x="927"
d="M604 308q2 0 3.5 4.5t2.5 11t1.5 13t1.5 10.5q11 63 21 130.5l20 130.5q1 5 2 9t2 9q3 12 16 12q35 -2 70 -1t70 -1q18 -2 21.5 -7.5t0.5 -23.5q-11 -57 -21.5 -122.5t-21.5 -122.5l-23.5 -133l-22.5 -132q-3 -17 -7.5 -34.5t-7.5 -33.5q-4 -16 -7 -19.5t-19 -4.5
q-35 -1 -69.5 0.5t-69.5 -0.5q-16 -1 -24.5 6t-13.5 21l-25.5 61.5l-25.5 60.5l-26 59.5l-26 59.5q-2 2 -3.5 5.5t-5.5 3.5q-3 0 -5 -4t-4 -7q-34 -59 -61.5 -121l-53.5 -125q-2 -10 -6 -13q-4 -4 -8 -7t-9 -3q-29 -2 -57 -0.5t-57 -0.5q-14 0 -18 14l-24.5 105.5
l-24.5 105.5l-22.5 103l-23.5 102q-4 18 -8 40l-8 45.5t-8.5 45.5l-8.5 40q-1 4 -2 7t-2 7q-2 14 4.5 19t20.5 4q9 -1 29 -1.5t42.5 -0.5t42 0.5t28.5 1.5q8 0 10.5 -3t4.5 -9q4 -14 7.5 -31l7 -35l7 -35.5t6.5 -30.5l19 -73.5t19 -72.5q1 -3 2.5 -6.5t6.5 -3.5q3 0 7 8
l42 69t40 70q17 35 55 32q21 -2 42 -0.5t43 0.5q8 0 12 -4t8 -12q19 -45 39 -87.5l40 -86.5q2 -5 5.5 -11.5t7.5 -6.5z" />
<glyph glyph-name="X" unicode="X" horiz-adv-x="698"
d="M107 639h73q18 0 25 -15q9 -21 21 -39.5t25.5 -36.5l27 -36.5t25.5 -37.5q6 -11 10 -10.5t11 11.5l42 66l41 67q4 8 7.5 13.5t8.5 9t13.5 5t23.5 1.5h75q14 0 32 0.5t32 -0.5q16 -1 14 -10t-10 -22l-53.5 -77l-52.5 -78l-41.5 -60.5l-41.5 -59.5q-8 -11 -7.5 -19.5
t6.5 -19.5l21 -34t22 -34l64.5 -88.5l65.5 -87.5q1 -2 5.5 -7t8.5 -11.5t6.5 -13t0.5 -11.5q-2 -3 -12.5 -4t-18.5 -1q-36 0 -71.5 1.5t-70.5 0.5q-14 -1 -22.5 4.5t-15.5 15.5l-75 117q-2 4 -4.5 8t-5.5 8q-9 9 -16 -1l-14 -18t-14 -19l-35.5 -52l-35.5 -52q-7 -10 -19 -12
h-72.5t-73.5 1q-7 0 -11 1q-25 6 -10 27l76.5 108l77.5 108q8 11 15 22t15 22q8 10 7 18t-7 17l-54 86l-54 87l-35 57l-36 57q-18 28 18 28h46h27z" />
<glyph glyph-name="x" unicode="x" horiz-adv-x="698"
d="M107 639h73q18 0 25 -15q9 -21 21 -39.5t25.5 -36.5l27 -36.5t25.5 -37.5q6 -11 10 -10.5t11 11.5l42 66l41 67q4 8 7.5 13.5t8.5 9t13.5 5t23.5 1.5h75q14 0 32 0.5t32 -0.5q16 -1 14 -10t-10 -22l-53.5 -77l-52.5 -78l-41.5 -60.5l-41.5 -59.5q-8 -11 -7.5 -19.5
t6.5 -19.5l21 -34t22 -34l64.5 -88.5l65.5 -87.5q1 -2 5.5 -7t8.5 -11.5t6.5 -13t0.5 -11.5q-2 -3 -12.5 -4t-18.5 -1q-36 0 -71.5 1.5t-70.5 0.5q-14 -1 -22.5 4.5t-15.5 15.5l-75 117q-2 4 -4.5 8t-5.5 8q-9 9 -16 -1l-14 -18t-14 -19l-35.5 -52l-35.5 -52q-7 -10 -19 -12
h-72.5t-73.5 1q-7 0 -11 1q-25 6 -10 27l76.5 108l77.5 108q8 11 15 22t15 22q8 10 7 18t-7 17l-54 86l-54 87l-35 57l-36 57q-18 28 18 28h46h27z" />
<glyph glyph-name="Y" unicode="Y" horiz-adv-x="677"
d="M169 637q8 0 12 -3.5t8 -9.5q23 -34 46 -77.5t46 -78.5l5.5 -7.5l5.5 -7.5q8 -11 18 0l9 12q12 14 30 39l34.5 49l28.5 42t13 19q9 18 20.5 21t28.5 3q13 0 33 -0.5t39.5 -0.5h34.5h18q7 -2 9.5 -8t-2.5 -13q-2 -5 -5.5 -10t-7.5 -9q-20 -23 -39.5 -50.5l-40 -56
l-40.5 -55.5t-39 -50l-44 -50q-20 -20 -19 -50q4 -60 2.5 -130t2.5 -130q0 -11 -4 -17t-16 -7q-30 -2 -57 -1.5t-56 -0.5q-14 0 -18.5 5.5t-6.5 19.5q0 9 -0.5 33.5t-1 54t-0.5 57.5v43q0 13 -1 30t-4 34t-8 32.5t-14 27.5q-23 32 -42.5 65.5t-40.5 65.5q-20 29 -40.5 66.5
t-40.5 66.5q-3 5 -7 8.5t-7 8.5q-6 8 -2.5 13.5t13.5 6.5h22t41 -0.5t46 -0.5t38 1z" />
<glyph glyph-name="y" unicode="y" horiz-adv-x="677"
d="M169 637q8 0 12 -3.5t8 -9.5q23 -34 46 -77.5t46 -78.5l5.5 -7.5l5.5 -7.5q8 -11 18 0l9 12q12 14 30 39l34.5 49l28.5 42t13 19q9 18 20.5 21t28.5 3q13 0 33 -0.5t39.5 -0.5h34.5h18q7 -2 9.5 -8t-2.5 -13q-2 -5 -5.5 -10t-7.5 -9q-20 -23 -39.5 -50.5l-40 -56
l-40.5 -55.5t-39 -50l-44 -50q-20 -20 -19 -50q4 -60 2.5 -130t2.5 -130q0 -11 -4 -17t-16 -7q-30 -2 -57 -1.5t-56 -0.5q-14 0 -18.5 5.5t-6.5 19.5q0 9 -0.5 33.5t-1 54t-0.5 57.5v43q0 13 -1 30t-4 34t-8 32.5t-14 27.5q-23 32 -42.5 65.5t-40.5 65.5q-20 29 -40.5 66.5
t-40.5 66.5q-3 5 -7 8.5t-7 8.5q-6 8 -2.5 13.5t13.5 6.5h22t41 -0.5t46 -0.5t38 1z" />
<glyph glyph-name="Z" unicode="Z" horiz-adv-x="666"
d="M521 635q8 0 15 -0.5t14 -1.5q14 -2 18 -6t3 -18q0 -11 0.5 -26t0.5 -31t-0.5 -31t-1.5 -26q1 -23 -22 -50t-55 -68q-17 -21 -47 -52.5l-61 -62.5l-58 -56.5l-38 -35.5q-6 -4 -6 -12q0 -5 5.5 -5h9.5q57 -1 114 -0.5t115 -0.5h9t9 -1q16 -3 20 -8t4 -21q1 -28 0.5 -53.5
t1.5 -53.5q1 -10 -3 -13t-13 -3q-51 2 -100 0t-99 -1q-78 2 -155 2t-155 2q-6 0 -11.5 0.5t-10.5 1.5q-16 2 -16 17q-1 60 0 118q0 6 5 12.5t10 10.5q10 8 31 29l48.5 49l58 60l59.5 62l54.5 54.5t42.5 38.5l4.5 4.5t2.5 6.5t-5 4h-8q-69 2 -136.5 0.5t-136.5 -0.5
q-21 0 -26.5 4.5t-5.5 26.5q-1 28 -0.5 55.5t1.5 54.5q2 16 7 21.5t18 4.5q22 -2 61 -2h87t100 1t99 1t85 -0.5t57 -1.5z" />
<glyph glyph-name="z" unicode="z" horiz-adv-x="667"
d="M521 635q8 0 15 -0.5t14 -1.5q14 -2 18 -6t3 -18q0 -11 0.5 -26t0.5 -31t-0.5 -31t-1.5 -26q1 -23 -22 -50t-55 -68q-17 -21 -47 -52.5l-61 -62.5l-58 -56.5l-38 -35.5q-6 -4 -6 -12q0 -5 5.5 -5h9.5q57 -1 114 -0.5t115 -0.5h9t9 -1q16 -3 20 -8t4 -21q1 -28 0.5 -53.5
t1.5 -53.5q1 -10 -3 -13t-13 -3q-51 2 -100 0t-99 -1q-78 2 -155 2t-155 2q-6 0 -11.5 0.5t-10.5 1.5q-16 2 -16 17q-1 60 0 118q0 6 5 12.5t10 10.5q10 8 31 29l48.5 49l58 60l59.5 62l54.5 54.5t42.5 38.5l4.5 4.5t2.5 6.5t-5 4h-8q-69 2 -136.5 0.5t-136.5 -0.5
q-21 0 -26.5 4.5t-5.5 26.5q-1 28 -0.5 55.5t1.5 54.5q2 16 7 21.5t18 4.5q22 -2 61 -2h87t100 1t99 1t85 -0.5t57 -1.5z" />
<glyph glyph-name="guillemotleft" unicode="&#xab;" horiz-adv-x="537"
d="M434 411h12.5t18.5 -1q4 0 8 -1.5t8 -2.5q-2 -4 -3 -8t-3 -7l-21 -26.5l-21 -25.5l-47.5 -55l-48.5 -54q-15 -18 -4 -38l96 -156q4 -7 9.5 -13.5t0.5 -14.5q-4 -5 -12 -7t-16 -3q-15 -2 -30 -2h-29q-4 0 -8.5 2t-6.5 5q-12 32 -33 58t-38 55q-13 23 -27.5 44l-28.5 42
q-5 8 -5.5 13.5t6.5 13.5l71 86l71 85q5 6 14 8.5t17 4.5q11 1 22 0t28 -2zM125 -1q-12 -3 -19 2.5t-11 14.5q-17 42 -40 80.5l-45 77.5q-8 16 -7.5 27.5t10.5 25.5q26 38 50 77.5l47 79.5q9 16 21 24.5t32 6.5q16 -2 31.5 0.5t31.5 1.5q28 0 13 -21l-33.5 -50l-33.5 -49
l-21.5 -34.5l-21.5 -34.5q-14 -21 -1 -46l40 -74.5l40 -74.5l6 -15t2 -12q-2 -4 -7.5 -5t-10.5 -3q-1 0 -11 0.5t-23 1t-24.5 0.5t-14.5 -1z" />
<glyph glyph-name="guillemotright" unicode="&#xbb;" horiz-adv-x="457"
d="M50 -2q-7 0 -13 0.5t-12 1.5q-18 1 -19.5 3.5t6.5 19.5l34 78l34 77q6 12 5 21.5t-8 20.5q-17 32 -33 65.5l-33 66.5q-6 13 -3.5 16.5t17.5 4.5q20 2 39 2.5t38 -0.5q4 0 8.5 -4t6.5 -8l29 -58.5l29 -58.5q6 -12 14 -24.5t8 -25.5q1 -13 -7 -26t-13 -26
q-11 -27 -23 -53.5t-22 -53.5q-9 -25 -25 -33.5t-40 -6.5q-5 1 -9 1h-8zM259 -3q-10 -1 -19.5 -1t-19.5 -1q-38 -3 -22 31l33 70.5l33 70.5q10 18 11 34.5t-9 35.5q-12 21 -23 43l-22 45l-6 10.5l-6 11.5q-9 23 16 26q14 2 26.5 2t26.5 2q12 2 20.5 -2t13.5 -16l36 -76.5
l37 -76.5q4 -9 1.5 -15t-5.5 -14l-35.5 -81l-34.5 -81q-5 -11 -10.5 -16t-17.5 -3q-6 1 -15 0.5t-9 0.5z" />
<glyph glyph-name="dollar" unicode="$" horiz-adv-x="584"
d="M7 412q-1 49 -1.5 97t-1.5 97q0 16 5 22t21 7q11 1 22.5 0.5t23.5 -0.5q42 -2 84.5 -3.5t84.5 -3.5l49.5 -2t49.5 -4q29 -3 56 -14t47 -35q26 -32 41 -68.5t5 -80.5l-9.5 -41.5t-12.5 -40.5q-37 -81 -127 -96l-70 -10t-71 0q-3 1 -6.5 0.5t-7.5 -0.5q-13 0 -13 -13v-21
q0 -18 17 -18q21 -1 42.5 -1.5t42.5 -1.5q19 -1 22 -4.5t4 -21.5q1 -17 0.5 -27t-5.5 -14.5t-14.5 -5.5t-26.5 -1h-70q-17 -2 -16 -19q1 -15 1.5 -30t0.5 -30q0 -17 -6 -24t-22 -7q-29 1 -58 1.5t-58 1.5q-15 0 -17.5 3t-3.5 17l-2 77t0 78q0 30 0.5 70.5t0.5 77.5v63t-1 26
zM176 442q1 -14 0.5 -26.5t1.5 -26.5q0 -12 5 -16t17 -4q10 1 19.5 1t18.5 2l39.5 10t34.5 21q15 15 17 34.5t-13 34.5q-8 9 -19.5 17t-23.5 11q-20 4 -40 4t-41 1q-16 1 -16 -18v-28v-17z" />
<glyph glyph-name="underscore" unicode="_" horiz-adv-x="494"
d="M274 -143q24 1 36.5 1t22.5 0.5t22 0.5t35 1q15 0 18 -2.5t4 -16.5q2 -17 2 -33t1 -33q0 -18 -16 -19l-30 -2t-30 -1q-26 0 -38.5 -0.5t-22.5 -1.5t-22 -1.5t-38 -0.5q-11 0 -34.5 0.5t-50 1t-50 0.5t-33.5 -1q-19 -1 -26.5 4.5t-11.5 23.5q-3 16 -4.5 30t-3.5 31
q-2 11 2.5 14.5t16.5 4.5q32 0 60.5 0.5t61.5 0.5q7 0 25.5 -0.5t39.5 -0.5t39.5 -0.5t24.5 -0.5z" />
<glyph glyph-name="at" unicode="@" horiz-adv-x="698"
d="M12 176q1 60 25.5 109t66.5 91q36 35 79 57.5t95 28.5q7 1 14 1t14 2q38 6 79.5 -2t79 -24t66.5 -36t41 -37q30 -43 38 -86.5t1 -82.5t-25 -71t-39 -51q-33 -30 -73 -33.5t-75 23.5q-10 8 -18 9.5t-20 -2.5q-27 -11 -55 -10t-54 15q-8 5 -16.5 11t-12.5 14
q-9 22 -14.5 45t1.5 48q1 3 1.5 6.5t2.5 6.5q28 93 131 104q22 3 40.5 -1.5t37.5 -14.5q23 -13 19 -37q-5 -23 -0.5 -44.5t9.5 -42.5q2 -5 3 -9t3 -8q5 -8 12 -10.5t15 2.5t15.5 12t11.5 15q5 11 7.5 23.5t0.5 24.5q-8 63 -44.5 102t-103.5 44q-135 12 -211 -102
q-7 -11 -11.5 -23.5t-8.5 -25.5q-11 -48 0 -91t43 -81q22 -26 51 -39.5t64 -8.5q21 2 31 2.5t15 -4t8.5 -14l9.5 -26.5q4 -12 6 -24q2 -14 -3 -22t-19 -13q-100 -35 -192 25q-41 26 -69.5 61t-49.5 77q-5 9 -9 23.5t-7 31t-5 33t-2 29.5z" />
<glyph glyph-name="percent" unicode="%" horiz-adv-x="698"
d="M180 -8q-18 1 -35.5 1t-34.5 1t-10 16l73 149q11 20 21 40.5l20 41.5l50.5 102.5l49.5 103.5l23.5 49.5l22.5 49.5q5 10 12.5 15.5t20.5 4.5q27 -1 53.5 0t52.5 1q12 1 14.5 -1.5t-2.5 -12.5l-24.5 -55l-25.5 -54l-70 -144.5l-70 -144.5q-17 -35 -35.5 -69t-35.5 -69
q-13 -27 -42 -24q-7 1 -17.5 0.5t-10.5 -1.5zM379 120q1 34 12.5 57.5t29.5 38t42.5 21t52.5 5.5q28 -2 50.5 -17.5t34.5 -43.5q20 -48 6 -91.5t-48 -70.5q-47 -36 -100 -13q-5 2 -13 6q-40 18 -54.5 41t-12.5 67zM533 131q0 14 -11 23.5t-27 8.5q-12 -1 -23.5 -12
t-10.5 -22q0 -15 13.5 -27t28.5 -12q13 0 21.5 12t8.5 29zM4 482q3 42 21.5 63t60.5 32q25 8 46 2.5t42 -19.5q18 -12 30 -29t16.5 -36.5t2 -40.5t-12.5 -40q-12 -21 -28.5 -35t-35.5 -21t-39.5 -5.5t-40.5 12.5q-31 16 -49 45t-13 72zM149 469q2 29 -29 31
q-15 1 -26.5 -7.5t-10.5 -20.5q0 -11 11 -22t23 -12q11 -1 21 8.5t11 22.5z" />
<glyph glyph-name="numbersign" unicode="#" horiz-adv-x="604"
d="M298 1h-11q-14 0 -22 1.5t-11 5.5t-2 12t5 22l6 22l6 22q3 16 -12 17q-1 0 -1.5 0.5t-1.5 0.5q-22 2 -34.5 2t-20.5 -5t-13.5 -16.5t-12.5 -31.5q0 -1 -0.5 -1.5t-0.5 -2.5q-6 -11 -11.5 -23l-10.5 -24q-20 0 -39 -0.5t-38 0.5q-7 0 -10 5t-1 13q4 12 7.5 24t6.5 24
q4 14 0.5 18t-18.5 6q-10 1 -19.5 0.5t-19.5 -0.5q-9 1 -13.5 4.5t-2.5 13.5q2 8 3.5 17t4.5 17l9.5 25.5t9.5 14t16 5.5t27 2q15 1 23.5 2.5t13.5 6t7 13t4 22.5q1 11 -1.5 14.5t-13.5 3.5h-46q-16 0 -11 17l10 30l10 30q6 19 27 18q9 -1 18 -0.5t17 0.5q18 1 22.5 4
t10.5 20q12 35 21 74q2 7 5 11t11 4q20 0 41 0.5t41 0.5q14 0 9 -14l-24 -81q-4 -14 9 -13h28.5t28.5 2q20 1 24.5 5.5t10.5 24.5l10 34l10 34q1 3 4.5 6.5t6.5 3.5q31 1 63 0q17 0 21 -5t-1 -22q-5 -16 -9 -32t-9 -32q-2 -9 0 -12t12 -3q11 1 21 2.5t21 1.5q26 1 19 -24
q-3 -9 -8 -19l-24 -54q-14 -1 -28 -1.5t-28 -1.5q-17 0 -21 -2.5t-10 -18.5q-1 -2 -1 -5t-1 -5q-6 -20 -3.5 -23t22.5 -3h39q23 0 16 -22q-5 -15 -11 -29.5t-11 -30.5q-7 -22 -31 -21q-12 0 -24.5 -1t-24.5 0q-17 0 -21 -15q-4 -14 -7.5 -29l-6.5 -29q-2 -10 -4 -15.5
t-5.5 -8.5t-9.5 -3.5t-16 -0.5h-21v1zM259 199q10 0 19.5 -0.5t19.5 0.5q3 0 7 1t5 3q3 12 7 24t3 23q-1 9 -10 8.5t-17 -0.5q-10 1 -19.5 0.5t-19.5 0.5q-21 3 -28 -19q-5 -16 -7 -25t1 -12.5t12.5 -4t26.5 0.5z" />
<glyph glyph-name="ampersand" unicode="&#x26;" horiz-adv-x="677"
d="M3 175q-1 32 7 63t32 56q14 14 29.5 26t31.5 23q15 10 4 22q-30 38 -35 81t3 88q4 25 20 43.5t38 32.5q35 22 72.5 26.5t77.5 -6.5q34 -10 55 -32t35 -52q12 -27 14.5 -57.5t-3.5 -60.5t-20.5 -56t-36.5 -43q-16 -11 -16 -17t14 -21q7 -8 14 -14.5t13 -14.5q12 -14 24 0
l11 17l14 22.5t12 21t6 12.5q5 20 29 19q21 -1 43 0t42 -1q14 -1 14 -15q-2 -48 -20.5 -91t-43.5 -81q-11 -15 -10.5 -20t12.5 -18l39 -40.5l39 -41.5q2 -2 5 -5.5t5 -5.5q5 -5 9 -11t0 -14q-3 -8 -9.5 -8.5t-14.5 -0.5h-62.5t-62.5 1q-3 0 -7 3t-8.5 7t-8.5 8l-6 6
q-13 15 -31 4q-53 -32 -117 -46q-60 -13 -110 3.5t-93 54.5q-29 25 -40.5 59t-8.5 74zM227 132q8 0 16.5 3t17.5 7q9 3 10.5 9t-3.5 13l-27.5 32.5l-27.5 32.5q-8 8 -19 1q-17 -11 -24.5 -29.5t-2.5 -34.5q5 -13 25.5 -23.5t34.5 -10.5zM271 470q0 17 -6 26.5t-14 14
t-16.5 4t-13.5 -2.5q-10 -4 -15.5 -12t-2.5 -19q5 -17 11.5 -32.5t14.5 -31.5q1 -2 5 -3t6 0q13 9 22 25.5t9 30.5z" />
<glyph glyph-name="quotedblleft" unicode="&#x201c;" horiz-adv-x="537"
d="M434 411h12.5t18.5 -1q4 0 8 -1.5t8 -2.5q-2 -4 -3 -8t-3 -7l-21 -26.5l-21 -25.5l-47.5 -55l-48.5 -54q-15 -18 -4 -38l96 -156q4 -7 9.5 -13.5t0.5 -14.5q-4 -5 -12 -7t-16 -3q-15 -2 -30 -2h-29q-4 0 -8.5 2t-6.5 5q-12 32 -33 58t-38 55q-13 23 -27.5 44l-28.5 42
q-5 8 -5.5 13.5t6.5 13.5l71 86l71 85q5 6 14 8.5t17 4.5q11 1 22 0t28 -2zM125 -1q-12 -3 -19 2.5t-11 14.5q-17 42 -40 80.5l-45 77.5q-8 16 -7.5 27.5t10.5 25.5q26 38 50 77.5l47 79.5q9 16 21 24.5t32 6.5q16 -2 31.5 0.5t31.5 1.5q28 0 13 -21l-33.5 -50l-33.5 -49
l-21.5 -34.5l-21.5 -34.5q-14 -21 -1 -46l40 -74.5l40 -74.5l6 -15t2 -12q-2 -4 -7.5 -5t-10.5 -3q-1 0 -11 0.5t-23 1t-24.5 0.5t-14.5 -1z" />
<glyph glyph-name="quotedblright" unicode="&#x201d;" horiz-adv-x="448"
d="M50 -2q-7 0 -13 0.5t-12 1.5q-18 1 -19.5 3.5t6.5 19.5l34 78l34 77q6 12 5 21.5t-8 20.5q-17 32 -33 65.5l-33 66.5q-6 13 -3.5 16.5t17.5 4.5q20 2 39 2.5t38 -0.5q4 0 8.5 -4t6.5 -8l29 -58.5l29 -58.5q6 -12 14 -24.5t8 -25.5q1 -13 -7 -26t-13 -26
q-11 -27 -23 -53.5t-22 -53.5q-9 -25 -25 -33.5t-40 -6.5q-5 1 -9 1h-8zM259 -3q-10 -1 -19.5 -1t-19.5 -1q-38 -3 -22 31l33 70.5l33 70.5q10 18 11 34.5t-9 35.5q-12 21 -23 43l-22 45l-6 10.5l-6 11.5q-9 23 16 26q14 2 26.5 2t26.5 2q12 2 20.5 -2t13.5 -16l36 -76.5
l37 -76.5q4 -9 1.5 -15t-5.5 -14l-35.5 -81l-34.5 -81q-5 -11 -10.5 -16t-17.5 -3q-6 1 -15 0.5t-9 0.5z" />
<glyph glyph-name="less" unicode="&#x3c;" horiz-adv-x="457"
d="M391 398q-1 -14 -1.5 -26.5t-2.5 -26.5l-54 -24q-39 -17 -78.5 -32.5l-78.5 -31.5q-4 -2 -7 -5t-7 -5q3 -3 5.5 -6t6.5 -5q50 -30 101.5 -57t105.5 -50q25 -11 22 -38q-2 -19 -2 -37t-1 -37q-2 -17 -17 -11l-21 10l-21 10l-99 49.5l-100 50.5l-57.5 30.5l-57.5 30.5
q-25 11 -23 39l2 30t0 30q-1 20 18 27l98.5 43.5l99.5 42.5l73.5 29.5l73.5 29.5q14 6 19 3t5 -17v-13t-0.5 -15t-1 -12.5z" />
<glyph glyph-name="greater" unicode="&#x3e;" horiz-adv-x="473"
d="M6 119q-5 15 3 23.5t22 14.5l77 34.5l77 34.5q7 3 13.5 5.5t12.5 6.5q3 2 4.5 4.5t3.5 4.5q-5 5 -8 6q-26 11 -56 21q-38 11 -72 30t-69 36q-2 2 -4.5 6t-2.5 8q-1 23 -1 44.5t-1 44.5q0 15 18 10l54.5 -19.5t55.5 -20.5l88.5 -34.5l88.5 -34.5l31 -13.5t31 -12.5
q10 -4 12.5 -10.5t2.5 -14.5q1 -18 0.5 -35.5t1.5 -34.5q1 -15 -4 -24.5t-19 -14.5l-35.5 -16l-35.5 -16l-112 -52.5l-112 -52.5q-7 -3 -13 -6l-12 -6q-17 -8 -24 -4t-10 22q-2 16 -3 32t-3 34z" />
<glyph glyph-name="quotedblbase" unicode="&#x201e;" horiz-adv-x="833"
/>
<glyph glyph-name="quotedbl" unicode="&#x22;" horiz-adv-x="833"
/>
<glyph glyph-name="uni0406" unicode="&#x406;" horiz-adv-x="302"
d="M198 248v-226q0 -16 -4.5 -19.5t-21.5 -1.5q-33 4 -66 1.5t-69 -1.5q-31 -5 -31 26q-1 18 -0.5 34t0.5 35q1 45 1 90v90q0 68 -0.5 144t-1.5 144q0 12 0.5 24t1.5 24q2 14 5.5 17.5t16.5 5.5q38 4 74 3.5t73 -5.5q11 -1 18 -2t8 -12q2 -10 1.5 -25t-0.5 -25
q-1 -66 -2 -148.5t-3 -172.5z" />
<glyph glyph-name="uni0456" unicode="&#x456;" horiz-adv-x="302"
d="M198 248v-226q0 -16 -4.5 -19.5t-21.5 -1.5q-33 4 -66 1.5t-69 -1.5q-31 -5 -31 26q-1 18 -0.5 34t0.5 35q1 45 1 90v90q0 68 -0.5 144t-1.5 144q0 12 0.5 24t1.5 24q2 14 5.5 17.5t16.5 5.5q38 4 74 3.5t73 -5.5q11 -1 18 -2t8 -12q2 -10 1.5 -25t-0.5 -25
q-1 -66 -2 -148.5t-3 -172.5z" />
<glyph glyph-name="uni0490" unicode="&#x490;" horiz-adv-x="542"
d="M8 293v50t-0.5 61l-1 64t-1 58.5t-1 44.5t-0.5 23v15t1 15q0 17 19 18q18 0 44.5 0.5t58.5 0.5h67h69v28.5v26.5t0.5 20t0.5 11q0 17 19 18q31 1 48.5 1h29.5t22 -0.5t27 -0.5q18 0 22 -4t6 -22q0 -3 0.5 -19t1 -39t1 -49.5t1 -50t1 -41.5t1.5 -23q2 -16 -2 -21.5
t-19 -7.5q-6 -1 -33 -1.5t-61.5 -0.5t-69 -0.5t-56.5 -0.5q-16 0 -16 -17q0 -4 -0.5 -7.5t-0.5 -7.5q1 -75 0 -156t1 -156q1 -23 0.5 -40t0.5 -40q1 -14 -2 -31q-3 -15 -19 -15q-38 -2 -72.5 -2.5t-71.5 -1.5q-8 0 -10.5 4t-3.5 10q-1 7 -1 13.5v13.5v130t-1 129h1z" />
<glyph glyph-name="uni0491" unicode="&#x491;" horiz-adv-x="542"
d="M8 293v50t-0.5 61l-1 64t-1 58.5t-1 44.5t-0.5 23v15t1 15q0 17 19 18q18 0 44.5 0.5t58.5 0.5h67h69v28.5v26.5t0.5 20t0.5 11q0 17 19 18q31 1 48.5 1h29.5t22 -0.5t27 -0.5q18 0 22 -4t6 -22q0 -3 0.5 -19t1 -39t1 -49.5t1 -50t1 -41.5t1.5 -23q2 -16 -2 -21.5
t-19 -7.5q-6 -1 -33 -1.5t-61.5 -0.5t-69 -0.5t-56.5 -0.5q-16 0 -16 -17q0 -4 -0.5 -7.5t-0.5 -7.5q1 -75 0 -156t1 -156q1 -23 0.5 -40t0.5 -40q1 -14 -2 -31q-3 -15 -19 -15q-38 -2 -72.5 -2.5t-71.5 -1.5q-8 0 -10.5 4t-3.5 10q-1 7 -1 13.5v13.5v130t-1 129h1z" />
<glyph glyph-name="uni0407" unicode="&#x407;" horiz-adv-x="302"
d="M9 719q-16 1 -29.5 7t-23.5 16.5t-15.5 23.5t-4.5 28q1 13 7.5 25t16.5 21t22.5 14.5t25.5 5.5q12 0 24.5 -6.5t22 -17t15.5 -23t6 -24.5q0 -15 -5.5 -28t-14.5 -22.5t-21.5 -15t-25.5 -4.5zM196 855q12 0 23.5 -5t20.5 -13.5t14 -19t5 -22.5q-1 -30 -18.5 -49.5
t-44.5 -18.5q-29 0 -48 19.5t-19 49.5q-1 26 18 42.5t49 16.5zM198 248v-226q0 -16 -4.5 -19.5t-21.5 -1.5q-33 4 -66 1.5t-69 -1.5q-31 -5 -31 26q-1 18 -0.5 34t0.5 35q1 45 1 90v90q0 68 -0.5 144t-1.5 144q0 12 0.5 24t1.5 24q2 14 5.5 17.5t16.5 5.5q38 4 74 3.5
t73 -5.5q11 -1 18 -2t8 -12q2 -10 1.5 -25t-0.5 -25q-1 -66 -2 -148.5t-3 -172.5z" />
<glyph glyph-name="uni0457" unicode="&#x457;" horiz-adv-x="302"
d="M9 719q-16 1 -29.5 7t-23.5 16.5t-15.5 23.5t-4.5 28q1 13 7.5 25t16.5 21t22.5 14.5t25.5 5.5q12 0 24.5 -6.5t22 -17t15.5 -23t6 -24.5q0 -15 -5.5 -28t-14.5 -22.5t-21.5 -15t-25.5 -4.5zM196 855q12 0 23.5 -5t20.5 -13.5t14 -19t5 -22.5q-1 -30 -18.5 -49.5
t-44.5 -18.5q-29 0 -48 19.5t-19 49.5q-1 26 18 42.5t49 16.5zM198 248v-226q0 -16 -4.5 -19.5t-21.5 -1.5q-33 4 -66 1.5t-69 -1.5q-31 -5 -31 26q-1 18 -0.5 34t0.5 35q1 45 1 90v90q0 68 -0.5 144t-1.5 144q0 12 0.5 24t1.5 24q2 14 5.5 17.5t16.5 5.5q38 4 74 3.5
t73 -5.5q11 -1 18 -2t8 -12q2 -10 1.5 -25t-0.5 -25q-1 -66 -2 -148.5t-3 -172.5z" />
<glyph glyph-name="uni0404" unicode="&#x404;" horiz-adv-x="674"
d="M-22 300q-5 72 15 132.5t64 112.5q35 42 78.5 71.5t99.5 37.5q60 9 121 6q100 -3 178 -69q11 -10 11.5 -14t-9.5 -16q-4 -4 -7 -8.5t-6 -9.5l-23.5 -39l-24.5 -39q-8 -13 -15.5 -16.5t-24.5 5.5q-81 44 -173 18q-27 -8 -49.5 -23t-32.5 -44q-4 -13 -2 -16.5t16 -5.5
q9 0 33.5 -0.5t52 -0.5t52 -0.5t33.5 -0.5q21 -1 28.5 -8.5t6.5 -28.5q0 -11 -2 -21t-2 -21q0 -21 -20 -21q-8 -1 -17 -1h-17h-29.5t-48.5 0.5t-48.5 0.5h-28.5q-20 0 -14 -20q14 -46 55 -64q52 -23 103 -23.5t100 32.5q17 11 32 24t29 27q16 16 34 7q12 -6 17 -19l27 -64.5
l27 -65.5q3 -8 -0.5 -12.5t-8.5 -9.5q-43 -40 -95 -62q-67 -29 -135.5 -40.5t-141.5 11.5q-41 13 -75.5 32.5t-68.5 44.5q-33 24 -54 62t-31 78.5t-9 80.5z" />
<glyph glyph-name="uni0454" unicode="&#x454;" horiz-adv-x="674"
d="M-22 300q-5 72 15 132.5t64 112.5q35 42 78.5 71.5t99.5 37.5q60 9 121 6q100 -3 178 -69q11 -10 11.5 -14t-9.5 -16q-4 -4 -7 -8.5t-6 -9.5l-23.5 -39l-24.5 -39q-8 -13 -15.5 -16.5t-24.5 5.5q-81 44 -173 18q-27 -8 -49.5 -23t-32.5 -44q-4 -13 -2 -16.5t16 -5.5
q9 0 33.5 -0.5t52 -0.5t52 -0.5t33.5 -0.5q21 -1 28.5 -8.5t6.5 -28.5q0 -11 -2 -21t-2 -21q0 -21 -20 -21q-8 -1 -17 -1h-17h-29.5t-48.5 0.5t-48.5 0.5h-28.5q-20 0 -14 -20q14 -46 55 -64q52 -23 103 -23.5t100 32.5q17 11 32 24t29 27q16 16 34 7q12 -6 17 -19l27 -64.5
l27 -65.5q3 -8 -0.5 -12.5t-8.5 -9.5q-43 -40 -95 -62q-67 -29 -135.5 -40.5t-141.5 11.5q-41 13 -75.5 32.5t-68.5 44.5q-33 24 -54 62t-31 78.5t-9 80.5z" />
<glyph glyph-name="uni20B4" unicode="&#x20b4;" horiz-adv-x="583"
d="M261 271l-10 -6q-16 -9 -31 -19.5t-28 -23.5q-11 -11 -14 -24t0.5 -25t13.5 -21t25 -12q8 -2 15.5 -0.5t14.5 1.5q36 -1 65 6t57 21q14 7 23.5 12.5t20.5 16.5q5 5 10 3.5t8 -6.5q5 -7 8 -14t7 -15q10 -22 16 -36.5t11 -35.5q3 -11 5 -17.5t2 -11.5t-3.5 -9.5
t-12.5 -12.5q-6 -6 -12 -9q-33 -17 -62 -27t-72 -15q-26 -3 -47 -5t-41.5 -1.5t-42.5 3.5t-50 9q-60 14 -92 57.5t-39 103.5q-4 31 0.5 59t24.5 54l5 7zM187 395l17 9l33.5 18.5t32.5 20.5q12 9 14.5 25.5t-3.5 28.5q-7 14 -20 15.5t-31 1.5q-22 0 -42 -5.5t-35 -12.5
t-24.5 -13.5t-11.5 -7.5q-12 -7 -20 2q-9 9 -15 18.5t-11.5 19.5l-11 20t-14.5 20q-5 5 -7 13t4 14q19 19 34.5 32t41.5 24q14 6 39.5 12t58 7.5t71.5 -5.5t80 -27q30 -15 44 -28.5t28 -33.5q36 -50 21 -112q-5 -19 -12 -34.5t-18 -28.5zM491 443q15 0 18 -2.5t4 -16.5
q1 -9 1.5 -12.5t0.5 -5.5t0.5 -5.5t0.5 -12.5q0 -18 -16 -19l-30 -2t-30 -1h-54t-81 0.5l-93 1t-89.5 1t-70.5 0.5h-36q-19 -1 -28 3t-10 25q0 8 -0.5 12t-0.5 14q0 11 3.5 14.5t15.5 4.5h47.5h86.5h107h108.5t91 0.5t54.5 0.5zM473 316q15 0 18 -2.5t4 -16.5
q1 -9 1.5 -12.5t0.5 -5.5t0.5 -5.5t0.5 -12.5q0 -18 -16 -19l-30 -2t-30 -1h-54t-81 0.5l-93 1t-89.5 1t-70.5 0.5h-36q-19 -1 -28 3t-10 25q0 8 -0.5 12t-0.5 14q0 11 3.5 14.5t15.5 4.5h47.5h86.5h107h108.5t91 0.5t54.5 0.5z" />
<hkern u1="&#x413;" u2="&#x430;" k="70" />
<hkern u1="&#x413;" u2="&#x410;" k="70" />
<hkern u1="&#x422;" u2="&#x430;" k="50" />
<hkern u1="&#x422;" u2="&#x410;" k="50" />
<hkern u1="&#x410;" u2="&#x422;" k="50" />
<hkern u1="&#x430;" u2="&#x442;" k="50" />
<hkern u1="&#x433;" u2="&#x430;" k="70" />
<hkern u1="&#x442;" u2="&#x430;" k="50" />
<hkern u1="A" u2="T" k="50" />
<hkern u1="a" u2="t" k="50" />
<hkern u1="T" u2="a" k="50" />
<hkern u1="T" u2="A" k="50" />
<hkern u1="t" u2="a" k="50" />
<hkern u1="&#x490;" u2="&#x430;" k="70" />
<hkern u1="&#x490;" u2="&#x410;" k="70" />
<hkern u1="&#x491;" u2="&#x430;" k="70" />
</font>
</defs></svg>

After

Width:  |  Height:  |  Size: 113 KiB

Binary file not shown.
Binary file not shown.
+7
View File
@@ -0,0 +1,7 @@
@font-face {
font-family: "Shadow";
src: url("Shadow-Regular.eot");
src: url("Shadow-Regular.woff") format("woff"),
url("Shadow-Regular.otf") format("opentype"),
url("Shadow-Regular.svg") format("svg");
}
-5
View File
@@ -1,5 +0,0 @@
const fs = require('fs').promises;
(async () => {
await fs.copyFile('public/robots.txt', 'dist/robots.txt')
})()
+14
View File
@@ -0,0 +1,14 @@
{
"compilerOptions": {
"noEmitOnError": false,
"target": "es5",
"module": "commonjs",
"jsx": "preserve",
"outDir": "./build",
"strict": false,
"esModuleInterop": true
},
"include": [
"src/**/*.ts"
]
}
+1
View File
@@ -7,5 +7,6 @@ export function encodePage(page) {
url: page.url,
data: page.data,
preview: encodeImage(page.preview),
tokens: page.tokens,
}
}
-32
View File
@@ -1,32 +0,0 @@
import React from 'react'
import Menu from './Menu'
import Footer from './Footer'
import Comments from './Comments'
import '../style/style.scss'
export const App = ({children, menu, showAuthor, menuPadding}) => (
<div className="body-wrapper theme-default">
<header>
<div className="navigation">
<div className="navigation__body">
<Menu items={menu.items}/>
</div>
</div>
</header>
<main className="body-wrapper__content">
<section className={`content content_full ${menuPadding ? 'content--padding-top--menu' : ''}`}>
{children}
</section>
<Comments/>
</main>
<Footer showAuthor={showAuthor}
address=" г. Шлиссельбург ул. 18 января д. 3"
telephone="+7 (81362) 76-312"
email="hudozka@gmail.com"
/>
</div>
)
+8
View File
@@ -0,0 +1,8 @@
import * as React from 'react'
import { Navigation } from '../Navigation'
const Header: React.FC<any> = props => (
<Navigation items={props.menuItems} />
)
export default Header
+56
View File
@@ -0,0 +1,56 @@
import * as React from 'react'
import dynamic from 'next/dynamic'
import cx from 'classnames'
import { Footer } from '../Footer'
import Comments from '../Comments'
import { useReducedMotion } from '../../hooks/useReducedMotion'
const Header = dynamic(() => import('./Header'), {
ssr: false,
})
import '../../style/style.scss'
export interface IAppProps {
menu: any
showAuthor: boolean
menuPadding: boolean
layout: 'full' | 'wide' | 'thin'
}
export const App: React.FC<IAppProps> = props => {
const motionDisabled = useReducedMotion()
return (
<div className="body-wrapper theme-default">
<header>
<div className="navigation">
<div className="navigation__body">
<Header
menuItems={props.menu.items}
/>
</div>
</div>
</header>
<main className="body-wrapper__content">
<section className={cx('content', `content_${props.layout}`, {
'content--padding-top--menu': props.menuPadding,
'reduced-motion': motionDisabled,
})}>
{props.children}
</section>
<Comments />
</main>
<Footer
showAuthor={props.showAuthor}
address=" г. Шлиссельбург ул. 18 января д. 3"
telephone="+7 (81362) 76-312"
email="hudozka@gmail.com"
/>
</div>
)
}
+1 -9
View File
@@ -1,5 +1,6 @@
import React from 'react'
import { dateFormat } from '../lib/date'
import { Share } from './Share'
const Tag = ({ children }) => (
<li className="ArticleTags-Item">
@@ -29,15 +30,6 @@ const Head = ({ date, tags = [], children }) => (
</header>
)
const Share = () => (
<div className="likely">
<div className="vkontakte">Поделиться</div>
<div className="facebook">Поделиться</div>
<div className="telegram">Отправить</div>
<div className="twitter">Твитнуть</div>
</div>
)
const Article = ({ children, date, tags, title, shareable }) => (
<article className="Article">
<Head
+14
View File
@@ -0,0 +1,14 @@
import * as React from 'react'
import { dateFormat } from '../../lib/date'
export const Date: React.FC<{ children: string }> = ({ children }) => (
<p>
<style jsx>{`
p {
color: #ccc;
font-size: small;
}
`}</style>
{dateFormat(children)}
</p>
)
@@ -1,13 +1,20 @@
import React from 'react'
import { Image } from './Image'
import { dateFormat } from '../lib/date'
import * as React from 'react'
import cx from 'classnames'
import { Date } from './Date'
const Date = ({ children }) => (
<p className="date">{dateFormat(children)}</p>
)
interface IImage {
alt: string
src: string
srcSet: Array<{ url: string, density: number }>
}
export const ArticleCard = ({ article }) => (
<article className="ArticleCard">
export interface IArticleCardProps {
article: any
preview?: IImage
}
export const ArticleCard: React.FC<IArticleCardProps> = ({ article, ...props }) => (
<section className="ArticleCard">
<style jsx>{`
.ArticleCard {
--article-card-width: 30%;
@@ -19,8 +26,8 @@ export const ArticleCard = ({ article }) => (
margin: var(--article-card-margin);
width: var(--article-card-width);
min-width: 10em;
max-width: 30em;
min-width: 15em;
max-width: 20em;
border-radius: 10px;
@@ -29,8 +36,8 @@ export const ArticleCard = ({ article }) => (
}
.ArticleCard > a {
display: block;
position: relative;
display: block;
position: relative;
}
.ArticleCard-image {
@@ -64,11 +71,6 @@ export const ArticleCard = ({ article }) => (
padding: .75em 1em;
}
.ArticleCard .date {
color: #ccc;
font-size: small;
}
.ArticleCard:hover img {
width: 105%;
height: 105%;
@@ -78,20 +80,14 @@ export const ArticleCard = ({ article }) => (
}
// Tablet
@media screen and (min-width: var(--tablet-min-width)) and (max-width: var(--tablet-max-width)) {
.ArticleCard {
--article-card-image-height: 12em;
}
@media screen and (orientation: portrait) {
}
}
// Mobile
@media (max-width: var(--mobile-width)) {
@media (max-width: 31.25em) {
.ArticleCard {
--article-card-width: 100%;
--article-card-margin: var(--single-margin) 0;
@@ -101,12 +97,15 @@ export const ArticleCard = ({ article }) => (
<a className="invisible" href={article.url}>
<div className="ArticleCard-image">
{!article.preview ? null : (
<Image
data={article.preview}
alt={article.title}
opa={false}
/>
{!props.preview ? null : (
<picture>
<img
className={cx({ opa: false })}
alt={props.preview.alt}
src={props.preview.src}
srcSet={props.preview.srcSet.map(({ url, density }) => `${url} ${density}x`).join(' ')}
/>
</picture >
)}
</div>
@@ -114,9 +113,11 @@ export const ArticleCard = ({ article }) => (
{article.title}
{!article.date ? null : (
<Date>{article.date}</Date>
<Date>
{article.date}
</Date>
)}
</div>
</a>
</article>
</section>
)
+26 -8
View File
@@ -3,18 +3,36 @@ import Paginator from './Paginator'
import { ArticleCard } from './ArticleCard'
export const ArticleCardList = ({ articles, nextPage, prevPage }) => (
<div className="ArticleCardList">
<div>
<style jsx>{`
.body {
display: flex;
flex-direction: row;
justify-content: center;
flex-wrap: wrap;
}
`}</style>
{!prevPage ? null : (
<Paginator url={`/articles/${prevPage}`} type="top" />
)}
<div className="ArticleCardList-body">
{articles.map((article, i) => (
<ArticleCard
key={i}
article={article}
/>
))}
<div className={'body'}>
{articles.map((article, i) => {
const preview = {
alt: article.title,
src: article.preview.src,
srcSet: article.preview.set,
}
return (
<ArticleCard
key={i}
article={article}
preview={preview}
/>
)
})}
</div>
{!nextPage ? null : (
+12 -15
View File
@@ -1,25 +1,22 @@
import React from 'react'
import Image from './Image'
import { Image } from './Image'
export const CollectiveImage = (props) => (
<div
className="CollectiveImage"
style={props.style}
>
<style jsx>{`
.CollectiveImage {
margin - bottom: var(--double-margin);
}
img {
width: 100%;
border-radius: 10px;
}
`}</style>
<Image
data={props.data}
src={props.data.src}
alt={props.data.alt}
set={props.data.set}
opa={false}
style={{
marginBottom: 'var(--double-margin)',
}}
imgStyle={{
width: '100%',
borderRadius: '10px',
}}
/>
</div>
</div>
)
-18
View File
@@ -1,18 +0,0 @@
const React = require('react')
const Document = require('./DocumentListItem')
const DocumentList = ({documents, name}) => (
<div className="documents-container">
<div className="documents-container__head">
<h2>{name}</h2>
</div>
<div className="documents-container__body">
{documents.map((d, i) => (
<Document key={i} {...d}/>
))}
</div>
</div>
)
module.exports = DocumentList
+22
View File
@@ -0,0 +1,22 @@
import * as React from 'react'
import { IDocument } from '../../types'
import { DocumentListItem } from '../DocumentListItem'
export interface IDocumentListProps {
documents: IDocument[]
name: string
}
export const DocumentList: React.FC<IDocumentListProps> = props => (
<div className="documents-container">
<div className="documents-container__head">
<h2>{props.name}</h2>
</div>
<div className="documents-container__body">
{props.documents.map((d, i) => (
<DocumentListItem key={i} {...d} />
))}
</div>
</div>
)
-23
View File
@@ -1,23 +0,0 @@
const React = require('react')
const {ext, size} = require('../lib/file')
const {titleCase} = require('../lib/string')
const Document = ({title, url, imageUrl, fileUrl, fileName, fileSize}) => (
<div className="document-row">
<a href={url} className="invisible">
<div className="document-row__image">
<img src={imageUrl} alt={title}/>
</div>
</a>
<div className="document-row__file">
<a href={url}>{titleCase(title)}</a>
</div>
<div className="document-row__file-info">
<a href={fileUrl} target="_blank">{ext(fileName)} ({size(fileSize)})</a>
</div>
</div>
)
module.exports = Document
+30
View File
@@ -0,0 +1,30 @@
import * as React from 'react'
import { ext, size } from '../../lib/file'
import { titleCase } from '../../lib/string'
export interface IDocumentListItemProps {
title: string
url: string
imageUrl: string
fileUrl: string
fileName: string
fileSize: number
}
export const DocumentListItem: React.FC<IDocumentListItemProps> = props => (
<div className="document-row">
<a href={props.url} className="invisible">
<div className="document-row__image">
<img src={props.imageUrl} alt={props.title} />
</div>
</a>
<div className="document-row__file">
<a href={props.url}>{titleCase(props.title)}</a>
</div>
<div className="document-row__file-info">
<a href={props.fileUrl} target="_blank">{ext(props.fileName)} ({size(props.fileSize)})</a>
</div>
</div>
)
-44
View File
@@ -1,44 +0,0 @@
const React = require('react')
const mailto = email => `mailto:${email}`
const currentYear = () => (new Date()).getFullYear()
const Footer = ({children, address, telephone, email, showAuthor}) => (
<footer>
<div className="contacts">
<div>
<h4>Контактная информация</h4>
<p>Адрес: {address}</p>
<p>Телефон: {telephone}</p>
<p>Почта: <a href={mailto(email)}>{email}</a></p>
<p>Вконтакте: <a href="https://vk.com/shlisselburghudozka">shlisselburghudozka</a></p>
<p>Инстаграм: <a href="https://www.instagram.com/hudozka/">hudozka</a></p>
</div>
</div>
<div className="copyright">
<Copyright
yearStart={2012}
yearEnd={currentYear()}
/>
{!showAuthor ? null : (
<Author/>
)}
</div>
</footer>
)
const Author = () => (
<span>
Разработка и поддержка сайта —
<a href="http://tmshv.ru?utm_source=artshburg&utm_medium=developer&utm_campaign=tmshv_ru">
www.tmshv.ru
</a>
</span>
)
const Copyright = ({yearStart, yearEnd}) => (
<span>©&nbsp;{yearStart}—{yearEnd} Шлиссельбургская детская художественная школа</span>
)
module.exports = Footer
+49
View File
@@ -0,0 +1,49 @@
import * as React from 'react'
const mailto = email => `mailto:${email}`
const currentYear = () => (new Date()).getFullYear()
export interface IFooterProps {
address: string
telephone: string
email: string
showAuthor: boolean
}
export const Footer: React.FC<IFooterProps> = props => (
<footer>
<div className="contacts">
<div>
<h4>Контактная информация</h4>
<p>Адрес: {props.address}</p>
<p>Телефон: {props.telephone}</p>
<p>Почта: <a href={mailto(props.email)}>{props.email}</a></p>
<p>Вконтакте: <a href="https://vk.com/shlisselburghudozka">shlisselburghudozka</a></p>
<p>Инстаграм: <a href="https://www.instagram.com/hudozka/">hudozka</a></p>
</div>
</div>
<div className="copyright">
<Copyright
yearStart={2012}
yearEnd={currentYear()}
/>
{!props.showAuthor ? null : (
<Author />
)}
</div>
</footer>
)
const Author = () => (
<span>
Разработка и поддержка сайта —
<a href="http://tmshv.ru?utm_source=artshburg&utm_medium=developer&utm_campaign=tmshv_ru">
www.tmshv.ru
</a>
</span>
)
const Copyright = ({ yearStart, yearEnd }) => (
<span>©&nbsp;{yearStart}—{yearEnd} Шлиссельбургская детская художественная школа</span>
)
-8
View File
@@ -1,8 +0,0 @@
import React from 'react'
export const HudozkaTitle = () => (
<div className="HudozkaTitle">
<p>МБУДО</p>
<h1>Шлиссельбургская детская художественная школа</h1>
</div>
)
+36
View File
@@ -0,0 +1,36 @@
import * as React from 'react'
export const HudozkaTitle: React.FC = React.memo(() => (
<div>
<style jsx>{`
div {
--padding: var(--double-margin) 0;
padding: var(--padding);
text-align: center;
}
h1 span {
font-size: var(--font-size-h2);
}
@media (max-width: 31.25em) {
div {
--padding: 0 0 var(--double-margin);
}
}
`}</style>
<h1>
<span style={{
display: 'block',
marginBottom: 24,
}}>МБУДО</span>
Шлиссельбургская <br />
<span>
детская художественная школа
</span>
</h1>
</div>
))
-21
View File
@@ -1,21 +0,0 @@
import React from 'react'
import className from 'classnames'
export const Image = ({data, alt, opa = true}) => (
<picture>
<style jsx>{`
picture img {
display: block;
}
`}</style>
<img
className={className({ opa })}
alt={alt}
src={data.src}
srcSet={data.set.map(({url, density}) => `${url} ${density}x`)}
/>
</picture >
)
export default Image
+40
View File
@@ -0,0 +1,40 @@
import * as React from 'react'
import cx from 'classnames'
export interface IImageProps {
style?: React.CSSProperties
imgStyle?: React.CSSProperties
src: string
alt: string
opa: boolean
set: Array<{
url: string
density: number
}>
}
export const Image: React.FC<IImageProps> = React.memo(props => {
const srcSet = props.set
.map(({ url, density }) => `${url} ${density}x`)
.join(' ')
return (
<picture style={props.style}>
<style jsx>{`
picture img {
display: block;
}
`}</style>
<img
style={props.imgStyle}
className={cx({
opa: props.opa
})}
alt={props.alt}
src={props.src}
srcSet={srcSet}
/>
</picture >
)
})
-58
View File
@@ -1,58 +0,0 @@
const React = require('react')
const getPathWithNoTrailingSlas = require('../lib/url').getPathWithNoTrailingSlash
const hasSubmenu = item => !!item.items
const doDrawSubmenu = item => false //item.active && hasSubmenu(item)
const itemUrl = url => getPathWithNoTrailingSlas(url)
const selectedClassName = flag => flag
? 'selected'
: ''
const hmenuCurClassName = flag => flag
? 'HMenu__item--cur'
: ''
const MenuItem = ({active, text, url}) => (active
? <span>{text}</span>
: <a href={itemUrl(url)}>{text}</a>
)
const MenuToggle = () => (
<div className="HMenu__toggle">
<a href="#"></a>
</div>
)
const Menu = ({items}) => {
const content = items.map((item, index) => (
<li key={index}
className={`HMenu__item ${hmenuCurClassName(item.highlighted)} ${item.color} ${selectedClassName(item.highlighted)}`}
>
<MenuItem {...item}/>
{!doDrawSubmenu(item) ? null : (
<Submenu key={index} items={item.items}/>
)}
</li>
))
return (
<menu className="main-menu HMenu" data-toggle-width="1024">
<MenuToggle/>
{content}
</menu>
)
}
const Submenu = ({items}) => (
<menu className="main-menu__submenu">
{items.map((item, index) => (
<li key={index} className={`${item.color} ${selectedClassName(item.active)}`}>
<MenuItem {...item}/>
</li>
))}
</menu>
)
module.exports = Menu
+33
View File
@@ -0,0 +1,33 @@
import * as React from 'react'
export interface IMenuItemProps {
active: boolean
text: string
url: string
}
export const MenuItem: React.FC<IMenuItemProps> = ({ active, text, url }) => (
<>
<style jsx>{`
a {
color: var(--dark-color);
}
a:visited {
color: var(--dark-color);
}
a:hover {
border-color: var(--dark-color);
}
`}</style>
{active
? (
<span>{text}</span>
) : (
<a href={url}>{text}</a>
)
}
</>
)
+125
View File
@@ -0,0 +1,125 @@
import * as React from 'react'
import cx from 'classnames'
import { getPathWithNoTrailingSlash } from '../../lib/url'
import { MenuItem } from './MenuItem'
const itemUrl = (url: string) => getPathWithNoTrailingSlash(url)
export interface IMenuProps {
layout: 'desktop' | 'mobile'
items: any[]
}
export const Menu: React.FC<IMenuProps> = props => (
<div className={cx('menu', props.layout)}>
<style jsx>{`
.menu {
display: flex;
align-items: flex-start;
list-style: none;
}
div.desktop {
flex-direction: row;
flex-wrap: wrap;
}
div.mobile {
flex-direction: column;
}
li{
position: relative;
border-top: var(--menu-colored-mark-thickness) solid rgba(0, 0, 0, 0);
}
li.desktop {
padding: 0.3em 0.2em 0;
margin-right: 1em;
font-size: var(--normal-font-size);
}
li.mobile {
padding: 0.3em 0.5em;
margin-bottom: var(--half-margin);
font-size: 1.25em;
color: white;
}
li:last-child {
margin-right: 0;
}
li.selected {
font-weight: bold;
}
li.desktop.selected.blue {
border-top-color: var(--blue-color);
}
li.desktop.selected.orange {
border-top-color: var(--orange-color);
}
li.desktop.selected.green {
border-top-color: var(--green-color);
}
li.desktop.selected.yellow {
border-top-color: var(--yellow-color);
}
li.desktop.selected.pink {
border-top-color: var(--pink-color);
}
li.desktop.selected.red {
border-top-color: var(--red-color);
}
li.mobile.selected.blue {
background-color: var(--blue-color);
}
li.mobile.selected.orange {
background-color: var(--orange-color);
}
li.mobile.selected.green {
background-color: var(--green-color);
}
li.mobile.selected.yellow {
background-color: var(--yellow-color);
}
li.mobile.selected.pink {
background-color: var(--pink-color);
}
li.mobile.selected.red {
background-color: var(--red-color);
}
`}</style>
{props.items.map((item, index) => (
<li key={index}
className={cx(
props.layout,
item.color, {
selected: item.highlighted,
})}
>
<MenuItem
url={itemUrl(item.url)}
text={item.text}
active={item.active}
/>
</li>
))}
</div>
)
+79
View File
@@ -0,0 +1,79 @@
import * as React from 'react'
import cx from 'classnames'
export interface IMenuToggleProps {
style?: React.CSSProperties
open: boolean
position: 'left' | 'right'
onClick: () => void
}
export const MenuToggle: React.FC<IMenuToggleProps> = props => {
return (
<div
className={cx(props.position, {
open: props.open,
close: !props.open,
})}
style={props.style}
>
<style jsx>{`
div {
--hmenu-margin: 6px;
--hmenu-icon-width: 32px;
--hmenu-icon-height: 32px;
position: absolute;
height: var(--hmenu-icon-height);
margin: var(--hmenu-margin);
}
div.right {
top: 0;
right: 0;
}
div.left {
top: 0;
left: 0;
}
a {
display: block;
text-decoration: none;
border: none;
width: var(--hmenu-icon-width);
height: var(--hmenu-icon-height);
background-size: 100%;
}
a:hover {
text-decoration: none;
border: none;
}
div.open a {
background-image: url(/static/graphics/hmenu-close-b.png);
}
div.open a:hover {
background-image: url(/static/graphics/hmenu-close-hover-b.png);
}
div.close a {
background-image: url(/static/graphics/hmenu-b.png);
}
div.close a:hover {
background-image: url(/static/graphics/hmenu-hover-b.png);
}
`}</style>
<a
href="#"
onClick={props.onClick}
></a>
</div>
)
}
@@ -1,7 +1,12 @@
import React from 'react'
import * as React from 'react'
import { IMeta } from '../../types'
export const Meta = ({ meta }) => (
<React.Fragment>
export interface IMetaProps {
meta: IMeta
}
export const Meta: React.FC<IMetaProps> = ({ meta }) => (
<>
{/* Search Engine */}
<meta name="description" content={meta.description} />
<meta name="image" content={meta.image} />
@@ -15,8 +20,8 @@ export const Meta = ({ meta }) => (
<meta property="og:title" content={meta.title} />
<meta property="og:description" content={meta.description} />
<meta property="og:image" content={meta.image} />
<meta property="og:image:width" content={meta.imageWidth} />
<meta property="og:image:height" content={meta.imageHeight} />
<meta property="og:image:width" content={meta.imageWidth.toString()} />
<meta property="og:image:height" content={meta.imageHeight.toString()} />
<meta property="og:url" content={meta.url} />
<meta property="og:site_name" content={meta.siteName} />
<meta property="og:locale" content={meta.locale} />
@@ -31,5 +36,5 @@ export const Meta = ({ meta }) => (
<meta name="twitter:url" content={meta.url} />
<meta name="twitter:site" content={meta.twitterSite} />
<meta name="twitter:creator" content={meta.twitterCreator} />
</React.Fragment>
)
</>
)
+67
View File
@@ -0,0 +1,67 @@
import * as React from 'react'
import { MenuToggle } from '../MenuToggle'
import { useScreenType } from '../../hooks/useScreenType'
import { Menu } from '../Menu'
import { Overlay } from '../Overlay'
export interface INavigationProps {
items: any[]
}
export const Navigation: React.FC<INavigationProps> = props => {
const isMobile = useScreenType(['phone', 'tablet'])
const [open, setOpen] = React.useState(false)
const onClick = React.useCallback(
() => {
setOpen(!open)
},
[open]
)
return (
<nav>
<style jsx>{`
nav {
display: flex;
align-items: flex-start;
margin-left: 1em;
margin-right: 1em;
font-size: var(--normal-font-size);
list-style: none;
}
`}</style>
{isMobile ? (
<MenuToggle
open={open}
position={'right'}
onClick={onClick}
style={{
zIndex: 1000001,
}}
/>
) : (
<Menu
layout={'desktop'}
items={props.items}
/>
)}
<Overlay
show={open}
onClickOverlay={onClick}
>
<div style={{
width: '50%',
margin: '50px auto',
}}>
<Menu
layout={'mobile'}
items={props.items}
/>
</div>
</Overlay>
</nav>
)
}
+49
View File
@@ -0,0 +1,49 @@
import * as React from 'react'
export interface ITransitionProps {
duration: number
extraStyle?: React.CSSProperties
show: boolean
}
export const Transition: React.FC<ITransitionProps> = props => {
const [mounted, setMounted] = React.useState(props.show)
const [opacity, setOpacity] = React.useState(0)
const onTransitionEnd = React.useCallback(() => {
if (opacity === 0) {
setMounted(false)
}
}, [opacity])
const transition = React.useMemo(
() => `all ${props.duration}ms`,
[props.duration])
React.useEffect(() => {
if (!props.show) {
setOpacity(0)
return
}
setMounted(true)
let t = setTimeout(() => {
setOpacity(1)
}, 16)
return () => {
clearTimeout(t)
}
}, [props.show])
return mounted && (
<div
style={{
...props.extraStyle,
opacity,
transition,
}}
onTransitionEnd={onTransitionEnd}
>
{props.children}
</div>
)
}
+52
View File
@@ -0,0 +1,52 @@
import * as React from 'react'
import { Transition } from './Transition'
import { useReducedMotion } from '../../hooks/useReducedMotion'
export interface IOverlayProps {
show: boolean
onClickOverlay: () => void
}
export const Overlay: React.FC<IOverlayProps> = props => {
const motionDisabled = useReducedMotion()
const duration = motionDisabled ? 0 : 250
const onClick = React.useCallback((event: React.MouseEvent<HTMLDivElement>) => {
if (event.target === event.currentTarget) {
props.onClickOverlay()
}
}, [props.onClickOverlay])
React.useEffect(() => {
document.body.classList.toggle('noscroll', props.show)
}, [props.show])
return (
<Transition
duration={duration}
show={props.show}
extraStyle={{
zIndex: 1000000,
}}
>
<div
onClick={onClick}
>
<style jsx>{`
div {
position: fixed;
width: 100%;
height: 100%;
top: 0;
left: 0;
overflow-y: auto;
background-color: rgb(255, 255, 255);
}
`}</style>
{props.children}
</div>
</Transition>
)
}
-19
View File
@@ -1,19 +0,0 @@
import React from 'react'
import Share from './Share'
import Html from './Html'
export default function Page({ children, shareable }) {
return (
<div className={'Article Article--cloud'}>
<div className={'Article-Body'}>
<Html
html={children}
/>
</div>
{!shareable ? null : (
<Share />
)}
</div>
)
}
+21
View File
@@ -0,0 +1,21 @@
import * as React from 'react'
import { Share } from '../Share'
import Html from '../Html'
export interface IPageProps {
showSocialShare: boolean
}
export const Page: React.FC<IPageProps> = props => (
<div className={'Article Article--cloud'}>
<div className={'Article-Body'}>
<Html
html={props.children}
/>
</div>
{!props.showSocialShare ? null : (
<Share />
)}
</div>
)
+22
View File
@@ -0,0 +1,22 @@
import * as React from 'react'
import { dateFormat } from '../../lib/date'
export interface IPageHeaderProps {
tags?: string[]
date?: Date
title: string
}
export const PageHeader: React.FC<IPageHeaderProps> = props => (
<header className="Article-Head">
<h1>{props.title}</h1>
{!props.date ? null : (
<p className="date">{dateFormat(props.date)}</p>
)}
{/* {!(tags.length) ? null : (
<TagList tags={tags} />
)} */}
</header>
)
+11 -6
View File
@@ -1,7 +1,8 @@
import React from 'react'
import cx from 'classnames'
import { Image } from './Image'
module.exports = ({ picture, name, url, profile }) => (
export const PersonCard = ({ picture, name, url, profile }) => (
<div className="PersonCard">
<style jsx>{`
.PersonCard {
@@ -84,7 +85,7 @@ module.exports = ({ picture, name, url, profile }) => (
// Mobile
@media (max-width: var(--mobile-width)) {
@media (max-width: 31.25em) {
.PersonCard {
--person-card-width: 100%;
}
@@ -93,10 +94,14 @@ module.exports = ({ picture, name, url, profile }) => (
<a className="invisible" href={url}>
<div className="PersonCard-Picture">
<Image
data={picture}
opa={false}
/>
<picture>
<img
className={cx({ opa: false })}
alt={''}
src={picture.src}
srcSet={picture.set.map(({ url, density }) => `${url} ${density}x`)}
/>
</picture >
</div>
<div className="PersonCard-Title">
-123
View File
@@ -1,123 +0,0 @@
const React = require('react')
const {getDates} = require('../utils/date')
const {shortName} = require('../models/collective')
const now = new Date()
const dates = getDates(now)
const isToday = weekDayIndex => (now.getDay() - 1) === weekDayIndex
const weekDay = weekDayIndex => dates[weekDayIndex]
const short = shortName
const todayClass = i => isToday(i)
? 'current'
: ''
const HeadDay = ({i, children}) => (
<div className={`schedule-table__head-record ${todayClass(i)}`}>
<p className="day">{children}</p>
<p className="date">{weekDay(i)}</p>
</div>
)
const days = [
'Понедельник',
'Вторник',
'Среда',
'Четверг',
'Пятница',
'Суббота',
]
const Schedule = ({groups}) => (
<div className="schedule-table">
<div className="schedule-table__body">
<div className="schedule-table__body-row">
<div className="schedule-table__body-group">Гр.</div>
{days.map((day, index) => (
<HeadDay i={index}>{day}</HeadDay>
))}
</div>
{groups.map((group, index) => (
<GroupRow key={index} {...group}/>
))}
</div>
</div>
)
const GroupRow = ({name, time, week}) => (
<div className="schedule-table__body-row">
<div className="schedule-table__body-group">
<p className="name">{name}</p>
<p className="time">{time}</p>
</div>
{week.map((day, index) => (
<Group key={index} day={day} dayIndex={index}/>
))}
</div>
)
const Group = ({day, dayIndex}) => (
<div className={`schedule-table__record ${todayClass(dayIndex)}`}>
{day.map((lesson, index) => (
<Cell key={index} {...lesson}/>
))}
</div>
)
const Cell = ({course, teacher, time}) => (
<div className="schedule-table__course">
<Lesson {...course}/>
<Teacher {...teacher}/>
{time
.map(range => ({range}))
.map((range, index) => (
<TimeRange key={index} {...range}/>
))}
</div>
)
const Lesson = ({title, url}) => (
<p className="lesson">
{url
? (
<a href={url}>
{title}
</a>
)
: (
<span>
{title}
</span>
)
}
</p>
)
const Teacher = ({name, url}) => (
<p className="teacher">
{url
? (
<a href={url}>
{short(name)}
</a>
)
: (
<span>
{short(name)}
</span>
)
}
</p>
)
const TimeRange = ({range}) => (
<p className="time">{(range || []).join(' — ')}</p>
)
module.exports = Schedule
+126
View File
@@ -0,0 +1,126 @@
import React from 'react'
const { getDates } = require('../utils/date')
const { shortName } = require('../models/collective')
const now = new Date()
const dates = getDates(now)
const isToday = weekDayIndex => (now.getDay() - 1) === weekDayIndex
const weekDay = weekDayIndex => dates[weekDayIndex]
const short = shortName
const todayClass = i => isToday(i)
? 'current'
: ''
const HeadDay = ({ i, children }) => (
<div className={`schedule-table__head-record ${todayClass(i)}`}>
<p className="day">{children}</p>
<p className="date">{weekDay(i)}</p>
</div>
)
const days = [
'Понедельник',
'Вторник',
'Среда',
'Четверг',
'Пятница',
'Суббота',
]
export const Schedule = ({ groups }) => (
<div className="schedule-table">
<div className="schedule-table__body">
<div className="schedule-table__body-row">
<div className="schedule-table__body-group">Гр.</div>
{days.map((day, index) => (
<HeadDay
key={index}
i={index}
>
{day}
</HeadDay>
))}
</div>
{groups.map((group, index) => (
<GroupRow key={index} {...group} />
))}
</div>
</div>
)
const GroupRow = ({ name, time, week }) => (
<div className="schedule-table__body-row">
<div className="schedule-table__body-group">
<p className="name">{name}</p>
<p className="time">{time}</p>
</div>
{week.map((day, index) => (
<Group key={index} day={day} dayIndex={index} />
))}
</div>
)
const Group = ({ day, dayIndex }) => (
<div className={`schedule-table__record ${todayClass(dayIndex)}`}>
{day.map((lesson, index) => (
<Cell key={index} {...lesson} />
))}
</div>
)
const Cell = ({ course, teacher, time }) => (
<div className="schedule-table__course">
<Lesson {...course} />
<Teacher {...teacher} />
{time
.map(range => ({ range }))
.map((range, index) => (
<TimeRange key={index} {...range} />
))}
</div>
)
const Lesson = ({ title, url }) => (
<p className="lesson">
{url
? (
<a href={url}>
{title}
</a>
)
: (
<span>
{title}
</span>
)
}
</p>
)
const Teacher = ({ name, url }) => (
<p className="teacher">
{url
? (
<a href={url}>
{short(name)}
</a>
)
: (
<span>
{short(name)}
</span>
)
}
</p>
)
const TimeRange = ({ range }) => (
<p className="time">{(range || []).join(' — ')}</p>
)
+1 -1
View File
@@ -1,5 +1,5 @@
const React = require('react')
const text = require('../core/schedule').text
const text = require('../server/schedule').text
const ScheduleList = ({schedules}) => (
<div className="schedule-selector">
@@ -1,6 +1,6 @@
const React = require('react')
import * as React from 'react'
const Share = () => (
export const Share: React.FC = () => (
<div className="likely">
<div className="vkontakte">Поделиться</div>
<div className="facebook">Поделиться</div>
@@ -8,5 +8,3 @@ const Share = () => (
<div className="twitter">Твитнуть</div>
</div>
)
module.exports = Share
-29
View File
@@ -1,29 +0,0 @@
const React = require('react')
const Share = require('./Share')
const getHtml = require('../lib/component').getHtml
const Head = ({url, children}) => (
!url
? <h1>{children}</h1>
: <a href={url}><h2>{children}</h2></a>
)
const TeacherProfile = ({picture, name, url, profile, biography, shareable}) => (
<div className="teacher-profile">
<div className="teacher-profile__picture">
<img src={picture.url}/>
</div>
<div className="teacher-profile__info">
<div className="teacher-profile__biography">
{getHtml(biography)}
</div>
</div>
{!shareable ? null : (
<Share/>
)}
</div>
)
module.exports = TeacherProfile
-65
View File
@@ -1,65 +0,0 @@
const Data = require('./Data')
const Image = require('./Image')
const ImageArtifactType = require('./ImageArtifactType')
const {find, findOne} = require('../lib/store')
const previewTypes = [
ImageArtifactType.SMALL,
ImageArtifactType.MEDIUM,
ImageArtifactType.BIG,
ImageArtifactType.ORIGIN,
]
const store = () => Data.getStore(Album)
class Album {
static async find(query, options = {}) {
const items = await find(store(), query, options)
return Promise.all(items.map(processAlbum))
}
static async findById(id) {
const item = await findOne(store(), {id})
return !item
? null
: processAlbum(item)
}
}
const previewFromImage = (imgs = []) => imgs.length
? imgs[0]
: null
const processAlbum = async album => {
let preview = {}
// {
// data: [
// {
// url: null,
// width: 0,
// height: 0,
// }
// ]
// }
const previewImageId = album.preview ? album.preview : previewFromImage(album.images)
if (previewImageId) {
const image = await Image.findById(previewImageId)
if (image) {
// const imageArtifacts = image.findArtifact(previewTypes)
// if (imageArtifacts) {
// preview = imageArtifacts
// }
preview = image.getPicture(ImageArtifactType.SMALL)
}
}
return {
...album,
preview,
url: `/album/${album.id}`,
}
}
module.exports = Album
+63
View File
@@ -0,0 +1,63 @@
import Data from './Data'
import Image from './Image'
import ImageArtifactType from './ImageArtifactType'
import { find, findOne } from '../lib/store'
const previewTypes = [
ImageArtifactType.SMALL,
ImageArtifactType.MEDIUM,
ImageArtifactType.BIG,
ImageArtifactType.ORIGIN,
]
const store = () => Data.getStore('Album')
export default class Album {
static async find(query, options = {}) {
const items = await find(store(), query, options as any)
return Promise.all(items.map(processAlbum))
}
static async findById(id) {
const item = await findOne(store(), { id })
return !item
? null
: processAlbum(item)
}
}
const previewFromImage = (imgs = []) => imgs.length
? imgs[0]
: null
const processAlbum = async album => {
let preview = {}
// {
// data: [
// {
// url: null,
// width: 0,
// height: 0,
// }
// ]
// }
const previewImageId = album.preview ? album.preview : previewFromImage(album.images)
if (previewImageId) {
const image = await Image.findById(previewImageId)
if (image) {
// const imageArtifacts = image.findArtifact(previewTypes)
// if (imageArtifacts) {
// preview = imageArtifacts
// }
preview = image.getPicture(ImageArtifactType.SMALL)
}
}
return {
...album,
preview,
url: `/album/${album.id}`,
}
}
-117
View File
@@ -1,117 +0,0 @@
const Data = require('./Data')
const Image = require('./Image')
const Config = require('./Config')
const {find, findOne, total} = require('../lib/store')
const store = () => Data.getStore(Article)
function make(C) {
return x => new C(x)
}
class Article {
static async find(query, options = {}) {
const items = await find(store(), query, options)
return Promise.all(items.map(processArticle))
}
static async findById(id) {
const item = await findOne(store(), {id})
return !item
? null
: processArticle(item)
}
static async total(query = {}) {
return total(store(), query)
}
static async findPinned() {
const now = new Date()
const query = {until: {$gte: now}}
return Article.find(query, {
sort: {date: -1},
})
}
constructor(data) {
this.id = data.id
this.images = data.images
this.post = data.post
this.folder = data.folder
this.date = data.date
this.title = data.title
this.until = data.until
this.tags = (data.tags || []).map(make(Tag))
this.content = data.content
this.hash = data.hash
this.type = data.type
this.origin = data.origin
this.file = data.file
this.version = data.version
this.preview = data.preview
this.url = `/article/${this.id}`
}
plain() {
return {
id: this.id,
images: this.images,
post: this.post,
folder: this.folder,
date: this.date,
title: this.title,
until: this.until,
tags: this.tags,
content: this.content,
hash: this.hash,
type: this.type,
origin: this.origin,
file: this.file,
version: this.version,
preview: this.preview,
url: this.url,
}
}
}
class Tag {
constructor(tag) {
this.name = tag;
}
}
const previewFromImage = (imgs = []) => imgs.length
? imgs[0]
: null
async function resolveDefaultPreview() {
const config = await Config.findConfig()
if (!config) return null
return Image.findByFile(config.articleCardDefaultPreview)
}
async function processArticle(article) {
let preview = null
const previewId = article.preview
? article.preview
: previewFromImage(article.images)
if (previewId) {
preview = await Image.findById(previewId)
} else {
preview = await resolveDefaultPreview()
}
return new Article({
...article,
preview,
})
}
module.exports = Article
+134
View File
@@ -0,0 +1,134 @@
import Data from './Data'
import Image from './Image'
import Config from './Config'
import { find, findOne, total } from '../lib/store'
const store = () => Data.getStore<Article>('Article')
function make(C) {
return x => new C(x)
}
export default class Article {
static async find(query, options = {}): Promise<Article[]> {
const items = await find(store(), query, options as any)
return Promise.all(items.map(processArticle))
}
static async findById(id) {
const item = await findOne(store(), { id })
return !item
? null
: processArticle(item)
}
static async total(query = {}) {
return total(store(), query)
}
static async findPinned() {
const now = new Date()
const query = { until: { $gte: now } }
return Article.find(query, {
sort: { date: -1 },
})
}
public id: any
public images: any
public post: any
public folder: any
public date: any
public title: any
public until: any
public tags: any
public content: any
public hash: any
public type: any
public origin: any
public file: any
public version: any
public preview: any
public url: any
constructor(data) {
this.id = data.id
this.images = data.images
this.post = data.post
this.folder = data.folder
this.date = data.date
this.title = data.title
this.until = data.until
this.tags = (data.tags || []).map(make(Tag))
this.content = data.content
this.hash = data.hash
this.type = data.type
this.origin = data.origin
this.file = data.file
this.version = data.version
this.preview = data.preview
this.url = `/article/${this.id}`
}
plain() {
return {
id: this.id,
images: this.images,
post: this.post,
folder: this.folder,
date: this.date,
title: this.title,
until: this.until,
tags: this.tags,
content: this.content,
hash: this.hash,
type: this.type,
origin: this.origin,
file: this.file,
version: this.version,
preview: this.preview,
url: this.url,
}
}
}
class Tag {
public name: string
constructor(tag) {
this.name = tag;
}
}
const previewFromImage = (imgs = []) => imgs.length
? imgs[0]
: null
async function resolveDefaultPreview() {
const config = await Config.findConfig()
if (!config) return null
return Image.findByFile(config.articleCardDefaultPreview)
}
async function processArticle(article) {
let preview = null
const previewId = article.preview
? article.preview
: previewFromImage(article.images)
if (previewId) {
preview = await Image.findById(previewId)
} else {
preview = await resolveDefaultPreview()
}
return new Article({
...article,
preview,
})
}
-37
View File
@@ -1,37 +0,0 @@
const Data = require('./Data')
const {findOne} = require('../lib/store')
class Config {
static get store() {
return Data.getStore(Config)
}
static async findConfig() {
const config = await Config.findById('settings')
return config || new Config({})
}
static async findById(id) {
const data = await findOne(Config.store, {id})
if (!data) return null
return new Config(data)
}
constructor({hash, file, ...data}) {
this.hash = hash
this.file = file
this.server = data.server
this.articlesPerPage = data.articlesPerPage || 5
this.collectiveOrder = data.collectiveOrder || []
this.articleCardDefaultPreview = data.articleCardDefaultPreview
this.collectiveImage = data.collectiveImage
const redirect = data.redirect || {}
this.redirect = new Map(Object
.entries(redirect)
)
}
}
module.exports = Config
+42
View File
@@ -0,0 +1,42 @@
import Data from './Data'
import { findOne } from '../lib/store'
const store = () => Data.getStore('Settings')
export default class Config {
static async findConfig() {
const config = await Config.findById('settings')
return config || new Config({} as any)
}
static async findById(id: string) {
const data = await findOne(store(), { id })
if (!data) return null
return new Config(data)
}
public hash: any
public file: any
public server: any
public articlesPerPage: any
public collectiveOrder: any
public articleCardDefaultPreview: any
public collectiveImage: any
public redirect: any
constructor({ hash, file, ...data }) {
this.hash = hash
this.file = file
this.server = data.server
this.articlesPerPage = data.articlesPerPage || 5
this.collectiveOrder = data.collectiveOrder || []
this.articleCardDefaultPreview = data.articleCardDefaultPreview
this.collectiveImage = data.collectiveImage
const redirect = data.redirect || {}
this.redirect = new Map(Object
.entries(redirect)
)
}
}
-19
View File
@@ -1,19 +0,0 @@
const db = require('./db')
const store = new Map()
class Data {
static setStore(Class, collection) {
store.set(Class, collection)
}
static getStore(Class) {
return store.get(Class)
}
static getCollection(name) {
return db.collection(name)
}
}
module.exports = Data
+18
View File
@@ -0,0 +1,18 @@
import { Collection } from 'mongodb'
import * as db from './db'
const store = new Map<string, Collection>()
export default class Data {
static setStore(key: string, collection: Collection) {
store.set(key, collection)
}
static getStore<T>(key: string): Collection<T> {
return store.get(key)
}
static getCollection(name: string): Collection {
return db.collection(name)
}
}
+20 -8
View File
@@ -1,12 +1,12 @@
const Data = require('./Data')
const Image = require('./Image')
const { find, findOne } = require('../lib/store')
import Data from './Data'
import Image from './Image'
import { find, findOne } from '../lib/store'
const store = () => Data.getStore(Document)
const store = () => Data.getStore('Document')
class Document {
export default class Document {
static async find(query, options = {}) {
const items = await find(store(), query, options)
const items = await find(store(), query, options as any)
return Promise.all(items.map(processDocument))
}
@@ -18,6 +18,17 @@ class Document {
return processDocument(data)
}
public id: any
public hash: any
public file: any
public fileInfo: any
public type: any
public title: any
public category: any
public url: any
public preview: any
public viewUrl: any
constructor(data) {
this.id = data.id
this.hash = data.hash
@@ -37,6 +48,9 @@ class Document {
}
class DocumentFile {
public name: any
public size: any
constructor(data) {
this.name = data.name
this.size = data.size
@@ -52,5 +66,3 @@ const processDocument = async data => {
preview,
})
}
module.exports = Document
-75
View File
@@ -1,75 +0,0 @@
const Data = require('./Data')
const ImageArtifactType = require('./ImageArtifactType')
const {findOne} = require('../lib/store')
const { mapOf } = require('../server/lib')
const store = () => Data.getStore(Image)
class Image {
static async findById(id) {
const data = await findOne(store(), {_id: id})
if (!data) return null
const artifacts = data.data
return new Image({...data, artifacts})
}
static async findByFile(file) {
const data = await findOne(store(), {file})
if (!data) return null
const artifacts = data.data
return new Image({...data, artifacts})
}
constructor({hash, file, artifacts}) {
this.hash = hash
this.file = file
this.artifacts = mapOf(ImageArtifact, artifacts)
}
getArtifact(size) {
return this.artifacts.get(size)
}
findArtifact(sizes) {
for (let size of sizes) {
const a = this.getArtifact(size)
if (a) return a
}
return null
}
getPicture(size) {
const retinaSize = ImageArtifactType.retina(size)
const a = this.getArtifact(size)
const a2 = this.getArtifact(retinaSize)
const srcset = !a2
? []
: [{
url: a2.url,
density: ImageArtifactType.RETINA_DENSITY,
}]
return {
src: a.url,
width: a.width,
height: a.height,
set: srcset,
}
}
}
class ImageArtifact {
constructor({url, size, width, height}) {
this.url = url
this.size = size
this.width = width
this.height = height
}
}
module.exports = Image
+81
View File
@@ -0,0 +1,81 @@
import Data from './Data'
import ImageArtifactType from './ImageArtifactType'
import { findOne } from '../lib/store'
import { mapOf } from '../server/lib'
const store = () => Data.getStore('Image')
export default class Image {
static async findById(id) {
const data = await findOne(store(), { _id: id })
if (!data) return null
const artifacts = data.data
return new Image({ ...data, artifacts })
}
static async findByFile(file: string) {
const data = await findOne(store(), { file })
if (!data) return null
const artifacts = data.data
return new Image({ ...data, artifacts })
}
public hash: any
public file: any
public artifacts: any
constructor({ hash, file, artifacts }) {
this.hash = hash
this.file = file
this.artifacts = mapOf(ImageArtifact, artifacts)
}
getArtifact(size) {
return this.artifacts.get(size)
}
findArtifact(sizes) {
for (let size of sizes) {
const a = this.getArtifact(size)
if (a) return a
}
return null
}
getPicture(size) {
const retinaSize = ImageArtifactType.retina(size)
const a = this.getArtifact(size)
const a2 = this.getArtifact(retinaSize)
const srcset = !a2
? []
: [{
url: a2.url,
density: ImageArtifactType.RETINA_DENSITY,
}]
return {
src: a.url,
width: a.width,
height: a.height,
set: srcset,
}
}
}
class ImageArtifact {
public url: any
public size: any
public width: any
public height: any
constructor({ url, size, width, height }) {
this.url = url
this.size = size
this.width = width
this.height = height
}
}
-93
View File
@@ -1,93 +0,0 @@
const Data = require('./Data')
const Image = require('./Image')
const Config = require('./Config')
const {find, findOne, total} = require('../lib/store')
const store = () => Data.getStore(Page)
class Page {
static async find(query, options = {}) {
const items = await find(store(), query, options)
return Promise.all(items.map(processPage))
}
static async findById(id) {
const item = await findOne(store(), {id})
return !item
? null
: processPage(item)
}
static async findByUrl(url) {
const item = await findOne(store(), {url})
return !item
? null
: processPage(item)
}
static async total(query = {}) {
return total(store(), query)
}
constructor(data) {
this.id = data.id
this.hash = data.hash
this.file = data.file
this.url = data.url
this.content = data.content
this.title = data.title
this.data = data.data
this.images = data.images
this.documents = data.documents
this.preview = data.preview
}
plain() {
return {
id: this.id,
images: this.images,
documents: this.documents,
data: this.data,
title: this.title,
content: this.content,
hash: this.hash,
file: this.file,
preview: this.preview,
url: this.url,
}
}
}
const previewFromImage = (imgs = []) => imgs.length
? imgs[0]
: null
async function resolveDefaultPreview() {
const config = await Config.findConfig()
if (!config) return null
return Image.findByFile(config.articleCardDefaultPreview)
}
async function processPage(article) {
let preview = null
const previewId = article.preview
? article.preview
: previewFromImage(article.images)
if (previewId) {
preview = await Image.findById(previewId)
} else {
preview = await resolveDefaultPreview()
}
return new Page({
...article,
preview,
})
}
module.exports = Page
+104
View File
@@ -0,0 +1,104 @@
import Data from './Data'
import { find as storeFind, findOne, total } from '../lib/store'
import Image from './Image'
import Config from './Config'
const store = () => Data.getStore('Page')
export default class Page {
static async find(query, options = {}): Promise<Page[]> {
const items = await storeFind(store(), query, options as any)
return Promise.all(items.map(processPage))
}
static async findById(id) {
const item = await findOne(store(), { id })
return !item
? null
: processPage(item)
}
static async findByUrl(url) {
const item = await findOne(store(), { url })
return !item
? null
: processPage(item)
}
static async total(query = {}) {
return total(store(), query)
}
public id: any
public hash: any
public file: any
public url: string
public content: any
public title: any
public data: any
public images: any
public documents: any
public preview: any
public tokens: any[]
constructor(data) {
this.id = data.id
this.hash = data.hash
this.file = data.file
this.url = data.url
this.content = data.content
this.title = data.title
this.data = data.data
this.images = data.images
this.documents = data.documents
this.preview = data.preview
this.tokens = data.tokens
}
plain() {
return {
id: this.id,
images: this.images,
documents: this.documents,
data: this.data,
title: this.title,
content: this.content,
hash: this.hash,
file: this.file,
preview: this.preview,
url: this.url,
}
}
}
const previewFromImage = (imgs = []) => imgs.length
? imgs[0]
: null
async function resolveDefaultPreview() {
const config = await Config.findConfig()
if (!config) return null
return Image.findByFile(config.articleCardDefaultPreview)
}
async function processPage(article) {
let preview = null
const previewId = article.preview
? article.preview
: previewFromImage(article.images)
if (previewId) {
preview = await Image.findById(previewId)
} else {
preview = await resolveDefaultPreview()
}
return new Page({
...article,
preview,
})
}
-76
View File
@@ -1,76 +0,0 @@
const Data = require('./Data')
const Image = require('./Image')
const {find, findOne} = require('../lib/store')
const store = () => Data.getStore(Teacher)
class Teacher {
static async find(query, options = {}) {
const items = await find(store(), query, options)
return Promise.all(items.map(processProfile))
}
static async findById(id) {
const data = await findOne(store(), {id})
if (!data) return null
return processProfile(data)
}
constructor(data) {
this.id = data.id
this.post = data.post
this.file = data.file
this.edu = data.edu
this.picture = data.picture
this.preview = data.preview
this.diploma = data.diploma
this.position = data.position
this.name = data.name
this.status = data.status
this.hash = data.hash
this.url = `/teacher/${this.id}`
}
/**
*
* "First Middle Last" -> "F. M. Last"
*
* @returns {string}
*/
shortName() {
const f = i => i.replace(/^(.).+/, '$1')
const [first, middle, last] = this.splitName()
return `${f(first)}. ${f(middle)}. ${last}`
}
/**
*
* "First Middle Last" -> ["First", "Middle", "Last"]
*
* @returns {Array|{index: number, input: string}}
*/
splitName() {
const name = this.name
const m = /(.+)\s(.+)\s(.+)/.exec(name)
return m.slice(1)
}
}
const processProfile = async profile => {
const imageId = profile.picture
const previewId = profile.preview
const picture = await Image.findById(imageId)
const preview = await Image.findById(previewId)
return new Teacher({
...profile,
picture,
preview,
})
}
module.exports = Teacher
+87
View File
@@ -0,0 +1,87 @@
import Data from './Data'
import Image from './Image'
import { find, findOne } from '../lib/store'
const store = () => Data.getStore('Teacher')
export default class Teacher {
static async find(query, options = {}) {
const items = await find(store(), query, options as any)
return Promise.all(items.map(processProfile))
}
static async findById(id) {
const data = await findOne(store(), { id })
if (!data) return null
return processProfile(data)
}
public id: any
public post: any
public file: any
public edu: any
public picture: any
public preview: any
public diploma: any
public position: any
public name: any
public status: any
public hash: any
public url: any
constructor(data) {
this.id = data.id
this.post = data.post
this.file = data.file
this.edu = data.edu
this.picture = data.picture
this.preview = data.preview
this.diploma = data.diploma
this.position = data.position
this.name = data.name
this.status = data.status
this.hash = data.hash
this.url = `/teacher/${this.id}`
}
/**
*
* "First Middle Last" -> "F. M. Last"
*
* @returns {string}
*/
shortName() {
const f = i => i.replace(/^(.).+/, '$1')
const [first, middle, last] = this.splitName()
return `${f(first)}. ${f(middle)}. ${last}`
}
/**
*
* "First Middle Last" -> ["First", "Middle", "Last"]
*
* @returns {Array|{index: number, input: string}}
*/
splitName() {
const name = this.name
const m = /(.+)\s(.+)\s(.+)/.exec(name)
return m.slice(1)
}
}
const processProfile = async profile => {
const imageId = profile.picture
const previewId = profile.preview
const picture = await Image.findById(imageId)
const preview = await Image.findById(previewId)
return new Teacher({
...profile,
picture,
preview,
})
}
Loaded 100 of 153 files, more files were not shown because too many files have changed in this diff. Show more