Merge pull request #8 from tmshv/dev

Updated to Nextjs
This commit is contained in:
tmshv authored and GitHub committed 2020-02-12 22:36:46 +03:00
commit b232a02549
153 files changed
+9627 -6468

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.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
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