Unverified Commit b979e508 authored by NGPixel's avatar NGPixel

chore: purge legacy code

parent 9fb9f53d
{
"comments": true,
"plugins": [
"lodash",
"graphql-tag",
"@babel/plugin-syntax-dynamic-import",
"@babel/plugin-syntax-import-meta",
"@babel/plugin-proposal-class-properties",
"@babel/plugin-proposal-json-strings",
[
"@babel/plugin-proposal-decorators",
{
"legacy": true
}
],
"@babel/plugin-proposal-function-sent",
"@babel/plugin-proposal-export-namespace-from",
"@babel/plugin-proposal-numeric-separator",
"@babel/plugin-proposal-throw-expressions",
[
"prismjs", {
"languages": ["clike", "markup"],
"plugins": ["line-numbers", "autoloader", "normalize-whitespace", "copy-to-clipboard", "toolbar"],
"theme": "twilight",
"css": true
}
]
],
"presets": [
[
"@babel/preset-env", {
"useBuiltIns": "entry",
"corejs": 3,
"debug": false
}
]
]
}
......@@ -9,4 +9,11 @@ git config oh-my-zsh.hide-info 1
echo "Waiting for DB container to come online..."
/usr/local/bin/wait-for localhost:5432 -- echo "DB ready"
echo "Installing dependencies..."
cd server
npm install
cd ../ux
npm install
cd ..
echo "Ready!"
......@@ -33,7 +33,7 @@
"args": [],
// Set the shell type
"options": {
"cwd": "/workspace"
"cwd": "/workspace/server"
},
// Mark as a background task to avoid the spinner animation on the terminal tab
"isBackground": true,
......
......@@ -43,7 +43,6 @@ The current stable release (2.x) is available at https://js.wiki
### Requirements
- Node.js **18.x** or later
- Yarn
- PostgreSQL **11** or later
### Usage
......@@ -53,18 +52,18 @@ The current stable release (2.x) is available at https://js.wiki
1. Edit `config.yml` and fill in the database details. **You need an empty PostgreSQL database.**
1. Run the following commands to install dependencies and generate the client assets:
```sh
yarn
yarn legacy:build
cd ux
yarn
yarn build
cd server
npm install
cd ../ux
npm install
npm run build
cd ..
```
1. Run this command to start the server:
```sh
node server
```
1. In your browser, navigate to `http://localhost:5000` *(or the IP/hostname of the server and the PORT you defined earlier.)*
1. In your browser, navigate to `http://localhost:3000` *(or the IP/hostname of the server and the PORT you defined earlier.)*
1. Login using the default administrator user:
- Email: `admin@example.com`
- Password: `12345678`
......@@ -93,17 +92,13 @@ The current stable release (2.x) is available at https://js.wiki
1. Two terminals will launch in split-screen mode at the bottom of the screen. **Server** on the left and **UX** on the right.
1. In the left-side terminal (Server), run the command:
```sh
yarn legacy:build
npm run dev
```
1. In the right-side terminal (UX), run the command:
```sh
yarn build
npm run dev
```
1. Back in the left-side terminal (Server), run the command:
```sh
yarn dev
```
1. Open your browser to `http://localhost:5000`
1. Open your browser to `http://localhost:3000`
1. Login using the default administrator user:
- Email: `admin@example.com`
- Password: `12345678`
......@@ -115,7 +110,7 @@ The current stable release (2.x) is available at https://js.wiki
From the left-side terminal (Server), run the command:
```sh
yarn dev
npm run dev
```
This will launch the server and automatically restart upon modification of any server files.
......@@ -124,31 +119,18 @@ Only precompiled client assets are served in this mode. See the sections below o
### Frontend Development (Quasar/Vue 3)
> Make sure you are running `yarn dev` in the left-side terminal (Server) first! Requests still need to be forwarded to the server, even in SPA mode!
> Make sure you are running `npm run dev` in the left-side terminal (Server) first! Requests still need to be forwarded to the server, even in SPA mode!
If you wish to modify any frontend content (under `/ux`), you need to start the Quasar Dev Server in the right-side terminal (UX):
```sh
yarn dev
npm run dev
```
You can then access the site at `http://localhost:5001`. Notice the port being `5001` rather than `5000`. The app runs in a SPA (single-page application) mode and automatically hot-reload any modified component. Any requests made to the `/graphql` endpoint are automatically forwarded to the server running on port `5000`, which is why both must be running at the same time.
Note that not all sections/features are available from this mode, notably the page editing features which still relies on the old client code (Vuetify/Vue 2). For example, trying to edit a page will simply not work. You must use the normal mode (port 5000) to edit pages as it relies on legacy client code. As more features gets ported / developed for Vue 3, they will become available in the SPA mode.
Any change you make to the frontend will not be reflected on port 5000 until you run the command `yarn build` in the right-side terminal.
### Legacy Frontend Development (Vuetify/Vue 2)
Client code from Wiki.js 2.x is located under `/client`. Some sections still rely on this legacy code (notably the page editing features). Code is gradually being removed from this location and replaced with newer code in `/ux`.
In the unlikely event that you need to modify legacy code and regenerate the old client files, you can do so by running in this command in the left-side terminal (Server):
```sh
yarn legacy:build
```
Then run `yarn dev` to start the server again.
### pgAdmin
A web version of pgAdmin (a PostgreSQL administration tool) is available at `http://localhost:8000`. Use the login `dev` / `123123` to login.
......
......@@ -8,6 +8,7 @@ If you find such vulnerability, it's important to disclose it in a quick and sec
| Version | Supported |
| ------- | ------------------ |
| 3.x.x | :white_check_mark: |
| 2.x.x | :white_check_mark: |
| 1.x.x | :x: |
......
module.exports = {
classPrefix: 'mdz-',
options: ['setClasses'],
'feature-detects': [
'css/backdropfilter'
]
}
/* global siteConfig */
import Vue from 'vue'
import VueRouter from 'vue-router'
import VueClipboards from 'vue-clipboards'
import { ApolloClient } from 'apollo-client'
import { BatchHttpLink } from 'apollo-link-batch-http'
import { ApolloLink } from 'apollo-link'
import { ErrorLink } from 'apollo-link-error'
import { InMemoryCache } from 'apollo-cache-inmemory'
import VueApollo from 'vue-apollo'
import Vuetify from 'vuetify/lib'
import Velocity from 'velocity-animate'
import Vuescroll from 'vuescroll/dist/vuescroll-native'
import Hammer from 'hammerjs'
import moment from 'moment-timezone'
import VueMoment from 'vue-moment'
import store from './store'
import Cookies from 'js-cookie'
// ====================================
// Load Modules
// ====================================
import boot from './modules/boot'
import localization from './modules/localization'
// ====================================
// Load Helpers
// ====================================
import helpers from './helpers'
// ====================================
// Initialize Global Vars
// ====================================
window.WIKI = null
window.boot = boot
window.Hammer = Hammer
moment.locale(siteConfig.lang)
store.commit('user/REFRESH_AUTH')
// ====================================
// Initialize Apollo Client (GraphQL)
// ====================================
const graphQLEndpoint = window.location.protocol + '//' + window.location.host + '/_graphql'
const graphQLLink = ApolloLink.from([
new ErrorLink(({ graphQLErrors, networkError }) => {
if (graphQLErrors) {
let isAuthError = false
graphQLErrors.map(({ message, locations, path }) => {
if (message === `Forbidden`) {
isAuthError = true
}
console.error(`[GraphQL error]: Message: ${message}, Location: ${locations}, Path: ${path}`)
})
store.commit('showNotification', {
style: 'red',
message: isAuthError ? `You are not authorized to access this resource.` : `An unexpected error occurred.`,
icon: 'alert'
})
}
if (networkError) {
console.error(networkError)
store.commit('showNotification', {
style: 'red',
message: `Network Error: ${networkError.message}`,
icon: 'alert'
})
}
}),
new BatchHttpLink({
includeExtensions: true,
uri: graphQLEndpoint,
credentials: 'include',
fetch: async (uri, options) => {
// Strip __typename fields from variables
let body = JSON.parse(options.body)
body = body.map(bd => {
return ({
...bd,
variables: JSON.parse(JSON.stringify(bd.variables), (key, value) => { return key === '__typename' ? undefined : value })
})
})
options.body = JSON.stringify(body)
// Inject authentication token
const jwtToken = Cookies.get('jwt')
if (jwtToken) {
options.headers.Authorization = `Bearer ${jwtToken}`
}
const resp = await fetch(uri, options)
// Handle renewed JWT
const newJWT = resp.headers.get('new-jwt')
if (newJWT) {
Cookies.set('jwt', newJWT, { expires: 365 })
}
return resp
}
})
])
window.graphQL = new ApolloClient({
link: graphQLLink,
cache: new InMemoryCache(),
connectToDevTools: (process.env.node_env === 'development')
})
// ====================================
// Initialize Vue Modules
// ====================================
Vue.config.productionTip = false
Vue.use(VueRouter)
Vue.use(VueApollo)
Vue.use(VueClipboards)
Vue.use(localization.VueI18Next)
Vue.use(helpers)
Vue.use(Vuetify)
Vue.use(VueMoment, { moment })
Vue.use(Vuescroll)
Vue.prototype.Velocity = Velocity
// ====================================
// Register Vue Components
// ====================================
Vue.component('Comments', () => import(/* webpackChunkName: "comments" */ './components/comments.vue'))
Vue.component('Editor', () => import(/* webpackPrefetch: -100, webpackChunkName: "editor" */ './components/editor.vue'))
Vue.component('History', () => import(/* webpackChunkName: "history" */ './components/history.vue'))
Vue.component('Loader', () => import(/* webpackPrefetch: true, webpackChunkName: "ui-extra" */ './components/common/loader.vue'))
Vue.component('NavHeader', () => import(/* webpackMode: "eager" */ './components/common/nav-header.vue'))
Vue.component('NewPage', () => import(/* webpackChunkName: "new-page" */ './components/new-page.vue'))
Vue.component('Notify', () => import(/* webpackMode: "eager" */ './components/common/notify.vue'))
Vue.component('NotFound', () => import(/* webpackChunkName: "not-found" */ './components/not-found.vue'))
Vue.component('PageSelector', () => import(/* webpackPrefetch: true, webpackChunkName: "ui-extra" */ './components/common/page-selector.vue'))
Vue.component('PageSource', () => import(/* webpackChunkName: "source" */ './components/source.vue'))
Vue.component('SearchResults', () => import(/* webpackPrefetch: true, webpackChunkName: "ui-extra" */ './components/common/search-results.vue'))
Vue.component('SocialSharing', () => import(/* webpackPrefetch: true, webpackChunkName: "ui-extra" */ './components/common/social-sharing.vue'))
Vue.component('Tags', () => import(/* webpackChunkName: "tags" */ './components/tags.vue'))
Vue.component('Unauthorized', () => import(/* webpackChunkName: "unauthorized" */ './components/unauthorized.vue'))
Vue.component('VCardChin', () => import(/* webpackPrefetch: true, webpackChunkName: "ui-extra" */ './components/common/v-card-chin.vue'))
Vue.component('VCardInfo', () => import(/* webpackPrefetch: true, webpackChunkName: "ui-extra" */ './components/common/v-card-info.vue'))
Vue.component('NavFooter', () => import(/* webpackChunkName: "theme" */ './themes/' + siteConfig.theme + '/components/nav-footer.vue'))
Vue.component('Page', () => import(/* webpackChunkName: "theme" */ './themes/' + siteConfig.theme + '/components/page.vue'))
let bootstrap = () => {
// ====================================
// Notifications
// ====================================
window.addEventListener('beforeunload', () => {
store.dispatch('startLoading')
})
const apolloProvider = new VueApollo({
defaultClient: window.graphQL
})
// ====================================
// Bootstrap Vue
// ====================================
const i18n = localization.init()
let darkModeEnabled = siteConfig.darkMode
if ((store.get('user/appearance') || '').length > 0) {
darkModeEnabled = (store.get('user/appearance') === 'dark')
}
window.WIKI = new Vue({
el: '#root',
components: {},
mixins: [helpers],
apolloProvider,
store,
i18n,
vuetify: new Vuetify({
rtl: siteConfig.rtl,
theme: {
dark: darkModeEnabled
}
}),
mounted () {
this.$moment.locale(siteConfig.lang)
if ((store.get('user/dateFormat') || '').length > 0) {
this.$moment.updateLocale(this.$moment.locale(), {
longDateFormat: {
'L': store.get('user/dateFormat')
}
})
}
if ((store.get('user/timezone') || '').length > 0) {
this.$moment.tz.setDefault(store.get('user/timezone'))
}
}
})
// ----------------------------------
// Dispatch boot ready
// ----------------------------------
window.boot.notify('vue')
}
window.boot.onDOMReady(bootstrap)
<template lang="pug">
div(v-intersect.once='onIntersect')
v-textarea#discussion-new(
outlined
flat
:placeholder='$t(`common:comments.newPlaceholder`)'
auto-grow
dense
rows='3'
hide-details
v-model='newcomment'
color='blue-grey darken-2'
:background-color='$vuetify.theme.dark ? `grey darken-5` : `white`'
v-if='permissions.write'
:aria-label='$t(`common:comments.fieldContent`)'
)
v-row.mt-2(dense, v-if='!isAuthenticated && permissions.write')
v-col(cols='12', lg='6')
v-text-field(
outlined
color='blue-grey darken-2'
:background-color='$vuetify.theme.dark ? `grey darken-5` : `white`'
:placeholder='$t(`common:comments.fieldName`)'
hide-details
dense
autocomplete='name'
v-model='guestName'
:aria-label='$t(`common:comments.fieldName`)'
)
v-col(cols='12', lg='6')
v-text-field(
outlined
color='blue-grey darken-2'
:background-color='$vuetify.theme.dark ? `grey darken-5` : `white`'
:placeholder='$t(`common:comments.fieldEmail`)'
hide-details
type='email'
dense
autocomplete='email'
v-model='guestEmail'
:aria-label='$t(`common:comments.fieldEmail`)'
)
.d-flex.align-center.pt-3(v-if='permissions.write')
v-icon.mr-1(color='blue-grey') mdi-language-markdown-outline
.caption.blue-grey--text {{$t('common:comments.markdownFormat')}}
v-spacer
.caption.mr-3(v-if='isAuthenticated')
i18next(tag='span', path='common:comments.postingAs')
strong(place='name') {{userDisplayName}}
v-btn(
dark
color='blue-grey darken-2'
@click='postComment'
depressed
:aria-label='$t(`common:comments.postComment`)'
)
v-icon(left) mdi-comment
span.text-none {{$t('common:comments.postComment')}}
v-divider.mt-3(v-if='permissions.write')
.pa-5.d-flex.align-center.justify-center(v-if='isLoading && !hasLoadedOnce')
v-progress-circular(
indeterminate
size='20'
width='1'
color='blue-grey'
)
.caption.blue-grey--text.pl-3: em {{$t('common:comments.loading')}}
v-timeline(
dense
v-else-if='comments && comments.length > 0'
)
v-timeline-item.comments-post(
color='pink darken-4'
large
v-for='cm of comments'
:key='`comment-` + cm.id'
:id='`comment-post-id-` + cm.id'
)
template(v-slot:icon)
v-avatar(color='blue-grey')
//- v-img(src='http://i.pravatar.cc/64')
span.white--text.title {{cm.initials}}
v-card.elevation-1
v-card-text
.comments-post-actions(v-if='permissions.manage && !isBusy && commentEditId === 0')
v-icon.mr-3(small, @click='editComment(cm)') mdi-pencil
v-icon(small, @click='deleteCommentConfirm(cm)') mdi-delete
.comments-post-name.caption: strong {{cm.authorName}}
.comments-post-date.overline.grey--text {{cm.createdAt | moment('from') }} #[em(v-if='cm.createdAt !== cm.updatedAt') - {{$t('common:comments.modified', { reldate: $options.filters.moment(cm.updatedAt, 'from') })}}]
.comments-post-content.mt-3(v-if='commentEditId !== cm.id', v-html='cm.render')
.comments-post-editcontent.mt-3(v-else)
v-textarea(
outlined
flat
auto-grow
dense
rows='3'
hide-details
v-model='commentEditContent'
color='blue-grey darken-2'
:background-color='$vuetify.theme.dark ? `grey darken-5` : `white`'
)
.d-flex.align-center.pt-3
v-spacer
v-btn.mr-3(
dark
color='blue-grey darken-2'
@click='editCommentCancel'
outlined
)
v-icon(left) mdi-close
span.text-none {{$t('common:actions.cancel')}}
v-btn(
dark
color='blue-grey darken-2'
@click='updateComment'
depressed
)
v-icon(left) mdi-comment
span.text-none {{$t('common:comments.updateComment')}}
.pt-5.text-center.body-2.blue-grey--text(v-else-if='permissions.write') {{$t('common:comments.beFirst')}}
.text-center.body-2.blue-grey--text(v-else) {{$t('common:comments.none')}}
v-dialog(v-model='deleteCommentDialogShown', max-width='500')
v-card
.dialog-header.is-red {{$t('common:comments.deleteConfirmTitle')}}
v-card-text.pt-5
span {{$t('common:comments.deleteWarn')}}
.caption: strong {{$t('common:comments.deletePermanentWarn')}}
v-card-chin
v-spacer
v-btn(text, @click='deleteCommentDialogShown = false') {{$t('common:actions.cancel')}}
v-btn(color='red', dark, @click='deleteComment') {{$t('common:actions.delete')}}
</template>
<script>
import gql from 'graphql-tag'
import { get } from 'vuex-pathify'
import validate from 'validate.js'
import _ from 'lodash'
export default {
data () {
return {
newcomment: '',
isLoading: true,
hasLoadedOnce: false,
comments: [],
guestName: '',
guestEmail: '',
commentToDelete: {},
commentEditId: 0,
commentEditContent: null,
deleteCommentDialogShown: false,
isBusy: false,
scrollOpts: {
duration: 1500,
offset: 0,
easing: 'easeInOutCubic'
}
}
},
computed: {
pageId: get('page/id'),
permissions: get('page/effectivePermissions@comments'),
isAuthenticated: get('user/authenticated'),
userDisplayName: get('user/name')
},
methods: {
onIntersect (entries, observer, isIntersecting) {
if (isIntersecting) {
this.fetch(true)
}
},
async fetch (silent = false) {
this.isLoading = true
try {
const results = await this.$apollo.query({
query: gql`
query ($locale: String!, $path: String!) {
comments {
list(locale: $locale, path: $path) {
id
render
authorName
createdAt
updatedAt
}
}
}
`,
variables: {
locale: this.$store.get('page/locale'),
path: this.$store.get('page/path')
},
fetchPolicy: 'network-only'
})
this.comments = _.get(results, 'data.comments.list', []).map(c => {
const nameParts = c.authorName.toUpperCase().split(' ')
let initials = _.head(nameParts).charAt(0)
if (nameParts.length > 1) {
initials += _.last(nameParts).charAt(0)
}
c.initials = initials
return c
})
} catch (err) {
console.warn(err)
if (!silent) {
this.$store.commit('showNotification', {
style: 'red',
message: err.message,
icon: 'alert'
})
}
}
this.isLoading = false
this.hasLoadedOnce = true
},
/**
* Post New Comment
*/
async postComment () {
let rules = {
comment: {
presence: {
allowEmpty: false
},
length: {
minimum: 2
}
}
}
if (!this.isAuthenticated && this.permissions.write) {
rules.name = {
presence: {
allowEmpty: false
},
length: {
minimum: 2,
maximum: 255
}
}
rules.email = {
presence: {
allowEmpty: false
},
email: true
}
}
const validationResults = validate({
comment: this.newcomment,
name: this.guestName,
email: this.guestEmail
}, rules, { format: 'flat' })
if (validationResults) {
this.$store.commit('showNotification', {
style: 'red',
message: validationResults[0],
icon: 'alert'
})
return
}
try {
const resp = await this.$apollo.mutate({
mutation: gql`
mutation (
$pageId: Int!
$replyTo: Int
$content: String!
$guestName: String
$guestEmail: String
) {
comments {
create (
pageId: $pageId
replyTo: $replyTo
content: $content
guestName: $guestName
guestEmail: $guestEmail
) {
responseResult {
succeeded
errorCode
slug
message
}
id
}
}
}
`,
variables: {
pageId: this.pageId,
replyTo: 0,
content: this.newcomment,
guestName: this.guestName,
guestEmail: this.guestEmail
}
})
if (_.get(resp, 'data.comments.create.responseResult.succeeded', false)) {
this.$store.commit('showNotification', {
style: 'success',
message: this.$t('common:comments.postSuccess'),
icon: 'check'
})
this.newcomment = ''
await this.fetch()
this.$nextTick(() => {
this.$vuetify.goTo(`#comment-post-id-${_.get(resp, 'data.comments.create.id', 0)}`, this.scrollOpts)
})
} else {
throw new Error(_.get(resp, 'data.comments.create.responseResult.message', 'An unexpected error occurred.'))
}
} catch (err) {
this.$store.commit('showNotification', {
style: 'red',
message: err.message,
icon: 'alert'
})
}
},
/**
* Show Comment Editing Form
*/
async editComment (cm) {
this.$store.commit(`loadingStart`, 'comments-edit')
this.isBusy = true
try {
const results = await this.$apollo.query({
query: gql`
query ($id: Int!) {
comments {
single(id: $id) {
content
}
}
}
`,
variables: {
id: cm.id
},
fetchPolicy: 'network-only'
})
this.commentEditContent = _.get(results, 'data.comments.single.content', null)
if (this.commentEditContent === null) {
throw new Error('Failed to load comment content.')
}
} catch (err) {
console.warn(err)
this.$store.commit('showNotification', {
style: 'red',
message: err.message,
icon: 'alert'
})
}
this.commentEditId = cm.id
this.isBusy = false
this.$store.commit(`loadingStop`, 'comments-edit')
},
/**
* Cancel Comment Edit
*/
editCommentCancel () {
this.commentEditId = 0
this.commentEditContent = null
},
/**
* Update Comment with new content
*/
async updateComment () {
this.$store.commit(`loadingStart`, 'comments-edit')
this.isBusy = true
try {
if (this.commentEditContent.length < 2) {
throw new Error(this.$t('common:comments.contentMissingError'))
}
const resp = await this.$apollo.mutate({
mutation: gql`
mutation (
$id: Int!
$content: String!
) {
comments {
update (
id: $id,
content: $content
) {
responseResult {
succeeded
errorCode
slug
message
}
render
}
}
}
`,
variables: {
id: this.commentEditId,
content: this.commentEditContent
}
})
if (_.get(resp, 'data.comments.update.responseResult.succeeded', false)) {
this.$store.commit('showNotification', {
style: 'success',
message: this.$t('common:comments.updateSuccess'),
icon: 'check'
})
const cm = _.find(this.comments, ['id', this.commentEditId])
cm.render = _.get(resp, 'data.comments.update.render', '-- Failed to load updated comment --')
cm.updatedAt = (new Date()).toISOString()
this.editCommentCancel()
} else {
throw new Error(_.get(resp, 'data.comments.delete.responseResult.message', 'An unexpected error occurred.'))
}
} catch (err) {
console.warn(err)
this.$store.commit('showNotification', {
style: 'red',
message: err.message,
icon: 'alert'
})
}
this.isBusy = false
this.$store.commit(`loadingStop`, 'comments-edit')
},
/**
* Show Delete Comment Confirmation Dialog
*/
deleteCommentConfirm (cm) {
this.commentToDelete = cm
this.deleteCommentDialogShown = true
},
/**
* Delete Comment
*/
async deleteComment () {
this.$store.commit(`loadingStart`, 'comments-delete')
this.isBusy = true
this.deleteCommentDialogShown = false
try {
const resp = await this.$apollo.mutate({
mutation: gql`
mutation (
$id: Int!
) {
comments {
delete (
id: $id
) {
responseResult {
succeeded
errorCode
slug
message
}
}
}
}
`,
variables: {
id: this.commentToDelete.id
}
})
if (_.get(resp, 'data.comments.delete.responseResult.succeeded', false)) {
this.$store.commit('showNotification', {
style: 'success',
message: this.$t('common:comments.deleteSuccess'),
icon: 'check'
})
this.comments = _.reject(this.comments, ['id', this.commentToDelete.id])
} else {
throw new Error(_.get(resp, 'data.comments.delete.responseResult.message', 'An unexpected error occurred.'))
}
} catch (err) {
this.$store.commit('showNotification', {
style: 'red',
message: err.message,
icon: 'alert'
})
}
this.isBusy = false
this.$store.commit(`loadingStop`, 'comments-delete')
}
}
}
</script>
<style lang="scss">
.comments-post {
position: relative;
&:hover {
.comments-post-actions {
opacity: 1;
}
}
&-actions {
position: absolute;
top: 16px;
right: 16px;
opacity: 0;
transition: opacity .4s ease;
}
&-content {
> p:first-child {
padding-top: 0;
}
p {
padding-top: 1rem;
margin-bottom: 0;
}
img {
max-width: 100%;
border-radius: 5px;
}
code {
background-color: rgba(mc('pink', '500'), .1);
box-shadow: none;
}
pre > code {
margin-top: 1rem;
padding: 12px;
background-color: #111;
box-shadow: none;
border-radius: 5px;
width: 100%;
color: #FFF;
font-weight: 400;
font-size: .85rem;
font-family: Roboto Mono, monospace;
}
}
}
</style>
<template lang='pug'>
v-toolbar.radius-7(flat, :color='$vuetify.theme.dark ? "grey darken-4-l3" : "grey lighten-3"')
.body-2.mr-3 {{$t('common:duration.every')}}
v-text-field(
solo
hide-details
flat
reverse
v-model='minutes'
style='flex: 1 1 70px;'
)
.body-2.mx-3 {{$t('common:duration.minutes')}}
v-divider.mr-3
v-text-field(
solo
hide-details
flat
reverse
v-model='hours'
style='flex: 1 1 70px;'
)
.body-2.mx-3 {{$t('common:duration.hours')}}
v-divider.mr-3
v-text-field(
solo
hide-details
flat
reverse
v-model='days'
style='flex: 1 1 70px;'
)
.body-2.mx-3 {{$t('common:duration.days')}}
v-divider.mr-3
v-text-field(
solo
hide-details
flat
reverse
v-model='months'
style='flex: 1 1 70px;'
)
.body-2.mx-3 {{$t('common:duration.months')}}
v-divider.mr-3
v-text-field(
solo
hide-details
flat
reverse
v-model='years'
style='flex: 1 1 70px;'
)
.body-2.mx-3 {{$t('common:duration.years')}}
</template>
<script>
import _ from 'lodash'
import moment from 'moment'
export default {
props: {
value: {
type: String,
default: 'PT5M'
}
},
data() {
return {
duration: moment.duration(0)
}
},
computed: {
years: {
get() { return this.duration.years() || 0 },
set(val) { this.rebuild(_.toNumber(val), 'years') }
},
months: {
get() { return this.duration.months() || 0 },
set(val) { this.rebuild(_.toNumber(val), 'months') }
},
days: {
get() { return this.duration.days() || 0 },
set(val) { this.rebuild(_.toNumber(val), 'days') }
},
hours: {
get() { return this.duration.hours() || 0 },
set(val) { this.rebuild(_.toNumber(val), 'hours') }
},
minutes: {
get() { return this.duration.minutes() || 0 },
set(val) { this.rebuild(_.toNumber(val), 'minutes') }
}
},
watch: {
value(newValue, oldValue) {
this.duration = moment.duration(newValue)
}
},
methods: {
rebuild(val, unit) {
if (!_.isFinite(val) || val < 0) {
val = 0
}
const newDuration = {
minutes: this.duration.minutes(),
hours: this.duration.hours(),
days: this.duration.days(),
months: this.duration.months(),
years: this.duration.years()
}
_.set(newDuration, unit, val)
this.duration = moment.duration(newDuration)
this.$emit('input', this.duration.toISOString())
}
},
mounted() {
this.duration = moment.duration(this.value)
}
}
</script>
<template lang='pug'>
v-dialog(v-model='value', persistent, max-width='350', :overlay-color='color', overlay-opacity='.7')
v-card.loader-dialog.radius-7(:color='color', dark)
v-card-text.text-center.py-4
atom-spinner.is-inline(
v-if='mode === `loading`'
:animation-duration='1000'
:size='60'
color='#FFF'
)
img(v-else-if='mode === `icon`', :src='`/_assets-legacy/svg/icon-` + icon + `.svg`', :alt='icon')
.subtitle-1.white--text {{ title }}
.caption {{ subtitle }}
</template>
<script>
import { AtomSpinner } from 'epic-spinners'
export default {
components: {
AtomSpinner
},
props: {
value: {
type: Boolean,
default: false
},
color: {
type: String,
default: 'blue darken-3'
},
title: {
type: String,
default: 'Working...'
},
subtitle: {
type: String,
default: 'Please wait'
},
mode: {
type: String,
default: 'loading'
},
icon: {
type: String,
default: 'checkmark'
}
}
}
</script>
<style lang='scss'>
.loader-dialog {
transition: all .4s ease;
.atom-spinner.is-inline {
display: inline-block;
}
.caption {
color: rgba(255,255,255,.7);
}
img {
width: 80px;
}
}
</style>
<template lang='pug'>
v-app-bar.nav-header(color='black', dark, app, :clipped-left='!$vuetify.rtl', :clipped-right='$vuetify.rtl', fixed, flat, :extended='searchIsShown && $vuetify.breakpoint.smAndDown')
v-toolbar(color='deep-purple', flat, slot='extension', v-if='searchIsShown && $vuetify.breakpoint.smAndDown')
v-text-field(
ref='searchFieldMobile'
v-model='search'
clearable
background-color='deep-purple'
color='white'
:label='$t(`common:header.search`)'
single-line
solo
flat
hide-details
prepend-inner-icon='mdi-magnify'
:loading='searchIsLoading'
@keyup.enter='searchEnter'
autocomplete='none'
)
v-layout(row)
v-flex(xs5, md4)
v-toolbar.nav-header-inner(color='black', dark, flat, :class='$vuetify.rtl ? `pr-3` : `pl-3`')
v-avatar(tile, size='34', @click='goHome')
v-img.org-logo(:src='logoUrl')
//- v-menu(open-on-hover, offset-y, bottom, left, min-width='250', transition='slide-y-transition')
//- template(v-slot:activator='{ on }')
//- v-app-bar-nav-icon.btn-animate-app(v-on='on', :class='$vuetify.rtl ? `mx-0` : ``')
//- v-icon mdi-menu
//- v-list(nav, :light='!$vuetify.theme.dark', :dark='$vuetify.theme.dark', :class='$vuetify.theme.dark ? `grey darken-4` : ``')
//- v-list-item.pl-4(href='/')
//- v-list-item-avatar(size='24'): v-icon(color='blue') mdi-home
//- v-list-item-title.body-2 {{$t('common:header.home')}}
//- v-list-item.pl-4(@click='')
//- v-list-item-avatar(size='24'): v-icon(color='grey lighten-2') mdi-file-tree
//- v-list-item-content
//- v-list-item-title.body-2.grey--text.text--ligten-2 {{$t('common:header.siteMap')}}
//- v-list-item-subtitle.overline.grey--text.text--lighten-2 Coming soon
//- v-list-item.pl-4(href='/t')
//- v-list-item-avatar(size='24'): v-icon(color='teal') mdi-tag-multiple
//- v-list-item-title.body-2 {{$t('common:header.browseTags')}}
//- v-list-item.pl-4(@click='assets')
//- v-list-item-avatar(size='24'): v-icon(color='grey lighten-2') mdi-folder-multiple-image
//- v-list-item-content
//- v-list-item-title.body-2.grey--text.text--ligten-2 {{$t('common:header.imagesFiles')}}
//- v-list-item-subtitle.overline.grey--text.text--lighten-2 Coming soon
v-toolbar-title(:class='{ "mx-3": $vuetify.breakpoint.mdAndUp, "mx-1": $vuetify.breakpoint.smAndDown }')
span.subheading {{title}}
v-flex(md4, v-if='$vuetify.breakpoint.mdAndUp')
v-toolbar.nav-header-inner(color='black', dark, flat)
slot(name='mid')
transition(name='navHeaderSearch', v-if='searchIsShown')
v-text-field(
ref='searchField',
v-if='searchIsShown && $vuetify.breakpoint.mdAndUp',
v-model='search',
color='white',
:label='$t(`common:header.search`)',
single-line,
solo
flat
rounded
hide-details,
prepend-inner-icon='mdi-magnify',
:loading='searchIsLoading',
@keyup.enter='searchEnter'
@keyup.esc='searchClose'
@focus='searchFocus'
@blur='searchBlur'
@keyup.down='searchMove(`down`)'
@keyup.up='searchMove(`up`)'
autocomplete='none'
)
v-tooltip(bottom)
template(v-slot:activator='{ on }')
v-btn.ml-2.mr-0(icon, v-on='on', href='/t', :aria-label='$t(`common:header.browseTags`)')
v-icon(color='grey') mdi-tag-multiple
span {{$t('common:header.browseTags')}}
v-flex(xs7, md4)
v-toolbar.nav-header-inner.pr-4(color='black', dark, flat)
v-spacer
.navHeaderLoading.mr-3
v-progress-circular(indeterminate, color='blue', :size='22', :width='2' v-show='isLoading')
slot(name='actions')
//- (mobile) SEARCH TOGGLE
v-btn(
v-if='!hideSearch && $vuetify.breakpoint.smAndDown'
@click='searchToggle'
icon
)
v-icon(color='grey') mdi-magnify
//- LANGUAGES
template(v-if='mode === `view` && locales.length > 0')
v-menu(offset-y, bottom, transition='slide-y-transition', max-height='320px', min-width='210px', left)
template(v-slot:activator='{ on: menu, attrs }')
v-tooltip(bottom)
template(v-slot:activator='{ on: tooltip }')
v-btn(
icon
v-bind='attrs'
v-on='{ ...menu, ...tooltip }'
:class='$vuetify.rtl ? `ml-3` : ``'
tile
height='64'
:aria-label='$t(`common:header.language`)'
)
v-icon(color='grey') mdi-web
span {{$t('common:header.language')}}
v-list(nav)
template(v-for='(lc, idx) of locales')
v-list-item(@click='changeLocale(lc)')
v-list-item-action(style='min-width:auto;'): v-chip(:color='lc.code === locale ? `blue` : `grey`', small, label, dark) {{lc.code.toUpperCase()}}
v-list-item-title {{lc.name}}
v-divider(vertical)
//- PAGE ACTIONS
template(v-if='hasAnyPagePermissions && path && mode !== `edit`')
v-menu(offset-y, bottom, transition='slide-y-transition', left)
template(v-slot:activator='{ on: menu, attrs }')
v-tooltip(bottom)
template(v-slot:activator='{ on: tooltip }')
v-btn(
icon
v-bind='attrs'
v-on='{ ...menu, ...tooltip }'
:class='$vuetify.rtl ? `ml-3` : ``'
tile
height='64'
:aria-label='$t(`common:header.pageActions`)'
)
v-icon(color='grey') mdi-file-document-edit-outline
span {{$t('common:header.pageActions')}}
v-list(nav, :light='!$vuetify.theme.dark', :dark='$vuetify.theme.dark', :class='$vuetify.theme.dark ? `grey darken-4` : ``')
.overline.pa-4.grey--text {{$t('common:header.currentPage')}}
v-list-item.pl-4(@click='pageView', v-if='mode !== `view`')
v-list-item-avatar(size='24', tile): v-icon(color='indigo') mdi-file-document-outline
v-list-item-title.body-2 {{$t('common:header.view')}}
v-list-item.pl-4(@click='pageEdit', v-if='mode !== `edit` && hasWritePagesPermission')
v-list-item-avatar(size='24', tile): v-icon(color='indigo') mdi-file-document-edit-outline
v-list-item-title.body-2 {{$t('common:header.edit')}}
v-list-item.pl-4(@click='pageHistory', v-if='mode !== `history` && hasReadHistoryPermission')
v-list-item-avatar(size='24', tile): v-icon(color='indigo') mdi-history
v-list-item-content
v-list-item-title.body-2 {{$t('common:header.history')}}
v-list-item.pl-4(@click='pageSource', v-if='mode !== `source` && hasReadSourcePermission')
v-list-item-avatar(size='24', tile): v-icon(color='indigo') mdi-code-tags
v-list-item-title.body-2 {{$t('common:header.viewSource')}}
v-list-item.pl-4(@click='pageConvert', v-if='hasWritePagesPermission')
v-list-item-avatar(size='24', tile): v-icon(color='indigo') mdi-lightning-bolt
v-list-item-title.body-2 {{$t('common:header.convert')}}
v-list-item.pl-4(@click='pageDuplicate', v-if='hasWritePagesPermission')
v-list-item-avatar(size='24', tile): v-icon(color='indigo') mdi-content-duplicate
v-list-item-title.body-2 {{$t('common:header.duplicate')}}
v-list-item.pl-4(@click='pageMove', v-if='hasManagePagesPermission')
v-list-item-avatar(size='24', tile): v-icon(color='indigo') mdi-content-save-move-outline
v-list-item-content
v-list-item-title.body-2 {{$t('common:header.move')}}
v-list-item.pl-4(@click='pageDelete', v-if='hasDeletePagesPermission')
v-list-item-avatar(size='24', tile): v-icon(color='red darken-2') mdi-trash-can-outline
v-list-item-title.body-2 {{$t('common:header.delete')}}
v-divider(vertical)
//- NEW PAGE
template(v-if='hasNewPagePermission && path && mode !== `edit`')
v-tooltip(bottom)
template(v-slot:activator='{ on }')
v-btn(icon, tile, height='64', v-on='on', @click='pageNew', :aria-label='$t(`common:header.newPage`)')
v-icon(color='grey') mdi-text-box-plus-outline
span {{$t('common:header.newPage')}}
v-divider(vertical)
//- ADMIN
template(v-if='isAuthenticated && isAdmin')
v-tooltip(bottom, v-if='mode !== `admin`')
template(v-slot:activator='{ on }')
v-btn(icon, tile, height='64', v-on='on', href='/a', :aria-label='$t(`common:header.admin`)')
v-icon(color='grey') mdi-cog
span {{$t('common:header.admin')}}
v-btn(v-else, text, tile, height='64', href='/', :aria-label='$t(`common:actions.exit`)')
v-icon(left, color='grey') mdi-exit-to-app
span {{$t('common:actions.exit')}}
v-divider(vertical)
//- ACCOUNT
v-menu(v-if='isAuthenticated', offset-y, bottom, min-width='300', transition='slide-y-transition', left)
template(v-slot:activator='{ on: menu, attrs }')
v-tooltip(bottom)
template(v-slot:activator='{ on: tooltip }')
v-btn(
icon
v-bind='attrs'
v-on='{ ...menu, ...tooltip }'
:class='$vuetify.rtl ? `ml-0` : ``'
tile
height='64'
:aria-label='$t(`common:header.account`)'
)
v-icon(v-if='picture.kind === `initials`', color='grey') mdi-account-circle
v-avatar(v-else-if='picture.kind === `image`', :size='34')
v-img(:src='picture.url')
span {{$t('common:header.account')}}
v-list(nav)
v-list-item.py-3.grey(:class='$vuetify.theme.dark ? `darken-4-l5` : `lighten-5`')
v-list-item-avatar
v-avatar.blue(v-if='picture.kind === `initials`', :size='40')
span.white--text.subheading {{picture.initials}}
v-avatar(v-else-if='picture.kind === `image`', :size='40')
v-img(:src='picture.url')
v-list-item-content
v-list-item-title {{name}}
v-list-item-subtitle {{email}}
//- v-list-item(href='/w', disabled)
//- v-list-item-action: v-icon(color='blue') mdi-view-compact-outline
//- v-list-item-content
//- v-list-item-title {{$t('common:header.myWiki')}}
//- v-list-item-subtitle.overline Coming soon
v-list-item(href='/_profile')
v-list-item-action: v-icon(color='blue-grey') mdi-face-profile
v-list-item-content
v-list-item-title(:class='$vuetify.theme.dark ? `blue-grey--text text--lighten-3` : `blue-grey--text`') {{$t('common:header.profile')}}
v-list-item(href='/logout')
v-list-item-action: v-icon(color='red') mdi-logout
v-list-item-title.red--text {{$t('common:header.logout')}}
v-tooltip(v-else, left)
template(v-slot:activator='{ on }')
v-btn(icon, v-on='on', color='grey darken-3', href='/login', :aria-label='$t(`common:header.login`)')
v-icon(color='grey') mdi-account-circle
span {{$t('common:header.login')}}
page-selector(mode='create', v-model='newPageModal', :open-handler='pageNewCreate', :locale='locale')
page-selector(mode='move', v-model='movePageModal', :open-handler='pageMoveRename', :path='path', :locale='locale')
page-selector(mode='create', v-model='duplicateOpts.modal', :open-handler='pageDuplicateHandle', :path='duplicateOpts.path', :locale='duplicateOpts.locale')
page-delete(v-model='deletePageModal', v-if='path && path.length')
page-convert(v-model='convertPageModal', v-if='path && path.length')
</template>
<script>
import { get, sync } from 'vuex-pathify'
import _ from 'lodash'
import movePageMutation from 'gql/common/common-pages-mutation-move.gql'
/* global siteConfig, siteLangs */
export default {
components: {
PageDelete: () => import('./page-delete.vue'),
PageConvert: () => import('./page-convert.vue')
},
props: {
dense: {
type: Boolean,
default: false
},
hideSearch: {
type: Boolean,
default: false
}
},
data() {
return {
menuIsShown: true,
searchIsShown: true,
searchAdvMenuShown: false,
newPageModal: false,
movePageModal: false,
convertPageModal: false,
deletePageModal: false,
locales: siteLangs,
isDevMode: false,
duplicateOpts: {
locale: 'en',
path: 'new-page',
modal: false
}
}
},
computed: {
search: sync('site/search'),
searchIsFocused: sync('site/searchIsFocused'),
searchIsLoading: sync('site/searchIsLoading'),
searchRestrictLocale: sync('site/searchRestrictLocale'),
searchRestrictPath: sync('site/searchRestrictPath'),
isLoading: get('isLoading'),
title: get('site/title'),
logoUrl: get('site/logoUrl'),
path: get('page/path'),
locale: get('page/locale'),
mode: get('page/mode'),
name: get('user/name'),
email: get('user/email'),
pictureUrl: get('user/pictureUrl'),
isAuthenticated: get('user/authenticated'),
permissions: get('user/permissions'),
picture () {
if (this.pictureUrl && this.pictureUrl.length > 1) {
return {
kind: 'image',
url: (this.pictureUrl === 'internal') ? `/_userav/${this.$store.get('user/id')}` : this.pictureUrl
}
} else {
const nameParts = ['X', 'X'] // this.name.toUpperCase().split(' ')
let initials = _.head(nameParts).charAt(0)
if (nameParts.length > 1) {
initials += _.last(nameParts).charAt(0)
}
return {
kind: 'initials',
initials
}
}
},
isAdmin () {
return _.intersection(this.permissions, ['manage:system', 'write:users', 'manage:users', 'write:groups', 'manage:groups', 'manage:navigation', 'manage:theme', 'manage:api']).length > 0
},
hasNewPagePermission () {
return this.hasAdminPermission || _.intersection(this.permissions, ['write:pages']).length > 0
},
hasAdminPermission: get('page/effectivePermissions@system.manage'),
hasWritePagesPermission: get('page/effectivePermissions@pages.write'),
hasManagePagesPermission: get('page/effectivePermissions@pages.manage'),
hasDeletePagesPermission: get('page/effectivePermissions@pages.delete'),
hasReadSourcePermission: get('page/effectivePermissions@source.read'),
hasReadHistoryPermission: get('page/effectivePermissions@history.read'),
hasAnyPagePermissions () {
return this.hasAdminPermission || this.hasWritePagesPermission || this.hasManagePagesPermission ||
this.hasDeletePagesPermission || this.hasReadSourcePermission || this.hasReadHistoryPermission
}
},
created () {
if (this.hideSearch || this.dense || this.$vuetify.breakpoint.smAndDown) {
this.searchIsShown = false
}
},
mounted () {
this.$root.$on('pageEdit', () => {
this.pageEdit()
})
this.$root.$on('pageHistory', () => {
this.pageHistory()
})
this.$root.$on('pageSource', () => {
this.pageSource()
})
this.$root.$on('pageMove', () => {
this.pageMove()
})
this.$root.$on('pageConvert', () => {
this.pageConvert()
})
this.$root.$on('pageDuplicate', () => {
this.pageDuplicate()
})
this.$root.$on('pageDelete', () => {
this.pageDelete()
})
this.isDevMode = siteConfig.devMode === true
},
methods: {
searchFocus () {
this.searchIsFocused = true
},
searchBlur () {
this.searchIsFocused = false
},
searchClose () {
this.search = ''
this.searchBlur()
},
searchToggle () {
this.searchIsShown = !this.searchIsShown
if (this.searchIsShown) {
_.delay(() => {
this.$refs.searchFieldMobile.focus()
}, 200)
}
},
searchEnter () {
this.$root.$emit('searchEnter', true)
},
searchMove(dir) {
this.$root.$emit('searchMove', dir)
},
pageNew () {
this.newPageModal = true
},
pageNewCreate ({ path, locale }) {
window.location.assign(`/e/${locale}/${path}`)
},
pageView () {
window.location.assign(`/${this.locale}/${this.path}`)
},
pageEdit () {
window.location.assign(`/e/${this.locale}/${this.path}`)
},
pageHistory () {
window.location.assign(`/h/${this.locale}/${this.path}`)
},
pageSource () {
window.location.assign(`/s/${this.locale}/${this.path}`)
},
pageDuplicate () {
const pathParts = this.path.split('/')
this.duplicateOpts = {
locale: this.locale,
path: (pathParts.length > 1) ? _.initial(pathParts).join('/') + `/new-page` : `new-page`,
modal: true
}
},
pageDuplicateHandle ({ locale, path }) {
window.location.assign(`/e/${locale}/${path}?from=${this.$store.get('page/id')}`)
},
pageConvert () {
this.convertPageModal = true
},
pageMove () {
this.movePageModal = true
},
async pageMoveRename ({ path, locale }) {
this.$store.commit(`loadingStart`, 'page-move')
try {
const resp = await this.$apollo.mutate({
mutation: movePageMutation,
variables: {
id: this.$store.get('page/id'),
destinationLocale: locale,
destinationPath: path
}
})
if (_.get(resp, 'data.pages.move.responseResult.succeeded', false)) {
window.location.replace(`/${locale}/${path}`)
} else {
throw new Error(_.get(resp, 'data.pages.move.responseResult.message', this.$t('common:error.unexpected')))
}
} catch (err) {
this.$store.commit('pushGraphError', err)
this.$store.commit(`loadingStop`, 'page-move')
}
},
pageDelete () {
this.deletePageModal = true
},
assets () {
// window.location.assign(`/f`)
this.$store.commit('showNotification', {
style: 'indigo',
message: `Coming soon...`,
icon: 'ferry'
})
},
async changeLocale (locale) {
await this.$i18n.i18next.changeLanguage(locale.code)
switch (this.mode) {
case 'view':
case 'history':
window.location.assign(`/${locale.code}/${this.path}`)
break
}
},
logout () {
window.location.assign('/logout')
},
goHome () {
window.location.assign('/')
}
}
}
</script>
<style lang='scss'>
.nav-header {
//z-index: 1000;
.v-toolbar__extension {
padding: 0;
.v-toolbar__content {
padding: 0;
}
.v-text-field .v-input__prepend-inner {
padding: 0 14px 0 5px;
padding-right: 14px;
}
}
.org-logo {
cursor: pointer;
}
&-inner {
.v-toolbar__content {
padding: 0;
}
}
&-search-adv {
position: absolute;
top: 7px;
right: 12px;
border-radius: 4px !important;
@at-root .v-application--is-rtl & {
right: initial;
left: 12px;
}
&::before {
border-radius: 4px !important;
}
&:hover, &:focus {
position: absolute !important;
&::before {
border-radius: 4px;
}
}
}
&-dev {
background-color: mc('red', '600');
position: absolute;
top: 11px;
left: 255px;
padding: 5px 15px;
border-radius: 5px;
display: flex;
.v-icon {
margin-right: 15px;
}
.overline:nth-child(2) {
text-transform: none;
}
}
}
.navHeaderSearch {
&-enter-active, &-leave-active {
transition: opacity .25s ease, transform .25s ease;
opacity: 1;
}
&-enter-active {
transition-delay: .25s;
}
&-enter, &-leave-to {
opacity: 0;
transform: scale(.7, .7);
}
}
.navHeaderLoading { // To avoid search bar jumping
width: 22px;
}
</style>
<template lang='pug'>
v-snackbar.nav-notify(
:color='notification.style'
top
multi-line
v-model='notificationState'
:timeout='6000'
)
.text-left
v-icon.mr-3(dark) mdi-{{ notification.icon }}
span {{ notification.message }}
</template>
<script>
import { get, sync } from 'vuex-pathify'
export default {
data() {
return { }
},
computed: {
notification: get('notification'),
notificationState: sync('notification@isActive')
}
}
</script>
<style lang='scss'>
.nav-notify {
top: -64px;
padding-top: 0;
z-index: 999;
.v-snack__wrapper {
border-top-left-radius: 0;
border-top-right-radius: 0;
position: relative;
margin-top: 0;
&::after {
content: '';
display: block;
width: 100%;
height: 2px;
background-color: rgba(255,255,255,.4);
position: absolute;
bottom: 0;
left: 0;
animation: nav-notify-anim 6s linear;
}
}
}
@keyframes nav-notify-anim {
0% {
width: 100%;
}
100% {
width: 0%;
}
}
</style>
<template lang='pug'>
v-dialog(
v-model='isShown'
max-width='550'
persistent
overlay-color='blue-grey darken-4'
overlay-opacity='.7'
)
v-card
.dialog-header.is-short.is-dark
v-icon.mr-2(color='white') mdi-lightning-bolt
span {{$t('common:page.convert')}}
v-card-text.pt-5
i18next.body-2(path='common:page.convertTitle', tag='div')
span.blue-grey--text.text--darken-2(place='title') {{pageTitle}}
v-select.mt-5(
:items=`[
{ value: 'markdown', text: 'Markdown' },
{ value: 'ckeditor', text: 'Visual Editor' },
{ value: 'code', text: 'Raw HTML' }
]`
outlined
dense
hide-details
v-model='newEditor'
)
.caption.mt-5 {{$t('common:page.convertSubtitle')}}
v-card-chin
v-spacer
v-btn(text, @click='discard', :disabled='loading') {{$t('common:actions.cancel')}}
v-btn.px-4(color='grey darken-3', @click='convertPage', :loading='loading').white--text {{$t('common:actions.convert')}}
</template>
<script>
import _ from 'lodash'
import { get } from 'vuex-pathify'
import gql from 'graphql-tag'
export default {
props: {
value: {
type: Boolean,
default: false
}
},
data() {
return {
loading: false,
newEditor: ''
}
},
computed: {
isShown: {
get() { return this.value },
set(val) { this.$emit('input', val) }
},
pageTitle: get('page/title'),
pagePath: get('page/path'),
pageLocale: get('page/locale'),
pageId: get('page/id'),
pageEditor: get('page/editor')
},
mounted () {
this.newEditor = this.pageEditor
},
methods: {
discard() {
this.isShown = false
},
async convertPage() {
this.loading = true
this.$store.commit(`loadingStart`, 'page-convert')
this.$nextTick(async () => {
try {
const resp = await this.$apollo.mutate({
mutation: gql`
mutation (
$id: Int!
$editor: String!
) {
pages {
convert(
id: $id
editor: $editor
) {
responseResult {
succeeded
errorCode
slug
message
}
}
}
}
`,
variables: {
id: this.pageId,
editor: this.newEditor
}
})
if (_.get(resp, 'data.pages.convert.responseResult.succeeded', false)) {
this.isShown = false
window.location.assign(`/e/${this.pageLocale}/${this.pagePath}`)
} else {
throw new Error(_.get(resp, 'data.pages.convert.responseResult.message', this.$t('common:error.unexpected')))
}
} catch (err) {
this.$store.commit('pushGraphError', err)
}
this.$store.commit(`loadingStop`, 'page-convert')
this.loading = false
})
}
}
}
</script>
<style lang='scss'>
</style>
<template lang='pug'>
v-dialog(
v-model='isShown'
max-width='550'
persistent
overlay-color='red darken-4'
overlay-opacity='.7'
)
v-card
.dialog-header.is-short.is-red
v-icon.mr-2(color='white') mdi-file-document-box-remove-outline
span {{$t('common:page.delete')}}
v-card-text.pt-5
i18next.body-1(path='common:page.deleteTitle', tag='div')
span.red--text.text--darken-2(place='title') {{pageTitle}}
.caption {{$t('common:page.deleteSubtitle')}}
v-chip.mt-3.ml-0.mr-1(label, color='red lighten-4', small)
.caption.red--text.text--darken-2 {{pageLocale.toUpperCase()}}
v-chip.mt-3.mx-0(label, color='red lighten-5', small)
span.red--text.text--darken-2 /{{pagePath}}
v-card-chin
v-spacer
v-btn(text, @click='discard', :disabled='loading') {{$t('common:actions.cancel')}}
v-btn.px-4(color='red darken-2', @click='deletePage', :loading='loading').white--text {{$t('common:actions.delete')}}
</template>
<script>
import _ from 'lodash'
import { get } from 'vuex-pathify'
import deletePageMutation from 'gql/common/common-pages-mutation-delete.gql'
export default {
props: {
value: {
type: Boolean,
default: false
}
},
data() {
return {
loading: false
}
},
computed: {
isShown: {
get() { return this.value },
set(val) { this.$emit('input', val) }
},
pageTitle: get('page/title'),
pagePath: get('page/path'),
pageLocale: get('page/locale'),
pageId: get('page/id')
},
watch: {
isShown(newValue, oldValue) {
if (newValue) {
document.body.classList.add('page-deleted-pending')
}
}
},
methods: {
discard() {
document.body.classList.remove('page-deleted-pending')
this.isShown = false
},
async deletePage() {
this.loading = true
this.$store.commit(`loadingStart`, 'page-delete')
this.$nextTick(async () => {
try {
const resp = await this.$apollo.mutate({
mutation: deletePageMutation,
variables: {
id: this.pageId
}
})
if (_.get(resp, 'data.pages.delete.responseResult.succeeded', false)) {
this.isShown = false
_.delay(() => {
document.body.classList.add('page-deleted')
_.delay(() => {
window.location.assign('/')
}, 1200)
}, 400)
} else {
throw new Error(_.get(resp, 'data.pages.delete.responseResult.message', this.$t('common:error.unexpected')))
}
} catch (err) {
this.$store.commit('pushGraphError', err)
}
this.$store.commit(`loadingStop`, 'page-delete')
this.loading = false
})
}
}
}
</script>
<style lang='scss'>
body.page-deleted-pending {
perspective: 50vw;
height: 100vh;
overflow: hidden;
.application {
background-color: mc('grey', '900');
}
.application--wrap {
transform-style: preserve-3d;
transform: translateZ(-5vw) rotateX(2deg);
border-radius: 7px;
overflow: hidden;
}
}
body.page-deleted {
perspective: 50vw;
.application--wrap {
transform-style: preserve-3d;
transform: translateZ(-1000vw) rotateX(60deg);
opacity: 0;
}
}
</style>
<template lang="pug">
v-dialog(
v-model='isShown'
max-width='850px'
overlay-color='blue darken-4'
overlay-opacity='.7'
)
v-card.page-selector
.dialog-header.is-blue
v-icon.mr-3(color='white') mdi-page-next-outline
.body-1(v-if='mode === `create`') {{$t('common:pageSelector.createTitle')}}
.body-1(v-else-if='mode === `move`') {{$t('common:pageSelector.moveTitle')}}
.body-1(v-else-if='mode === `select`') {{$t('common:pageSelector.selectTitle')}}
v-spacer
v-progress-circular(
indeterminate
color='white'
:size='20'
:width='2'
v-show='searchLoading'
)
.d-flex
v-flex.grey(xs5, :class='$vuetify.theme.dark ? `darken-4` : `lighten-3`')
v-toolbar(color='grey darken-3', dark, dense, flat)
.body-2 {{$t('common:pageSelector.virtualFolders')}}
v-spacer
v-btn(icon, tile, href='https://docs.requarks.io/guide/pages#folders', target='_blank')
v-icon mdi-help-box
div(style='height:400px;')
vue-scroll(:ops='scrollStyle')
v-treeview(
:key='`pageTree-` + treeViewCacheId'
:active.sync='currentNode'
:open.sync='openNodes'
:items='tree'
:load-children='fetchFolders'
dense
expand-icon='mdi-menu-down-outline'
item-id='path'
item-text='title'
activatable
hoverable
)
template(slot='prepend', slot-scope='{ item, open, leaf }')
v-icon mdi-{{ open ? 'folder-open' : 'folder' }}
v-flex(xs7)
v-toolbar(color='blue darken-2', dark, dense, flat)
.body-2 {{$t('common:pageSelector.pages')}}
//- v-spacer
//- v-btn(icon, tile, disabled): v-icon mdi-content-save-move-outline
//- v-btn(icon, tile, disabled): v-icon mdi-trash-can-outline
div(v-if='currentPages.length > 0', style='height:400px;')
vue-scroll(:ops='scrollStyle')
v-list.py-0(dense)
v-list-item-group(
v-model='currentPage'
color='primary'
)
template(v-for='(page, idx) of currentPages')
v-list-item(:key='`page-` + page.id', :value='page')
v-list-item-icon: v-icon mdi-text-box
v-list-item-title {{page.title}}
v-divider(v-if='idx < pages.length - 1')
v-alert.animated.fadeIn(
v-else
text
color='orange'
prominent
icon='mdi-alert'
)
.body-2 {{$t('common:pageSelector.folderEmptyWarning')}}
v-card-actions.grey.pa-2(:class='$vuetify.theme.dark ? `darken-2` : `lighten-1`', v-if='!mustExist')
v-select(
solo
dark
flat
background-color='grey darken-3-d2'
hide-details
single-line
:items='namespaces'
style='flex: 0 0 100px; border-radius: 4px 0 0 4px;'
v-model='currentLocale'
)
v-text-field(
ref='pathIpt'
solo
hide-details
prefix='/'
v-model='currentPath'
flat
clearable
style='border-radius: 0 4px 4px 0;'
)
v-card-chin
v-spacer
v-btn(text, @click='close') {{$t('common:actions.cancel')}}
v-btn.px-4(color='primary', @click='open', :disabled='!isValidPath')
v-icon(left) mdi-check
span {{$t('common:actions.select')}}
</template>
<script>
import _ from 'lodash'
import gql from 'graphql-tag'
const localeSegmentRegex = /^[A-Z]{2}(-[A-Z]{2})?$/i
/* global siteLangs, siteConfig */
export default {
props: {
value: {
type: Boolean,
default: false
},
path: {
type: String,
default: 'new-page'
},
locale: {
type: String,
default: 'en'
},
mode: {
type: String,
default: 'create'
},
openHandler: {
type: Function,
default: () => {}
},
mustExist: {
type: Boolean,
default: false
}
},
data() {
return {
treeViewCacheId: 0,
searchLoading: false,
currentLocale: siteConfig.lang,
currentFolderPath: '',
currentPath: 'new-page',
currentPage: null,
currentNode: [0],
openNodes: [0],
tree: [
{
id: 0,
title: '/ (root)',
children: []
}
],
pages: [],
all: [],
namespaces: siteLangs.length ? siteLangs.map(ns => ns.code) : [siteConfig.lang],
scrollStyle: {
vuescroll: {},
scrollPanel: {
initialScrollX: 0.01, // fix scrollbar not disappearing on load
scrollingX: false,
speed: 50
},
rail: {
gutterOfEnds: '2px'
},
bar: {
onlyShowBarOnScroll: false,
background: '#999',
hoverStyle: {
background: '#64B5F6'
}
}
}
}
},
computed: {
isShown: {
get() { return this.value },
set(val) { this.$emit('input', val) }
},
currentPages () {
return _.sortBy(_.filter(this.pages, ['parent', _.head(this.currentNode) || 0]), ['title', 'path'])
},
isValidPath () {
if (!this.currentPath) {
return false
}
if (this.mustExist && !this.currentPage) {
return false
}
const firstSection = _.head(this.currentPath.split('/'))
if (firstSection.length <= 1) {
return false
} else if (localeSegmentRegex.test(firstSection)) {
return false
} else if (
_.some(['login', 'logout', 'register', 'verify', 'favicons', 'fonts', 'img', 'js', 'svg'], p => {
return p === firstSection
})) {
return false
} else {
return true
}
}
},
watch: {
isShown (newValue, oldValue) {
if (newValue && !oldValue) {
this.currentPath = this.path
this.currentLocale = this.locale
_.delay(() => {
this.$refs.pathIpt.focus()
})
}
},
currentNode (newValue, oldValue) {
if (newValue.length < 1) { // force a selection
this.$nextTick(() => {
this.currentNode = oldValue
})
} else {
const current = _.find(this.all, ['id', newValue[0]])
if (this.openNodes.indexOf(newValue[0]) < 0) { // auto open and load children
if (current) {
if (this.openNodes.indexOf(current.parent) < 0) {
this.$nextTick(() => {
this.openNodes.push(current.parent)
})
}
}
this.$nextTick(() => {
this.openNodes.push(newValue[0])
})
}
this.currentPath = _.compact([_.get(current, 'path', ''), _.last(this.currentPath.split('/'))]).join('/')
}
},
currentPage (newValue, oldValue) {
if (!_.isEmpty(newValue)) {
this.currentPath = newValue.path
}
},
currentLocale (newValue, oldValue) {
this.$nextTick(() => {
this.tree = [
{
id: 0,
title: '/ (root)',
children: []
}
]
this.currentNode = [0]
this.openNodes = [0]
this.pages = []
this.all = []
this.treeViewCacheId += 1
})
}
},
methods: {
close() {
this.isShown = false
},
open() {
const exit = this.openHandler({
locale: this.currentLocale,
path: this.currentPath,
id: (this.mustExist && this.currentPage) ? this.currentPage.pageId : 0
})
if (exit !== false) {
this.close()
}
},
async fetchFolders (item) {
this.searchLoading = true
const resp = await this.$apollo.query({
query: gql`
query ($parent: Int!, $mode: PageTreeMode!, $locale: String!) {
pages {
tree(parent: $parent, mode: $mode, locale: $locale) {
id
path
title
isFolder
pageId
parent
}
}
}
`,
fetchPolicy: 'network-only',
variables: {
parent: item.id,
mode: 'ALL',
locale: this.currentLocale
}
})
const items = _.get(resp, 'data.pages.tree', [])
const itemFolders = _.filter(items, ['isFolder', true]).map(f => ({...f, children: []}))
const itemPages = _.filter(items, i => i.pageId > 0)
if (itemFolders.length > 0) {
item.children = itemFolders
} else {
item.children = undefined
}
this.pages = _.unionBy(this.pages, itemPages, 'id')
this.all = _.unionBy(this.all, items, 'id')
this.searchLoading = false
}
}
}
</script>
<style lang='scss'>
.page-selector {
.v-treeview-node__label {
font-size: 13px;
}
.v-treeview-node__content {
cursor: pointer;
}
}
</style>
<template lang="pug">
.password-strength
v-progress-linear(
:color='passwordStrengthColor'
v-model='passwordStrength'
height='2'
)
.caption(v-if='!hideText', :class='passwordStrengthColor + "--text"') {{passwordStrengthText}}
</template>
<script>
import zxcvbn from 'zxcvbn'
import _ from 'lodash'
export default {
props: {
value: {
type: String,
default: ''
},
hideText: {
type: Boolean,
default: false
}
},
data() {
return {
passwordStrength: 0,
passwordStrengthColor: 'grey',
passwordStrengthText: ''
}
},
watch: {
value(newValue) {
this.checkPasswordStrength(newValue)
}
},
methods: {
checkPasswordStrength: _.debounce(function (pwd) {
if (!pwd || pwd.length < 1) {
this.passwordStrength = 0
this.passwordStrengthColor = 'grey'
this.passwordStrengthText = ''
return
}
const strength = zxcvbn(pwd)
this.passwordStrength = _.round((strength.score + 1) / 5 * 100)
if (this.passwordStrength <= 20) {
this.passwordStrengthColor = 'red'
this.passwordStrengthText = this.$t('common:password.veryWeak')
} else if (this.passwordStrength <= 40) {
this.passwordStrengthColor = 'orange'
this.passwordStrengthText = this.$t('common:password.weak')
} else if (this.passwordStrength <= 60) {
this.passwordStrengthColor = 'teal'
this.passwordStrengthText = this.$t('common:password.average')
} else if (this.passwordStrength <= 80) {
this.passwordStrengthColor = 'green'
this.passwordStrengthText = this.$t('common:password.strong')
} else {
this.passwordStrengthColor = 'green'
this.passwordStrengthText = this.$t('common:password.veryStrong')
}
}, 100)
}
}
</script>
<style lang="scss">
.password-strength > .caption {
width: 100%;
left: 0;
margin: 0;
position: absolute;
top: calc(100% + 5px);
}
</style>
<template lang="pug">
.search-results(v-if='searchIsFocused || (search && search.length > 1)')
.search-results-container
.search-results-help(v-if='!search || (search && search.length < 2)')
img(src='/_assets-legacy/svg/icon-search-alt.svg')
.mt-4 {{$t('common:header.searchHint')}}
.search-results-loader(v-else-if='searchIsLoading && (!results || results.length < 1)')
orbit-spinner(
:animation-duration='1000'
:size='100'
color='#FFF'
)
.headline.mt-5 {{$t('common:header.searchLoading')}}
.search-results-none(v-else-if='!searchIsLoading && (!results || results.length < 1)')
img(src='/_assets-legacy/svg/icon-no-results.svg', alt='No Results')
.subheading {{$t('common:header.searchNoResult')}}
template(v-if='search && search.length >= 2 && results && results.length > 0')
v-subheader.white--text {{$t('common:header.searchResultsCount', { total: response.totalHits })}}
v-list.search-results-items.radius-7.py-0(two-line, dense)
template(v-for='(item, idx) of results')
v-list-item(@click='goToPage(item)', @click.middle="goToPageInNewTab(item)", :key='item.id', :class='idx === cursor ? `highlighted` : ``')
v-list-item-avatar(tile)
img(src='/_assets-legacy/svg/icon-selective-highlighting.svg')
v-list-item-content
v-list-item-title(v-text='item.title')
v-list-item-subtitle.caption(v-text='item.description')
.caption.grey--text(v-text='item.path')
v-list-item-action
v-chip(label, outlined) {{item.locale.toUpperCase()}}
v-divider(v-if='idx < results.length - 1')
v-pagination.mt-3(
v-if='paginationLength > 1'
dark
v-model='pagination'
:length='paginationLength'
circle
)
template(v-if='suggestions && suggestions.length > 0')
v-subheader.white--text.mt-3 {{$t('common:header.searchDidYouMean')}}
v-list.search-results-suggestions.radius-7(dense, dark)
template(v-for='(term, idx) of suggestions')
v-list-item(:key='term', @click='setSearchTerm(term)', :class='idx + results.length === cursor ? `highlighted` : ``')
v-list-item-avatar
v-icon mdi-magnify
v-list-item-content
v-list-item-title(v-text='term')
v-divider(v-if='idx < suggestions.length - 1')
.text-xs-center.pt-5(v-if='search && search.length > 1')
//- v-btn.mx-2(outlined, color='orange', @click='search = ``', v-if='results.length > 0')
//- v-icon(left) mdi-content-save
//- span {{$t('common:header.searchCopyLink')}}
v-btn.mx-2(outlined, color='pink', @click='search = ``')
v-icon(left) mdi-close
span {{$t('common:header.searchClose')}}
</template>
<script>
import _ from 'lodash'
import { sync } from 'vuex-pathify'
import { OrbitSpinner } from 'epic-spinners'
import searchPagesQuery from 'gql/common/common-pages-query-search.gql'
export default {
components: {
OrbitSpinner
},
data() {
return {
cursor: 0,
pagination: 1,
perPage: 10,
response: {
results: [],
suggestions: [],
totalHits: 0
}
}
},
computed: {
search: sync('site/search'),
searchIsFocused: sync('site/searchIsFocused'),
searchIsLoading: sync('site/searchIsLoading'),
searchRestrictLocale: sync('site/searchRestrictLocale'),
searchRestrictPath: sync('site/searchRestrictPath'),
results() {
const currentIndex = (this.pagination - 1) * this.perPage
return this.response.results ? _.slice(this.response.results, currentIndex, currentIndex + this.perPage) : []
},
hits() {
return this.response.totalHits ? this.response.totalHits : 0
},
suggestions() {
return this.response.suggestions ? this.response.suggestions : []
},
paginationLength() {
return (this.response.totalHits > 0) ? Math.ceil(this.response.totalHits / this.perPage) : 0
}
},
watch: {
search(newValue, oldValue) {
this.cursor = 0
if (!newValue || (newValue && newValue.length < 2)) {
this.searchIsLoading = false
} else {
this.searchIsLoading = true
}
}
},
mounted() {
this.$root.$on('searchMove', (dir) => {
this.cursor += ((dir === 'up') ? -1 : 1)
if (this.cursor < -1) {
this.cursor = -1
} else if (this.cursor > this.results.length + this.suggestions.length - 1) {
this.cursor = this.results.length + this.suggestions.length - 1
}
})
this.$root.$on('searchEnter', () => {
if (!this.results) {
return
}
if (this.cursor >= 0 && this.cursor < this.results.length) {
this.goToPage(_.nth(this.results, this.cursor))
} else if (this.cursor >= 0) {
this.setSearchTerm(_.nth(this.suggestions, this.cursor - this.results.length))
}
})
},
methods: {
setSearchTerm(term) {
this.search = term
},
goToPage(item) {
window.location.assign(`/${item.locale}/${item.path}`)
},
goToPageInNewTab(item) {
window.open(`/${item.locale}/${item.path}`, '_blank')
}
},
apollo: {
response: {
query: searchPagesQuery,
variables() {
return {
query: this.search
}
},
fetchPolicy: 'network-only',
debounce: 300,
throttle: 1000,
skip() {
return !this.search || this.search.length < 2
},
update: (data) => _.get(data, 'pages.search', {}),
watchLoading (isLoading) {
this.searchIsLoading = isLoading
}
}
}
}
</script>
<style lang="scss">
.search-results {
position: fixed;
top: 64px;
left: 0;
overflow-y: auto;
width: 100%;
height: calc(100% - 64px);
background-color: rgba(0,0,0,.9);
z-index: 100;
text-align: center;
animation: searchResultsReveal .6s ease;
@media #{map-get($display-breakpoints, 'sm-and-down')} {
top: 112px;
}
&-container {
margin: 12px auto;
width: 90vw;
max-width: 1024px;
}
&-help {
text-align: center;
padding: 32px 0;
font-size: 18px;
font-weight: 300;
color: #FFF;
img {
width: 104px;
}
}
&-loader {
display: flex;
justify-content: center;
align-items: center;
flex-direction: column;
padding: 32px 0;
color: #FFF;
}
&-none {
color: #FFF;
img {
width: 200px;
}
}
&-items {
text-align: left;
.highlighted {
background: #FFF linear-gradient(to bottom, #FFF, mc('orange', '100'));
@at-root .theme--dark & {
background: mc('grey', '900') linear-gradient(to bottom, mc('orange', '900'), darken(mc('orange', '900'), 15%));
}
}
}
&-suggestions {
.highlighted {
background: transparent linear-gradient(to bottom, mc('blue', '500'), mc('blue', '700'));
}
}
}
@keyframes searchResultsReveal {
0% {
background-color: rgba(0,0,0,0);
padding-top: 32px;
}
100% {
background-color: rgba(0,0,0,.9);
padding-top: 0;
}
}
</style>
<template lang="pug">
v-list(nav, dense)
v-list-item(@click='', ref='copyUrlButton')
v-icon(color='grey', small) mdi-content-copy
v-list-item-title.px-3 Copy URL
v-list-item(:href='`mailto:?subject=` + encodeURIComponent(title) + `&body=` + encodeURIComponent(url) + `%0D%0A%0D%0A` + encodeURIComponent(description)')
v-icon(color='grey', small) mdi-email-outline
v-list-item-title.px-3 Email
v-list-item(@click='openSocialPop(`https://www.facebook.com/sharer/sharer.php?u=` + encodeURIComponent(url) + `&title=` + encodeURIComponent(title) + `&description=` + encodeURIComponent(description))')
v-icon(color='grey', small) mdi-facebook
v-list-item-title.px-3 Facebook
v-list-item(@click='openSocialPop(`https://www.linkedin.com/shareArticle?mini=true&url=` + encodeURIComponent(url) + `&title=` + encodeURIComponent(title) + `&summary=` + encodeURIComponent(description))')
v-icon(color='grey', small) mdi-linkedin
v-list-item-title.px-3 LinkedIn
v-list-item(@click='openSocialPop(`https://www.reddit.com/submit?url=` + encodeURIComponent(url) + `&title=` + encodeURIComponent(title))')
v-icon(color='grey', small) mdi-reddit
v-list-item-title.px-3 Reddit
v-list-item(@click='openSocialPop(`https://t.me/share/url?url=` + encodeURIComponent(url) + `&text=` + encodeURIComponent(title))')
v-icon(color='grey', small) mdi-telegram
v-list-item-title.px-3 Telegram
v-list-item(@click='openSocialPop(`https://twitter.com/intent/tweet?url=` + encodeURIComponent(url) + `&text=` + encodeURIComponent(title))')
v-icon(color='grey', small) mdi-twitter
v-list-item-title.px-3 Twitter
v-list-item(:href='`viber://forward?text=` + encodeURIComponent(url) + ` ` + encodeURIComponent(description)')
v-icon(color='grey', small) mdi-phone-in-talk
v-list-item-title.px-3 Viber
v-list-item(@click='openSocialPop(`http://service.weibo.com/share/share.php?url=` + encodeURIComponent(url) + `&title=` + encodeURIComponent(title))')
v-icon(color='grey', small) mdi-sina-weibo
v-list-item-title.px-3 Weibo
v-list-item(@click='openSocialPop(`https://api.whatsapp.com/send?text=` + encodeURIComponent(title) + `%0D%0A` + encodeURIComponent(url))')
v-icon(color='grey', small) mdi-whatsapp
v-list-item-title.px-3 Whatsapp
</template>
<script>
import ClipboardJS from 'clipboard'
export default {
props: {
url: {
type: String,
default: window.location.url
},
title: {
type: String,
default: 'Untitled Page'
},
description: {
type: String,
default: ''
}
},
data () {
return {
width: 626,
height: 436,
left: 0,
top: 0
}
},
methods: {
openSocialPop (url) {
const popupWindow = window.open(
url,
'sharer',
`status=no,height=${this.height},width=${this.width},resizable=yes,left=${this.left},top=${this.top},screenX=${this.left},screenY=${this.top},toolbar=no,menubar=no,scrollbars=no,location=no,directories=no`
)
popupWindow.focus()
}
},
mounted () {
const clip = new ClipboardJS(this.$refs.copyUrlButton.$el, {
text: () => { return this.url }
})
clip.on('success', () => {
this.$store.commit('showNotification', {
style: 'success',
message: `URL copied successfully`,
icon: 'content-copy'
})
})
clip.on('error', () => {
this.$store.commit('showNotification', {
style: 'red',
message: `Failed to copy to clipboard`,
icon: 'alert'
})
})
/**
* Center the popup on dual screens
* http://stackoverflow.com/questions/4068373/center-a-popup-window-on-screen/32261263
*/
const dualScreenLeft = window.screenLeft !== undefined ? window.screenLeft : screen.left
const dualScreenTop = window.screenTop !== undefined ? window.screenTop : screen.top
const width = window.innerWidth ? window.innerWidth : (document.documentElement.clientWidth ? document.documentElement.clientWidth : screen.width)
const height = window.innerHeight ? window.innerHeight : (document.documentElement.clientHeight ? document.documentElement.clientHeight : screen.height)
this.left = ((width / 2) - (this.width / 2)) + dualScreenLeft
this.top = ((height / 2) - (this.height / 2)) + dualScreenTop
}
}
</script>
<template lang="pug">
v-dialog(
v-model='dialogOpen'
max-width='650'
)
v-card
.dialog-header
span {{$t('common:user.search')}}
v-spacer
v-progress-circular(
indeterminate
color='white'
:size='20'
:width='2'
v-show='searchLoading'
)
v-card-text.pt-5
v-text-field(
outlined
:label='$t(`common:user.searchPlaceholder`)'
v-model='search'
prepend-inner-icon='mdi-account-search-outline'
color='primary'
ref='searchIpt'
hide-details
)
v-list.grey.mt-3.py-0.radius-7(
:class='$vuetify.theme.dark ? `darken-3-d5` : `lighten-3`'
two-line
dense
)
template(v-for='(usr, idx) in items')
v-list-item(:key='usr.id', @click='setUser(usr)')
v-list-item-avatar(size='40', color='primary')
span.body-1.white--text {{usr.name | initials}}
v-list-item-content
v-list-item-title.body-2 {{usr.name}}
v-list-item-subtitle {{usr.email}}
v-list-item-action
v-icon(color='primary') mdi-arrow-right
v-divider.my-0(v-if='idx < items.length - 1')
v-card-chin
v-spacer
v-btn(
text
@click='close'
:disabled='loading'
) {{$t('common:actions.cancel')}}
</template>
<script>
import _ from 'lodash'
import gql from 'graphql-tag'
export default {
filters: {
initials(val) {
return val.split(' ').map(v => v.substring(0, 1)).join('')
}
},
props: {
multiple: {
type: Boolean,
default: false
},
value: {
type: Boolean,
default: false
}
},
data() {
return {
loading: false,
searchLoading: false,
search: '',
items: []
}
},
computed: {
dialogOpen: {
get() { return this.value },
set(value) { this.$emit('input', value) }
}
},
watch: {
value(newValue, oldValue) {
if (newValue && !oldValue) {
this.search = ''
this.selectedItems = null
_.delay(() => { this.$refs.searchIpt.focus() }, 100)
}
}
},
methods: {
close() {
this.$emit('input', false)
},
setUser(usr) {
this.$emit('select', usr)
this.close()
},
searchFilter(item, queryText, itemText) {
return _.includes(_.toLower(item.email), _.toLower(queryText)) || _.includes(_.toLower(item.name), _.toLower(queryText))
}
},
apollo: {
items: {
query: gql`
query ($query: String!) {
users {
search(query:$query) {
id
name
email
providerKey
}
}
}
`,
variables() {
return {
query: this.search
}
},
fetchPolicy: 'cache-and-network',
skip() {
return !this.search || this.search.length < 2
},
update: (data) => data.users.search,
watchLoading (isLoading) {
this.searchLoading = isLoading
}
}
}
}
</script>
<template lang='pug'>
div
v-divider.my-0
v-card-actions(:class='$vuetify.theme.dark ? "grey darken-4-l5" : "grey lighten-4"')
slot
</template>
<script>
export default { }
</script>
<template lang='pug'>
.v-card-info(:class='`is-` + color')
v-card-text.d-flex.align-center(:class='colors.cls')
v-icon(:color='colors.icon', left) {{icon}}
slot
</template>
<script>
export default {
props: {
color: {
type: String,
default: 'blue'
},
icon: {
type: String,
default: 'mdi-information-outline'
}
},
computed: {
colors () {
switch (this.color) {
case 'blue':
return {
cls: this.$vuetify.theme.dark ? 'grey darken-4-l5 blue--text text--lighten-4' : 'blue lighten-5 blue--text text--darken-3',
icon: 'blue lighten-3'
}
case 'red':
return {
cls: this.$vuetify.theme.dark ? 'grey darken-4-l5 red--text text--lighten-4' : 'red lighten-5 red--text text--darken-2',
icon: 'red lighten-3'
}
default:
return {
cls: this.$vuetify.theme.dark ? 'grey darken-4-l5' : 'grey lighten-4',
icon: 'grey darken-2'
}
}
}
}
}
</script>
<style lang="scss">
.v-card-info {
border-bottom: 1px solid #EEE;
&.is-blue {
border-bottom-color: mc('blue', '100');
@at-root .theme--dark & {
border-bottom-color: rgba(mc('blue', '100'), .3);
}
}
&.is-red {
border-bottom-color: mc('red', '100');
@at-root .theme--dark & {
border-bottom-color: rgba(mc('red', '100'), .3);
}
}
}
</style>
<template lang="pug">
v-app.editor(:dark='$vuetify.theme.dark')
nav-header(dense)
template(slot='mid')
v-text-field.editor-title-input(
dark
solo
flat
v-model='currentPageTitle'
hide-details
background-color='black'
dense
full-width
)
template(slot='actions')
v-btn.mr-3.animated.fadeIn(color='amber', outlined, small, v-if='isConflict', @click='openConflict')
.overline.amber--text.mr-3 Conflict
status-indicator(intermediary, pulse)
v-btn.animated.fadeInDown(
text
color='green'
@click.exact='save'
@click.ctrl.exact='saveAndClose'
:class='{ "is-icon": $vuetify.breakpoint.mdAndDown }'
)
v-icon(color='green', :left='$vuetify.breakpoint.lgAndUp') mdi-check
span.grey--text(v-if='$vuetify.breakpoint.lgAndUp && mode !== `create` && !isDirty') {{ $t('editor:save.saved') }}
span.white--text(v-else-if='$vuetify.breakpoint.lgAndUp') {{ mode === 'create' ? $t('common:actions.create') : $t('common:actions.save') }}
v-btn.animated.fadeInDown.wait-p1s(
text
color='blue'
@click='openPropsModal'
:class='{ "is-icon": $vuetify.breakpoint.mdAndDown, "mx-0": !welcomeMode, "ml-0": welcomeMode }'
)
v-icon(color='blue', :left='$vuetify.breakpoint.lgAndUp') mdi-tag-text-outline
span.white--text(v-if='$vuetify.breakpoint.lgAndUp') {{ $t('common:actions.page') }}
v-btn.animated.fadeInDown.wait-p2s(
v-if='!welcomeMode'
text
color='red'
:class='{ "is-icon": $vuetify.breakpoint.mdAndDown }'
@click='exit'
)
v-icon(color='red', :left='$vuetify.breakpoint.lgAndUp') mdi-close
span.white--text(v-if='$vuetify.breakpoint.lgAndUp') {{ $t('common:actions.close') }}
v-divider.ml-3(vertical)
v-main
component(:is='currentEditor', :save='save')
editor-modal-properties(v-model='dialogProps')
editor-modal-editorselect(v-model='dialogEditorSelector')
editor-modal-unsaved(v-model='dialogUnsaved', @discard='exitGo')
component(:is='activeModal')
loader(v-model='dialogProgress', :title='$t(`editor:save.processing`)', :subtitle='$t(`editor:save.pleaseWait`)')
notify
</template>
<script>
import _ from 'lodash'
import gql from 'graphql-tag'
import { get, sync } from 'vuex-pathify'
import { AtomSpinner } from 'epic-spinners'
import { Base64 } from 'js-base64'
import { StatusIndicator } from 'vue-status-indicator'
import editorStore from '../store/editor'
/* global WIKI */
WIKI.$store.registerModule('editor', editorStore)
export default {
i18nOptions: { namespaces: 'editor' },
components: {
AtomSpinner,
StatusIndicator,
editorApi: () => import(/* webpackChunkName: "editor-api", webpackMode: "lazy" */ './editor/editor-api.vue'),
editorCode: () => import(/* webpackChunkName: "editor-code", webpackMode: "lazy" */ './editor/editor-code.vue'),
editorCkeditor: () => import(/* webpackChunkName: "editor-ckeditor", webpackMode: "lazy" */ './editor/editor-ckeditor.vue'),
editorMarkdown: () => import(/* webpackChunkName: "editor-markdown", webpackMode: "lazy" */ './editor/editor-markdown.vue'),
editorRedirect: () => import(/* webpackChunkName: "editor-redirect", webpackMode: "lazy" */ './editor/editor-redirect.vue'),
editorModalEditorselect: () => import(/* webpackChunkName: "editor", webpackMode: "eager" */ './editor/editor-modal-editorselect.vue'),
editorModalProperties: () => import(/* webpackChunkName: "editor", webpackMode: "eager" */ './editor/editor-modal-properties.vue'),
editorModalUnsaved: () => import(/* webpackChunkName: "editor", webpackMode: "eager" */ './editor/editor-modal-unsaved.vue'),
editorModalMedia: () => import(/* webpackChunkName: "editor", webpackMode: "eager" */ './editor/editor-modal-media.vue'),
editorModalBlocks: () => import(/* webpackChunkName: "editor", webpackMode: "eager" */ './editor/editor-modal-blocks.vue'),
editorModalConflict: () => import(/* webpackChunkName: "editor-conflict", webpackMode: "lazy" */ './editor/editor-modal-conflict.vue'),
editorModalDrawio: () => import(/* webpackChunkName: "editor", webpackMode: "eager" */ './editor/editor-modal-drawio.vue')
},
props: {
locale: {
type: String,
default: 'en'
},
path: {
type: String,
default: 'home'
},
title: {
type: String,
default: 'Untitled Page'
},
description: {
type: String,
default: ''
},
tags: {
type: Array,
default: () => ([])
},
isPublished: {
type: Boolean,
default: true
},
scriptCss: {
type: String,
default: ''
},
publishStartDate: {
type: String,
default: ''
},
publishEndDate: {
type: String,
default: ''
},
scriptJs: {
type: String,
default: ''
},
initEditor: {
type: String,
default: null
},
initMode: {
type: String,
default: 'create'
},
initContent: {
type: String,
default: null
},
pageId: {
type: String,
default: ''
},
checkoutDate: {
type: String,
default: new Date().toISOString()
},
effectivePermissions: {
type: String,
default: ''
}
},
data() {
return {
isSaving: false,
isConflict: false,
dialogProps: false,
dialogProgress: false,
dialogEditorSelector: false,
dialogUnsaved: false,
exitConfirmed: false,
initContentParsed: '',
savedState: {
description: '',
isPublished: false,
publishEndDate: '',
publishStartDate: '',
tags: '',
title: '',
css: '',
js: ''
}
}
},
computed: {
currentEditor: sync('editor/editor'),
activeModal: sync('editor/activeModal'),
mode: get('editor/mode'),
welcomeMode() { return this.mode === `create` && this.path === `home` },
currentPageTitle: sync('page/title'),
checkoutDateActive: sync('editor/checkoutDateActive'),
currentStyling: get('page/scriptCss'),
isDirty () {
return _.some([
this.initContentParsed !== this.$store.get('editor/content'),
this.locale !== this.$store.get('page/locale'),
this.path !== this.$store.get('page/path'),
this.savedState.title !== this.$store.get('page/title'),
this.savedState.description !== this.$store.get('page/description'),
this.savedState.tags !== this.$store.get('page/tags'),
this.savedState.isPublished !== this.$store.get('page/isPublished'),
this.savedState.publishStartDate !== this.$store.get('page/publishStartDate'),
this.savedState.publishEndDate !== this.$store.get('page/publishEndDate'),
this.savedState.css !== this.$store.get('page/scriptCss'),
this.savedState.js !== this.$store.get('page/scriptJs')
], Boolean)
}
},
watch: {
currentEditor(newValue, oldValue) {
if (newValue !== '' && this.mode === 'create') {
_.delay(() => {
this.dialogProps = true
}, 500)
}
},
currentStyling(newValue) {
this.injectCustomCss(newValue)
}
},
created() {
this.$store.set('page/id', this.pageId)
this.$store.set('page/description', this.description)
this.$store.set('page/isPublished', this.isPublished)
this.$store.set('page/publishStartDate', this.publishStartDate)
this.$store.set('page/publishEndDate', this.publishEndDate)
this.$store.set('page/locale', this.locale)
this.$store.set('page/path', this.path)
this.$store.set('page/tags', this.tags)
this.$store.set('page/title', this.title)
this.$store.set('page/scriptCss', this.scriptCss)
this.$store.set('page/scriptJs', this.scriptJs)
this.$store.set('page/mode', 'edit')
this.setCurrentSavedState()
this.checkoutDateActive = this.checkoutDate
if (this.effectivePermissions) {
this.$store.set('page/effectivePermissions', JSON.parse(Buffer.from(this.effectivePermissions, 'base64').toString()))
}
},
mounted() {
this.$store.set('editor/mode', this.initMode || 'create')
this.initContentParsed = this.initContent ? Base64.decode(this.initContent) : ''
this.$store.set('editor/content', this.initContentParsed)
if (this.mode === 'create' && !this.initEditor) {
_.delay(() => {
this.dialogEditorSelector = true
}, 500)
} else {
this.currentEditor = `editor${_.startCase(this.initEditor || 'markdown')}`
}
window.onbeforeunload = () => {
if (!this.exitConfirmed && this.initContentParsed !== this.$store.get('editor/content')) {
return this.$t('editor:unsavedWarning')
} else {
return undefined
}
}
this.$root.$on('resetEditorConflict', () => {
this.isConflict = false
})
// this.$store.set('editor/mode', 'edit')
// this.currentEditor = `editorApi`
},
methods: {
openPropsModal(name) {
this.dialogProps = true
},
showProgressDialog(textKey) {
this.dialogProgress = true
},
hideProgressDialog() {
this.dialogProgress = false
},
openConflict() {
this.$root.$emit('saveConflict')
},
async save({ rethrow = false, overwrite = false } = {}) {
this.showProgressDialog('saving')
this.isSaving = true
const saveTimeoutHandle = setTimeout(() => {
throw new Error('Save operation timed out.')
}, 30000)
try {
if (this.$store.get('editor/mode') === 'create') {
// --------------------------------------------
// -> CREATE PAGE
// --------------------------------------------
let resp = await this.$apollo.mutate({
mutation: gql`
mutation (
$content: String!
$description: String!
$editor: String!
$publishState: PagePublishState!
$locale: String!
$path: String!
$publishEndDate: Date
$publishStartDate: Date
$scriptCss: String
$scriptJsLoad: String
$siteId: UUID!
$tags: [String!]
$title: String!
) {
createPage(
content: $content
description: $description
editor: $editor
publishState: $publishState
locale: $locale
path: $path
publishEndDate: $publishEndDate
publishStartDate: $publishStartDate
scriptCss: $scriptCss
scriptJsLoad: $scriptJsLoad
siteId: $siteId
tags: $tags
title: $title
) {
operation {
succeeded
message
}
page {
id
updatedAt
}
}
}
`,
variables: {
content: this.$store.get('editor/content'),
description: this.$store.get('page/description'),
editor: this.$store.get('editor/editorKey'),
locale: this.$store.get('page/locale'),
publishState: this.$store.get('page/isPublished') ? 'published' : 'draft',
path: this.$store.get('page/path'),
publishEndDate: this.$store.get('page/publishEndDate') || '',
publishStartDate: this.$store.get('page/publishStartDate') || '',
scriptCss: this.$store.get('page/scriptCss'),
scriptJsLoad: this.$store.get('page/scriptJs'),
siteId: this.$store.get('site/id'),
tags: this.$store.get('page/tags'),
title: this.$store.get('page/title')
}
})
resp = resp?.data?.createPage || {}
if (resp?.operation?.succeeded) {
this.checkoutDateActive = resp?.page?.updatedAt ?? this.checkoutDateActive
this.isConflict = false
this.$store.commit('showNotification', {
message: this.$t('editor:save.createSuccess'),
style: 'success',
icon: 'check'
})
this.$store.set('editor/id', resp?.page?.id)
this.$store.set('editor/mode', 'update')
this.exitConfirmed = true
window.location.assign(`/${this.$store.get('page/locale')}/${this.$store.get('page/path')}`)
} else {
throw new Error(resp?.operation?.message)
}
} else {
// --------------------------------------------
// -> UPDATE EXISTING PAGE
// --------------------------------------------
// const conflictResp = await this.$apollo.query({
// query: gql`
// query ($id: Int!, $checkoutDate: Date!) {
// pages {
// checkConflicts(id: $id, checkoutDate: $checkoutDate)
// }
// }
// `,
// fetchPolicy: 'network-only',
// variables: {
// id: this.pageId,
// checkoutDate: this.checkoutDateActive
// }
// })
// if (_.get(conflictResp, 'data.pages.checkConflicts', false)) {
// this.$root.$emit('saveConflict')
// throw new Error(this.$t('editor:conflict.warning'))
// }
let resp = await this.$apollo.mutate({
mutation: gql`
mutation (
$id: UUID!
$patch: PageUpdateInput!
) {
updatePage(
id: $id
patch: $patch
) {
operation {
succeeded
message
}
page {
updatedAt
}
}
}
`,
variables: {
id: this.$store.get('page/id'),
patch: {
content: this.$store.get('editor/content'),
description: this.$store.get('page/description'),
locale: this.$store.get('page/locale'),
publishState: this.$store.get('page/isPublished') ? 'published' : 'draft',
path: this.$store.get('page/path'),
publishEndDate: this.$store.get('page/publishEndDate') || '',
publishStartDate: this.$store.get('page/publishStartDate') || '',
scriptCss: this.$store.get('page/scriptCss'),
scriptJsLoad: this.$store.get('page/scriptJs'),
tags: this.$store.get('page/tags'),
title: this.$store.get('page/title')
}
}
})
resp = _.get(resp, 'data.updatePage', {})
if (_.get(resp, 'operation.succeeded')) {
this.checkoutDateActive = _.get(resp, 'page.updatedAt', this.checkoutDateActive)
this.isConflict = false
this.$store.commit('showNotification', {
message: this.$t('editor:save.updateSuccess'),
style: 'success',
icon: 'check'
})
if (this.locale !== this.$store.get('page/locale') || this.path !== this.$store.get('page/path')) {
_.delay(() => {
window.location.replace(`/e/${this.$store.get('page/locale')}/${this.$store.get('page/path')}`)
}, 1000)
}
} else {
throw new Error(_.get(resp, 'operation.message'))
}
}
this.initContentParsed = this.$store.get('editor/content')
this.setCurrentSavedState()
} catch (err) {
this.$store.commit('showNotification', {
message: err.message,
style: 'error',
icon: 'warning'
})
if (rethrow === true) {
clearTimeout(saveTimeoutHandle)
this.isSaving = false
this.hideProgressDialog()
throw err
}
}
clearTimeout(saveTimeoutHandle)
this.isSaving = false
this.hideProgressDialog()
},
async saveAndClose() {
try {
if (this.$store.get('editor/mode') === 'create') {
await this.save()
} else {
await this.save({ rethrow: true })
await this.exit()
}
} catch (err) {
// Error is already handled
}
},
async exit() {
if (this.isDirty) {
this.dialogUnsaved = true
} else {
this.exitGo()
}
},
exitGo() {
this.$store.commit(`loadingStart`, 'editor-close')
this.currentEditor = ''
this.exitConfirmed = true
_.delay(() => {
if (this.$store.get('editor/mode') === 'create') {
window.location.assign(`/`)
} else {
window.location.assign(`/${this.$store.get('page/locale')}/${this.$store.get('page/path')}`)
}
}, 500)
},
setCurrentSavedState () {
this.savedState = {
description: this.$store.get('page/description'),
isPublished: this.$store.get('page/isPublished'),
publishEndDate: this.$store.get('page/publishEndDate') || '',
publishStartDate: this.$store.get('page/publishStartDate') || '',
tags: this.$store.get('page/tags'),
title: this.$store.get('page/title'),
css: this.$store.get('page/scriptCss'),
js: this.$store.get('page/scriptJs')
}
},
injectCustomCss: _.debounce(css => {
const oldStyl = document.querySelector('#editor-script-css')
if (oldStyl) {
document.head.removeChild(oldStyl)
}
if (!_.isEmpty(css)) {
const styl = document.createElement('style')
styl.type = 'text/css'
styl.id = 'editor-script-css'
document.head.appendChild(styl)
styl.appendChild(document.createTextNode(css))
}
}, 1000)
}
// apollo: {
// isConflict: {
// query: gql`
// query ($id: Int!, $checkoutDate: Date!) {
// pages {
// checkConflicts(id: $id, checkoutDate: $checkoutDate)
// }
// }
// `,
// fetchPolicy: 'network-only',
// pollInterval: 5000,
// variables () {
// return {
// id: this.pageId,
// checkoutDate: this.checkoutDateActive
// }
// },
// update: (data) => _.cloneDeep(data.pages.checkConflicts),
// skip () {
// return this.mode === 'create' || this.isSaving || !this.isDirty
// }
// }
// }
}
</script>
<style lang='scss'>
.editor {
background-color: mc('grey', '900') !important;
min-height: 100vh;
.application--wrap {
background-color: mc('grey', '900');
}
&-title-input input {
text-align: center;
}
}
.atom-spinner.is-inline {
display: inline-block;
}
</style>
<template lang="pug">
</template>
<script>
export default {
}
</script>
<template lang="pug">
v-dialog(
v-model='isShown'
max-width='700'
)
v-card
.dialog-header.is-short.is-indigo
v-icon.mr-2(color='white') mdi-alert
span {{$t('editor:conflict.title')}}
v-card-text.pt-4
i18next.body-2(tag='div', path='editor:conflict.infoGeneric')
strong(place='authorName') {{latest.authorName}}
span(place='date', :title='$options.filters.moment(latest.updatedAt, `LLL`)') {{ latest.updatedAt | moment('from') }}.
v-btn.mt-2(outlined, color='indigo', small, :href='`/` + latest.locale + `/` + latest.path', target='_blank')
v-icon(left) mdi-open-in-new
span {{$t('editor:conflict.viewLatestVersion')}}
.body-2.mt-5: strong {{$t('editor:conflict.whatToDo')}}
.body-2.mt-1 #[v-icon(color='indigo') mdi-alpha-l-box] {{$t('editor:conflict.whatToDoLocal')}}
.body-2.mt-1 #[v-icon(color='indigo') mdi-alpha-r-box] {{$t('editor:conflict.whatToDoRemote')}}
v-card-chin
v-spacer
v-btn(text, @click='close') {{$t('common:actions.cancel')}}
v-btn.px-4(color='indigo', @click='useLocal', dark, :title='$t(`editor:conflict.useLocalHint`)')
v-icon(left) mdi-alpha-l-box
span {{$t('editor:conflict.useLocal')}}
v-dialog(
v-model='isRemoteConfirmDiagShown'
width='500'
)
template(v-slot:activator='{ on }')
v-btn.ml-3(color='indigo', dark, v-on='on', :title='$t(`editor:conflict.useRemoteHint`)')
v-icon(left) mdi-alpha-r-box
span {{$t('editor:conflict.useRemote')}}
v-card
.dialog-header.is-short.is-indigo
v-icon.mr-3(color='white') mdi-alpha-r-box
span {{$t('editor:conflict.overwrite.title')}}
v-card-text.pa-4
i18next.body-2(tag='div', path='editor:conflict.overwrite.description')
strong(place='refEditsLost') {{$t('editor:conflict.overwrite.editsLost')}}
v-card-chin
v-spacer
v-btn(outlined, color='indigo', @click='isRemoteConfirmDiagShown = false')
v-icon(left) mdi-close
span {{$t('common:actions.cancel')}}
v-btn(@click='useRemote', color='indigo', dark)
v-icon(left) mdi-check
span {{$t('common:actions.confirm')}}
</template>
<script>
import _ from 'lodash'
import gql from 'graphql-tag'
export default {
props: {
value: {
type: Boolean,
default: false
}
},
data() {
return {
latest: {
updatedAt: '',
authorName: '',
content: '',
locale: '',
path: ''
},
isRemoteConfirmDiagShown: false
}
},
computed: {
isShown: {
get() { return this.value },
set(val) { this.$emit('input', val) }
}
},
methods: {
close () {
this.isShown = false
},
useLocal () {
this.$store.set('editor/checkoutDateActive', this.latest.updatedAt)
this.$root.$emit('resetEditorConflict')
this.close()
},
useRemote () {
this.$store.set('editor/checkoutDateActive', this.latest.updatedAt)
this.$store.set('editor/content', this.latest.content)
this.$root.$emit('overwriteEditorContent')
this.$root.$emit('resetEditorConflict')
this.close()
}
},
async mounted () {
let resp = await this.$apollo.query({
query: gql`
query ($id: Int!) {
pages {
conflictLatest(id: $id) {
authorName
locale
path
content
updatedAt
}
}
}
`,
fetchPolicy: 'network-only',
variables: {
id: this.$store.get('page/id')
}
})
resp = _.get(resp, 'data.pages.conflictLatest', false)
if (!resp) {
return this.$store.commit('showNotification', {
message: 'Failed to fetch latest version.',
style: 'warning',
icon: 'warning'
})
}
this.latest = resp
}
}
</script>
// Test if potential opening or closing delimieter
// Assumes that there is a "$" at state.src[pos]
function isValidDelim (state, pos) {
let prevChar
let nextChar
let max = state.posMax
let canOpen = true
let canClose = true
prevChar = pos > 0 ? state.src.charCodeAt(pos - 1) : -1
nextChar = pos + 1 <= max ? state.src.charCodeAt(pos + 1) : -1
// Check non-whitespace conditions for opening and closing, and
// check that closing delimeter isn't followed by a number
if (prevChar === 0x20/* " " */ || prevChar === 0x09/* \t */ ||
(nextChar >= 0x30/* "0" */ && nextChar <= 0x39/* "9" */)) {
canClose = false
}
if (nextChar === 0x20/* " " */ || nextChar === 0x09/* \t */) {
canOpen = false
}
return {
canOpen: canOpen,
canClose: canClose
}
}
export default {
katexInline (state, silent) {
let start, match, token, res, pos
if (state.src[state.pos] !== '$') { return false }
res = isValidDelim(state, state.pos)
if (!res.canOpen) {
if (!silent) { state.pending += '$' }
state.pos += 1
return true
}
// First check for and bypass all properly escaped delimieters
// This loop will assume that the first leading backtick can not
// be the first character in state.src, which is known since
// we have found an opening delimieter already.
start = state.pos + 1
match = start
while ((match = state.src.indexOf('$', match)) !== -1) {
// Found potential $, look for escapes, pos will point to
// first non escape when complete
pos = match - 1
while (state.src[pos] === '\\') { pos -= 1 }
// Even number of escapes, potential closing delimiter found
if (((match - pos) % 2) === 1) { break }
match += 1
}
// No closing delimter found. Consume $ and continue.
if (match === -1) {
if (!silent) { state.pending += '$' }
state.pos = start
return true
}
// Check if we have empty content, ie: $$. Do not parse.
if (match - start === 0) {
if (!silent) { state.pending += '$$' }
state.pos = start + 1
return true
}
// Check for valid closing delimiter
res = isValidDelim(state, match)
if (!res.canClose) {
if (!silent) { state.pending += '$' }
state.pos = start
return true
}
if (!silent) {
token = state.push('katex_inline', 'math', 0)
token.markup = '$'
token.content = state.src
// Extract the math part without the $
.slice(start, match)
// Escape the curly braces since they will be interpreted as
// attributes by markdown-it-attrs (the "curly_attributes"
// core rule)
.replaceAll("{", "{{")
.replaceAll("}", "}}")
}
state.pos = match + 1
return true
},
katexBlock (state, start, end, silent) {
let firstLine; let lastLine; let next; let lastPos; let found = false; let token
let pos = state.bMarks[start] + state.tShift[start]
let max = state.eMarks[start]
if (pos + 2 > max) { return false }
if (state.src.slice(pos, pos + 2) !== '$$') { return false }
pos += 2
firstLine = state.src.slice(pos, max)
if (silent) { return true }
if (firstLine.trim().slice(-2) === '$$') {
// Single line expression
firstLine = firstLine.trim().slice(0, -2)
found = true
}
for (next = start; !found;) {
next++
if (next >= end) { break }
pos = state.bMarks[next] + state.tShift[next]
max = state.eMarks[next]
if (pos < max && state.tShift[next] < state.blkIndent) {
// non-empty line with negative indent should stop the list:
break
}
if (state.src.slice(pos, max).trim().slice(-2) === '$$') {
lastPos = state.src.slice(0, max).lastIndexOf('$$')
lastLine = state.src.slice(pos, lastPos)
found = true
}
}
state.line = next + 1
token = state.push('katex_block', 'math', 0)
token.block = true
token.content = (firstLine && firstLine.trim() ? firstLine + '\n' : '') +
state.getLines(start + 1, next, state.tShift[start], true) +
(lastLine && lastLine.trim() ? lastLine : '')
token.map = [ start, state.line ]
token.markup = '$$'
return true
}
}
<template lang='pug'>
.editor-api
.editor-api-main
v-list.editor-api-sidebar.radius-0(nav, :class='$vuetify.theme.dark ? `grey darken-4` : `primary`', dark)
v-list-item-group(v-model='tab')
v-list-item.animated.fadeInLeft(value='info')
v-list-item-icon: v-icon mdi-book-information-variant
v-list-item-title Info
v-list-item.mt-3.animated.fadeInLeft.wait-p2s(value='servers')
v-list-item-icon: v-icon mdi-server
v-list-item-title Servers
v-list-item.mt-3.animated.fadeInLeft.wait-p3s(value='endpoints')
v-list-item-icon: v-icon mdi-code-braces
v-list-item-title Endpoints
v-list-item.mt-3.animated.fadeInLeft.wait-p4s(value='models')
v-list-item-icon: v-icon mdi-buffer
v-list-item-title Models
v-list-item.mt-3.animated.fadeInLeft.wait-p5s(value='auth')
v-list-item-icon: v-icon mdi-lock
v-list-item-title Authentication
.editor-api-editor
template(v-if='tab === `info`')
v-container.px-2.pt-1(fluid)
v-row(dense)
v-col(cols='12')
.pa-3
.subtitle-2 API General Information
.caption.grey--text.text--darken-1 Global metadata about the API
v-col(cols='12', lg='6')
v-card.pt-2
v-card-text
v-text-field(
label='Title'
outlined
hint='Required - Title of the API'
persistent-hint
v-model='info.title'
)
v-divider.mt-2.mb-4
v-text-field(
label='Version'
outlined
hint='Required - Semantic versioning like 1.0.0 or an arbitrary string like 0.99-beta.'
persistent-hint
v-model='info.version'
)
v-divider.mt-2.mb-4
v-textarea(
label='Description'
outlined
hint='Optional - Markdown formatting is supported.'
persistent-hint
v-model='info.description'
)
v-col(cols='12', lg='6')
v-card.pt-2
v-card-text
v-list(nav, two-line)
v-list-item-group(v-model='kind', mandatory, color='primary')
v-list-item(value='rest')
v-list-item-avatar
img(src='/_assets-legacy/svg/icon-transaction-list.svg', alt='REST')
v-list-item-content
v-list-item-title REST API
v-list-item-subtitle Classic REST Endpoints
v-list-item-avatar
v-icon(:color='kind === `rest` ? `primary` : `grey lighten-3`') mdi-check-circle
v-list-item(value='graphql', disabled)
v-list-item-avatar
img(src='/_assets-legacy/svg/icon-graphql.svg', alt='GraphQL')
v-list-item-content
v-list-item-title GraphQL
v-list-item-subtitle.grey--text.text--lighten-1 Schema-based API
v-list-item-action
//- v-icon(:color='kind === `graphql` ? `primary` : `grey lighten-3`') mdi-check-circle
v-chip(label, small) Coming soon
template(v-else-if='tab === `servers`')
v-container.px-2.pt-1(fluid)
v-row(dense)
v-col(cols='12')
.pa-3
.d-flex.align-center.justify-space-between
div
.subtitle-2 List of servers / load balancers where this API reside
.caption.grey--text.text--darken-1 Enter all environments, e.g. Integration, QA, Pre-production, Production, etc.
v-btn(color='primary', large, @click='addServer')
v-icon(left) mdi-plus
span Add Server
v-col(cols='12', lg='6', v-for='srv of servers', :key='srv.id')
v-card.pt-1
v-card-text
.d-flex
.d-flex.flex-column.justify-space-between
v-menu(offset-y, min-width='200')
template(v-slot:activator='{ on }')
v-btn(text, x-large, style='min-width: 0;', v-on='on')
v-icon(large, :color='iconColor(srv.icon)') {{iconKey(srv.icon)}}
v-list(nav, dense)
v-list-item-group(v-model='srv.icon', mandatory)
v-list-item(:value='srvKey', v-for='(srv, srvKey) in serverTypes', :key='srvKey')
v-list-item-icon: v-icon(large, :color='srv.color', v-text='srv.icon')
v-list-item-content: v-list-item-title(v-text='srv.title')
v-btn.mb-2(depressed, small, @click='removeServer(srv.id)')
v-icon(left) mdi-close
span Delete
v-divider.ml-5(vertical)
.pl-5(style='flex: 1 1 100%;')
v-text-field(
label='Environment / Server Name'
outlined
hint='Required - Name of the environment (e.g. QA, Production)'
persistent-hint
v-model='srv.name'
)
v-text-field.mt-4(
label='URL'
outlined
hint='Required - URL of the environment (e.g. https://api.example.com/v1)'
persistent-hint
v-model='srv.url'
)
template(v-else-if='tab === `endpoints`')
v-container.px-2.pt-1(fluid)
v-row(dense)
v-col(cols='12')
.pa-3
.d-flex.align-center.justify-space-between
div
.subtitle-2 List of endpoints
.caption.grey--text.text--darken-1 Groups of REST endpoints (GET, POST, PUT, DELETE).
v-btn(color='primary', large, @click='addGroup')
v-icon(left) mdi-plus
span Add Group
v-col(cols='12', v-for='grp of endpointGroups', :key='grp.id')
v-card(color='grey darken-2')
v-card-text
v-toolbar(color='grey darken-2', flat, height='86')
v-text-field.mr-1(
flat
dark
label='Group Name'
solo
hint='Group Name'
persistent-hint
v-model='grp.name'
)
v-text-field.mx-1(
flat
dark
label='Group Description'
solo
hint='Group Description'
persistent-hint
v-model='grp.description'
)
v-divider.mx-3(vertical, dark)
v-btn.mx-1.align-self-start(color='grey lighten-2', @click='addEndpoint(grp)', dark, text, height='48')
v-icon(left) mdi-trash-can
span Delete
v-divider.mx-3(vertical, dark)
v-btn.ml-1.align-self-start(color='pink', @click='addEndpoint(grp)', dark, depressed, height='48')
v-icon(left) mdi-plus
span Add Endpoint
v-container.pa-0.mt-2(fluid)
v-row(dense)
v-col(cols='12', v-for='ept of grp.endpoints', :key='ept.id')
v-card.pt-1
v-card-text
.d-flex
.d-flex.flex-column
v-menu(offset-y, min-width='140')
template(v-slot:activator='{ on }')
v-btn.subtitle-1(depressed, large, dark, style='min-width: 140px;', height='48', v-on='on', :color='methodColor(ept.method)')
strong {{ept.method}}
v-list(nav, dense)
v-list-item-group(v-model='ept.method', mandatory)
v-list-item(:value='mtd.key', v-for='mtd of endpointMethods', :key='mtd.key')
v-list-item-content
v-chip.text-center(label, :color='mtd.color', dark) {{mtd.key}}
v-btn.mt-2(v-if='!ept.expanded', small, @click='ept.expanded = true', color='pink', outlined)
v-icon(left) mdi-arrow-down-box
span Expand
v-btn.mt-2(v-else, small, @click='ept.expanded = false', color='pink', outlined)
v-icon(left) mdi-arrow-up-box
span Collapse
template(v-if='ept.expanded')
v-spacer
v-btn.my-2(depressed, small, @click='removeEndpoint(grp, ept.id)')
v-icon(left) mdi-close
span Delete
v-divider.ml-5(vertical)
.pl-5(style='flex: 1 1 100%;')
.d-flex
v-text-field.mr-2(
label='Path'
outlined
hint='Required - Path to the endpoint (e.g. /planets/{planetId})'
persistent-hint
v-model='ept.path'
)
v-text-field.ml-2(
label='Summary'
outlined
hint='Required - A short summary of the endpoint (a few words).'
persistent-hint
v-model='ept.summary'
)
template(v-if='ept.expanded')
v-text-field.mt-3(
label='Description'
outlined
v-model='ept.description'
)
v-system-bar.editor-api-sysbar(dark, status, color='grey darken-3')
.caption.editor-api-sysbar-locale {{locale.toUpperCase()}}
.caption.px-3 /{{path}}
template(v-if='$vuetify.breakpoint.mdAndUp')
v-spacer
.caption API Docs
v-spacer
.caption OpenAPI 3.0
</template>
<script>
import _ from 'lodash'
import { v4 as uuid } from 'uuid'
import { get, sync } from 'vuex-pathify'
export default {
data() {
return {
tab: `endpoints`,
kind: 'rest',
kinds: [
{ text: 'REST', value: 'rest' },
{ text: 'GraphQL', value: 'graphql' }
],
info: {
title: '',
version: '1.0.0',
description: ''
},
servers: [
{ name: 'Production', url: 'https://api.example.com/v1', icon: 'server', id: '123456' }
],
serverTypes: {
aws: {
color: 'orange',
icon: 'mdi-aws',
title: 'AWS'
},
azure: {
color: 'blue darken-2',
icon: 'mdi-azure',
title: 'Azure'
},
digitalocean: {
color: 'blue',
icon: 'mdi-digital-ocean',
title: 'DigitalOcean'
},
docker: {
color: 'blue',
icon: 'mdi-docker',
title: 'Docker'
},
google: {
color: 'red',
icon: 'mdi-google',
title: 'Google'
},
kubernetes: {
color: 'blue darken-2',
icon: 'mdi-kubernetes',
title: 'Kubernetes'
},
linux: {
color: 'grey darken-3',
icon: 'mdi-linux',
title: 'Linux'
},
mac: {
color: 'grey darken-2',
icon: 'mdi-apple',
title: 'Mac'
},
server: {
color: 'grey',
icon: 'mdi-server',
title: 'Server'
},
windows: {
color: 'blue darken-2',
icon: 'mdi-windows',
title: 'Windows'
}
},
endpointGroups: [
{
id: '345678',
name: '',
description: '',
endpoints: [
{ method: 'GET', path: '/pet', expanded: false, id: '234567' }
]
}
],
endpointMethods: [
{ key: 'GET', color: 'blue' },
{ key: 'POST', color: 'green' },
{ key: 'PUT', color: 'orange' },
{ key: 'PATCH', color: 'cyan' },
{ key: 'DELETE', color: 'red' },
{ key: 'HEAD', color: 'deep-purple' },
{ key: 'OPTIONS', color: 'blue-grey' }
]
}
},
computed: {
isMobile() {
return this.$vuetify.breakpoint.smAndDown
},
locale: get('page/locale'),
path: get('page/path'),
mode: get('editor/mode'),
activeModal: sync('editor/activeModal')
},
methods: {
iconColor (val) {
return _.get(this.serverTypes, `${val}.color`, 'white')
},
iconKey (val) {
return _.get(this.serverTypes, `${val}.icon`, 'mdi-server')
},
methodColor (val) {
return _.get(_.find(this.endpointMethods, ['key', val]), 'color', 'grey')
},
addServer () {
this.servers.push({
id: uuid(),
name: 'Production',
url: 'https://api.example.com/v1',
icon: 'server'
})
},
removeServer (id) {
this.servers = _.reject(this.servers, ['id', id])
},
addGroup () {
this.endpointGroups.push({
id: uuid(),
name: '',
description: '',
endpoints: []
})
},
addEndpoint (grp) {
grp.endpoints.push({
id: uuid(),
method: 'GET',
path: '/pet',
expanded: false
})
},
removeEndpoint (grp, eptId) {
grp.endpoints = _.reject(grp.endpoints, ['id', eptId])
},
toggleModal(key) {
this.activeModal = (this.activeModal === key) ? '' : key
this.helpShown = false
},
closeAllModal() {
this.activeModal = ''
this.helpShown = false
}
},
mounted() {
this.$store.set('editor/editorKey', 'api')
if (this.mode === 'create') {
this.$store.set('editor/content', '<h1>Title</h1>\n\n<p>Some text here</p>')
}
},
beforeDestroy() {
this.$root.$off('editorInsert')
}
}
</script>
<style lang='scss'>
$editor-height: calc(100vh - 64px - 24px);
$editor-height-mobile: calc(100vh - 56px - 16px);
.editor-api {
&-main {
display: flex;
width: 100%;
}
&-editor {
background-color: darken(mc('grey', '100'), 4.5%);
flex: 1 1 50%;
display: block;
height: $editor-height;
position: relative;
@at-root .theme--dark & {
background-color: darken(mc('grey', '900'), 4.5%);
}
}
&-sidebar {
width: 200px;
}
&-sysbar {
padding-left: 0 !important;
&-locale {
background-color: rgba(255,255,255,.25);
display:inline-flex;
padding: 0 12px;
height: 24px;
width: 63px;
justify-content: center;
align-items: center;
}
}
}
</style>
<template lang='pug'>
.editor-ckeditor
div(ref='toolbarContainer')
div.contents(ref='editor')
v-system-bar.editor-ckeditor-sysbar(dark, status, color='grey darken-3')
.caption.editor-ckeditor-sysbar-locale {{locale.toUpperCase()}}
.caption.px-3 /{{path}}
template(v-if='$vuetify.breakpoint.mdAndUp')
v-spacer
.caption Visual Editor
v-spacer
.caption {{$t('editor:ckeditor.stats', { chars: stats.characters, words: stats.words })}}
editor-conflict(v-model='isConflict', v-if='isConflict')
page-selector(mode='select', v-model='insertLinkDialog', :open-handler='insertLinkHandler', :path='path', :locale='locale')
</template>
<script>
import _ from 'lodash'
import { get, sync } from 'vuex-pathify'
import DecoupledEditor from '@requarks/ckeditor5'
// import DecoupledEditor from '../../../../wiki-ckeditor5/build/ckeditor'
import EditorConflict from './ckeditor/conflict.vue'
import { html as beautify } from 'js-beautify/js/lib/beautifier.min.js'
/* global siteLangs */
export default {
components: {
EditorConflict
},
props: {
save: {
type: Function,
default: () => {}
}
},
data() {
return {
editor: null,
stats: {
characters: 0,
words: 0
},
content: '',
isConflict: false,
insertLinkDialog: false
}
},
computed: {
isMobile() {
return this.$vuetify.breakpoint.smAndDown
},
locale: get('page/locale'),
path: get('page/path'),
activeModal: sync('editor/activeModal')
},
methods: {
insertLink () {
this.insertLinkDialog = true
},
insertLinkHandler ({ locale, path }) {
this.editor.execute('link', siteLangs.length > 0 ? `/${locale}/${path}` : `/${path}`)
}
},
async mounted () {
this.$store.set('editor/editorKey', 'ckeditor')
this.editor = await DecoupledEditor.create(this.$refs.editor, {
language: this.locale,
placeholder: 'Type the page content here',
disableNativeSpellChecker: false,
// TODO: Mention autocomplete
//
// mention: {
// feeds: [
// {
// marker: '@',
// feed: [ '@Barney', '@Lily', '@Marshall', '@Robin', '@Ted' ],
// minimumCharacters: 1
// }
// ]
// },
wordCount: {
onUpdate: stats => {
this.stats = {
characters: stats.characters,
words: stats.words
}
}
}
})
this.$refs.toolbarContainer.appendChild(this.editor.ui.view.toolbar.element)
if (this.mode !== 'create') {
this.editor.setData(this.$store.get('editor/content'))
}
this.editor.model.document.on('change:data', _.debounce(evt => {
this.$store.set('editor/content', beautify(this.editor.getData(), { indent_size: 2, end_with_newline: true }))
}, 300))
this.$root.$on('editorInsert', opts => {
switch (opts.kind) {
case 'IMAGE':
this.editor.execute('imageInsert', {
source: opts.path
})
break
case 'BINARY':
this.editor.execute('link', opts.path, {
linkIsDownloadable: true
})
break
case 'DIAGRAM':
this.editor.execute('imageInsert', {
source: `data:image/svg+xml;base64,${opts.text}`
})
break
}
})
this.$root.$on('editorLinkToPage', opts => {
this.insertLink()
})
// Handle save conflict
this.$root.$on('saveConflict', () => {
this.isConflict = true
})
this.$root.$on('overwriteEditorContent', () => {
this.editor.setData(this.$store.get('editor/content'))
})
},
beforeDestroy () {
if (this.editor) {
this.editor.destroy()
this.editor = null
}
}
}
</script>
<style lang="scss">
$editor-height: calc(100vh - 64px - 24px);
$editor-height-mobile: calc(100vh - 56px - 16px);
.editor-ckeditor {
background-color: mc('grey', '200');
flex: 1 1 50%;
display: flex;
flex-flow: column nowrap;
height: $editor-height;
max-height: $editor-height;
position: relative;
@at-root .theme--dark & {
background-color: mc('grey', '900');
}
@include until($tablet) {
height: $editor-height-mobile;
max-height: $editor-height-mobile;
}
&-sysbar {
padding-left: 0;
&-locale {
background-color: rgba(255,255,255,.25);
display:inline-flex;
padding: 0 12px;
height: 24px;
width: 63px;
justify-content: center;
align-items: center;
}
}
.contents {
table {
margin: inherit;
}
pre > code {
background-color: unset;
color: unset;
padding: .15em;
}
}
.ck.ck-toolbar {
border: none;
justify-content: center;
background-color: mc('grey', '300');
color: #FFF;
}
.ck.ck-toolbar__items {
justify-content: center;
}
> .ck-editor__editable {
background-color: mc('grey', '100');
overflow-y: auto;
overflow-x: hidden;
padding: 2rem;
box-shadow: 0 0 5px hsla(0, 0, 0, .1);
margin: 1rem auto 0;
width: calc(100vw - 256px - 16vw);
min-height: calc(100vh - 64px - 24px - 1rem - 40px);
border-radius: 5px;
@at-root .theme--dark & {
background-color: #303030;
color: #FFF;
}
@include until($widescreen) {
width: calc(100vw - 2rem);
margin: 1rem 1rem 0 1rem;
min-height: calc(100vh - 64px - 24px - 1rem - 40px);
}
@include until($tablet) {
width: 100%;
margin: 0;
min-height: calc(100vh - 56px - 24px - 76px);
}
&.ck.ck-editor__editable:not(.ck-editor__nested-editable).ck-focused {
border-color: #FFF;
box-shadow: 0 0 10px rgba(mc('blue', '700'), .25);
@at-root .theme--dark & {
border-color: #444;
border-bottom: none;
box-shadow: 0 0 10px rgba(#000, .25);
}
}
&.ck .ck-editor__nested-editable.ck-editor__nested-editable_focused,
&.ck .ck-editor__nested-editable:focus,
.ck-widget.table td.ck-editor__nested-editable.ck-editor__nested-editable_focused,
.ck-widget.table th.ck-editor__nested-editable.ck-editor__nested-editable_focused {
background-color: mc('grey', '100');
@at-root .theme--dark & {
background-color: mc('grey', '900');
}
}
}
}
</style>
<template lang='pug'>
.editor-code
.editor-code-main
.editor-code-sidebar
v-tooltip(right, color='teal')
template(v-slot:activator='{ on }')
v-btn.animated.fadeInLeft(icon, tile, v-on='on', dark, disabled).mx-0
v-icon mdi-link-plus
span {{$t('editor:markup.insertLink')}}
v-tooltip(right, color='teal')
template(v-slot:activator='{ on }')
v-btn.mt-3.animated.fadeInLeft.wait-p1s(icon, tile, v-on='on', dark, @click='toggleModal(`editorModalMedia`)').mx-0
v-icon(:color='activeModal === `editorModalMedia` ? `teal` : ``') mdi-folder-multiple-image
span {{$t('editor:markup.insertAssets')}}
v-tooltip(right, color='teal')
template(v-slot:activator='{ on }')
v-btn.mt-3.animated.fadeInLeft.wait-p2s(icon, tile, v-on='on', dark, @click='toggleModal(`editorModalBlocks`)', disabled).mx-0
v-icon(:color='activeModal === `editorModalBlocks` ? `teal` : ``') mdi-view-dashboard-outline
span {{$t('editor:markup.insertBlock')}}
v-tooltip(right, color='teal')
template(v-slot:activator='{ on }')
v-btn.mt-3.animated.fadeInLeft.wait-p3s(icon, tile, v-on='on', dark, disabled).mx-0
v-icon mdi-code-braces
span {{$t('editor:markup.insertCodeBlock')}}
v-tooltip(right, color='teal')
template(v-slot:activator='{ on }')
v-btn.mt-3.animated.fadeInLeft.wait-p4s(icon, tile, v-on='on', dark, disabled).mx-0
v-icon mdi-library-video
span {{$t('editor:markup.insertVideoAudio')}}
v-tooltip(right, color='teal')
template(v-slot:activator='{ on }')
v-btn.mt-3.animated.fadeInLeft.wait-p5s(icon, tile, v-on='on', dark, disabled).mx-0
v-icon mdi-chart-multiline
span {{$t('editor:markup.insertDiagram')}}
v-tooltip(right, color='teal')
template(v-slot:activator='{ on }')
v-btn.mt-3.animated.fadeInLeft.wait-p6s(icon, tile, v-on='on', dark, disabled).mx-0
v-icon mdi-function-variant
span {{$t('editor:markup.insertMathExpression')}}
template(v-if='$vuetify.breakpoint.mdAndUp')
v-spacer
v-tooltip(right, color='teal')
template(v-slot:activator='{ on }')
v-btn.mt-3.animated.fadeInLeft.wait-p8s(icon, tile, v-on='on', dark, @click='toggleFullscreen').mx-0
v-icon mdi-arrow-expand-all
span {{$t('editor:markup.distractionFreeMode')}}
.editor-code-editor
textarea(ref='cm')
v-system-bar.editor-code-sysbar(dark, status, color='grey darken-3')
.caption.editor-code-sysbar-locale {{locale.toUpperCase()}}
.caption.px-3 /{{path}}
template(v-if='$vuetify.breakpoint.mdAndUp')
v-spacer
.caption Code
v-spacer
.caption Ln {{cursorPos.line + 1}}, Col {{cursorPos.ch + 1}}
</template>
<script>
import _ from 'lodash'
import { get, sync } from 'vuex-pathify'
// ========================================
// IMPORTS
// ========================================
// Code Mirror
import CodeMirror from 'codemirror'
import 'codemirror/lib/codemirror.css'
// Language
import 'codemirror/mode/htmlmixed/htmlmixed.js'
// Addons
import 'codemirror/addon/selection/active-line.js'
import 'codemirror/addon/display/fullscreen.js'
import 'codemirror/addon/display/fullscreen.css'
import 'codemirror/addon/selection/mark-selection.js'
import 'codemirror/addon/search/searchcursor.js'
// ========================================
// INIT
// ========================================
// Platform detection
// const CtrlKey = /Mac/.test(navigator.platform) ? 'Cmd' : 'Ctrl'
// ========================================
// Vue Component
// ========================================
export default {
data() {
return {
cm: null,
cursorPos: { ch: 0, line: 1 }
}
},
computed: {
isMobile() {
return this.$vuetify.breakpoint.smAndDown
},
locale: get('page/locale'),
path: get('page/path'),
mode: get('editor/mode'),
activeModal: sync('editor/activeModal')
},
methods: {
toggleModal(key) {
this.activeModal = (this.activeModal === key) ? '' : key
this.helpShown = false
},
closeAllModal() {
this.activeModal = ''
this.helpShown = false
},
/**
* Insert content at cursor
*/
insertAtCursor({ content }) {
const cursor = this.cm.doc.getCursor('head')
this.cm.doc.replaceRange(content, cursor)
},
/**
* Insert content after current line
*/
insertAfter({ content, newLine }) {
const curLine = this.cm.doc.getCursor('to').line
const lineLength = this.cm.doc.getLine(curLine).length
this.cm.doc.replaceRange(newLine ? `\n${content}\n` : content, { line: curLine, ch: lineLength + 1 })
},
/**
* Insert content before current line
*/
insertBeforeEachLine({ content, after }) {
let lines = []
if (!this.cm.doc.somethingSelected()) {
lines.push(this.cm.doc.getCursor('head').line)
} else {
lines = _.flatten(this.cm.doc.listSelections().map(sl => {
const range = Math.abs(sl.anchor.line - sl.head.line) + 1
const lowestLine = (sl.anchor.line > sl.head.line) ? sl.head.line : sl.anchor.line
return _.times(range, l => l + lowestLine)
}))
}
lines.forEach(ln => {
let lineContent = this.cm.doc.getLine(ln)
const lineLength = lineContent.length
if (_.startsWith(lineContent, content)) {
lineContent = lineContent.substring(content.length)
}
this.cm.doc.replaceRange(content + lineContent, { line: ln, ch: 0 }, { line: ln, ch: lineLength })
})
if (after) {
const lastLine = _.last(lines)
this.cm.doc.replaceRange(`\n${after}\n`, { line: lastLine, ch: this.cm.doc.getLine(lastLine).length + 1 })
}
},
/**
* Update cursor state
*/
positionSync(cm) {
this.cursorPos = cm.getCursor('head')
},
toggleFullscreen () {
this.cm.setOption('fullScreen', true)
},
refresh() {
this.$nextTick(() => {
this.cm.refresh()
})
}
},
mounted() {
this.$store.set('editor/editorKey', 'code')
if (this.mode === 'create') {
this.$store.set('editor/content', '<h1>Title</h1>\n\n<p>Some text here</p>')
}
// Initialize CodeMirror
this.cm = CodeMirror.fromTextArea(this.$refs.cm, {
tabSize: 2,
mode: 'text/html',
theme: 'wikijs-dark',
lineNumbers: true,
lineWrapping: true,
line: true,
styleActiveLine: true,
highlightSelectionMatches: {
annotateScrollbar: true
},
viewportMargin: 50,
inputStyle: 'contenteditable',
allowDropFileTypes: ['image/jpg', 'image/png', 'image/svg', 'image/jpeg', 'image/gif']
})
this.cm.setValue(this.$store.get('editor/content'))
this.cm.on('change', c => {
this.$store.set('editor/content', c.getValue())
})
if (this.$vuetify.breakpoint.mdAndUp) {
this.cm.setSize(null, 'calc(100vh - 64px - 24px)')
} else {
this.cm.setSize(null, 'calc(100vh - 56px - 16px)')
}
// Set Keybindings
const keyBindings = {
'F11' (c) {
c.setOption('fullScreen', !c.getOption('fullScreen'))
},
'Esc' (c) {
if (c.getOption('fullScreen')) c.setOption('fullScreen', false)
}
}
this.cm.setOption('extraKeys', keyBindings)
// Handle cursor movement
this.cm.on('cursorActivity', c => {
this.positionSync(c)
})
// Render initial preview
this.$root.$on('editorInsert', opts => {
switch (opts.kind) {
case 'IMAGE':
let img = `<img src="${opts.path}" alt="${opts.text}"`
if (opts.align && opts.align !== '') {
img += ` class="align-${opts.align}"`
}
img += ` />`
this.insertAtCursor({
content: img
})
break
case 'BINARY':
this.insertAtCursor({
content: `<a href="${opts.path}" title="${opts.text}">${opts.text}</a>`
})
break
}
})
// Handle save conflict
this.$root.$on('saveConflict', () => {
this.toggleModal(`editorModalConflict`)
})
this.$root.$on('overwriteEditorContent', () => {
this.cm.setValue(this.$store.get('editor/content'))
})
},
beforeDestroy() {
this.$root.$off('editorInsert')
}
}
</script>
<style lang='scss'>
$editor-height: calc(100vh - 64px - 24px);
$editor-height-mobile: calc(100vh - 56px - 16px);
.editor-code {
&-main {
display: flex;
width: 100%;
}
&-editor {
background-color: darken(mc('grey', '900'), 4.5%);
flex: 1 1 50%;
display: block;
height: $editor-height;
position: relative;
&-title {
background-color: mc('grey', '800');
border-bottom-left-radius: 5px;
display: inline-flex;
height: 30px;
justify-content: center;
align-items: center;
padding: 0 1rem;
color: mc('grey', '500');
position: absolute;
top: 0;
right: 0;
z-index: 7;
text-transform: uppercase;
font-size: .7rem;
cursor: pointer;
@include until($tablet) {
display: none;
}
}
}
&-sidebar {
background-color: mc('grey', '900');
width: 64px;
display: flex;
flex-direction: column;
justify-content: flex-start;
align-items: center;
padding: 24px 0;
@include until($tablet) {
padding: 12px 0;
width: 40px;
}
}
&-sysbar {
padding-left: 0;
&-locale {
background-color: rgba(255,255,255,.25);
display:inline-flex;
padding: 0 12px;
height: 24px;
width: 63px;
justify-content: center;
align-items: center;
}
}
// ==========================================
// CODE MIRROR
// ==========================================
.CodeMirror {
height: auto;
.cm-header-1 {
font-size: 1.5rem;
}
.cm-header-2 {
font-size: 1.25rem;
}
.cm-header-3 {
font-size: 1.15rem;
}
.cm-header-4 {
font-size: 1.1rem;
}
.cm-header-5 {
font-size: 1.05rem;
}
.cm-header-6 {
font-size: 1.025rem;
}
}
.CodeMirror-focused .cm-matchhighlight {
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAYAAABytg0kAAAAFklEQVQI12NgYGBgkKzc8x9CMDAwAAAmhwSbidEoSQAAAABJRU5ErkJggg==);
background-position: bottom;
background-repeat: repeat-x;
}
.cm-matchhighlight {
background-color: mc('grey', '800');
}
.CodeMirror-selection-highlight-scrollbar {
background-color: mc('green', '600');
}
.cm-s-wikijs-dark.CodeMirror {
background: darken(mc('grey','900'), 3%);
color: #e0e0e0;
}
.cm-s-wikijs-dark div.CodeMirror-selected {
background: mc('blue','800');
}
.cm-s-wikijs-dark .cm-matchhighlight {
background: mc('blue','800');
}
.cm-s-wikijs-dark .CodeMirror-line::selection, .cm-s-wikijs-dark .CodeMirror-line > span::selection, .cm-s-wikijs-dark .CodeMirror-line > span > span::selection {
background: mc('amber', '500');
}
.cm-s-wikijs-dark .CodeMirror-line::-moz-selection, .cm-s-wikijs-dark .CodeMirror-line > span::-moz-selection, .cm-s-wikijs-dark .CodeMirror-line > span > span::-moz-selection {
background: mc('amber', '500');
}
.cm-s-wikijs-dark .CodeMirror-gutters {
background: darken(mc('grey','900'), 6%);
border-right: 1px solid mc('grey','900');
}
.cm-s-wikijs-dark .CodeMirror-guttermarker {
color: #ac4142;
}
.cm-s-wikijs-dark .CodeMirror-guttermarker-subtle {
color: #505050;
}
.cm-s-wikijs-dark .CodeMirror-linenumber {
color: mc('grey','800');
}
.cm-s-wikijs-dark .CodeMirror-cursor {
border-left: 1px solid #b0b0b0;
}
.cm-s-wikijs-dark span.cm-comment {
color: mc('orange','800');
}
.cm-s-wikijs-dark span.cm-atom {
color: #aa759f;
}
.cm-s-wikijs-dark span.cm-number {
color: #aa759f;
}
.cm-s-wikijs-dark span.cm-property, .cm-s-wikijs-dark span.cm-attribute {
color: #90a959;
}
.cm-s-wikijs-dark span.cm-keyword {
color: #ac4142;
}
.cm-s-wikijs-dark span.cm-string {
color: #f4bf75;
}
.cm-s-wikijs-dark span.cm-variable {
color: #90a959;
}
.cm-s-wikijs-dark span.cm-variable-2 {
color: #6a9fb5;
}
.cm-s-wikijs-dark span.cm-def {
color: #d28445;
}
.cm-s-wikijs-dark span.cm-bracket {
color: #e0e0e0;
}
.cm-s-wikijs-dark span.cm-tag {
color: #ac4142;
}
.cm-s-wikijs-dark span.cm-link {
color: #aa759f;
}
.cm-s-wikijs-dark span.cm-error {
background: #ac4142;
color: #b0b0b0;
}
.cm-s-wikijs-dark .CodeMirror-activeline-background {
background: mc('grey','900');
}
.cm-s-wikijs-dark .CodeMirror-matchingbracket {
text-decoration: underline;
color: white !important;
}
}
</style>
<template lang='pug'>
.editor-markdown
v-toolbar.editor-markdown-toolbar(dense, color='primary', dark, flat, style='overflow-x: hidden;')
template(v-if='isModalShown')
v-spacer
v-btn.animated.fadeInRight(text, @click='closeAllModal')
v-icon(left) mdi-arrow-left-circle
span {{$t('editor:backToEditor')}}
template(v-else)
v-tooltip(bottom, color='primary')
template(v-slot:activator='{ on }')
v-btn.animated.fadeIn(icon, tile, v-on='on', @click='toggleMarkup({ start: `**` })').mx-0
v-icon mdi-format-bold
span {{$t('editor:markup.bold')}}
v-tooltip(bottom, color='primary')
template(v-slot:activator='{ on }')
v-btn.animated.fadeIn.wait-p1s(icon, tile, v-on='on', @click='toggleMarkup({ start: `*` })').mx-0
v-icon mdi-format-italic
span {{$t('editor:markup.italic')}}
v-tooltip(bottom, color='primary')
template(v-slot:activator='{ on }')
v-btn.animated.fadeIn.wait-p2s(icon, tile, v-on='on', @click='toggleMarkup({ start: `~~` })').mx-0
v-icon mdi-format-strikethrough
span {{$t('editor:markup.strikethrough')}}
v-menu(offset-y, open-on-hover)
template(v-slot:activator='{ on }')
v-btn.animated.fadeIn.wait-p3s(icon, tile, v-on='on').mx-0
v-icon mdi-format-header-pound
v-list.py-0
template(v-for='(n, idx) in 6')
v-list-item(@click='setHeaderLine(n)', :key='idx')
v-list-item-action
v-icon(:size='24 - (idx - 1) * 2') mdi-format-header-{{n}}
v-list-item-title {{$t('editor:markup.heading', { level: n })}}
v-divider(v-if='idx < 5')
v-tooltip(bottom, color='primary')
template(v-slot:activator='{ on }')
v-btn.animated.fadeIn.wait-p4s(icon, tile, v-on='on', @click='toggleMarkup({ start: `~` })').mx-0
v-icon mdi-format-subscript
span {{$t('editor:markup.subscript')}}
v-tooltip(bottom, color='primary')
template(v-slot:activator='{ on }')
v-btn.animated.fadeIn.wait-p5s(icon, tile, v-on='on', @click='toggleMarkup({ start: `^` })').mx-0
v-icon mdi-format-superscript
span {{$t('editor:markup.superscript')}}
v-menu(offset-y, open-on-hover)
template(v-slot:activator='{ on }')
v-btn.animated.fadeIn.wait-p6s(icon, tile, v-on='on').mx-0
v-icon mdi-alpha-t-box-outline
v-list.py-0
v-list-item(@click='insertBeforeEachLine({ content: `> `})')
v-list-item-action
v-icon mdi-alpha-t-box-outline
v-list-item-title {{$t('editor:markup.blockquote')}}
v-divider
v-list-item(@click='insertBeforeEachLine({ content: `> `, after: `{.is-info}`})')
v-list-item-action
v-icon(color='blue') mdi-alpha-i-box-outline
v-list-item-title {{$t('editor:markup.blockquoteInfo')}}
v-divider
v-list-item(@click='insertBeforeEachLine({ content: `> `, after: `{.is-success}`})')
v-list-item-action
v-icon(color='success') mdi-alpha-s-box-outline
v-list-item-title {{$t('editor:markup.blockquoteSuccess')}}
v-divider
v-list-item(@click='insertBeforeEachLine({ content: `> `, after: `{.is-warning}`})')
v-list-item-action
v-icon(color='warning') mdi-alpha-w-box-outline
v-list-item-title {{$t('editor:markup.blockquoteWarning')}}
v-divider
v-list-item(@click='insertBeforeEachLine({ content: `> `, after: `{.is-danger}`})')
v-list-item-action
v-icon(color='error') mdi-alpha-e-box-outline
v-list-item-title {{$t('editor:markup.blockquoteError')}}
v-divider
v-tooltip(bottom, color='primary')
template(v-slot:activator='{ on }')
v-btn.animated.fadeIn.wait-p7s(icon, tile, v-on='on', @click='insertBeforeEachLine({ content: `- `})').mx-0
v-icon mdi-format-list-bulleted
span {{$t('editor:markup.unorderedList')}}
v-tooltip(bottom, color='primary')
template(v-slot:activator='{ on }')
v-btn.animated.fadeIn.wait-p8s(icon, tile, v-on='on', @click='insertBeforeEachLine({ content: `1. `})').mx-0
v-icon mdi-format-list-numbered
span {{$t('editor:markup.orderedList')}}
v-tooltip(bottom, color='primary')
template(v-slot:activator='{ on }')
v-btn.animated.fadeIn.wait-p9s(icon, tile, v-on='on', @click='toggleMarkup({ start: "`" })').mx-0
v-icon mdi-code-tags
span {{$t('editor:markup.inlineCode')}}
v-tooltip(bottom, color='primary')
template(v-slot:activator='{ on }')
v-btn.animated.fadeIn.wait-p10s(icon, tile, v-on='on', @click='toggleMarkup({ start: `<kbd>`, end: `</kbd>` })').mx-0
v-icon mdi-keyboard-variant
span {{$t('editor:markup.keyboardKey')}}
v-tooltip(bottom, color='primary')
template(v-slot:activator='{ on }')
v-btn.animated.fadeIn.wait-p11s(icon, tile, v-on='on', @click='insertAfter({ content: `---`, newLine: true })').mx-0
v-icon mdi-minus
span {{$t('editor:markup.horizontalBar')}}
template(v-if='$vuetify.breakpoint.mdAndUp')
v-spacer
v-tooltip(bottom, color='primary', v-if='previewShown')
template(v-slot:activator='{ on }')
v-btn.animated.fadeIn.wait-p1s(icon, tile, v-on='on', @click='spellModeActive = !spellModeActive').mx-0
v-icon(:color='spellModeActive ? `amber` : `white`') mdi-spellcheck
span {{$t('editor:markup.toggleSpellcheck')}}
v-tooltip(bottom, color='primary')
template(v-slot:activator='{ on }')
v-btn.animated.fadeIn.wait-p2s(icon, tile, v-on='on', @click='previewShown = !previewShown').mx-0
v-icon mdi-book-open-outline
span {{$t('editor:markup.togglePreviewPane')}}
.editor-markdown-main
.editor-markdown-sidebar
v-tooltip(right, color='teal')
template(v-slot:activator='{ on }')
v-btn.animated.fadeInLeft(icon, tile, v-on='on', dark, @click='insertLink').mx-0
v-icon mdi-link-plus
span {{$t('editor:markup.insertLink')}}
v-tooltip(right, color='teal')
template(v-slot:activator='{ on }')
v-btn.mt-3.animated.fadeInLeft.wait-p1s(icon, tile, v-on='on', dark, @click='toggleModal(`editorModalMedia`)').mx-0
v-icon(:color='activeModal === `editorModalMedia` ? `teal` : ``') mdi-folder-multiple-image
span {{$t('editor:markup.insertAssets')}}
v-tooltip(right, color='teal')
template(v-slot:activator='{ on }')
v-btn.mt-3.animated.fadeInLeft.wait-p2s(icon, tile, v-on='on', dark, disabled, @click='toggleModal(`editorModalBlocks`)').mx-0
v-icon(:color='activeModal === `editorModalBlocks` ? `teal` : ``') mdi-view-dashboard-outline
span {{$t('editor:markup.insertBlock')}}
v-tooltip(right, color='teal')
template(v-slot:activator='{ on }')
v-btn.mt-3.animated.fadeInLeft.wait-p3s(icon, tile, v-on='on', dark, disabled).mx-0
v-icon mdi-code-braces
span {{$t('editor:markup.insertCodeBlock')}}
v-tooltip(right, color='teal')
template(v-slot:activator='{ on }')
v-btn.mt-3.animated.fadeInLeft.wait-p4s(icon, tile, v-on='on', dark, disabled).mx-0
v-icon mdi-movie
span {{$t('editor:markup.insertVideoAudio')}}
v-tooltip(right, color='teal')
template(v-slot:activator='{ on }')
v-btn.mt-3.animated.fadeInLeft.wait-p5s(icon, tile, v-on='on', dark, @click='toggleModal(`editorModalDrawio`)').mx-0
v-icon mdi-chart-multiline
span {{$t('editor:markup.insertDiagram')}}
v-tooltip(right, color='teal')
template(v-slot:activator='{ on }')
v-btn.mt-3.animated.fadeInLeft.wait-p6s(icon, tile, v-on='on', dark, disabled).mx-0
v-icon mdi-function-variant
span {{$t('editor:markup.insertMathExpression')}}
v-tooltip(right, color='teal')
template(v-slot:activator='{ on }')
v-btn.mt-3.animated.fadeInLeft.wait-p7s(icon, tile, v-on='on', dark, disabled).mx-0
v-icon mdi-table-plus
span {{$t('editor:markup.tableHelper')}}
template(v-if='$vuetify.breakpoint.mdAndUp')
v-spacer
v-tooltip(right, color='teal')
template(v-slot:activator='{ on }')
v-btn.mt-3.animated.fadeInLeft.wait-p8s(icon, tile, v-on='on', dark, @click='toggleFullscreen').mx-0
v-icon mdi-arrow-expand-all
span {{$t('editor:markup.distractionFreeMode')}}
v-tooltip(right, color='teal')
template(v-slot:activator='{ on }')
v-btn.mt-3.animated.fadeInLeft.wait-p9s(icon, tile, v-on='on', dark, @click='toggleHelp').mx-0
v-icon(:color='helpShown ? `teal` : ``') mdi-help-circle
span {{$t('editor:markup.markdownFormattingHelp')}}
.editor-markdown-editor
textarea(ref='cm')
transition(name='editor-markdown-preview')
.editor-markdown-preview(v-if='previewShown')
.editor-markdown-preview-content.contents(ref='editorPreviewContainer')
div(
ref='editorPreview'
v-html='previewHTML'
:spellcheck='spellModeActive'
:contenteditable='spellModeActive'
@blur='spellModeActive = false'
)
v-system-bar.editor-markdown-sysbar(dark, status, color='grey darken-3')
.caption.editor-markdown-sysbar-locale {{locale.toUpperCase()}}
.caption.px-3 /{{path}}
template(v-if='$vuetify.breakpoint.mdAndUp')
v-spacer
.caption Markdown
v-spacer
.caption Ln {{cursorPos.line + 1}}, Col {{cursorPos.ch + 1}}
markdown-help(v-if='helpShown')
page-selector(mode='select', v-model='insertLinkDialog', :open-handler='insertLinkHandler', :path='path', :locale='locale')
</template>
<script>
import _ from 'lodash'
import { get, sync } from 'vuex-pathify'
import markdownHelp from './markdown/help.vue'
import gql from 'graphql-tag'
import DOMPurify from 'dompurify'
/* global siteConfig, siteLangs */
// ========================================
// IMPORTS
// ========================================
// Code Mirror
import CodeMirror from 'codemirror'
import 'codemirror/lib/codemirror.css'
// Language
import 'codemirror/mode/markdown/markdown.js'
// Addons
import 'codemirror/addon/selection/active-line.js'
import 'codemirror/addon/display/fullscreen.js'
import 'codemirror/addon/display/fullscreen.css'
import 'codemirror/addon/selection/mark-selection.js'
import 'codemirror/addon/search/searchcursor.js'
import 'codemirror/addon/hint/show-hint.js'
import 'codemirror/addon/fold/foldcode.js'
import 'codemirror/addon/fold/foldgutter.js'
import 'codemirror/addon/fold/foldgutter.css'
import './markdown/fold'
// Markdown-it
import MarkdownIt from 'markdown-it'
import mdAttrs from 'markdown-it-attrs'
import mdEmoji from 'markdown-it-emoji'
import mdTaskLists from 'markdown-it-task-lists'
import mdExpandTabs from 'markdown-it-expand-tabs'
import mdAbbr from 'markdown-it-abbr'
import mdSup from 'markdown-it-sup'
import mdSub from 'markdown-it-sub'
import mdMark from 'markdown-it-mark'
import mdMultiTable from 'markdown-it-multimd-table'
import mdFootnote from 'markdown-it-footnote'
import mdImsize from 'markdown-it-imsize'
import katex from 'katex'
import underline from '../../libs/markdown-it-underline'
import 'katex/dist/contrib/mhchem'
import twemoji from 'twemoji'
import plantuml from './markdown/plantuml'
// Prism (Syntax Highlighting)
import Prism from 'prismjs'
// Mermaid
import mermaid from 'mermaid'
// Helpers
import katexHelper from './common/katex'
import tabsetHelper from './markdown/tabset'
// ========================================
// INIT
// ========================================
// Platform detection
const CtrlKey = /Mac/.test(navigator.platform) ? 'Cmd' : 'Ctrl'
// Prism Config
Prism.plugins.autoloader.languages_path = '/_assets-legacy/js/prism/'
Prism.plugins.NormalizeWhitespace.setDefaults({
'remove-trailing': true,
'remove-indent': true,
'left-trim': true,
'right-trim': true,
'remove-initial-line-feed': true,
'tabs-to-spaces': 2
})
// Markdown Instance
const md = new MarkdownIt({
html: true,
breaks: true,
linkify: true,
typography: true,
highlight(str, lang) {
if (lang === 'diagram') {
return `<pre class="diagram">` + Buffer.from(str, 'base64').toString() + `</pre>`
} else if (['mermaid', 'plantuml'].includes(lang)) {
return `<pre class="codeblock-${lang}"><code>${_.escape(str)}</code></pre>`
} else {
return `<pre class="line-numbers"><code class="language-${lang}">${_.escape(str)}</code></pre>`
}
}
})
.use(mdAttrs, {
allowedAttributes: ['id', 'class', 'target']
})
.use(underline)
.use(mdEmoji)
.use(mdTaskLists, { label: false, labelAfter: false })
.use(mdExpandTabs)
.use(mdAbbr)
.use(mdSup)
.use(mdSub)
.use(mdMultiTable, { multiline: true, rowspan: true, headerless: true })
.use(mdMark)
.use(mdFootnote)
.use(mdImsize)
// DOMPurify fix for draw.io
DOMPurify.addHook('uponSanitizeElement', (elm) => {
if (elm.querySelectorAll) {
const breaks = elm.querySelectorAll('foreignObject br, foreignObject p')
if (breaks && breaks.length) {
for (let i = 0; i < breaks.length; i++) {
breaks[i].parentNode.replaceChild(
document.createElement('div'),
breaks[i]
)
}
}
}
})
// ========================================
// HELPER FUNCTIONS
// ========================================
// Inject line numbers for preview scroll sync
let linesMap = []
function injectLineNumbers (tokens, idx, options, env, slf) {
let line
if (tokens[idx].map && tokens[idx].level === 0) {
line = tokens[idx].map[0]
tokens[idx].attrJoin('class', 'line')
tokens[idx].attrSet('data-line', String(line))
linesMap.push(line)
}
return slf.renderToken(tokens, idx, options, env, slf)
}
md.renderer.rules.paragraph_open = injectLineNumbers
md.renderer.rules.heading_open = injectLineNumbers
md.renderer.rules.blockquote_open = injectLineNumbers
// ========================================
// PLANTUML
// ========================================
// TODO: Use same options as defined in backend
plantuml.init(md, {})
// ========================================
// KATEX
// ========================================
md.inline.ruler.after('escape', 'katex_inline', katexHelper.katexInline)
md.renderer.rules.katex_inline = (tokens, idx) => {
try {
return katex.renderToString(tokens[idx].content, {
displayMode: false
})
} catch (err) {
console.warn(err)
return tokens[idx].content
}
}
md.block.ruler.after('blockquote', 'katex_block', katexHelper.katexBlock, {
alt: [ 'paragraph', 'reference', 'blockquote', 'list' ]
})
md.renderer.rules.katex_block = (tokens, idx) => {
try {
return `<p>` + katex.renderToString(tokens[idx].content, {
displayMode: true
}) + `</p>`
} catch (err) {
console.warn(err)
return tokens[idx].content
}
}
// ========================================
// TWEMOJI
// ========================================
md.renderer.rules.emoji = (token, idx) => {
return twemoji.parse(token[idx].content, {
callback (icon, opts) {
return `/_assets-legacy/svg/twemoji/${icon}.svg`
}
})
}
// ========================================
// Vue Component
// ========================================
let mermaidId = 0
export default {
components: {
markdownHelp
},
props: {
save: {
type: Function,
default: () => {}
}
},
data() {
return {
fabInsertMenu: false,
cm: null,
cursorPos: { ch: 0, line: 1 },
previewShown: true,
previewHTML: '',
helpShown: false,
spellModeActive: false,
insertLinkDialog: false
}
},
computed: {
isMobile() {
return this.$vuetify.breakpoint.smAndDown
},
isModalShown() {
return this.helpShown || this.activeModal !== ''
},
locale: get('page/locale'),
path: get('page/path'),
mode: get('editor/mode'),
activeModal: sync('editor/activeModal')
},
watch: {
previewShown (newValue, oldValue) {
if (newValue && !oldValue) {
this.$nextTick(() => {
this.renderMermaidDiagrams()
Prism.highlightAllUnder(this.$refs.editorPreview)
Array.from(this.$refs.editorPreview.querySelectorAll('pre.line-numbers')).forEach(pre => pre.classList.add('prismjs'))
})
}
},
spellModeActive (newValue, oldValue) {
if (newValue) {
this.$nextTick(() => {
this.$refs.editorPreview.focus()
})
}
}
},
methods: {
toggleModal(key) {
this.activeModal = (this.activeModal === key) ? '' : key
this.helpShown = false
},
closeAllModal() {
this.activeModal = ''
this.helpShown = false
},
onCmInput: _.debounce(function (newContent) {
this.processContent(newContent)
}, 600),
onCmPaste (cm, ev) {
// const clipItems = (ev.clipboardData || ev.originalEvent.clipboardData).items
// for (let clipItem of clipItems) {
// if (_.startsWith(clipItem.type, 'image/')) {
// const file = clipItem.getAsFile()
// const reader = new FileReader()
// reader.onload = evt => {
// this.$store.commit(`loadingStart`, 'editor-paste-image')
// this.insertAfter({
// content: `![${file.name}](${evt.target.result})`,
// newLine: true
// })
// }
// reader.readAsDataURL(file)
// }
// }
},
processContent (newContent) {
linesMap = []
// this.$store.set('editor/content', newContent)
this.processMarkers(this.cm.firstLine(), this.cm.lastLine())
this.previewHTML = DOMPurify.sanitize(md.render(newContent), {
ADD_TAGS: ['foreignObject']
})
this.$nextTick(() => {
tabsetHelper.format()
this.renderMermaidDiagrams()
Prism.highlightAllUnder(this.$refs.editorPreview)
Array.from(this.$refs.editorPreview.querySelectorAll('pre.line-numbers')).forEach(pre => pre.classList.add('prismjs'))
this.scrollSync(this.cm)
})
},
/**
* Update cursor state
*/
positionSync(cm) {
this.cursorPos = cm.getCursor('head')
},
/**
* Wrap selection with start / end tags
*/
toggleMarkup({ start, end }) {
if (!end) { end = start }
if (!this.cm.doc.somethingSelected()) {
return this.$store.commit('showNotification', {
message: this.$t('editor:markup.noSelectionError'),
style: 'warning',
icon: 'warning'
})
}
this.cm.doc.replaceSelections(this.cm.doc.getSelections().map(s => start + s + end))
},
/**
* Set current line as header
*/
setHeaderLine(lvl) {
const curLine = this.cm.doc.getCursor('head').line
let lineContent = this.cm.doc.getLine(curLine)
const lineLength = lineContent.length
if (_.startsWith(lineContent, '#')) {
lineContent = lineContent.replace(/^(#+ )/, '')
}
lineContent = _.times(lvl, n => '#').join('') + ` ` + lineContent
this.cm.doc.replaceRange(lineContent, { line: curLine, ch: 0 }, { line: curLine, ch: lineLength })
},
/**
* Get the header lever of the current line
*/
getHeaderLevel(cm) {
const curLine = this.cm.doc.getCursor('head').line
let lineContent = this.cm.doc.getLine(curLine)
let lvl = 0
const result = lineContent.match(/^(#+) /)
if (result) {
lvl = _.get(result, '[1]', '').length
}
return lvl
},
/**
* Insert content at cursor
*/
insertAtCursor({ content }) {
const cursor = this.cm.doc.getCursor('head')
this.cm.doc.replaceRange(content, cursor)
},
/**
* Insert content after current line
*/
insertAfter({ content, newLine }) {
const curLine = this.cm.doc.getCursor('to').line
const lineLength = this.cm.doc.getLine(curLine).length
this.cm.doc.replaceRange(newLine ? `\n${content}\n` : content, { line: curLine, ch: lineLength + 1 })
},
/**
* Insert content before current line
*/
insertBeforeEachLine({ content, after }) {
let lines = []
if (!this.cm.doc.somethingSelected()) {
lines.push(this.cm.doc.getCursor('head').line)
} else {
lines = _.flatten(this.cm.doc.listSelections().map(sl => {
const range = Math.abs(sl.anchor.line - sl.head.line) + 1
const lowestLine = (sl.anchor.line > sl.head.line) ? sl.head.line : sl.anchor.line
return _.times(range, l => l + lowestLine)
}))
}
lines.forEach(ln => {
let lineContent = this.cm.doc.getLine(ln)
const lineLength = lineContent.length
if (_.startsWith(lineContent, content)) {
lineContent = lineContent.substring(content.length)
}
this.cm.doc.replaceRange(content + lineContent, { line: ln, ch: 0 }, { line: ln, ch: lineLength })
})
if (after) {
const lastLine = _.last(lines)
this.cm.doc.replaceRange(`\n${after}\n`, { line: lastLine, ch: this.cm.doc.getLine(lastLine).length + 1 })
}
},
/**
* Update scroll sync
*/
scrollSync: _.debounce(function (cm) {
if (!this.previewShown || cm.somethingSelected()) { return }
let currentLine = cm.getCursor().line
if (currentLine < 3) {
this.Velocity(this.$refs.editorPreview, 'stop', true)
this.Velocity(this.$refs.editorPreview.firstChild, 'scroll', { offset: '-50', duration: 1000, container: this.$refs.editorPreviewContainer })
} else {
let closestLine = _.findLast(linesMap, n => n <= currentLine)
let destElm = this.$refs.editorPreview.querySelector(`[data-line='${closestLine}']`)
if (destElm) {
this.Velocity(this.$refs.editorPreview, 'stop', true)
this.Velocity(destElm, 'scroll', { offset: '-100', duration: 1000, container: this.$refs.editorPreviewContainer })
}
}
}, 500),
toggleHelp () {
this.helpShown = !this.helpShown
this.activeModal = ''
},
toggleFullscreen () {
this.cm.setOption('fullScreen', true)
},
refresh() {
this.$nextTick(() => {
this.cm.refresh()
})
},
renderMermaidDiagrams () {
document.querySelectorAll('.editor-markdown-preview pre.codeblock-mermaid > code').forEach(elm => {
mermaidId++
const mermaidDef = elm.innerText
const mmElm = document.createElement('div')
mmElm.innerHTML = `<div id="mermaid-id-${mermaidId}">${mermaid.render(`mermaid-id-${mermaidId}`, mermaidDef)}</div>`
elm.parentElement.replaceWith(mmElm)
})
},
autocomplete (cm, change) {
if (cm.getModeAt(cm.getCursor()).name !== 'markdown') {
return
}
// Links
if (change.text[0] === '(') {
const curLine = cm.getLine(change.from.line).substring(0, change.from.ch)
if (curLine[curLine.length - 1] === ']') {
cm.showHint({
hint: async (cm, options) => {
const cur = cm.getCursor()
const curLine = cm.getLine(cur.line).substring(0, cur.ch)
const queryString = curLine.substring(curLine.lastIndexOf('[') + 1, curLine.length - 2)
const token = cm.getTokenAt(cur)
try {
const respRaw = await this.$apollo.query({
query: gql`
query ($query: String!, $locale: String) {
pages {
search(query:$query, locale:$locale) {
results {
title
path
locale
}
totalHits
}
}
}
`,
variables: {
query: queryString,
locale: this.locale
},
fetchPolicy: 'cache-first'
})
const resp = _.get(respRaw, 'data.pages.search', {})
if (resp && resp.totalHits > 0) {
return {
list: resp.results.map(r => ({
text: '(' + (siteLangs.length > 0 ? `/${r.locale}/${r.path}` : `/${r.path}`) + ')',
displayText: siteLangs.length > 0 ? `/${r.locale}/${r.path} - ${r.title}` : `/${r.path} - ${r.title}`
})),
from: CodeMirror.Pos(cur.line, token.start),
to: CodeMirror.Pos(cur.line, token.end)
}
}
} catch (err) {}
return {
list: [],
from: CodeMirror.Pos(cur.line, token.start),
to: CodeMirror.Pos(cur.line, token.end)
}
}
})
}
}
},
insertLink () {
this.insertLinkDialog = true
},
insertLinkHandler ({ locale, path }) {
const lastPart = _.last(path.split('/'))
this.insertAtCursor({
content: siteLangs.length > 0 ? `[${lastPart}](/${locale}/${path})` : `[${lastPart}](/${path})`
})
},
processMarkers (from, to) {
let found = null
let foundStart = 0
this.cm.doc.getAllMarks().forEach(mk => {
if (mk.__kind) {
mk.clear()
}
})
this.cm.eachLine(from, to, ln => {
const line = ln.lineNo()
if (ln.text.startsWith('```diagram')) {
found = 'diagram'
foundStart = line
} else if (ln.text === '```' && found) {
switch (found) {
// ------------------------------
// -> DIAGRAM
// ------------------------------
case 'diagram': {
if (line - foundStart !== 2) {
return
}
this.addMarker({
kind: 'diagram',
from: { line: foundStart, ch: 3 },
to: { line: foundStart, ch: 10 },
text: 'Edit Diagram',
action: ((start, end) => {
return (ev) => {
this.cm.doc.setSelection({ line: start, ch: 0 }, { line: end, ch: 3 })
try {
const raw = this.cm.doc.getLine(end - 1)
this.$store.set('editor/activeModalData', Buffer.from(raw, 'base64').toString())
this.toggleModal(`editorModalDrawio`)
} catch (err) {
return this.$store.commit('showNotification', {
message: 'Failed to process diagram data.',
style: 'warning',
icon: 'warning'
})
}
}
})(foundStart, line)
})
if (ln.height > 0) {
this.cm.foldCode(foundStart)
}
break
}
}
found = null
}
})
},
addMarker ({ kind, from, to, text, action }) {
const markerElm = document.createElement('span')
markerElm.appendChild(document.createTextNode(text))
markerElm.className = 'CodeMirror-buttonmarker'
markerElm.addEventListener('click', action)
this.cm.markText(from, to, { replacedWith: markerElm, __kind: kind })
}
},
mounted() {
this.$store.set('editor/editorKey', 'markdown')
if (this.mode === 'create' && !this.$store.get('editor/content')) {
this.$store.set('editor/content', '# Header\nYour content here')
}
// Initialize Mermaid API
mermaid.initialize({
startOnLoad: false,
theme: this.$vuetify.theme.dark ? `dark` : `default`
})
// Initialize CodeMirror
this.cm = CodeMirror.fromTextArea(this.$refs.cm, {
tabSize: 2,
mode: 'text/markdown',
theme: 'wikijs-dark',
lineNumbers: true,
lineWrapping: true,
line: true,
styleActiveLine: true,
highlightSelectionMatches: {
annotateScrollbar: true
},
viewportMargin: 50,
inputStyle: 'contenteditable',
allowDropFileTypes: ['image/jpg', 'image/png', 'image/svg', 'image/jpeg', 'image/gif'],
direction: siteConfig.rtl ? 'rtl' : 'ltr',
foldGutter: true,
gutters: ['CodeMirror-linenumbers', 'CodeMirror-foldgutter']
})
this.cm.setValue(this.$store.get('editor/content'))
this.cm.on('change', c => {
this.$store.set('editor/content', c.getValue())
this.onCmInput(this.$store.get('editor/content'))
})
if (this.$vuetify.breakpoint.mdAndUp) {
this.cm.setSize(null, 'calc(100vh - 112px - 24px)')
} else {
this.cm.setSize(null, 'calc(100vh - 112px - 16px)')
}
// Set Keybindings
const keyBindings = {
'F11' (c) {
c.setOption('fullScreen', !c.getOption('fullScreen'))
},
'Esc' (c) {
if (c.getOption('fullScreen')) c.setOption('fullScreen', false)
}
}
_.set(keyBindings, `${CtrlKey}-S`, c => {
this.save()
return false
})
_.set(keyBindings, `${CtrlKey}-B`, c => {
this.toggleMarkup({ start: `**` })
return false
})
_.set(keyBindings, `${CtrlKey}-I`, c => {
this.toggleMarkup({ start: `*` })
return false
})
_.set(keyBindings, `${CtrlKey}-Alt-Right`, c => {
let lvl = this.getHeaderLevel(c)
if (lvl >= 6) { lvl = 5 }
this.setHeaderLine(lvl + 1)
return false
})
_.set(keyBindings, `${CtrlKey}-Alt-Left`, c => {
let lvl = this.getHeaderLevel(c)
if (lvl <= 1) { lvl = 2 }
this.setHeaderLine(lvl - 1)
return false
})
this.cm.setOption('extraKeys', keyBindings)
this.cm.on('inputRead', this.autocomplete)
// Handle cursor movement
this.cm.on('cursorActivity', c => {
this.positionSync(c)
this.scrollSync(c)
})
// Handle special paste
this.cm.on('paste', this.onCmPaste)
// Render initial preview
this.processContent(this.$store.get('editor/content'))
this.refresh()
this.$root.$on('editorInsert', opts => {
switch (opts.kind) {
case 'IMAGE':
let img = `![${opts.text}](${opts.path})`
if (opts.align && opts.align !== '') {
img += `{.align-${opts.align}}`
}
this.insertAtCursor({
content: img
})
break
case 'BINARY':
this.insertAtCursor({
content: `[${opts.text}](${opts.path})`
})
break
case 'DIAGRAM':
const selStartLine = this.cm.getCursor('from').line
const selEndLine = this.cm.getCursor('to').line + 1
this.cm.doc.replaceSelection('```diagram\n' + opts.text + '\n```\n', 'start')
this.processMarkers(selStartLine, selEndLine)
break
}
})
// Handle save conflict
this.$root.$on('saveConflict', () => {
this.toggleModal(`editorModalConflict`)
})
this.$root.$on('overwriteEditorContent', () => {
this.cm.setValue(this.$store.get('editor/content'))
})
},
beforeDestroy() {
this.$root.$off('editorInsert')
}
}
</script>
<style lang='scss'>
$editor-height: calc(100vh - 112px - 24px);
$editor-height-mobile: calc(100vh - 112px - 16px);
.editor-markdown {
&-main {
display: flex;
width: 100%;
}
&-editor {
background-color: darken(mc('grey', '900'), 4.5%);
flex: 1 1 50%;
display: block;
height: $editor-height;
position: relative;
@include until($tablet) {
height: $editor-height-mobile;
}
}
&-preview {
flex: 1 1 50%;
background-color: mc('grey', '100');
position: relative;
height: $editor-height;
overflow: hidden;
padding: 1rem;
@at-root .theme--dark & {
background-color: mc('grey', '900');
}
@include until($tablet) {
display: none;
}
&-enter-active, &-leave-active {
transition: max-width .5s ease;
max-width: 50vw;
.editor-code-preview-content {
width: 50vw;
overflow:hidden;
}
}
&-enter, &-leave-to {
max-width: 0;
}
&-content {
height: $editor-height;
overflow-y: scroll;
padding: 0;
width: calc(100% + 17px);
// -ms-overflow-style: none;
// &::-webkit-scrollbar {
// width: 0px;
// background: transparent;
// }
@include until($tablet) {
height: $editor-height-mobile;
}
> div {
outline: none;
}
p.line {
overflow-wrap: break-word;
}
.tabset {
background-color: mc('teal', '700');
color: mc('teal', '100') !important;
padding: 5px 12px;
font-size: 14px;
font-weight: 500;
border-radius: 5px 0 0 0;
font-style: italic;
&::after {
display: none;
}
&-header {
background-color: mc('teal', '500');
color: #FFF !important;
padding: 5px 12px;
font-size: 14px;
font-weight: 500;
margin-top: 0 !important;
&::after {
display: none;
}
}
&-content {
border-left: 5px solid mc('teal', '500');
background-color: mc('teal', '50');
padding: 0 15px 15px;
overflow: hidden;
@at-root .theme--dark & {
background-color: rgba(mc('teal', '500'), .1);
}
}
}
}
}
&-toolbar {
background-color: mc('blue', '700');
background-image: linear-gradient(to bottom, mc('blue', '700') 0%, mc('blue','800') 100%);
color: #FFF;
.v-toolbar__content {
padding-left: 64px;
@include until($tablet) {
padding-left: 8px;
}
}
}
&-insert:not(.v-speed-dial--right) {
@include from($tablet) {
left: 50%;
margin-left: -28px;
}
}
&-sidebar {
background-color: mc('grey', '900');
width: 64px;
display: flex;
flex-direction: column;
justify-content: flex-start;
align-items: center;
padding: 24px 0;
@include until($tablet) {
padding: 12px 0;
width: 40px;
}
}
&-sysbar {
padding-left: 0;
&-locale {
background-color: rgba(255,255,255,.25);
display:inline-flex;
padding: 0 12px;
height: 24px;
width: 63px;
justify-content: center;
align-items: center;
}
}
// ==========================================
// Fix FAB revealing under codemirror
// ==========================================
.speed-dial--fixed {
z-index: 8;
}
// ==========================================
// CODE MIRROR
// ==========================================
.CodeMirror {
height: auto;
font-family: 'Roboto Mono', monospace;
font-size: .9rem;
.cm-header-1 {
font-size: 1.5rem;
}
.cm-header-2 {
font-size: 1.25rem;
}
.cm-header-3 {
font-size: 1.15rem;
}
.cm-header-4 {
font-size: 1.1rem;
}
.cm-header-5 {
font-size: 1.05rem;
}
.cm-header-6 {
font-size: 1.025rem;
}
}
.CodeMirror-wrap pre.CodeMirror-line, .CodeMirror-wrap pre.CodeMirror-line-like {
word-break: break-word;
}
.CodeMirror-focused .cm-matchhighlight {
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAYAAABytg0kAAAAFklEQVQI12NgYGBgkKzc8x9CMDAwAAAmhwSbidEoSQAAAABJRU5ErkJggg==);
background-position: bottom;
background-repeat: repeat-x;
}
.cm-matchhighlight {
background-color: mc('grey', '800');
}
.CodeMirror-selection-highlight-scrollbar {
background-color: mc('green', '600');
}
}
// HINT DROPDOWN
.CodeMirror-hints {
position: absolute;
z-index: 10;
overflow: hidden;
list-style: none;
margin: 0;
padding: 1px;
box-shadow: 2px 3px 5px rgba(0,0,0,.2);
border: 1px solid mc('grey', '700');
background: mc('grey', '900');
font-family: 'Roboto Mono', monospace;
font-size: .9rem;
max-height: 150px;
overflow-y: auto;
min-width: 250px;
max-width: 80vw;
}
.CodeMirror-hint {
margin: 0;
padding: 0 4px;
white-space: pre;
color: #FFF;
cursor: pointer;
}
li.CodeMirror-hint-active {
background: mc('blue', '500');
color: #FFF;
}
</style>
<template lang='pug'>
v-card.editor-modal-blocks.animated.fadeInLeft(flat, tile)
v-container.pa-3(grid-list-lg, fluid)
v-row(dense)
v-col(
v-for='(item, idx) of blocks'
:key='`block-` + item.key'
cols='12'
lg='4'
xl='3'
)
v-card.radius-7(light, flat, @click='selectBlock(item)')
v-card-text
.d-flex.align-center
v-avatar.radius-7(color='teal')
v-icon(dark) {{item.icon}}
.pl-3
.body-2: strong.teal--text {{item.title}}
.caption.grey--text {{item.description}}
</template>
<script>
import _ from 'lodash'
import { sync } from 'vuex-pathify'
export default {
props: {
value: {
type: Boolean,
default: false
}
},
data() {
return {
blocks: [
{
key: 'childlist',
title: 'List Children Pages',
description: 'Display a links list of all children of this page.',
icon: 'mdi-format-list-text'
},
{
key: 'tabs',
title: 'Tabs',
description: 'Organize content within tabs.',
icon: 'mdi-tab'
}
]
}
},
computed: {
isShown: {
get() { return this.value },
set(val) { this.$emit('input', val) }
},
activeModal: sync('editor/activeModal')
},
methods: {
selectBlock (item) {
this.block = _.cloneDeep(item)
}
}
}
</script>
<style lang='scss'>
.editor-modal-blocks {
position: fixed;
top: 112px;
left: 64px;
z-index: 10;
width: calc(100vw - 64px - 17px);
height: calc(100vh - 112px - 24px);
background-color: rgba(darken(mc('grey', '900'), 3%), .9) !important;
@include until($tablet) {
left: 40px;
width: calc(100vw - 40px);
}
}
</style>
<template lang='pug'>
v-card.editor-modal-conflict.animated.fadeIn(flat, tile)
.pa-4
v-toolbar.radius-7(flat, color='indigo', style='border-bottom-left-radius: 0; border-bottom-right-radius: 0;', dark)
v-icon.mr-3 mdi-merge
.subtitle-1 {{$t('editor:conflict.title')}}
v-spacer
v-btn(outlined, color='white', @click='useLocal', :title='$t(`editor:conflict.useLocalHint`)')
v-icon(left) mdi-alpha-l-box
span {{$t('editor:conflict.useLocal')}}
v-dialog(
v-model='isRemoteConfirmDiagShown'
width='500'
)
template(v-slot:activator='{ on }')
v-btn.ml-3(outlined, color='white', v-on='on', :title='$t(`editor:conflict.useRemoteHint`)')
v-icon(left) mdi-alpha-r-box
span {{$t('editor:conflict.useRemote')}}
v-card
.dialog-header.is-short.is-indigo
v-icon.mr-3(color='white') mdi-alpha-r-box
span {{$t('editor:conflict.overwrite.title')}}
v-card-text.pa-4
i18next.body-2(tag='div', path='editor:conflict.overwrite.description')
strong(place='refEditsLost') {{$t('editor:conflict.overwrite.editsLost')}}
v-card-chin
v-spacer
v-btn(outlined, color='indigo', @click='isRemoteConfirmDiagShown = false')
v-icon(left) mdi-close
span {{$t('common:actions.cancel')}}
v-btn(@click='useRemote', color='indigo', dark)
v-icon(left) mdi-check
span {{$t('common:actions.confirm')}}
v-divider.mx-3(vertical)
v-btn(outlined, color='indigo lighten-4', @click='close')
v-icon(left) mdi-close
span {{$t('common:actions.cancel')}}
v-row.indigo.darken-1.body-2(no-gutters)
v-col.pa-4
v-icon.mr-3(color='white') mdi-alpha-l-box
i18next.white--text(tag='span', path='editor:conflict.localVersion')
em.indigo--text.text--lighten-4(place='refEditable') {{$t('editor:conflict.editable')}}
v-divider(vertical)
v-col.pa-4
v-icon.mr-3(color='white') mdi-alpha-r-box
i18next.white--text(tag='span', path='editor:conflict.remoteVersion')
em.indigo--text.text--lighten-4(place='refReadOnly') {{$t('editor:conflict.readonly')}}
v-row.grey.lighten-2.body-2(no-gutters)
v-col.px-4.py-2
i18next.grey--text.text--darken-2(tag='em', path='editor:conflict.leftPanelInfo')
span(place='date', :title='$options.filters.moment(checkoutDateActive, `LLL`)') {{ checkoutDateActive | moment('from') }}
v-divider(vertical)
v-col.px-4.py-2
i18next.grey--text.text--darken-2(tag='em', path='editor:conflict.rightPanelInfo')
strong(place='authorName') {{latest.authorName}}
span(place='date', :title='$options.filters.moment(latest.updatedAt, `LLL`)') {{ latest.updatedAt | moment('from') }}
v-row.grey.lighten-3.grey--text.text--darken-3(no-gutters)
v-col.pa-4
.body-2
strong.indigo--text {{$t('editor:conflict.pageTitle')}}
strong.pl-2 {{title}}
.caption
strong.indigo--text {{$t('editor:conflict.pageDescription')}}
span.pl-2 {{description}}
v-divider(vertical, light)
v-col.pa-4
.body-2
strong.indigo--text {{$t('editor:conflict.pageTitle')}}
strong.pl-2 {{latest.title}}
.caption
strong.indigo--text {{$t('editor:conflict.pageDescription')}}
span.pl-2 {{latest.description}}
v-card.radius-7(:light='!$vuetify.theme.dark', :dark='$vuetify.theme.dark')
div(ref='cm')
</template>
<script>
import _ from 'lodash'
import gql from 'graphql-tag'
import { sync, get } from 'vuex-pathify'
/* global siteConfig */
// ========================================
// IMPORTS
// ========================================
import '../../libs/codemirror-merge/diff-match-patch.js'
// Code Mirror
import CodeMirror from 'codemirror'
import 'codemirror/lib/codemirror.css'
// Language
import 'codemirror/mode/markdown/markdown.js'
import 'codemirror/mode/htmlmixed/htmlmixed.js'
// Addons
import 'codemirror/addon/selection/active-line.js'
import 'codemirror/addon/merge/merge.js'
import 'codemirror/addon/merge/merge.css'
export default {
data() {
return {
cm: null,
latest: {
title: '',
description: '',
updatedAt: '',
authorName: ''
},
isRemoteConfirmDiagShown: false
}
},
computed: {
editorKey: get('editor/editorKey'),
activeModal: sync('editor/activeModal'),
pageId: get('page/id'),
title: get('page/title'),
description: get('page/description'),
updatedAt: get('page/updatedAt'),
checkoutDateActive: sync('editor/checkoutDateActive')
},
methods: {
close () {
this.isRemoteConfirmDiagShown = false
this.activeModal = ''
},
overwriteAndClose() {
this.checkoutDateActive = this.latest.updatedAt
this.$root.$emit('overwriteEditorContent')
this.$root.$emit('resetEditorConflict')
this.close()
},
useLocal () {
this.$store.set('editor/content', this.cm.edit.getValue())
this.overwriteAndClose()
},
useRemote () {
this.$store.set('editor/content', this.latest.content)
this.overwriteAndClose()
}
},
async mounted () {
let textMode = 'text/html'
switch (this.editorKey) {
case 'markdown':
textMode = 'text/markdown'
break
}
let resp = await this.$apollo.query({
query: gql`
query ($id: Int!) {
pages {
conflictLatest(id: $id) {
id
authorId
authorName
content
createdAt
description
isPublished
locale
path
tags
title
updatedAt
}
}
}
`,
fetchPolicy: 'network-only',
variables: {
id: this.$store.get('page/id')
}
})
resp = _.get(resp, 'data.pages.conflictLatest', false)
if (!resp) {
return this.$store.commit('showNotification', {
message: 'Failed to fetch latest version.',
style: 'warning',
icon: 'warning'
})
}
this.latest = resp
this.cm = CodeMirror.MergeView(this.$refs.cm, {
value: this.$store.get('editor/content'),
orig: resp.content,
tabSize: 2,
mode: textMode,
lineNumbers: true,
lineWrapping: true,
connect: null,
highlightDifferences: true,
styleActiveLine: true,
collapseIdentical: true,
direction: siteConfig.rtl ? 'rtl' : 'ltr'
})
this.cm.rightOriginal().setSize(null, 'calc(100vh - 265px)')
this.cm.editor().setSize(null, 'calc(100vh - 265px)')
this.cm.wrap.style.height = 'calc(100vh - 265px)'
}
}
</script>
<style lang='scss'>
.editor-modal-conflict {
position: fixed !important;
top: 0;
left: 0;
z-index: 10;
width: 100%;
height: 100vh;
background-color: rgba(0, 0, 0, .9) !important;
overflow: auto;
}
</style>
<template lang='pug'>
v-card.editor-modal-drawio.animated.fadeIn(flat, tile)
iframe(
ref='drawio'
src='https://embed.diagrams.net/?embed=1&proto=json&spin=1&saveAndExit=1&noSaveBtn=1&noExitBtn=0'
frameborder='0'
)
</template>
<script>
import { sync, get } from 'vuex-pathify'
// const xmlTest = `<?xml version="1.0" encoding="UTF-8"?>
// <mxfile version="13.4.2">
// <diagram id="SgbkCjxR32CZT1FvBvkp" name="Page-1">
// <mxGraphModel dx="2062" dy="1123" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0">
// <root>
// <mxCell id="0" />
// <mxCell id="1" parent="0" />
// <mxCell id="5gE3BTvRYS_8FoJnOusC-1" value="" style="whiteSpace=wrap;html=1;aspect=fixed;fillColor=#f8cecc;strokeColor=#b85450;" vertex="1" parent="1">
// <mxGeometry x="380" y="530" width="80" height="80" as="geometry" />
// </mxCell>
// </root>
// </mxGraphModel>
// </diagram>
// </mxfile>
// `
export default {
data() {
return {
content: ''
}
},
computed: {
editorKey: get('editor/editorKey'),
activeModal: sync('editor/activeModal')
},
methods: {
close () {
this.activeModal = ''
},
overwriteAndClose() {
this.$root.$emit('overwriteEditorContent')
this.$root.$emit('resetEditorConflict')
this.close()
},
send (msg) {
this.$refs.drawio.contentWindow.postMessage(JSON.stringify(msg), '*')
},
receive (evt) {
if (evt.frame === null || evt.source !== this.$refs.drawio.contentWindow || evt.data.length < 1) {
return
}
try {
const msg = JSON.parse(evt.data)
switch (msg.event) {
case 'init': {
this.send({
action: 'load',
autosave: 0,
modified: 'unsavedChanges',
xml: this.$store.get('editor/activeModalData'),
title: this.$store.get('page/title')
})
this.$store.set('editor/activeModalData', null)
break
}
case 'save': {
if (msg.exit) {
this.send({
action: 'export',
format: 'xmlsvg'
})
}
break
}
case 'export': {
const svgDataStart = msg.data.indexOf('base64,') + 7
this.$root.$emit('editorInsert', {
kind: 'DIAGRAM',
text: msg.data.slice(svgDataStart)
// text: msg.xml.replace(/ agent="(.*?)"/, '').replace(/ host="(.*?)"/, '').replace(/ etag="(.*?)"/, '')
})
this.close()
break
}
case 'exit': {
this.close()
break
}
}
} catch (err) {
console.error(err)
}
}
},
async mounted () {
window.addEventListener('message', this.receive)
},
beforeDestroy () {
window.removeEventListener('message', this.receive)
}
}
</script>
<style lang='scss'>
.editor-modal-drawio {
position: fixed !important;
top: 0;
left: 0;
z-index: 10;
width: 100%;
height: 100vh;
background-color: rgba(255,255,255, 1) !important;
overflow: hidden;
> iframe {
width: 100%;
height: 100vh;
border: 0;
padding: 0;
background-color: #FFF;
}
}
</style>
<template lang='pug'>
v-dialog(v-model='isShown', persistent, max-width='700', no-click-animation)
v-btn(fab, fixed, bottom, right, color='grey darken-3', dark, @click='goBack', style='width: 50px;'): v-icon mdi-undo-variant
v-card.radius-7(color='blue darken-3', dark)
v-card-text.text-center.py-4
.subtitle-1.white--text {{$t('editor:select.title')}}
v-container(grid-list-lg, fluid)
v-layout(row, wrap, justify-center)
v-flex(xs4)
v-card.radius-7.animated.fadeInUp.wait-p2s(
hover
light
ripple
)
v-card-text.text-center(@click='selectEditor("code")')
img(src='/_assets-legacy/svg/editor-icon-code.svg', alt='Code', style='width: 36px;')
.body-2.primary--text.mt-2 Code
.caption.grey--text Raw HTML
v-flex(xs4)
v-card.radius-7.animated.fadeInUp.wait-p1s(
hover
light
ripple
)
v-card-text.text-center(@click='selectEditor("markdown")')
img(src='/_assets-legacy/svg/editor-icon-markdown.svg', alt='Markdown', style='width: 36px;')
.body-2.primary--text.mt-2 Markdown
.caption.grey--text Plain Text Formatting
v-flex(xs4)
v-card.radius-7.animated.fadeInUp.wait-p3s(
hover
light
ripple
)
v-card-text.text-center(@click='selectEditor("ckeditor")')
img(src='/_assets-legacy/svg/editor-icon-ckeditor.svg', alt='Visual Editor', style='width: 36px;')
.body-2.mt-2.primary--text Visual Editor
.caption.grey--text Rich-text WYSIWYG
</template>
<script>
import _ from 'lodash'
import { sync, get } from 'vuex-pathify'
export default {
props: {
value: {
type: Boolean,
default: false
}
},
data() {
return {
templateDialogIsShown: false
}
},
computed: {
isShown: {
get() { return this.value },
set(val) { this.$emit('input', val) }
},
currentEditor: sync('editor/editor'),
locale: get('page/locale'),
path: get('page/path')
},
methods: {
selectEditor (name) {
this.currentEditor = `editor${_.startCase(name)}`
this.isShown = false
},
goBack () {
window.history.go(-1)
},
fromTemplate () {
this.templateDialogIsShown = true
},
fromTemplateHandle ({ id }) {
this.templateDialogIsShown = false
this.isShown = false
this.$nextTick(() => {
window.location.assign(`/e/${this.locale}/${this.path}?from=${id}`)
})
}
}
}
</script>
<style lang='scss'>
</style>
<template lang='pug'>
v-card.editor-modal-media.animated.fadeInLeft(flat, tile, :class='`is-editor-` + editorKey')
v-container.pa-3(grid-list-lg, fluid)
v-layout(row, wrap)
v-flex(xs12, lg9)
v-card.radius-7.animated.fadeInLeft.wait-p1s(:light='!$vuetify.theme.dark', :dark='$vuetify.theme.dark')
v-card-text
.d-flex
v-toolbar.radius-7(:color='$vuetify.theme.dark ? `teal` : `teal lighten-5`', dense, flat, height='44')
.body-2(:class='$vuetify.theme.dark ? `white--text` : `teal--text`') {{$t('editor:assets.title')}}
v-spacer
v-btn(text, icon, @click='refresh')
v-icon(:color='$vuetify.theme.dark ? `white` : `teal`') mdi-refresh
v-dialog(v-model='newFolderDialog', max-width='550')
template(v-slot:activator='{ on }')
v-btn.ml-3.my-0.mr-0.radius-7(outlined, large, color='teal', :icon='$vuetify.breakpoint.xsOnly', v-on='on')
v-icon(:left='$vuetify.breakpoint.mdAndUp') mdi-plus
span.hidden-sm-and-down(:class='$vuetify.theme.dark ? `teal--text text--lighten-3` : ``') {{$t('editor:assets.newFolder')}}
v-card
.dialog-header.is-short.subtitle-1 {{$t('editor:assets.newFolder')}}
v-card-text.pt-5
v-text-field.md2(
outlined
prepend-icon='mdi-folder-outline'
v-model='newFolderName'
:label='$t(`editor:assets.folderName`)'
counter='255'
@keyup.enter='createFolder'
@keyup.esc='newFolderDialog = false'
ref='folderNameIpt'
)
i18next.caption.grey--text.text--darken-1.pl-5(path='editor:assets.folderNameNamingRules', tag='div')
a(place='namingRules', href='https://docs-beta.requarks.io/guide/assets#naming-restrictions', target='_blank') {{$t('editor:assets.folderNameNamingRulesLink')}}
v-card-chin
v-spacer
v-btn(text, @click='newFolderDialog = false') {{$t('common:actions.cancel')}}
v-btn.px-3(color='primary', @click='createFolder', :disabled='!isFolderNameValid', :loading='newFolderLoading') {{$t('common:actions.create')}}
v-toolbar(flat, dense, :color='$vuetify.theme.dark ? `grey darken-3` : `white`')
template(v-if='folderTree.length > 0')
.body-2
span.mr-1 /
template(v-for='folder of folderTree')
span(:key='folder.id') {{folder.name}}
span.mx-1 /
.body-2(v-else) / #[em root]
template(v-if='folders.length > 0 || currentFolderId > 0')
v-btn.is-icon.mx-1(:color='$vuetify.theme.dark ? `grey lighten-1` : `grey darken-2`', outlined, :dark='currentFolderId > 0', @click='upFolder()', :disabled='currentFolderId === 0')
v-icon mdi-folder-upload
v-btn.btn-normalcase.mx-1(v-for='folder of folders', :key='folder.id', depressed, color='grey darken-2', dark, @click='downFolder(folder)')
v-icon(left) mdi-folder
span.caption(style='text-transform: none;') {{ folder.name }}
v-divider.mt-2
v-data-table(
:items='assets'
:headers='headers'
:page.sync='pagination'
:items-per-page='15'
:loading='loading'
must-sort,
sort-by='ID',
sort-desc,
hide-default-footer,
dense
)
template(slot='item', slot-scope='props')
tr.is-clickable(
@click.left='currentFileId = props.item.id'
@click.right.prevent=''
:class='currentFileId === props.item.id ? ($vuetify.theme.dark ? `grey darken-3-d5` : `teal lighten-5`) : ``'
)
td.caption(v-if='$vuetify.breakpoint.smAndUp') {{ props.item.id }}
td
.body-2: strong(:class='currentFileId === props.item.id ? `teal--text` : ``') {{ props.item.filename }}
.caption.grey--text {{ props.item.description }}
td.text-xs-center(v-if='$vuetify.breakpoint.lgAndUp')
v-chip.ma-0(x-small, :color='$vuetify.theme.dark ? `grey darken-4` : `grey lighten-4`')
.overline {{props.item.ext.toUpperCase().substring(1)}}
td.caption(v-if='$vuetify.breakpoint.mdAndUp') {{ props.item.fileSize | prettyBytes }}
td.caption(v-if='$vuetify.breakpoint.mdAndUp') {{ props.item.createdAt | moment('from') }}
td(v-if='$vuetify.breakpoint.smAndUp')
v-menu(offset-x, min-width='200')
template(v-slot:activator='{ on }')
v-btn(icon, v-on='on', tile, small, @click.left='currentFileId = props.item.id')
v-icon(color='grey darken-2') mdi-dots-horizontal
v-list(nav, style='border-top: 5px solid #444;')
v-list-item(@click='', disabled)
v-list-item-avatar(size='24')
v-icon(color='teal') mdi-text-short
v-list-item-content {{$t('common:actions.properties')}}
template(v-if='props.item.kind === `IMAGE`')
v-list-item(@click='previewDialog = true', disabled)
v-list-item-avatar(size='24')
v-icon(color='green') mdi-image-search-outline
v-list-item-content {{$t('common:actions.preview')}}
v-list-item(@click='', disabled)
v-list-item-avatar(size='24')
v-icon(color='indigo') mdi-crop-rotate
v-list-item-content {{$t('common:actions.edit')}}
v-list-item(@click='', disabled)
v-list-item-avatar(size='24')
v-icon(color='purple') mdi-flash-circle
v-list-item-content {{$t('common:actions.optimize')}}
v-list-item(@click='openRenameDialog')
v-list-item-avatar(size='24')
v-icon(color='orange') mdi-keyboard-outline
v-list-item-content {{$t('common:actions.rename')}}
v-list-item(@click='', disabled)
v-list-item-avatar(size='24')
v-icon(color='blue') mdi-file-move
v-list-item-content {{$t('common:actions.move')}}
v-list-item(@click='deleteDialog = true')
v-list-item-avatar(size='24')
v-icon(color='red') mdi-file-hidden
v-list-item-content {{$t('common:actions.delete')}}
template(slot='no-data')
v-alert.mt-3.radius-7(icon='mdi-folder-open-outline', :value='true', outlined, color='teal') {{$t('editor:assets.folderEmpty')}}
.text-xs-center.py-2(v-if='this.pageTotal > 1')
v-pagination(v-model='pagination', :length='pageTotal', color='teal')
.d-flex.mt-3
v-toolbar.radius-7(flat, :color='$vuetify.theme.dark ? `grey darken-2` : `grey lighten-4`', dense, height='44')
.body-2(:class='$vuetify.theme.dark ? `grey--text text--lighten-1` : `grey--text text--darken-1`') {{$t('editor:assets.fileCount', { count: assets.length })}}
v-btn.ml-3.mr-0.my-0.radius-7(color='red darken-2', large, @click='cancel', dark)
v-icon(left) mdi-close
span {{$t('common:actions.cancel')}}
v-btn.ml-3.mr-0.my-0.radius-7(color='teal', large, @click='insert', :disabled='!currentFileId', :dark='currentFileId !== null')
v-icon(left) mdi-playlist-plus
span {{$t('common:actions.insert')}}
v-flex(xs12, lg3)
v-card.radius-7.animated.fadeInRight.wait-p3s(:light='!$vuetify.theme.dark', :dark='$vuetify.theme.dark')
v-card-text
.d-flex
v-toolbar.radius-7(:color='$vuetify.theme.dark ? `teal` : `teal lighten-5`', dense, flat, height='44')
v-icon.mr-3(:color='$vuetify.theme.dark ? `white` : `teal`') mdi-cloud-upload
.body-2(:class='$vuetify.theme.dark ? `white--text` : `teal--text`') {{$t('editor:assets.uploadAssets')}}
v-btn.my-0.ml-3.mr-0.radius-7(outlined, large, color='teal', @click='browse', v-if='$vuetify.breakpoint.mdAndUp')
v-icon(left) mdi-plus-box-multiple
span(:class='$vuetify.theme.dark ? `teal--text text--lighten-3` : ``') {{$t('common:actions.browse')}}
file-pond.mt-3(
name='mediaUpload'
ref='pond'
:label-idle='$t(`editor:assets.uploadAssetsDropZone`)'
allow-multiple='true'
:files='files'
max-files='10'
:server='filePondServerOpts'
:instant-upload='false'
:allow-revert='false'
@processfile='onFileProcessed'
)
v-divider
v-card-actions.pa-3
.caption.grey--text.text-darken-2 Max 10 files, 5 MB each
v-spacer
v-btn.px-4(color='teal', dark, @click='upload') {{$t('common:actions.upload')}}
v-card.mt-3.radius-7.animated.fadeInRight.wait-p4s(:light='!$vuetify.theme.dark', :dark='$vuetify.theme.dark')
v-card-text.pb-0
v-toolbar.radius-7(:color='$vuetify.theme.dark ? `teal` : `teal lighten-5`', dense, flat)
v-icon.mr-3(:color='$vuetify.theme.dark ? `white` : `teal`') mdi-cloud-download
.body-2(:class='$vuetify.theme.dark ? `white--text` : `teal--text`') {{$t('editor:assets.fetchImage')}}
v-spacer
v-chip(label, color='white', small).teal--text coming soon
v-text-field.mt-3(
v-model='remoteImageUrl'
outlined
color='teal'
single-line
placeholder='https://example.com/image.jpg'
)
v-divider
v-card-actions.pa-3
.caption.grey--text.text-darken-2 Max 5 MB
v-spacer
v-btn.px-4(color='teal', disabled) {{$t('common:actions.fetch')}}
v-card.mt-3.radius-7.animated.fadeInRight.wait-p4s(:light='!$vuetify.theme.dark', :dark='$vuetify.theme.dark')
v-card-text.pb-0
v-toolbar.radius-7(:color='$vuetify.theme.dark ? `teal` : `teal lighten-5`', dense, flat)
v-icon.mr-3(:color='$vuetify.theme.dark ? `white` : `teal`') mdi-format-align-top
.body-2(:class='$vuetify.theme.dark ? `white--text` : `teal--text`') {{$t('editor:assets.imageAlign')}}
v-select.mt-3(
v-model='imageAlignment'
:items='imageAlignments'
outlined
single-line
color='teal'
placeholder='None'
)
//- RENAME DIALOG
v-dialog(v-model='renameDialog', max-width='550', persistent)
v-card
.dialog-header.is-short.is-orange
v-icon.mr-2(color='white') mdi-keyboard
span {{$t('editor:assets.renameAsset')}}
v-card-text.pt-5
.body-2 {{$t('editor:assets.renameAssetSubtitle')}}
v-text-field(
outlined
single-line
:counter='255'
v-model='renameAssetName'
@keyup.enter='renameAsset'
:disabled='renameAssetLoading'
)
v-card-chin
v-spacer
v-btn(text, @click='renameDialog = false', :disabled='renameAssetLoading') {{$t('common:actions.cancel')}}
v-btn.px-3(color='orange darken-3', @click='renameAsset', :loading='renameAssetLoading').white--text {{$t('common:actions.rename')}}
//- DELETE DIALOG
v-dialog(v-model='deleteDialog', max-width='550', persistent)
v-card
.dialog-header.is-short.is-red
v-icon.mr-2(color='white') mdi-trash-can-outline
span {{$t('editor:assets.deleteAsset')}}
v-card-text.pt-5
.body-2 {{$t('editor:assets.deleteAssetConfirm')}}
.body-2.red--text.text--darken-2 {{currentAsset.filename}}?
.caption.mt-3 {{$t('editor:assets.deleteAssetWarn')}}
v-card-chin
v-spacer
v-btn(text, @click='deleteDialog = false', :disabled='deleteAssetLoading') {{$t('common:actions.cancel')}}
v-btn.px-3(color='red darken-2', @click='deleteAsset', :loading='deleteAssetLoading').white--text {{$t('common:actions.delete')}}
</template>
<script>
import _ from 'lodash'
import { get, sync } from 'vuex-pathify'
import Cookies from 'js-cookie'
import vueFilePond from 'vue-filepond'
import 'filepond/dist/filepond.min.css'
import listAssetQuery from 'gql/editor/editor-media-query-list.gql'
import listFolderAssetQuery from 'gql/editor/editor-media-query-folder-list.gql'
import createAssetFolderMutation from 'gql/editor/editor-media-mutation-folder-create.gql'
import renameAssetMutation from 'gql/editor/editor-media-mutation-asset-rename.gql'
import deleteAssetMutation from 'gql/editor/editor-media-mutation-asset-delete.gql'
const FilePond = vueFilePond()
const localeSegmentRegex = /^[A-Z]{2}(-[A-Z]{2})?$/i
const disallowedFolderChars = /[A-Z()=.!@#$%?&*+`~<>,;:\\/[\]¬{| ]/
export default {
components: {
FilePond
},
props: {
value: {
type: Boolean,
default: false
}
},
data() {
return {
folders: [],
files: [],
assets: [],
pagination: 1,
remoteImageUrl: '',
imageAlignments: [
{ text: 'None', value: '' },
{ text: 'Left', value: 'left' },
{ text: 'Centered', value: 'center' },
{ text: 'Right', value: 'right' },
{ text: 'Absolute Top Right', value: 'abstopright' }
],
imageAlignment: '',
loading: false,
newFolderDialog: false,
newFolderName: '',
newFolderLoading: false,
previewDialog: false,
renameDialog: false,
renameAssetName: '',
renameAssetLoading: false,
deleteDialog: false,
deleteAssetLoading: false
}
},
computed: {
isShown: {
get() { return this.value },
set(val) { this.$emit('input', val) }
},
editorKey: get('editor/editorKey'),
activeModal: sync('editor/activeModal'),
folderTree: get('editor/media@folderTree'),
currentFolderId: sync('editor/media@currentFolderId'),
currentFileId: sync('editor/media@currentFileId'),
pageTotal () {
if (!this.assets) {
return 0
}
return Math.ceil(this.assets.length / 15)
},
headers() {
return _.compact([
this.$vuetify.breakpoint.smAndUp && { text: this.$t('editor:assets.headerId'), value: 'id', width: 80 },
{ text: this.$t('editor:assets.headerFilename'), value: 'filename' },
this.$vuetify.breakpoint.lgAndUp && { text: this.$t('editor:assets.headerType'), value: 'ext', width: 90 },
this.$vuetify.breakpoint.mdAndUp && { text: this.$t('editor:assets.headerFileSize'), value: 'fileSize', width: 110 },
this.$vuetify.breakpoint.mdAndUp && { text: this.$t('editor:assets.headerAdded'), value: 'createdAt', width: 175 },
this.$vuetify.breakpoint.smAndUp && { text: this.$t('editor:assets.headerActions'), value: '', width: 80, sortable: false, align: 'right' }
])
},
isFolderNameValid() {
return this.newFolderName.length > 1 && !localeSegmentRegex.test(this.newFolderName) && !disallowedFolderChars.test(this.newFolderName)
},
currentAsset () {
return _.find(this.assets, ['id', this.currentFileId]) || {}
},
filePondServerOpts () {
const jwtToken = Cookies.get('jwt')
return {
process: {
url: '/u',
headers: {
'Authorization': `Bearer ${jwtToken}`
}
}
}
}
},
watch: {
newFolderDialog(newValue, oldValue) {
if (newValue) {
this.$nextTick(() => {
this.$refs.folderNameIpt.focus()
})
}
}
},
filters: {
prettyBytes(num) {
if (typeof num !== 'number' || isNaN(num)) {
throw new TypeError('Expected a number')
}
let exponent
let unit
let neg = num < 0
let units = ['B', 'kB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB']
if (neg) {
num = -num
}
if (num < 1) {
return (neg ? '-' : '') + num + ' B'
}
exponent = Math.min(Math.floor(Math.log(num) / Math.log(1000)), units.length - 1)
num = (num / Math.pow(1000, exponent)).toFixed(2) * 1
unit = units[exponent]
return (neg ? '-' : '') + num + ' ' + unit
}
},
methods: {
async refresh() {
await this.$apollo.queries.assets.refetch()
this.$store.commit('showNotification', {
message: this.$t('editor:assets.refreshSuccess'),
style: 'success',
icon: 'check'
})
},
insert () {
const asset = _.find(this.assets, ['id', this.currentFileId])
const assetPath = this.folderTree.map(f => f.slug).join('/')
this.$root.$emit('editorInsert', {
kind: asset.kind,
path: this.currentFolderId > 0 ? `/${assetPath}/${asset.filename}` : `/${asset.filename}`,
text: asset.filename,
align: this.imageAlignment
})
this.activeModal = ''
},
browse () {
this.$refs.pond.browse()
},
async upload () {
const files = this.$refs.pond.getFiles()
if (files.length < 1) {
return this.$store.commit('showNotification', {
message: this.$t('editor:assets.noUploadError'),
style: 'warning',
icon: 'warning'
})
}
for (let file of files) {
file.setMetadata({
folderId: this.currentFolderId
})
}
await this.$refs.pond.processFiles()
},
async onFileProcessed (err, file) {
if (err) {
return this.$store.commit('showNotification', {
message: this.$t('editor:assets.uploadFailed'),
style: 'error',
icon: 'error'
})
}
_.delay(() => {
this.$refs.pond.removeFile(file.id)
}, 5000)
await this.$apollo.queries.assets.refetch()
},
downFolder(folder) {
this.$store.commit('editor/pushMediaFolderTree', folder)
this.currentFolderId = folder.id
this.currentFileId = null
},
upFolder() {
this.$store.commit('editor/popMediaFolderTree')
const parentFolder = _.last(this.folderTree)
this.currentFolderId = parentFolder ? parentFolder.id : 0
this.currentFileId = null
},
async createFolder() {
this.$store.commit(`loadingStart`, 'editor-media-createfolder')
this.newFolderLoading = true
try {
const resp = await this.$apollo.mutate({
mutation: createAssetFolderMutation,
variables: {
parentFolderId: this.currentFolderId,
slug: this.newFolderName
}
})
if (_.get(resp, 'data.assets.createFolder.responseResult.succeeded', false)) {
await this.$apollo.queries.folders.refetch()
this.$store.commit('showNotification', {
message: this.$t('editor:assets.folderCreateSuccess'),
style: 'success',
icon: 'check'
})
this.newFolderDialog = false
this.newFolderName = ''
} else {
this.$store.commit('pushGraphError', new Error(_.get(resp, 'data.assets.createFolder.responseResult.message')))
}
} catch (err) {
this.$store.commit('pushGraphError', err)
}
this.newFolderLoading = false
this.$store.commit(`loadingStop`, 'editor-media-createfolder')
},
openRenameDialog() {
this.renameAssetName = this.currentAsset.filename
this.renameDialog = true
},
async renameAsset() {
this.$store.commit(`loadingStart`, 'editor-media-renameasset')
this.renameAssetLoading = true
try {
const resp = await this.$apollo.mutate({
mutation: renameAssetMutation,
variables: {
id: this.currentFileId,
filename: this.renameAssetName
}
})
if (_.get(resp, 'data.assets.renameAsset.responseResult.succeeded', false)) {
await this.$apollo.queries.assets.refetch()
this.$store.commit('showNotification', {
message: this.$t('editor:assets.renameSuccess'),
style: 'success',
icon: 'check'
})
this.renameDialog = false
this.renameAssetName = ''
} else {
this.$store.commit('pushGraphError', new Error(_.get(resp, 'data.assets.renameAsset.responseResult.message')))
}
} catch (err) {
this.$store.commit('pushGraphError', err)
}
this.renameAssetLoading = false
this.$store.commit(`loadingStop`, 'editor-media-renameasset')
},
async deleteAsset() {
this.$store.commit(`loadingStart`, 'editor-media-deleteasset')
this.deleteAssetLoading = true
try {
const resp = await this.$apollo.mutate({
mutation: deleteAssetMutation,
variables: {
id: this.currentFileId
}
})
if (_.get(resp, 'data.assets.deleteAsset.responseResult.succeeded', false)) {
this.currentFileId = null
await this.$apollo.queries.assets.refetch()
this.$store.commit('showNotification', {
message: this.$t('editor:assets.deleteSuccess'),
style: 'success',
icon: 'check'
})
this.deleteDialog = false
} else {
this.$store.commit('pushGraphError', new Error(_.get(resp, 'data.assets.deleteAsset.responseResult.message')))
}
} catch (err) {
this.$store.commit('pushGraphError', err)
}
this.deleteAssetLoading = false
this.$store.commit(`loadingStop`, 'editor-media-deleteasset')
},
cancel () {
this.activeModal = ''
}
},
apollo: {
folders: {
query: listFolderAssetQuery,
variables() {
return {
parentFolderId: this.currentFolderId
}
},
fetchPolicy: 'network-only',
update: (data) => data.assets.folders,
watchLoading (isLoading) {
this.$store.commit(`loading${isLoading ? 'Start' : 'Stop'}`, 'editor-media-folders-list-refresh')
}
},
assets: {
query: listAssetQuery,
variables() {
return {
folderId: this.currentFolderId,
kind: 'ALL'
}
},
throttle: 1000,
fetchPolicy: 'network-only',
update: (data) => data.assets.list,
watchLoading (isLoading) {
this.loading = isLoading
this.$store.commit(`loading${isLoading ? 'Start' : 'Stop'}`, 'editor-media-list-refresh')
}
}
}
}
</script>
<style lang='scss'>
.editor-modal-media {
position: fixed !important;
top: 112px;
left: 64px;
z-index: 10;
width: calc(100vw - 64px - 17px);
height: calc(100vh - 112px - 24px);
background-color: rgba(darken(mc('grey', '900'), 3%), .9) !important;
overflow: auto;
@include until($tablet) {
left: 40px;
width: calc(100vw - 40px);
height: calc(100vh - 112px - 24px);
}
&.is-editor-ckeditor {
top: 64px;
left: 0;
width: 100%;
height: calc(100vh - 64px - 26px);
@include until($tablet) {
top: 56px;
left: 0;
width: 100%;
height: calc(100vh - 56px - 24px);
}
}
&.is-editor-code {
top: 64px;
height: calc(100vh - 64px - 26px);
@include until($tablet) {
top: 56px;
height: calc(100vh - 56px - 24px);
}
}
&.is-editor-common {
top: 64px;
left: 0;
width: 100%;
height: calc(100vh - 64px);
@include until($tablet) {
top: 56px;
left: 0;
width: 100%;
height: calc(100vh - 56px);
}
}
.filepond--root {
margin-bottom: 0;
}
.filepond--drop-label {
cursor: pointer;
> label {
cursor: pointer;
}
}
.filepond--file-action-button.filepond--action-process-item {
display: none;
}
.v-btn--icon {
padding: 0 20px;
}
}
</style>
<template lang='pug'>
v-dialog(
v-model='isShown'
persistent
width='1000'
:fullscreen='$vuetify.breakpoint.smAndDown'
)
.dialog-header
v-icon(color='white') mdi-tag-text-outline
.subtitle-1.white--text.ml-3 {{$t('editor:props.pageProperties')}}
v-spacer
v-btn.mx-0(
outlined
dark
@click.native='close'
)
v-icon(left) mdi-check
span {{ $t('common:actions.ok') }}
v-card(tile)
v-tabs(color='white', background-color='blue darken-1', dark, centered, v-model='currentTab')
v-tab {{$t('editor:props.info')}}
v-tab {{$t('editor:props.scheduling')}}
v-tab(:disabled='!hasScriptPermission') {{$t('editor:props.scripts')}}
v-tab(disabled) {{$t('editor:props.social')}}
v-tab(:disabled='!hasStylePermission') {{$t('editor:props.styles')}}
v-tab-item(transition='fade-transition', reverse-transition='fade-transition')
v-card-text.pt-5
.overline.pb-5 {{$t('editor:props.pageInfo')}}
v-text-field(
ref='iptTitle'
outlined
:label='$t(`editor:props.title`)'
counter='255'
v-model='title'
)
v-text-field(
outlined
:label='$t(`editor:props.shortDescription`)'
counter='255'
v-model='description'
persistent-hint
:hint='$t(`editor:props.shortDescriptionHint`)'
)
v-divider
v-card-text.grey.pt-5(:class='$vuetify.theme.dark ? `darken-3-d3` : `lighten-5`')
.overline.pb-5 {{$t('editor:props.path')}}
v-container.pa-0(fluid, grid-list-lg)
v-layout(row, wrap)
v-flex(xs12, md2)
v-select(
outlined
:label='$t(`editor:props.locale`)'
suffix='/'
:items='namespaces'
v-model='locale'
hide-details
)
v-flex(xs12, md10)
v-text-field(
outlined
:label='$t(`editor:props.path`)'
append-icon='mdi-folder-search'
v-model='path'
:hint='$t(`editor:props.pathHint`)'
persistent-hint
@click:append='showPathSelector'
:rules='[rules.required, rules.path]'
)
v-divider
v-card-text.grey.pt-5(:class='$vuetify.theme.dark ? `darken-3-d5` : `lighten-4`')
.overline.pb-5 {{$t('editor:props.categorization')}}
v-chip-group.radius-5.mb-5(column, v-if='tags && tags.length > 0')
v-chip(
v-for='tag of tags'
:key='`tag-` + tag'
close
label
color='teal'
text-color='teal lighten-5'
@click:close='removeTag(tag)'
) {{tag}}
v-combobox(
:label='$t(`editor:props.tags`)'
outlined
v-model='newTag'
:hint='$t(`editor:props.tagsHint`)'
:items='newTagSuggestions'
:loading='$apollo.queries.newTagSuggestions.loading'
persistent-hint
hide-no-data
:search-input.sync='newTagSearch'
)
v-tab-item(transition='fade-transition', reverse-transition='fade-transition')
v-card-text
.overline {{$t('editor:props.publishState')}}
v-switch(
:label='$t(`editor:props.publishToggle`)'
v-model='isPublished'
color='primary'
:hint='$t(`editor:props.publishToggleHint`)'
persistent-hint
inset
)
v-divider
v-card-text.grey.pt-5(:class='$vuetify.theme.dark ? `darken-3-d3` : `lighten-5`')
v-container.pa-0(fluid, grid-list-lg)
v-row
v-col(cols='6')
v-dialog(
ref='menuPublishStart'
:close-on-content-click='false'
v-model='isPublishStartShown'
:return-value.sync='publishStartDate'
width='460px'
:disabled='!isPublished'
)
template(v-slot:activator='{ on }')
v-text-field(
v-on='on'
:label='$t(`editor:props.publishStart`)'
v-model='publishStartDate'
prepend-icon='mdi-calendar-check'
readonly
outlined
clearable
:hint='$t(`editor:props.publishStartHint`)'
persistent-hint
:disabled='!isPublished'
)
v-date-picker(
v-model='publishStartDate'
:min='(new Date()).toISOString().substring(0, 10)'
color='primary'
reactive
scrollable
landscape
)
v-spacer
v-btn(
text
color='primary'
@click='isPublishStartShown = false'
) {{$t('common:actions.cancel')}}
v-btn(
text
color='primary'
@click='$refs.menuPublishStart.save(publishStartDate)'
) {{$t('common:actions.ok')}}
v-col(cols='6')
v-dialog(
ref='menuPublishEnd'
:close-on-content-click='false'
v-model='isPublishEndShown'
:return-value.sync='publishEndDate'
width='460px'
:disabled='!isPublished'
)
template(v-slot:activator='{ on }')
v-text-field(
v-on='on'
:label='$t(`editor:props.publishEnd`)'
v-model='publishEndDate'
prepend-icon='mdi-calendar-remove'
readonly
outlined
clearable
:hint='$t(`editor:props.publishEndHint`)'
persistent-hint
:disabled='!isPublished'
)
v-date-picker(
v-model='publishEndDate'
:min='(new Date()).toISOString().substring(0, 10)'
color='primary'
reactive
scrollable
landscape
)
v-spacer
v-btn(
text
color='primary'
@click='isPublishEndShown = false'
) {{$t('common:actions.cancel')}}
v-btn(
text
color='primary'
@click='$refs.menuPublishEnd.save(publishEndDate)'
) {{$t('common:actions.ok')}}
v-tab-item(:transition='false', :reverse-transition='false')
.editor-props-codeeditor-title
.overline {{$t('editor:props.html')}}
.editor-props-codeeditor
textarea(ref='codejs')
.editor-props-codeeditor-hint
.caption {{$t('editor:props.htmlHint')}}
v-tab-item(transition='fade-transition', reverse-transition='fade-transition')
v-card-text
.overline {{$t('editor:props.socialFeatures')}}
v-switch(
:label='$t(`editor:props.allowComments`)'
v-model='isPublished'
color='primary'
:hint='$t(`editor:props.allowCommentsHint`)'
persistent-hint
inset
)
v-switch(
:label='$t(`editor:props.allowRatings`)'
v-model='isPublished'
color='primary'
:hint='$t(`editor:props.allowRatingsHint`)'
persistent-hint
disabled
inset
)
v-switch(
:label='$t(`editor:props.displayAuthor`)'
v-model='isPublished'
color='primary'
:hint='$t(`editor:props.displayAuthorHint`)'
persistent-hint
inset
)
v-switch(
:label='$t(`editor:props.displaySharingBar`)'
v-model='isPublished'
color='primary'
:hint='$t(`editor:props.displaySharingBarHint`)'
persistent-hint
inset
)
v-tab-item(:transition='false', :reverse-transition='false')
.editor-props-codeeditor-title
.overline {{$t('editor:props.css')}}
.editor-props-codeeditor
textarea(ref='codecss')
.editor-props-codeeditor-hint
.caption {{$t('editor:props.cssHint')}}
page-selector(:mode='pageSelectorMode', v-model='pageSelectorShown', :path='path', :locale='locale', :open-handler='setPath')
</template>
<script>
import _ from 'lodash'
import { sync, get } from 'vuex-pathify'
import gql from 'graphql-tag'
import CodeMirror from 'codemirror'
import 'codemirror/lib/codemirror.css'
import 'codemirror/mode/htmlmixed/htmlmixed.js'
import 'codemirror/mode/css/css.js'
/* global siteLangs, siteConfig */
const filenamePattern = /^(?![\#\/\.\$\^\=\*\;\:\&\?\(\)\[\]\{\}\"\'\>\<\,\@\!\%\`\~\s])(?!.*[\#\/\.\$\^\=\*\;\:\&\?\(\)\[\]\{\}\"\'\>\<\,\@\!\%\`\~\s]$)[^\#\.\$\^\=\*\;\:\&\?\(\)\[\]\{\}\"\'\>\<\,\@\!\%\`\~\s]*$/
export default {
props: {
value: {
type: Boolean,
default: false
}
},
data () {
return {
isPublishStartShown: false,
isPublishEndShown: false,
pageSelectorShown: false,
namespaces: siteLangs.length ? siteLangs.map(ns => ns.code) : [siteConfig.lang],
newTag: '',
newTagSuggestions: [],
newTagSearch: '',
currentTab: 0,
cm: null,
rules: {
required: value => !!value || 'This field is required.',
path: value => {
return filenamePattern.test(value) || 'Invalid path. Please ensure it does not contain special characters, or begin/end in a slash or hashtag string.'
}
}
}
},
computed: {
isShown: {
get() { return this.value },
set(val) { this.$emit('input', val) }
},
mode: get('editor/mode'),
title: sync('page/title'),
description: sync('page/description'),
locale: sync('page/locale'),
tags: sync('page/tags'),
path: sync('page/path'),
isPublished: sync('page/isPublished'),
publishStartDate: sync('page/publishStartDate'),
publishEndDate: sync('page/publishEndDate'),
scriptJs: sync('page/scriptJs'),
scriptCss: sync('page/scriptCss'),
hasScriptPermission: get('page/effectivePermissions@pages.script'),
hasStylePermission: get('page/effectivePermissions@pages.style'),
pageSelectorMode () {
return (this.mode === 'create') ? 'create' : 'move'
}
},
watch: {
value (newValue, oldValue) {
if (newValue) {
_.delay(() => {
this.$refs.iptTitle.focus()
}, 500)
}
},
newTag (newValue, oldValue) {
const tagClean = _.trim(newValue || '').toLowerCase()
if (tagClean && tagClean.length > 0) {
if (!_.includes(this.tags, tagClean)) {
this.tags = [...this.tags, tagClean]
}
this.$nextTick(() => {
this.newTag = null
})
}
},
currentTab (newValue, oldValue) {
if (this.cm) {
this.cm.toTextArea()
}
if (newValue === 2) {
this.$nextTick(() => {
setTimeout(() => {
this.loadEditor(this.$refs.codejs, 'html')
}, 100)
})
} else if (newValue === 4) {
this.$nextTick(() => {
setTimeout(() => {
this.loadEditor(this.$refs.codecss, 'css')
}, 100)
})
}
}
},
methods: {
removeTag (tag) {
this.tags = _.without(this.tags, tag)
},
close() {
this.isShown = false
},
showPathSelector() {
this.pageSelectorShown = true
},
setPath({ path, locale }) {
this.locale = locale
this.path = path
},
loadEditor(ref, mode) {
this.cm = CodeMirror.fromTextArea(ref, {
tabSize: 2,
mode: `text/${mode}`,
theme: 'wikijs-dark',
lineNumbers: true,
lineWrapping: true,
line: true,
styleActiveLine: true,
viewportMargin: 50,
inputStyle: 'contenteditable',
direction: 'ltr'
})
switch (mode) {
case 'html':
this.cm.setValue(this.scriptJs)
this.cm.on('change', c => {
this.scriptJs = c.getValue()
})
break
case 'css':
this.cm.setValue(this.scriptCss)
this.cm.on('change', c => {
this.scriptCss = c.getValue()
})
break
default:
console.warn('Invalid Editor Mode')
break
}
this.cm.setSize(null, '500px')
this.$nextTick(() => {
this.cm.refresh()
this.cm.focus()
})
}
},
apollo: {
newTagSuggestions: {
query: gql`
query ($query: String!) {
pages {
searchTags (query: $query)
}
}
`,
variables () {
return {
query: this.newTagSearch
}
},
fetchPolicy: 'cache-first',
update: (data) => _.get(data, 'pages.searchTags', []),
skip () {
return !this.value || _.isEmpty(this.newTagSearch)
},
throttle: 500
}
}
}
</script>
<style lang='scss'>
.editor-props-codeeditor {
background-color: mc('grey', '900');
min-height: 500px;
> textarea {
visibility: hidden;
}
&-title {
background-color: mc('grey', '900');
border-bottom: 1px solid lighten(mc('grey', '900'), 10%);
color: #FFF;
padding: 10px;
}
&-hint {
background-color: mc('grey', '900');
border-top: 1px solid lighten(mc('grey', '900'), 5%);
color: mc('grey', '500');
padding: 5px 10px;
}
}
</style>
<template lang="pug">
v-dialog(v-model='isShown', max-width='550')
v-card
.dialog-header.is-short.is-red
v-icon.mr-2(color='white') mdi-alert
span {{$t('editor:unsaved.title')}}
v-card-text.pt-4
.body-2 {{$t('editor:unsaved.body')}}
v-card-chin
v-spacer
v-btn(text, @click='isShown = false') {{$t('common:actions.cancel')}}
v-btn.px-4(color='red', @click='discard', dark) {{$t('common:actions.discardChanges')}}
</template>
<script>
export default {
props: {
value: {
type: Boolean,
default: false
}
},
data() {
return { }
},
computed: {
isShown: {
get() { return this.value },
set(val) { this.$emit('input', val) }
}
},
methods: {
async discard() {
this.isShown = false
this.$emit('discard', true)
}
}
}
</script>
<template lang='pug'>
.editor-redirect
.editor-redirect-main
.editor-redirect-editor
v-container.px-2.pt-1(fluid)
v-row(dense)
v-col(
cols='12'
lg='8'
offset-lg='2'
xl='6'
offset-xl='3'
)
v-card.pt-2
v-card-text
.pb-1
.subtitle-2.primary--text When a user reaches this page
.caption.grey--text.text--darken-1 and matches one of these rules...
v-timeline(dense)
v-slide-x-reverse-transition(group, hide-on-leave)
v-timeline-item(
key='cond-add-new'
hide-dot
)
v-btn(
color='primary'
@click=''
)
v-icon(left) mdi-plus
span Add Conditional Rule
v-timeline-item(
key='cond-none'
small
color='grey'
)
v-card.grey.lighten-5(flat)
v-card-text
.body-2: strong No conditional rule
em Add conditional rules to direct users to a different page based on their group.
v-timeline-item(
key='cond-rule-1'
small
color='primary'
)
v-card.blue-grey.lighten-5(flat)
v-card-text
.d-flex.align-center
.body-2: strong User is a member of any of these groups:
v-select.ml-3(
color='primary'
:items='groups'
item-text='name'
item-value='id'
multiple
solo
flat
hide-details
dense
chips
small-chips
)
v-divider.my-3
.d-flex.align-center
.body-2.mr-3 then redirect to
v-btn-toggle.mr-3(
v-model='fallbackMode'
mandatory
color='primary'
borderless
dense
)
v-btn.text-none(value='page') Page
v-btn.text-none(value='url') External URL
v-btn.mr-3(
v-if='fallbackMode === `page`'
color='primary'
)
v-icon(left) mdi-magnify
span Select Page...
v-text-field(
v-if='fallbackMode === `url`'
label='External URL'
outlined
hint='Required - Title of the API'
hide-details
v-model='fallbackUrl'
dense
single-line
)
v-divider.mb-5
.subtitle-2.primary--text Otherwise, redirect to...
.caption.grey--text.text--darken-1.pb-2 This fallback rule is mandatory and used if none of the conditional rules above applies.
.d-flex.align-center
v-btn-toggle.mr-3(
v-model='fallbackMode'
mandatory
color='primary'
borderless
dense
)
v-btn.text-none(value='page') Page
v-btn.text-none(value='url') External URL
v-btn.mr-3(
v-if='fallbackMode === `page`'
color='primary'
)
v-icon(left) mdi-magnify
span Select Page...
v-text-field(
v-if='fallbackMode === `url`'
label='External URL'
outlined
hint='Required - Title of the API'
hide-details
v-model='fallbackUrl'
dense
single-line
)
v-system-bar.editor-redirect-sysbar(dark, status, color='grey darken-3')
.caption.editor-redirect-sysbar-locale {{locale.toUpperCase()}}
.caption.px-3 /{{path}}
template(v-if='$vuetify.breakpoint.mdAndUp')
v-spacer
.caption Redirect
v-spacer
.caption 0 rules
</template>
<script>
import _ from 'lodash'
import gql from 'graphql-tag'
import { v4 as uuid } from 'uuid'
import { get, sync } from 'vuex-pathify'
export default {
data() {
return {
fallbackMode: 'page',
fallbackUrl: 'https://'
}
},
computed: {
isMobile() {
return this.$vuetify.breakpoint.smAndDown
},
locale: get('page/locale'),
path: get('page/path'),
mode: get('editor/mode'),
activeModal: sync('editor/activeModal')
},
methods: {
},
mounted() {
this.$store.set('editor/editorKey', 'redirect')
if (this.mode === 'create') {
this.$store.set('editor/content', '<h1>Title</h1>\n\n<p>Some text here</p>')
}
},
apollo: {
groups: {
query: gql`
{
groups {
list {
id
name
}
}
}
`,
fetchPolicy: 'network-only',
update: (data) => data.groups.list,
watchLoading (isLoading) {
this.$store.commit(`loading${isLoading ? 'Start' : 'Stop'}`, 'editor-redirect-groups')
}
}
}
}
</script>
<style lang='scss'>
$editor-height: calc(100vh - 64px - 24px);
$editor-height-mobile: calc(100vh - 56px - 16px);
.editor-redirect {
&-main {
display: flex;
width: 100%;
}
&-editor {
background-color: darken(mc('grey', '100'), 4.5%);
flex: 1 1 50%;
display: block;
height: $editor-height;
position: relative;
@at-root .theme--dark & {
background-color: darken(mc('grey', '900'), 4.5%);
}
}
&-sidebar {
width: 200px;
}
&-sysbar {
padding-left: 0 !important;
&-locale {
background-color: rgba(255,255,255,.25);
display:inline-flex;
padding: 0 12px;
height: 24px;
width: 63px;
justify-content: center;
align-items: center;
}
}
}
</style>
// Header matching code by CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE
import CodeMirror from 'codemirror'
const maxDepth = 100
const codeBlockStartMatch = /^`{3}[a-zA-Z0-9]+$/
const codeBlockEndMatch = /^`{3}$/
CodeMirror.registerHelper('fold', 'markdown', function (cm, start) {
const firstLine = cm.getLine(start.line)
const lastLineNo = cm.lastLine()
let end
function isHeader(lineNo) {
const tokentype = cm.getTokenTypeAt(CodeMirror.Pos(lineNo, 0))
return tokentype && /\bheader\b/.test(tokentype)
}
function headerLevel(lineNo, line, nextLine) {
let match = line && line.match(/^#+/)
if (match && isHeader(lineNo)) return match[0].length
match = nextLine && nextLine.match(/^[=-]+\s*$/)
if (match && isHeader(lineNo + 1)) return nextLine[0] === '=' ? 1 : 2
return maxDepth
}
// -> CODE BLOCK
if (codeBlockStartMatch.test(cm.getLine(start.line))) {
end = start.line
let nextNextLine = cm.getLine(end + 1)
while (end < lastLineNo) {
if (codeBlockEndMatch.test(nextNextLine)) {
end++
break
}
end++
nextNextLine = cm.getLine(end + 1)
}
} else {
// -> HEADER
let nextLine = cm.getLine(start.line + 1)
const level = headerLevel(start.line, firstLine, nextLine)
if (level === maxDepth) return undefined
end = start.line
let nextNextLine = cm.getLine(end + 2)
while (end < lastLineNo) {
if (headerLevel(end + 1, nextLine, nextNextLine) <= level) break
++end
nextLine = nextNextLine
nextNextLine = cm.getLine(end + 2)
}
}
return {
from: CodeMirror.Pos(start.line, firstLine.length),
to: CodeMirror.Pos(end, cm.getLine(end).length)
}
})
<template lang='pug'>
v-card.editor-markdown-help.animated.fadeInLeft(flat, tile)
v-container.pa-3(grid-list-lg, fluid)
v-layout(row, wrap)
v-flex(xs12, lg6, xl4)
v-card.radius-7.animated.fadeInUp(light)
v-card-text
.d-flex
v-toolbar.radius-7(color='teal lighten-5', dense, flat, height='44')
v-icon.mr-3(color='teal') mdi-information-variant
.body-2.teal--text Markdown Reference
.body-2.mt-3 Bold
v-layout(row)
v-flex(xs6)
v-card.editor-markdown-help-source(flat)
v-card-text
div **Lorem ipsum**
v-icon mdi-chevron-right
v-flex
v-card.editor-markdown-help-result(flat)
v-card-text
.caption: strong Lorem ipsum
.body-2.mt-3 Italic
v-layout(row)
v-flex(xs6)
v-card.editor-markdown-help-source(flat)
v-card-text
div *Lorem ipsum*
v-icon mdi-chevron-right
v-flex
v-card.editor-markdown-help-result(flat)
v-card-text
.caption: em Lorem ipsum
.body-2.mt-3 Strikethrough
v-layout(row)
v-flex(xs6)
v-card.editor-markdown-help-source(flat)
v-card-text
div ~~Lorem ipsum~~
v-icon mdi-chevron-right
v-flex
v-card.editor-markdown-help-result(flat)
v-card-text
.caption(style='text-decoration: line-through;') Lorem ipsum
.body-2.mt-3 Headers
v-layout(row)
v-flex(xs6)
v-card.editor-markdown-help-source(flat)
v-card-text
div # Header 1
div ## Header 2
div ### Header 3
div #### Header 4
div ##### Header 5
div ###### Header 6
v-icon mdi-chevron-right
v-flex
v-card.editor-markdown-help-result(flat)
v-card-text
div(style='font-weight: 700; font-size: 24px;') Header 1
div(style='font-weight: 700; font-size: 22px;') Header 2
div(style='font-weight: 700; font-size: 20px;') Header 3
div(style='font-weight: 700; font-size: 18px;') Header 4
div(style='font-weight: 700; font-size: 16px;') Header 5
div(style='font-weight: 700; font-size: 14px;') Header 6
.body-2.mt-3 Unordered Lists
.caption.grey--text.text--darken-1: em You can also use the asterisk symbol instead of the dash.
v-layout(row)
v-flex(xs6)
v-card.editor-markdown-help-source(flat)
v-card-text
div - Unordered List Item 1
div - Unordered List Item 2
div - Unordered List Item 3
v-icon mdi-chevron-right
v-flex
v-card.editor-markdown-help-result(flat)
v-card-text
ul
li Unordered List Item 1
li Unordered List Item 2
li Unordered List Item 3
.body-2.mt-3 Ordered Lists
.caption.grey--text.text--darken-1: em Even though we prefix all lines with #[strong 1.], the output will be correctly numbered automatically.
v-layout(row)
v-flex(xs6)
v-card.editor-markdown-help-source(flat)
v-card-text
div 1. Ordered List Item 1
div 1. Ordered List Item 2
div 1. Ordered List Item 3
v-icon mdi-chevron-right
v-flex
v-card.editor-markdown-help-result(flat)
v-card-text
ol
li Unordered List Item 1
li Unordered List Item 2
li Unordered List Item 3
.body-2.mt-3 Images
v-layout(row)
v-flex(xs6)
v-card.editor-markdown-help-source(flat)
v-card-text
div ![Caption Text](/path/to/image.jpg)
v-icon mdi-chevron-right
v-flex
v-card.editor-markdown-help-result(flat)
v-card-text
img(src='https://via.placeholder.com/150x50.png')
v-flex(xs12, lg6, xl4)
v-card.radius-7.animated.fadeInUp.wait-p1s(light)
v-card-text
.d-flex
v-toolbar.radius-7(color='teal lighten-5', dense, flat, height='44')
v-icon.mr-3(color='teal') mdi-information-variant
.body-2.teal--text Markdown Reference (continued)
.body-2.mt-3 Links
v-layout(row)
v-flex(xs6)
v-card.editor-markdown-help-source(flat)
v-card-text
div [Link Text](https://wiki.js.org)
v-icon mdi-chevron-right
v-flex
v-card.editor-markdown-help-result(flat)
v-card-text
.caption: a(href='https://wiki.js.org', target='_blank') Link Text
.body-2.mt-3 Superscript
v-layout(row)
v-flex(xs6)
v-card.editor-markdown-help-source(flat)
v-card-text
div Lorem ^ipsum^
v-icon mdi-chevron-right
v-flex
v-card.editor-markdown-help-result(flat)
v-card-text
.caption Lorem #[sup ipsum]
.body-2.mt-3 Subscript
v-layout(row)
v-flex(xs6)
v-card.editor-markdown-help-source(flat)
v-card-text
div Lorem ~ipsum~
v-icon mdi-chevron-right
v-flex
v-card.editor-markdown-help-result(flat)
v-card-text
.caption: em Lorem #[sub ipsum]
.body-2.mt-3 Horizontal Line
v-layout(row)
v-flex(xs6)
v-card.editor-markdown-help-source(flat)
v-card-text
div Lorem ipsum
div ---
div Dolor sit amet
v-icon mdi-chevron-right
v-flex
v-card.editor-markdown-help-result(flat)
v-card-text
.caption Lorem ipsum
v-divider.my-2
.caption Dolor sit amet
.body-2.mt-3 Inline Code
v-layout(row)
v-flex(xs6)
v-card.editor-markdown-help-source(flat)
v-card-text
div Lorem `ipsum dolor sit` amet
v-icon mdi-chevron-right
v-flex
v-card.editor-markdown-help-result(flat)
v-card-text
.caption Lorem #[code ipsum dolor sit] amet
.body-2.mt-3 Code Blocks
.caption.grey--text.text--darken-1: em In the example below, #[strong js] defines the syntax highlighting language to use. It can be omitted.
v-layout(row)
v-flex(xs6)
v-card.editor-markdown-help-source(flat)
v-card-text
div ```js
div function main () {
div.pl-3 echo 'Lorem ipsum'
div }
div ```
v-icon mdi-chevron-right
v-flex
v-card.editor-markdown-help-result(flat)
v-card-text.contents
pre.prismjs.line-numbers.language-js
code.language-js
span.token.keyword function
span.token.function main
span.token.punctuation (
span.token.punctuation )
span.token.punctuation {#[br]
| echo
span.token.string 'Lorem ipsum'#[br]
span.token.punctuation }
span.line-numbers-rows(aria-hidden='true')
span
span
span
.body-2.mt-3 Blockquotes
v-layout(row)
v-flex(xs6)
v-card.editor-markdown-help-source(flat)
v-card-text
div &gt; Lorem ipsum
div &gt; dolor sit amet
div &gt; consectetur adipiscing elit
v-icon mdi-chevron-right
v-flex
v-card.editor-markdown-help-result(flat)
v-card-text
blockquote(style='border: 1px solid #263238; border-radius: .5rem; padding: 1rem 24px;') Lorem ipsum#[br]dolor sit amet#[br]consectetur adipiscing elit
v-flex(xs12, xl4)
v-card.radius-7.animated.fadeInUp.wait-p2s(light)
v-card-text
v-toolbar.radius-7(color='teal lighten-5', dense, flat)
v-icon.mr-3(color='teal') mdi-keyboard
.body-2.teal--text Keyboard Shortcuts
v-list.editor-markdown-help-kbd(two-line, dense)
v-list-item
v-list-item-content.body-2 Bold
v-list-item-action #[kbd {{ctrlKey}}] + #[kbd B]
v-divider
v-list-item
v-list-item-content.body-2 Italic
v-list-item-action #[kbd {{ctrlKey}}] + #[kbd I]
v-divider
v-list-item
v-list-item-content.body-2 Increase Header Level
v-list-item-action #[kbd {{ctrlKey}}] + #[kbd {{altKey}}] + #[kbd Right]
v-divider
v-list-item
v-list-item-content.body-2 Decrease Header Level
v-list-item-action #[kbd {{ctrlKey}}] + #[kbd {{altKey}}] + #[kbd Left]
v-divider
v-list-item
v-list-item-content.body-2 Save
v-list-item-action #[kbd {{ctrlKey}}] + #[kbd S]
v-divider
v-list-item
v-list-item-content.body-2 Undo
v-list-item-action #[kbd {{ctrlKey}}] + #[kbd Z]
v-divider
v-list-item
v-list-item-content.body-2 Redo
v-list-item-action #[kbd {{ctrlKey}}] + #[kbd Y]
v-divider
v-list-item
v-list-item-content
v-list-item-title.body-2 Distraction Free Mode
v-list-item-subtitle Press <kbd>Esc</kbd> to exit.
v-list-item-action #[kbd F11]
v-card.radius-7.animated.fadeInUp.wait-p3s.mt-3(light)
v-card-text
v-toolbar.radius-7(color='teal lighten-5', dense, flat)
v-icon.mr-3(color='teal') mdi-mouse
.body-2.teal--text Multi-Selection
v-list.editor-markdown-help-kbd(two-line, dense)
v-list-item
v-list-item-content.body-2 Multiple Cursors
v-list-item-action #[kbd {{ctrlKey}}] + Left Click
v-divider
v-list-item
v-list-item-content.body-2 Select Region
v-list-item-action #[kbd {{ctrlKey}}] + #[kbd {{altKey}}] + Left Click
v-divider
v-list-item
v-list-item-content.body-2 Deselect
v-list-item-action #[kbd Esc]
</template>
<script>
export default {
computed: {
ctrlKey() { return /Mac/.test(navigator.platform) ? 'Cmd' : 'Ctrl' },
altKey() { return /Mac/.test(navigator.platform) ? 'Option' : 'Alt' }
}
}
</script>
<style lang='scss'>
.editor-markdown-help {
position: fixed !important;
top: 112px;
left: 64px;
z-index: 10;
width: calc(100vw - 64px - 17px);
height: calc(100vh - 112px - 24px);
background-color: rgba(darken(mc('grey', '900'), 3%), .9) !important;
overflow: auto;
&-source {
background-color: mc('blue-grey', '900') !important;
border-radius: 7px;
font-family: 'Roboto Mono', monospace;
font-size: 14px;
color: #FFF !important;
.v-card__text {
color: #FFF !important;
}
}
&-result {
background-color: mc('blue-grey', '50') !important;
border-radius: 7px;
font-size: 14px;
code {
display: inline-block;
background-color: mc('pink', '50');
box-shadow: none;
font-size: inherit;
}
.contents {
padding-bottom: 16px;
}
.prismjs {
margin: 0;
}
}
&-kbd {
.v-list-item__action {
flex-direction: row;
align-items: center;
kbd {
display: inline-block;
border: 1px solid #ccc;
border-radius: 4px;
padding: 0.1em 0.5em;
margin: 0 0.2em;
box-shadow: 0 1px 0px rgba(0, 0, 0, 0.2), 0 0 0 2px #fff inset;
background-color: #f7f7f7;
color: mc('grey', '700');
font-size: 12px;
}
}
}
}
</style>
const pako = require('pako')
// ------------------------------------
// Markdown - PlantUML Preprocessor
// ------------------------------------
module.exports = {
init (mdinst, conf) {
mdinst.use((md, opts) => {
const openMarker = opts.openMarker || '```plantuml'
const openChar = openMarker.charCodeAt(0)
const closeMarker = opts.closeMarker || '```'
const closeChar = closeMarker.charCodeAt(0)
const imageFormat = opts.imageFormat || 'svg'
const server = opts.server || 'https://plantuml.requarks.io'
md.block.ruler.before('fence', 'uml_diagram', (state, startLine, endLine, silent) => {
let nextLine
let markup
let params
let token
let i
let autoClosed = false
let start = state.bMarks[startLine] + state.tShift[startLine]
let max = state.eMarks[startLine]
// Check out the first character quickly,
// this should filter out most of non-uml blocks
//
if (openChar !== state.src.charCodeAt(start)) { return false }
// Check out the rest of the marker string
//
for (i = 0; i < openMarker.length; ++i) {
if (openMarker[i] !== state.src[start + i]) { return false }
}
markup = state.src.slice(start, start + i)
params = state.src.slice(start + i, max)
// Since start is found, we can report success here in validation mode
//
if (silent) { return true }
// Search for the end of the block
//
nextLine = startLine
for (;;) {
nextLine++
if (nextLine >= endLine) {
// unclosed block should be autoclosed by end of document.
// also block seems to be autoclosed by end of parent
break
}
start = state.bMarks[nextLine] + state.tShift[nextLine]
max = state.eMarks[nextLine]
if (start < max && state.sCount[nextLine] < state.blkIndent) {
// non-empty line with negative indent should stop the list:
// - ```
// test
break
}
if (closeChar !== state.src.charCodeAt(start)) {
// didn't find the closing fence
continue
}
if (state.sCount[nextLine] > state.sCount[startLine]) {
// closing fence should not be indented with respect of opening fence
continue
}
var closeMarkerMatched = true
for (i = 0; i < closeMarker.length; ++i) {
if (closeMarker[i] !== state.src[start + i]) {
closeMarkerMatched = false
break
}
}
if (!closeMarkerMatched) {
continue
}
// make sure tail has spaces only
if (state.skipSpaces(start + i) < max) {
continue
}
// found!
autoClosed = true
break
}
const contents = state.src
.split('\n')
.slice(startLine + 1, nextLine)
.join('\n')
// We generate a token list for the alt property, to mimic what the image parser does.
let altToken = []
// Remove leading space if any.
let alt = params ? params.slice(1) : 'uml diagram'
state.md.inline.parse(
alt,
state.md,
state.env,
altToken
)
var zippedCode = encode64(pako.deflate('@startuml\n' + contents + '\n@enduml', { to: 'string' }))
token = state.push('uml_diagram', 'img', 0)
// alt is constructed from children. No point in populating it here.
token.attrs = [ [ 'src', `${server}/${imageFormat}/${zippedCode}` ], [ 'alt', '' ], ['class', 'uml-diagram'] ]
token.block = true
token.children = altToken
token.info = params
token.map = [ startLine, nextLine ]
token.markup = markup
state.line = nextLine + (autoClosed ? 1 : 0)
return true
}, {
alt: [ 'paragraph', 'reference', 'blockquote', 'list' ]
})
md.renderer.rules.uml_diagram = md.renderer.rules.image
}, {
openMarker: conf.openMarker,
closeMarker: conf.closeMarker,
imageFormat: conf.imageFormat,
server: conf.server
})
}
}
function encode64 (data) {
let r = ''
for (let i = 0; i < data.length; i += 3) {
if (i + 2 === data.length) {
r += append3bytes(data.charCodeAt(i), data.charCodeAt(i + 1), 0)
} else if (i + 1 === data.length) {
r += append3bytes(data.charCodeAt(i), 0, 0)
} else {
r += append3bytes(data.charCodeAt(i), data.charCodeAt(i + 1), data.charCodeAt(i + 2))
}
}
return r
}
function append3bytes (b1, b2, b3) {
let c1 = b1 >> 2
let c2 = ((b1 & 0x3) << 4) | (b2 >> 4)
let c3 = ((b2 & 0xF) << 2) | (b3 >> 6)
let c4 = b3 & 0x3F
let r = ''
r += encode6bit(c1 & 0x3F)
r += encode6bit(c2 & 0x3F)
r += encode6bit(c3 & 0x3F)
r += encode6bit(c4 & 0x3F)
return r
}
function encode6bit(raw) {
let b = raw
if (b < 10) {
return String.fromCharCode(48 + b)
}
b -= 10
if (b < 26) {
return String.fromCharCode(65 + b)
}
b -= 26
if (b < 26) {
return String.fromCharCode(97 + b)
}
b -= 26
if (b === 0) {
return '-'
}
if (b === 1) {
return '_'
}
return '?'
}
import cash from 'cash-dom'
import _ from 'lodash'
export default {
format () {
for (let i = 1; i < 6; i++) {
cash(`.editor-markdown-preview-content h${i}.tabset`).each((idx, elm) => {
elm.innerHTML = 'Tabset ( rendered upon saving )'
cash(elm).nextUntil(_.times(i, t => `h${t + 1}`).join(', '), `h${i + 1}`).each((hidx, hd) => {
hd.classList.add('tabset-header')
cash(hd).nextUntil(_.times(i + 1, t => `h${t + 1}`).join(', ')).wrapAll('<div class="tabset-content"></div>')
})
})
}
}
}
<template lang='pug'>
v-app(:dark='$vuetify.theme.dark').history
nav-header
v-content
v-toolbar(color='primary', dark)
.subheading Viewing history of #[strong /{{path}}]
template(v-if='$vuetify.breakpoint.mdAndUp')
v-spacer
.caption.blue--text.text--lighten-3.mr-4 Trail Length: {{total}}
.caption.blue--text.text--lighten-3 ID: {{pageId}}
v-btn.ml-4(depressed, color='blue darken-1', @click='goLive') Return to Live Version
v-container(fluid, grid-list-xl)
v-layout(row, wrap)
v-flex(xs12, md4)
v-chip.my-0.ml-6(
label
small
:color='$vuetify.theme.dark ? `grey darken-2` : `grey lighten-2`'
:class='$vuetify.theme.dark ? `grey--text text--lighten-2` : `grey--text text--darken-2`'
)
span Live
v-timeline(
dense
)
v-timeline-item.pb-2(
v-for='(ph, idx) in fullTrail'
:key='ph.versionId'
:small='ph.actionType === `edit`'
:color='trailColor(ph.actionType)'
:icon='trailIcon(ph.actionType)'
)
v-card.radius-7(flat, :class='trailBgColor(ph.actionType)')
v-toolbar(flat, :color='trailBgColor(ph.actionType)', height='40')
.caption(:title='$options.filters.moment(ph.versionDate, `LLL`)') {{ ph.versionDate | moment('ll') }}
v-divider.mx-3(vertical)
.caption(v-if='ph.actionType === `edit`') Edited by #[strong {{ ph.authorName }}]
.caption(v-else-if='ph.actionType === `move`') Moved from #[strong {{ph.valueBefore}}] to #[strong {{ph.valueAfter}}] by #[strong {{ ph.authorName }}]
.caption(v-else-if='ph.actionType === `initial`') Created by #[strong {{ ph.authorName }}]
.caption(v-else-if='ph.actionType === `live`') Last Edited by #[strong {{ ph.authorName }}]
.caption(v-else) Unknown Action by #[strong {{ ph.authorName }}]
v-spacer
v-menu(offset-x, left)
template(v-slot:activator='{ on }')
v-btn.mr-2.radius-4(icon, v-on='on', small, tile): v-icon mdi-dots-horizontal
v-list(dense, nav).history-promptmenu
v-list-item(@click='setDiffSource(ph.versionId)', :disabled='(ph.versionId >= diffTarget && diffTarget !== 0) || ph.versionId === 0')
v-list-item-avatar(size='24'): v-avatar A
v-list-item-title Set as Differencing Source
v-list-item(@click='setDiffTarget(ph.versionId)', :disabled='ph.versionId <= diffSource && ph.versionId !== 0')
v-list-item-avatar(size='24'): v-avatar B
v-list-item-title Set as Differencing Target
v-list-item(@click='viewSource(ph.versionId)')
v-list-item-avatar(size='24'): v-icon mdi-code-tags
v-list-item-title View Source
v-list-item(@click='download(ph.versionId)')
v-list-item-avatar(size='24'): v-icon mdi-cloud-download-outline
v-list-item-title Download Version
v-list-item(@click='restore(ph.versionId, ph.versionDate)', :disabled='ph.versionId === 0')
v-list-item-avatar(size='24'): v-icon(:disabled='ph.versionId === 0') mdi-history
v-list-item-title Restore
v-list-item(@click='branchOff(ph.versionId)')
v-list-item-avatar(size='24'): v-icon mdi-source-branch
v-list-item-title Branch off from here
v-btn.mr-2.radius-4(
@click='setDiffSource(ph.versionId)'
icon
small
depressed
tile
:class='diffSource === ph.versionId ? `pink white--text` : ($vuetify.theme.dark ? `grey darken-2` : `grey lighten-2`)'
:disabled='(ph.versionId >= diffTarget && diffTarget !== 0) || ph.versionId === 0'
): strong A
v-btn.mr-0.radius-4(
@click='setDiffTarget(ph.versionId)'
icon
small
depressed
tile
:class='diffTarget === ph.versionId ? `pink white--text` : ($vuetify.theme.dark ? `grey darken-2` : `grey lighten-2`)'
:disabled='ph.versionId <= diffSource && ph.versionId !== 0'
): strong B
v-btn.ma-0.radius-7(
v-if='total > trail.length'
block
color='primary'
@click='loadMore'
)
.caption.white--text Load More...
v-chip.ma-0(
v-else
label
small
:color='$vuetify.theme.dark ? `grey darken-2` : `grey lighten-2`'
:class='$vuetify.theme.dark ? `grey--text text--lighten-2` : `grey--text text--darken-2`'
) End of history trail
v-flex(xs12, md8)
v-card.radius-7(:class='$vuetify.breakpoint.mdAndUp ? `mt-8` : ``')
v-card-text
v-card.grey.radius-7(flat, :class='$vuetify.theme.dark ? `darken-2` : `lighten-4`')
v-row(no-gutters, align='center')
v-col
v-card-text
.subheading {{target.title}}
.caption {{target.description}}
v-col.text-right.py-3(cols='2', v-if='$vuetify.breakpoint.mdAndUp')
v-btn.mr-3(:color='$vuetify.theme.dark ? `white` : `grey darken-3`', small, dark, outlined, @click='toggleViewMode')
v-icon(left) mdi-eye
.overline View Mode
v-card.mt-3(light, v-html='diffHTML', flat)
v-dialog(v-model='isRestoreConfirmDialogShown', max-width='650', persistent)
v-card
.dialog-header.is-orange {{$t('history:restore.confirmTitle')}}
v-card-text.pa-4
i18next(tag='span', path='history:restore.confirmText')
strong(place='date') {{ restoreTarget.versionDate | moment('LLL') }}
v-card-actions
v-spacer
v-btn(text, @click='isRestoreConfirmDialogShown = false', :disabled='restoreLoading') {{$t('common:actions.cancel')}}
v-btn(color='orange darken-2', dark, @click='restoreConfirm', :loading='restoreLoading') {{$t('history:restore.confirmButton')}}
page-selector(mode='create', v-model='branchOffOpts.modal', :open-handler='branchOffHandle', :path='branchOffOpts.path', :locale='branchOffOpts.locale')
nav-footer
notify
search-results
</template>
<script>
import * as Diff2Html from 'diff2html'
import { createPatch } from 'diff'
import _ from 'lodash'
import gql from 'graphql-tag'
export default {
i18nOptions: { namespaces: 'history' },
props: {
pageId: {
type: Number,
default: 0
},
locale: {
type: String,
default: 'en'
},
path: {
type: String,
default: 'home'
},
title: {
type: String,
default: 'Untitled Page'
},
description: {
type: String,
default: ''
},
createdAt: {
type: String,
default: ''
},
updatedAt: {
type: String,
default: ''
},
tags: {
type: Array,
default: () => ([])
},
authorName: {
type: String,
default: 'Unknown'
},
authorId: {
type: Number,
default: 0
},
isPublished: {
type: Boolean,
default: false
},
liveContent: {
type: String,
default: ''
},
effectivePermissions: {
type: String,
default: ''
}
},
data () {
return {
source: {
versionId: 0,
content: '',
title: '',
description: ''
},
target: {
versionId: 0,
content: '',
title: '',
description: ''
},
trail: [],
diffSource: 0,
diffTarget: 0,
offsetPage: 0,
total: 0,
viewMode: 'line-by-line',
cache: [],
restoreTarget: {
versionId: 0,
versionDate: ''
},
branchOffOpts: {
versionId: 0,
locale: 'en',
path: 'new-page',
modal: false
},
isRestoreConfirmDialogShown: false,
restoreLoading: false
}
},
computed: {
fullTrail () {
const liveTrailItem = {
versionId: 0,
authorId: this.authorId,
authorName: this.authorName,
actionType: 'live',
valueBefore: null,
valueAfter: null,
versionDate: this.updatedAt
}
// -> Check for move between latest and live
const prevPage = _.find(this.cache, ['versionId', _.get(this.trail, '[0].versionId', -1)])
if (prevPage && this.path !== prevPage.path) {
liveTrailItem.actionType = 'move'
liveTrailItem.valueBefore = prevPage.path
liveTrailItem.valueAfter = this.path
}
// -> Combine trail with live
return [
liveTrailItem,
...this.trail
]
},
diffs () {
return createPatch(`/${this.path}`, this.source.content, this.target.content)
},
diffHTML () {
return Diff2Html.html(this.diffs, {
inputFormat: 'diff',
drawFileList: false,
matching: 'lines',
outputFormat: this.viewMode
})
}
},
watch: {
trail (newValue, oldValue) {
if (newValue && newValue.length > 0) {
this.diffTarget = 0
this.diffSource = _.get(_.head(newValue), 'versionId', 0)
}
},
async diffSource (newValue, oldValue) {
if (this.diffSource !== this.source.versionId) {
const page = _.find(this.cache, { versionId: newValue })
if (page) {
this.source = page
} else {
this.source = await this.loadVersion(newValue)
}
}
},
async diffTarget (newValue, oldValue) {
if (this.diffTarget !== this.target.versionId) {
const page = _.find(this.cache, { versionId: newValue })
if (page) {
this.target = page
} else {
this.target = await this.loadVersion(newValue)
}
}
}
},
created () {
this.$store.commit('page/SET_ID', this.id)
this.$store.commit('page/SET_LOCALE', this.locale)
this.$store.commit('page/SET_PATH', this.path)
this.$store.commit('page/SET_MODE', 'history')
this.cache.push({
action: 'live',
authorId: this.authorId,
authorName: this.authorName,
content: this.liveContent,
contentType: '',
createdAt: this.createdAt,
description: this.description,
editor: '',
isPrivate: false,
isPublished: this.isPublished,
locale: this.locale,
pageId: this.pageId,
path: this.path,
publishEndDate: '',
publishStartDate: '',
tags: this.tags,
title: this.title,
versionId: 0,
versionDate: this.updatedAt
})
this.target = this.cache[0]
if (this.effectivePermissions) {
this.$store.set('page/effectivePermissions', JSON.parse(Buffer.from(this.effectivePermissions, 'base64').toString()))
}
},
methods: {
async loadVersion (versionId) {
this.$store.commit(`loadingStart`, 'history-version-' + versionId)
const resp = await this.$apollo.query({
query: gql`
query ($pageId: Int!, $versionId: Int!) {
pages {
version (pageId: $pageId, versionId: $versionId) {
action
authorId
authorName
content
contentType
createdAt
versionDate
description
editor
isPrivate
isPublished
locale
pageId
path
publishEndDate
publishStartDate
tags
title
versionId
}
}
}
`,
variables: {
versionId,
pageId: this.pageId
}
})
this.$store.commit(`loadingStop`, 'history-version-' + versionId)
const page = _.get(resp, 'data.pages.version', null)
if (page) {
this.cache.push(page)
return page
} else {
return { content: '' }
}
},
viewSource (versionId) {
window.location.assign(`/s/${this.locale}/${this.path}?v=${versionId}`)
},
download (versionId) {
window.location.assign(`/d/${this.locale}/${this.path}?v=${versionId}`)
},
restore (versionId, versionDate) {
this.restoreTarget = {
versionId,
versionDate
}
this.isRestoreConfirmDialogShown = true
},
async restoreConfirm () {
this.restoreLoading = true
this.$store.commit(`loadingStart`, 'history-restore')
try {
const resp = await this.$apollo.mutate({
mutation: gql`
mutation ($pageId: Int!, $versionId: Int!) {
pages {
restore (pageId: $pageId, versionId: $versionId) {
responseResult {
succeeded
errorCode
slug
message
}
}
}
}
`,
variables: {
versionId: this.restoreTarget.versionId,
pageId: this.pageId
}
})
if (_.get(resp, 'data.pages.restore.responseResult.succeeded', false) === true) {
this.$store.commit('showNotification', {
style: 'success',
message: this.$t('history:restore.success'),
icon: 'check'
})
this.isRestoreConfirmDialogShown = false
setTimeout(() => {
window.location.assign(`/${this.locale}/${this.path}`)
}, 1000)
} else {
throw new Error(_.get(resp, 'data.pages.restore.responseResult.message', 'An unexpected error occurred'))
}
} catch (err) {
this.$store.commit('showNotification', {
style: 'red',
message: err.message,
icon: 'alert'
})
}
this.$store.commit(`loadingStop`, 'history-restore')
this.restoreLoading = false
},
branchOff (versionId) {
const pathParts = this.path.split('/')
this.branchOffOpts = {
versionId: versionId,
locale: this.locale,
path: (pathParts.length > 1) ? _.initial(pathParts).join('/') + `/new-page` : `new-page`,
modal: true
}
},
branchOffHandle ({ locale, path }) {
window.location.assign(`/e/${locale}/${path}?from=${this.pageId},${this.branchOffOpts.versionId}`)
},
toggleViewMode () {
this.viewMode = (this.viewMode === 'line-by-line') ? 'side-by-side' : 'line-by-line'
},
goLive () {
window.location.assign(`/${this.path}`)
},
setDiffSource (versionId) {
this.diffSource = versionId
},
setDiffTarget (versionId) {
this.diffTarget = versionId
},
loadMore () {
this.offsetPage++
this.$apollo.queries.trail.fetchMore({
variables: {
id: this.pageId,
offsetPage: this.offsetPage,
offsetSize: this.$vuetify.breakpoint.mdAndUp ? 25 : 5
},
updateQuery: (previousResult, { fetchMoreResult }) => {
return {
pages: {
history: {
total: previousResult.pages.history.total,
trail: [...previousResult.pages.history.trail, ...fetchMoreResult.pages.history.trail],
__typename: previousResult.pages.history.__typename
},
__typename: previousResult.pages.__typename
}
}
}
})
},
trailColor (actionType) {
switch (actionType) {
case 'edit':
return 'primary'
case 'move':
return 'purple'
case 'initial':
return 'teal'
case 'live':
return 'orange'
default:
return 'grey'
}
},
trailIcon (actionType) {
switch (actionType) {
case 'edit':
return '' // 'mdi-pencil'
case 'move':
return 'mdi-forward'
case 'initial':
return 'mdi-plus'
case 'live':
return 'mdi-atom-variant'
default:
return 'mdi-alert'
}
},
trailBgColor (actionType) {
switch (actionType) {
case 'move':
return this.$vuetify.theme.dark ? 'purple' : 'purple lighten-5'
case 'initial':
return this.$vuetify.theme.dark ? 'teal darken-3' : 'teal lighten-5'
case 'live':
return this.$vuetify.theme.dark ? 'orange darken-3' : 'orange lighten-5'
default:
return this.$vuetify.theme.dark ? 'grey darken-3' : 'grey lighten-4'
}
}
},
apollo: {
trail: {
query: gql`
query($id: Int!, $offsetPage: Int, $offsetSize: Int) {
pages {
history(id:$id, offsetPage:$offsetPage, offsetSize:$offsetSize) {
trail {
versionId
authorId
authorName
actionType
valueBefore
valueAfter
versionDate
}
total
}
}
}
`,
variables () {
return {
id: this.pageId,
offsetPage: 0,
offsetSize: this.$vuetify.breakpoint.mdAndUp ? 25 : 5
}
},
manual: true,
result ({ data, loading, networkStatus }) {
this.total = data.pages.history.total
this.trail = data.pages.history.trail
},
watchLoading (isLoading) {
this.$store.commit(`loading${isLoading ? 'Start' : 'Stop'}`, 'history-trail-refresh')
}
}
}
}
</script>
<style lang='scss'>
.history {
&-promptmenu {
border-top: 5px solid mc('blue', '700');
}
.d2h-file-wrapper {
border: 1px solid #EEE;
border-left: none;
}
.d2h-file-header {
display: none;
}
}
</style>
<template lang='pug'>
v-app
.newpage
.newpage-content
img.animated.fadeIn(src='/_assets-legacy/svg/icon-delete-file.svg', alt='Not Found')
.headline {{ $t('newpage.title') }}
.subtitle-1.mt-3 {{ $t('newpage.subtitle') }}
v-btn.mt-5(:href='`/e/` + locale + `/` + path', x-large)
v-icon(left) mdi-plus
span {{ $t('newpage.create') }}
v-btn.mt-5(color='purple lighten-3', href='javascript:window.history.go(-1);', outlined)
v-icon(left) mdi-arrow-left
span {{ $t('newpage.goback') }}
</template>
<script>
export default {
props: {
locale: {
type: String,
default: 'en'
},
path: {
type: String,
default: 'home'
}
},
data() {
return { }
}
}
</script>
<style lang='scss'>
</style>
<template lang='pug'>
v-app
.notfound
.notfound-content
img.animated.fadeIn(src='/_assets-legacy/svg/icon-delete-file.svg', alt='Not Found')
.headline {{$t('notfound.title')}}
.subheading.mt-3 {{$t('notfound.subtitle')}}
v-btn.mt-5(color='red lighten-4', href='/', large, outlined)
v-icon(left) mdi-home
span {{$t('notfound.gohome')}}
</template>
<script>
export default {
data() {
return { }
}
}
</script>
<style lang='scss'>
</style>
<template lang='pug'>
v-app(:dark='$vuetify.theme.dark').source
nav-header
v-content
v-toolbar(color='primary', dark)
i18next.subheading(v-if='versionId > 0', path='common:page.viewingSourceVersion', tag='div')
strong(place='date', :title='$options.filters.moment(versionDate, `LLL`)') {{versionDate | moment('lll')}}
strong(place='path') /{{path}}
i18next.subheading(v-else, path='common:page.viewingSource', tag='div')
strong(place='path') /{{path}}
template(v-if='$vuetify.breakpoint.mdAndUp')
v-spacer
.caption.blue--text.text--lighten-3 {{$t('common:page.id', { id: pageId })}}
.caption.blue--text.text--lighten-3.ml-4(v-if='versionId > 0') {{$t('common:page.versionId', { id: versionId })}}
v-btn.ml-4(v-if='versionId > 0', depressed, color='blue darken-1', @click='goHistory')
v-icon mdi-history
v-btn.ml-4(depressed, color='blue darken-1', @click='goLive') {{$t('common:page.returnNormalView')}}
v-card(tile)
v-card-text
v-card.grey.radius-7(flat, :class='$vuetify.theme.dark ? `darken-4` : `lighten-4`')
v-card-text
pre
code
slot
nav-footer
notify
search-results
</template>
<script>
export default {
props: {
pageId: {
type: Number,
default: 0
},
locale: {
type: String,
default: 'en'
},
path: {
type: String,
default: 'home'
},
versionId: {
type: Number,
default: 0
},
versionDate: {
type: String,
default: ''
},
effectivePermissions: {
type: String,
default: ''
}
},
data() {
return {}
},
created () {
this.$store.commit('page/SET_ID', this.id)
this.$store.commit('page/SET_LOCALE', this.locale)
this.$store.commit('page/SET_PATH', this.path)
this.$store.commit('page/SET_MODE', 'source')
if (this.effectivePermissions) {
this.$store.set('page/effectivePermissions', JSON.parse(Buffer.from(this.effectivePermissions, 'base64').toString()))
}
},
methods: {
goLive() {
window.location.assign(`/${this.locale}/${this.path}`)
},
goHistory () {
window.location.assign(`/h/${this.locale}/${this.path}`)
}
}
}
</script>
<style lang='scss'>
.source {
pre > code {
box-shadow: none;
background-color: transparent;
color: mc('grey', '800');
font-family: 'Roboto Mono', sans-serif;
font-weight: 400;
font-size: 1rem;
@at-root .theme--dark.source pre > code {
background-color: mc('grey', '900');
color: mc('grey', '400');
}
&::before {
display: none;
}
}
}
</style>
<template lang='pug'>
v-app(:dark='$vuetify.theme.dark').tags
nav-header
v-navigation-drawer.pb-0.elevation-1(app, fixed, clipped, :right='$vuetify.rtl', permanent, width='300')
vue-scroll(:ops='scrollStyle')
v-list(dense, nav)
v-list-item(href='/')
v-list-item-icon: v-icon mdi-home
v-list-item-title {{$t('common:header.home')}}
template(v-for='(tags, groupName) in tagsGrouped')
v-divider.my-2
v-subheader.pl-4(:key='`tagGroup-` + groupName') {{groupName}}
v-list-item(v-for='tag of tags', @click='toggleTag(tag.tag)', :key='`tag-` + tag.tag')
v-list-item-icon
v-icon(v-if='isSelected(tag.tag)', color='primary') mdi-checkbox-intermediate
v-icon(v-else) mdi-checkbox-blank-outline
v-list-item-title {{tag.title}}
v-content.grey(:class='$vuetify.theme.dark ? `darken-4-d5` : `lighten-3`')
v-toolbar(color='primary', dark, flat, height='58')
template(v-if='selection.length > 0')
.overline.mr-3.animated.fadeInLeft {{$t('tags:currentSelection')}}
v-chip.mr-3.primary--text(
v-for='tag of tagsSelected'
:key='`tagSelected-` + tag.tag'
color='white'
close
@click:close='toggleTag(tag.tag)'
) {{tag.title}}
v-spacer
v-btn.animated.fadeIn(
small
outlined
color='blue lighten-4'
rounded
@click='selection = []'
)
v-icon(left) mdi-close
span {{$t('tags:clearSelection')}}
template(v-else)
v-icon.mr-3.animated.fadeInRight mdi-arrow-left
.overline.animated.fadeInRight {{$t('tags:selectOneMoreTags')}}
v-toolbar(:color='$vuetify.theme.dark ? `grey darken-4-l5` : `grey lighten-4`', flat, height='58')
v-text-field.tags-search(
v-model='innerSearch'
:label='$t(`tags:searchWithinResultsPlaceholder`)'
solo
hide-details
flat
rounded
single-line
height='40'
prepend-icon='mdi-text-box-search-outline'
append-icon='mdi-arrow-right'
clearable
)
template(v-if='locales.length > 1')
v-divider.mx-3(vertical)
.overline {{$t('tags:locale')}}
v-select.ml-2(
:items='locales'
v-model='locale'
:background-color='$vuetify.theme.dark ? `grey darken-3` : `white`'
hide-details
:label='$t(`tags:locale`)'
item-text='name'
item-value='code'
rounded
single-line
dense
height='40'
style='max-width: 170px;'
)
v-divider.mx-3(vertical)
.overline {{$t('tags:orderBy')}}
v-select.ml-2(
:items='orderByItems'
v-model='orderBy'
:background-color='$vuetify.theme.dark ? `grey darken-3` : `white`'
hide-details
:label='$t(`tags:orderBy`)'
rounded
single-line
dense
height='40'
style='max-width: 250px;'
)
v-btn-toggle.ml-2(v-model='orderByDirection', rounded, mandatory)
v-btn(text, height='40'): v-icon(size='20') mdi-chevron-double-up
v-btn(text, height='40'): v-icon(size='20') mdi-chevron-double-down
v-divider
.text-center.pt-10(v-if='selection.length < 1')
img(src='/_assets-legacy/svg/icon-price-tag.svg')
.subtitle-2.grey--text {{$t('tags:selectOneMoreTagsHint')}}
.px-5.py-2(v-else)
v-data-iterator(
:items='pages'
:items-per-page='4'
:search='innerSearch'
:loading='isLoading'
:options.sync='pagination'
hide-default-footer
ref='dude'
)
template(v-slot:loading)
.text-center.pt-10
v-progress-circular(
indeterminate
color='primary'
size='96'
width='2'
)
.subtitle-2.grey--text.mt-5 {{$t('tags:retrievingResultsLoading')}}
template(v-slot:no-data)
.text-center.pt-10
img(src='/_assets-legacy/svg/icon-info.svg')
.subtitle-2.grey--text {{$t('tags:noResults')}}
template(v-slot:no-results)
.text-center.pt-10
img(src='/_assets-legacy/svg/icon-info.svg')
.subtitle-2.grey--text {{$t('tags:noResultsWithFilter')}}
template(v-slot:default='props')
v-row(align='stretch')
v-col(
v-for='item of props.items'
:key='`page-` + item.id'
cols='12'
lg='6'
)
v-card.radius-7(
@click='goTo(item)'
style='height:100%;'
:class='$vuetify.theme.dark ? `grey darken-4` : ``'
)
v-card-text
.d-flex.flex-row.align-center
.body-1: strong.primary--text {{item.title}}
v-spacer
i18next.caption(tag='div', path='tags:pageLastUpdated')
span(place='date') {{item.updatedAt | moment('from')}}
.body-2.grey--text {{item.description || '---'}}
v-divider.my-2
.d-flex.flex-row.align-center
v-chip(small, label, :color='$vuetify.theme.dark ? `grey darken-3-l5` : `grey lighten-4`').overline {{item.locale}}
.caption.ml-1 / {{item.path}}
.text-center.py-2.animated.fadeInDown(v-if='this.pageTotal > 1')
v-pagination(v-model='pagination.page', :length='pageTotal')
nav-footer
notify
search-results
</template>
<script>
import VueRouter from 'vue-router'
import _ from 'lodash'
import tagsQuery from 'gql/common/common-pages-query-tags.gql'
import pagesQuery from 'gql/common/common-pages-query-list.gql'
/* global siteLangs */
const router = new VueRouter({
mode: 'history',
base: '/t'
})
export default {
i18nOptions: { namespaces: 'tags' },
data() {
return {
tags: [],
selection: [],
innerSearch: '',
locale: 'any',
locales: [],
orderBy: 'title',
orderByDirection: 0,
pagination: {
page: 1,
itemsPerPage: 12,
mustSort: true,
sortBy: ['title'],
sortDesc: [false]
},
pages: [],
isLoading: true,
scrollStyle: {
vuescroll: {},
scrollPanel: {
initialScrollY: 0,
initialScrollX: 0,
scrollingX: false,
easing: 'easeOutQuad',
speed: 1000,
verticalNativeBarPos: this.$vuetify.rtl ? `left` : `right`
},
rail: {
gutterOfEnds: '2px'
},
bar: {
onlyShowBarOnScroll: false,
background: '#CCC',
hoverStyle: {
background: '#999'
}
}
}
}
},
computed: {
tagsGrouped () {
return _.groupBy(this.tags, t => t.title.charAt(0).toUpperCase())
},
tagsSelected () {
return _.filter(this.tags, t => _.includes(this.selection, t.tag))
},
pageTotal () {
return Math.ceil(this.pages.length / this.pagination.itemsPerPage)
},
orderByItems () {
return [
{ text: this.$t('tags:orderByField.creationDate'), value: 'createdAt' },
{ text: this.$t('tags:orderByField.ID'), value: 'id' },
{ text: this.$t('tags:orderByField.lastModified'), value: 'updatedAt' },
{ text: this.$t('tags:orderByField.path'), value: 'path' },
{ text: this.$t('tags:orderByField.title'), value: 'title' }
]
}
},
watch: {
locale (newValue, oldValue) {
this.rebuildURL()
},
orderBy (newValue, oldValue) {
this.rebuildURL()
this.pagination.sortBy = [newValue]
},
orderByDirection (newValue, oldValue) {
this.rebuildURL()
this.pagination.sortDesc = [newValue === 1]
}
},
router,
created () {
this.$store.commit('page/SET_MODE', 'tags')
this.selection = _.compact(decodeURI(this.$route.path).split('/'))
},
mounted () {
this.locales = _.concat(
[{name: this.$t('tags:localeAny'), code: 'any'}],
(siteLangs.length > 0 ? siteLangs : [])
)
if (this.$route.query.lang) {
this.locale = this.$route.query.lang
}
if (this.$route.query.sort) {
this.orderBy = this.$route.query.sort.toLowerCase()
switch (this.orderBy) {
case 'updatedat':
this.orderBy = 'updatedAt'
break
}
this.pagination.sortBy = [this.orderBy]
}
if (this.$route.query.dir) {
this.orderByDirection = this.$route.query.dir === 'asc' ? 0 : 1
this.pagination.sortDesc = [this.orderByDirection === 1]
}
},
methods: {
toggleTag (tag) {
if (_.includes(this.selection, tag)) {
this.selection = _.without(this.selection, tag)
} else {
this.selection.push(tag)
}
this.rebuildURL()
},
isSelected (tag) {
return _.includes(this.selection, tag)
},
rebuildURL () {
let urlObj = {
path: '/' + this.selection.join('/')
}
if (this.locale !== `any`) {
_.set(urlObj, 'query.lang', this.locale)
}
if (this.orderBy !== `TITLE`) {
_.set(urlObj, 'query.sort', this.orderBy.toLowerCase())
}
if (this.orderByDirection !== 0) {
_.set(urlObj, 'query.dir', this.orderByDirection === 0 ? `asc` : `desc`)
}
this.$router.push(urlObj)
},
goTo (page) {
window.location.assign(`/${page.locale}/${page.path}`)
}
},
apollo: {
tags: {
query: tagsQuery,
fetchPolicy: 'cache-and-network',
update: (data) => _.cloneDeep(data.pages.tags),
watchLoading (isLoading) {
this.$store.commit(`loading${isLoading ? 'Start' : 'Stop'}`, 'tags-refresh')
}
},
pages: {
query: pagesQuery,
fetchPolicy: 'cache-and-network',
update: (data) => _.cloneDeep(data.pages.list),
watchLoading (isLoading) {
this.isLoading = isLoading
this.$store.commit(`loading${isLoading ? 'Start' : 'Stop'}`, 'pages-refresh')
},
variables () {
return {
locale: this.locale === 'any' ? null : this.locale,
tags: this.selection
}
},
skip () {
return this.selection.length < 1
}
}
}
}
</script>
<style lang='scss'>
.tags-search {
.v-input__control {
min-height: initial !important;
}
.v-input__prepend-outer {
margin-top: 8px !important;
}
}
</style>
<template lang='pug'>
v-app
.unauthorized
.unauthorized-content
img.animated.fadeIn(src='/_assets-legacy/svg/icon-delete-shield.svg', alt='Unauthorized')
.headline {{$t('unauthorized.title')}}
.subtitle-1.mt-3 {{$t('unauthorized.action.' + action)}}
v-btn.mt-5(href='/login', x-large)
v-icon(left) mdi-login
span {{$t('unauthorized.login')}}
v-btn.mt-5(color='red lighten-4', href='javascript:window.history.go(-1);', outlined)
v-icon(left) mdi-arrow-left
span {{$t('unauthorized.goback')}}
</template>
<script>
export default {
props: {
action: {
type: String,
default: 'view'
}
},
data() {
return { }
}
}
</script>
<style lang='scss'>
</style>
This diff was suppressed by a .gitattributes entry.
This diff was suppressed by a .gitattributes entry.
This diff was suppressed by a .gitattributes entry.
This diff was suppressed by a .gitattributes entry.
This diff was suppressed by a .gitattributes entry.
This diff was suppressed by a .gitattributes entry.
This diff was suppressed by a .gitattributes entry.
This diff was suppressed by a .gitattributes entry.
This diff was suppressed by a .gitattributes entry.
This diff was suppressed by a .gitattributes entry.
This diff was suppressed by a .gitattributes entry.
This diff was suppressed by a .gitattributes entry.
This diff was suppressed by a .gitattributes entry.
This diff was suppressed by a .gitattributes entry.
This diff was suppressed by a .gitattributes entry.
This diff was suppressed by a .gitattributes entry.
This diff was suppressed by a .gitattributes entry.
This diff was suppressed by a .gitattributes entry.
This diff was suppressed by a .gitattributes entry.
This diff was suppressed by a .gitattributes entry.
This diff was suppressed by a .gitattributes entry.
This diff was suppressed by a .gitattributes entry.
query($locale: String!, $namespace: String!) {
localization {
translations(locale:$locale, namespace:$namespace) {
key
value
}
}
}
mutation($id: Int!) {
pages {
delete(id: $id) {
responseResult {
succeeded
errorCode
slug
message
}
}
}
}
mutation($id: Int!, $destinationPath: String!, $destinationLocale: String!) {
pages {
move(id: $id, destinationPath: $destinationPath, destinationLocale: $destinationLocale) {
responseResult {
succeeded
errorCode
slug
message
}
}
}
}
query ($limit: Int, $orderBy: PageOrderBy, $orderByDirection: PageOrderByDirection, $tags: [String!], $locale: String) {
pages {
list(limit: $limit, orderBy: $orderBy, orderByDirection: $orderByDirection, tags: $tags, locale: $locale) {
id
locale
path
title
description
createdAt
updatedAt
tags
}
}
}
query ($query: String!) {
pages {
search(query:$query) {
results {
id
title
description
path
locale
}
suggestions
totalHits
}
}
}
query {
pages {
tags {
tag
title
}
}
}
query ($parent: Int!, $mode: PageTreeMode!, $locale: String!) {
pages {
tree(parent: $parent, mode: $mode, locale: $locale) {
id
path
title
isFolder
pageId
parent
}
}
}
mutation ($id: Int!) {
assets {
deleteAsset(id: $id) {
responseResult {
succeeded
errorCode
slug
message
}
}
}
}
mutation ($id: Int!, $filename: String!) {
assets {
renameAsset(id:$id, filename: $filename) {
responseResult {
succeeded
errorCode
slug
message
}
}
}
}
mutation ($parentFolderId: Int!, $slug: String!) {
assets {
createFolder(parentFolderId:$parentFolderId, slug: $slug) {
responseResult {
succeeded
errorCode
slug
message
}
}
}
}
query ($parentFolderId: Int!) {
assets {
folders(parentFolderId:$parentFolderId) {
id
name
slug
}
}
}
query ($folderId: Int!, $kind: AssetKind!) {
assets {
list(folderId:$folderId, kind: $kind) {
id
filename
ext
kind
mime
fileSize
createdAt
updatedAt
}
}
}
// =======================================
// Fetch polyfill
// =======================================
// Requirement: Safari 9 and below, IE 11 and below
if (!window.fetch) {
require('whatwg-fetch')
}
import filesize from 'filesize.js'
import _ from 'lodash'
/* global siteConfig */
const helpers = {
/**
* Convert bytes to humanized form
* @param {number} rawSize Size in bytes
* @returns {string} Humanized file size
*/
filesize (rawSize) {
return _.toUpper(filesize(rawSize))
},
/**
* Convert raw path to safe path
* @param {string} rawPath Raw path
* @returns {string} Safe path
*/
makeSafePath (rawPath) {
let rawParts = _.split(_.trim(rawPath), '/')
rawParts = _.map(rawParts, (r) => {
return _.kebabCase(_.deburr(_.trim(r)))
})
return _.join(_.filter(rawParts, (r) => { return !_.isEmpty(r) }), '/')
},
resolvePath (path) {
if (_.startsWith(path, '/')) { path = path.substring(1) }
return `${siteConfig.path}${path}`
},
/**
* Set Input Selection
* @param {DOMElement} input The input element
* @param {number} startPos The starting position
* @param {nunber} endPos The ending position
*/
setInputSelection (input, startPos, endPos) {
input.focus()
if (typeof input.selectionStart !== 'undefined') {
input.selectionStart = startPos
input.selectionEnd = endPos
} else if (document.selection && document.selection.createRange) {
// IE branch
input.select()
var range = document.selection.createRange()
range.collapse(true)
range.moveEnd('character', endPos)
range.moveStart('character', startPos)
range.select()
}
}
}
export default {
install(Vue) {
Vue.$helpers = helpers
Object.defineProperties(Vue.prototype, {
$helpers: {
get() {
return helpers
}
}
})
}
}
require('core-js/stable')
require('regenerator-runtime/runtime')
/* eslint-disable no-unused-expressions */
switch (window.document.documentElement.lang) {
case 'ar':
case 'fa':
import(/* webpackChunkName: "fonts-arabic" */ './scss/fonts/arabic.scss')
break
default:
import(/* webpackChunkName: "fonts-default" */ './scss/fonts/default.scss')
break
}
require('modernizr')
require('./scss/app.scss')
import(/* webpackChunkName: "theme" */ './themes/default/scss/app.scss')
import(/* webpackChunkName: "mdi" */ '@mdi/font/css/materialdesignicons.css')
require('./helpers/compatibility.js')
require('./client-app.js')
import(/* webpackChunkName: "theme" */ './themes/default/js/app.js')
@charset "UTF-8";
/*!
* animate.css -http://daneden.me/animate
* Version - 3.5.1
* Licensed under the MIT license - http://opensource.org/licenses/MIT
*
* Copyright (c) 2016 Daniel Eden
*/
.animated {
-webkit-animation-duration: 1s;
animation-duration: 1s;
-webkit-animation-fill-mode: both;
animation-fill-mode: both;
&.infinite {
-webkit-animation-iteration-count: infinite;
animation-iteration-count: infinite;
}
&.hinge {
-webkit-animation-duration: 2s;
animation-duration: 2s;
}
&.flipOutX, &.flipOutY, &.bounceIn, &.bounceOut {
-webkit-animation-duration: .75s;
animation-duration: .75s;
}
}
@-webkit-keyframes bounce {
from, 20%, 53%, 80%, to {
-webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
-webkit-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
}
40%, 43% {
-webkit-animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);
animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);
-webkit-transform: translate3d(0, -30px, 0);
transform: translate3d(0, -30px, 0);
}
70% {
-webkit-animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);
animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);
-webkit-transform: translate3d(0, -15px, 0);
transform: translate3d(0, -15px, 0);
}
90% {
-webkit-transform: translate3d(0, -4px, 0);
transform: translate3d(0, -4px, 0);
}
}
@keyframes bounce {
from, 20%, 53%, 80%, to {
-webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
-webkit-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
}
40%, 43% {
-webkit-animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);
animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);
-webkit-transform: translate3d(0, -30px, 0);
transform: translate3d(0, -30px, 0);
}
70% {
-webkit-animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);
animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);
-webkit-transform: translate3d(0, -15px, 0);
transform: translate3d(0, -15px, 0);
}
90% {
-webkit-transform: translate3d(0, -4px, 0);
transform: translate3d(0, -4px, 0);
}
}
.bounce {
-webkit-animation-name: bounce;
animation-name: bounce;
-webkit-transform-origin: center bottom;
transform-origin: center bottom;
}
@-webkit-keyframes flash {
from, 50%, to {
opacity: 1;
}
25%, 75% {
opacity: 0;
}
}
@keyframes flash {
from, 50%, to {
opacity: 1;
}
25%, 75% {
opacity: 0;
}
}
.flash {
-webkit-animation-name: flash;
animation-name: flash;
}
/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */
@-webkit-keyframes pulse {
from {
-webkit-transform: scale3d(1, 1, 1);
transform: scale3d(1, 1, 1);
}
50% {
-webkit-transform: scale3d(1.05, 1.05, 1.05);
transform: scale3d(1.05, 1.05, 1.05);
}
to {
-webkit-transform: scale3d(1, 1, 1);
transform: scale3d(1, 1, 1);
}
}
@keyframes pulse {
from {
-webkit-transform: scale3d(1, 1, 1);
transform: scale3d(1, 1, 1);
}
50% {
-webkit-transform: scale3d(1.05, 1.05, 1.05);
transform: scale3d(1.05, 1.05, 1.05);
}
to {
-webkit-transform: scale3d(1, 1, 1);
transform: scale3d(1, 1, 1);
}
}
.pulse {
-webkit-animation-name: pulse;
animation-name: pulse;
}
@-webkit-keyframes rubberBand {
from {
-webkit-transform: scale3d(1, 1, 1);
transform: scale3d(1, 1, 1);
}
30% {
-webkit-transform: scale3d(1.25, 0.75, 1);
transform: scale3d(1.25, 0.75, 1);
}
40% {
-webkit-transform: scale3d(0.75, 1.25, 1);
transform: scale3d(0.75, 1.25, 1);
}
50% {
-webkit-transform: scale3d(1.15, 0.85, 1);
transform: scale3d(1.15, 0.85, 1);
}
65% {
-webkit-transform: scale3d(0.95, 1.05, 1);
transform: scale3d(0.95, 1.05, 1);
}
75% {
-webkit-transform: scale3d(1.05, 0.95, 1);
transform: scale3d(1.05, 0.95, 1);
}
to {
-webkit-transform: scale3d(1, 1, 1);
transform: scale3d(1, 1, 1);
}
}
@keyframes rubberBand {
from {
-webkit-transform: scale3d(1, 1, 1);
transform: scale3d(1, 1, 1);
}
30% {
-webkit-transform: scale3d(1.25, 0.75, 1);
transform: scale3d(1.25, 0.75, 1);
}
40% {
-webkit-transform: scale3d(0.75, 1.25, 1);
transform: scale3d(0.75, 1.25, 1);
}
50% {
-webkit-transform: scale3d(1.15, 0.85, 1);
transform: scale3d(1.15, 0.85, 1);
}
65% {
-webkit-transform: scale3d(0.95, 1.05, 1);
transform: scale3d(0.95, 1.05, 1);
}
75% {
-webkit-transform: scale3d(1.05, 0.95, 1);
transform: scale3d(1.05, 0.95, 1);
}
to {
-webkit-transform: scale3d(1, 1, 1);
transform: scale3d(1, 1, 1);
}
}
.rubberBand {
-webkit-animation-name: rubberBand;
animation-name: rubberBand;
}
@-webkit-keyframes shake {
from, to {
-webkit-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
}
10%, 30%, 50%, 70%, 90% {
-webkit-transform: translate3d(-10px, 0, 0);
transform: translate3d(-10px, 0, 0);
}
20%, 40%, 60%, 80% {
-webkit-transform: translate3d(10px, 0, 0);
transform: translate3d(10px, 0, 0);
}
}
@keyframes shake {
from, to {
-webkit-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
}
10%, 30%, 50%, 70%, 90% {
-webkit-transform: translate3d(-10px, 0, 0);
transform: translate3d(-10px, 0, 0);
}
20%, 40%, 60%, 80% {
-webkit-transform: translate3d(10px, 0, 0);
transform: translate3d(10px, 0, 0);
}
}
.shake {
-webkit-animation-name: shake;
animation-name: shake;
}
@-webkit-keyframes headShake {
0% {
-webkit-transform: translateX(0);
transform: translateX(0);
}
6.5% {
-webkit-transform: translateX(-6px) rotateY(-9deg);
transform: translateX(-6px) rotateY(-9deg);
}
18.5% {
-webkit-transform: translateX(5px) rotateY(7deg);
transform: translateX(5px) rotateY(7deg);
}
31.5% {
-webkit-transform: translateX(-3px) rotateY(-5deg);
transform: translateX(-3px) rotateY(-5deg);
}
43.5% {
-webkit-transform: translateX(2px) rotateY(3deg);
transform: translateX(2px) rotateY(3deg);
}
50% {
-webkit-transform: translateX(0);
transform: translateX(0);
}
}
@keyframes headShake {
0% {
-webkit-transform: translateX(0);
transform: translateX(0);
}
6.5% {
-webkit-transform: translateX(-6px) rotateY(-9deg);
transform: translateX(-6px) rotateY(-9deg);
}
18.5% {
-webkit-transform: translateX(5px) rotateY(7deg);
transform: translateX(5px) rotateY(7deg);
}
31.5% {
-webkit-transform: translateX(-3px) rotateY(-5deg);
transform: translateX(-3px) rotateY(-5deg);
}
43.5% {
-webkit-transform: translateX(2px) rotateY(3deg);
transform: translateX(2px) rotateY(3deg);
}
50% {
-webkit-transform: translateX(0);
transform: translateX(0);
}
}
.headShake {
-webkit-animation-timing-function: ease-in-out;
animation-timing-function: ease-in-out;
-webkit-animation-name: headShake;
animation-name: headShake;
}
@-webkit-keyframes swing {
20% {
-webkit-transform: rotate3d(0, 0, 1, 15deg);
transform: rotate3d(0, 0, 1, 15deg);
}
40% {
-webkit-transform: rotate3d(0, 0, 1, -10deg);
transform: rotate3d(0, 0, 1, -10deg);
}
60% {
-webkit-transform: rotate3d(0, 0, 1, 5deg);
transform: rotate3d(0, 0, 1, 5deg);
}
80% {
-webkit-transform: rotate3d(0, 0, 1, -5deg);
transform: rotate3d(0, 0, 1, -5deg);
}
to {
-webkit-transform: rotate3d(0, 0, 1, 0deg);
transform: rotate3d(0, 0, 1, 0deg);
}
}
@keyframes swing {
20% {
-webkit-transform: rotate3d(0, 0, 1, 15deg);
transform: rotate3d(0, 0, 1, 15deg);
}
40% {
-webkit-transform: rotate3d(0, 0, 1, -10deg);
transform: rotate3d(0, 0, 1, -10deg);
}
60% {
-webkit-transform: rotate3d(0, 0, 1, 5deg);
transform: rotate3d(0, 0, 1, 5deg);
}
80% {
-webkit-transform: rotate3d(0, 0, 1, -5deg);
transform: rotate3d(0, 0, 1, -5deg);
}
to {
-webkit-transform: rotate3d(0, 0, 1, 0deg);
transform: rotate3d(0, 0, 1, 0deg);
}
}
.swing {
-webkit-transform-origin: top center;
transform-origin: top center;
-webkit-animation-name: swing;
animation-name: swing;
}
@-webkit-keyframes tada {
from {
-webkit-transform: scale3d(1, 1, 1);
transform: scale3d(1, 1, 1);
}
10%, 20% {
-webkit-transform: scale3d(0.9, 0.9, 0.9) rotate3d(0, 0, 1, -3deg);
transform: scale3d(0.9, 0.9, 0.9) rotate3d(0, 0, 1, -3deg);
}
30%, 50%, 70%, 90% {
-webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg);
transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg);
}
40%, 60%, 80% {
-webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg);
transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg);
}
to {
-webkit-transform: scale3d(1, 1, 1);
transform: scale3d(1, 1, 1);
}
}
@keyframes tada {
from {
-webkit-transform: scale3d(1, 1, 1);
transform: scale3d(1, 1, 1);
}
10%, 20% {
-webkit-transform: scale3d(0.9, 0.9, 0.9) rotate3d(0, 0, 1, -3deg);
transform: scale3d(0.9, 0.9, 0.9) rotate3d(0, 0, 1, -3deg);
}
30%, 50%, 70%, 90% {
-webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg);
transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg);
}
40%, 60%, 80% {
-webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg);
transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg);
}
to {
-webkit-transform: scale3d(1, 1, 1);
transform: scale3d(1, 1, 1);
}
}
.tada {
-webkit-animation-name: tada;
animation-name: tada;
}
/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */
@-webkit-keyframes wobble {
from {
-webkit-transform: none;
transform: none;
}
15% {
-webkit-transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg);
transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg);
}
30% {
-webkit-transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg);
transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg);
}
45% {
-webkit-transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg);
transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg);
}
60% {
-webkit-transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg);
transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg);
}
75% {
-webkit-transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg);
transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg);
}
to {
-webkit-transform: none;
transform: none;
}
}
@keyframes wobble {
from {
-webkit-transform: none;
transform: none;
}
15% {
-webkit-transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg);
transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg);
}
30% {
-webkit-transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg);
transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg);
}
45% {
-webkit-transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg);
transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg);
}
60% {
-webkit-transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg);
transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg);
}
75% {
-webkit-transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg);
transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg);
}
to {
-webkit-transform: none;
transform: none;
}
}
.wobble {
-webkit-animation-name: wobble;
animation-name: wobble;
}
@-webkit-keyframes jello {
from, 11.1%, to {
-webkit-transform: none;
transform: none;
}
22.2% {
-webkit-transform: skewX(-12.5deg) skewY(-12.5deg);
transform: skewX(-12.5deg) skewY(-12.5deg);
}
33.3% {
-webkit-transform: skewX(6.25deg) skewY(6.25deg);
transform: skewX(6.25deg) skewY(6.25deg);
}
44.4% {
-webkit-transform: skewX(-3.125deg) skewY(-3.125deg);
transform: skewX(-3.125deg) skewY(-3.125deg);
}
55.5% {
-webkit-transform: skewX(1.5625deg) skewY(1.5625deg);
transform: skewX(1.5625deg) skewY(1.5625deg);
}
66.6% {
-webkit-transform: skewX(-0.78125deg) skewY(-0.78125deg);
transform: skewX(-0.78125deg) skewY(-0.78125deg);
}
77.7% {
-webkit-transform: skewX(0.39063deg) skewY(0.39063deg);
transform: skewX(0.39063deg) skewY(0.39063deg);
}
88.8% {
-webkit-transform: skewX(-0.19531deg) skewY(-0.19531deg);
transform: skewX(-0.19531deg) skewY(-0.19531deg);
}
}
@keyframes jello {
from, 11.1%, to {
-webkit-transform: none;
transform: none;
}
22.2% {
-webkit-transform: skewX(-12.5deg) skewY(-12.5deg);
transform: skewX(-12.5deg) skewY(-12.5deg);
}
33.3% {
-webkit-transform: skewX(6.25deg) skewY(6.25deg);
transform: skewX(6.25deg) skewY(6.25deg);
}
44.4% {
-webkit-transform: skewX(-3.125deg) skewY(-3.125deg);
transform: skewX(-3.125deg) skewY(-3.125deg);
}
55.5% {
-webkit-transform: skewX(1.5625deg) skewY(1.5625deg);
transform: skewX(1.5625deg) skewY(1.5625deg);
}
66.6% {
-webkit-transform: skewX(-0.78125deg) skewY(-0.78125deg);
transform: skewX(-0.78125deg) skewY(-0.78125deg);
}
77.7% {
-webkit-transform: skewX(0.39063deg) skewY(0.39063deg);
transform: skewX(0.39063deg) skewY(0.39063deg);
}
88.8% {
-webkit-transform: skewX(-0.19531deg) skewY(-0.19531deg);
transform: skewX(-0.19531deg) skewY(-0.19531deg);
}
}
.jello {
-webkit-animation-name: jello;
animation-name: jello;
-webkit-transform-origin: center;
transform-origin: center;
}
@-webkit-keyframes bounceIn {
from, 20%, 40%, 60%, 80%, to {
-webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
}
0% {
opacity: 0;
-webkit-transform: scale3d(0.3, 0.3, 0.3);
transform: scale3d(0.3, 0.3, 0.3);
}
20% {
-webkit-transform: scale3d(1.1, 1.1, 1.1);
transform: scale3d(1.1, 1.1, 1.1);
}
40% {
-webkit-transform: scale3d(0.9, 0.9, 0.9);
transform: scale3d(0.9, 0.9, 0.9);
}
60% {
opacity: 1;
-webkit-transform: scale3d(1.03, 1.03, 1.03);
transform: scale3d(1.03, 1.03, 1.03);
}
80% {
-webkit-transform: scale3d(0.97, 0.97, 0.97);
transform: scale3d(0.97, 0.97, 0.97);
}
to {
opacity: 1;
-webkit-transform: scale3d(1, 1, 1);
transform: scale3d(1, 1, 1);
}
}
@keyframes bounceIn {
from, 20%, 40%, 60%, 80%, to {
-webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
}
0% {
opacity: 0;
-webkit-transform: scale3d(0.3, 0.3, 0.3);
transform: scale3d(0.3, 0.3, 0.3);
}
20% {
-webkit-transform: scale3d(1.1, 1.1, 1.1);
transform: scale3d(1.1, 1.1, 1.1);
}
40% {
-webkit-transform: scale3d(0.9, 0.9, 0.9);
transform: scale3d(0.9, 0.9, 0.9);
}
60% {
opacity: 1;
-webkit-transform: scale3d(1.03, 1.03, 1.03);
transform: scale3d(1.03, 1.03, 1.03);
}
80% {
-webkit-transform: scale3d(0.97, 0.97, 0.97);
transform: scale3d(0.97, 0.97, 0.97);
}
to {
opacity: 1;
-webkit-transform: scale3d(1, 1, 1);
transform: scale3d(1, 1, 1);
}
}
.bounceIn {
-webkit-animation-name: bounceIn;
animation-name: bounceIn;
}
@-webkit-keyframes bounceInDown {
from, 60%, 75%, 90%, to {
-webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
}
0% {
opacity: 0;
-webkit-transform: translate3d(0, -3000px, 0);
transform: translate3d(0, -3000px, 0);
}
60% {
opacity: 1;
-webkit-transform: translate3d(0, 25px, 0);
transform: translate3d(0, 25px, 0);
}
75% {
-webkit-transform: translate3d(0, -10px, 0);
transform: translate3d(0, -10px, 0);
}
90% {
-webkit-transform: translate3d(0, 5px, 0);
transform: translate3d(0, 5px, 0);
}
to {
-webkit-transform: none;
transform: none;
}
}
@keyframes bounceInDown {
from, 60%, 75%, 90%, to {
-webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
}
0% {
opacity: 0;
-webkit-transform: translate3d(0, -3000px, 0);
transform: translate3d(0, -3000px, 0);
}
60% {
opacity: 1;
-webkit-transform: translate3d(0, 25px, 0);
transform: translate3d(0, 25px, 0);
}
75% {
-webkit-transform: translate3d(0, -10px, 0);
transform: translate3d(0, -10px, 0);
}
90% {
-webkit-transform: translate3d(0, 5px, 0);
transform: translate3d(0, 5px, 0);
}
to {
-webkit-transform: none;
transform: none;
}
}
.bounceInDown {
-webkit-animation-name: bounceInDown;
animation-name: bounceInDown;
}
@-webkit-keyframes bounceInLeft {
from, 60%, 75%, 90%, to {
-webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
}
0% {
opacity: 0;
-webkit-transform: translate3d(-3000px, 0, 0);
transform: translate3d(-3000px, 0, 0);
}
60% {
opacity: 1;
-webkit-transform: translate3d(25px, 0, 0);
transform: translate3d(25px, 0, 0);
}
75% {
-webkit-transform: translate3d(-10px, 0, 0);
transform: translate3d(-10px, 0, 0);
}
90% {
-webkit-transform: translate3d(5px, 0, 0);
transform: translate3d(5px, 0, 0);
}
to {
-webkit-transform: none;
transform: none;
}
}
@keyframes bounceInLeft {
from, 60%, 75%, 90%, to {
-webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
}
0% {
opacity: 0;
-webkit-transform: translate3d(-3000px, 0, 0);
transform: translate3d(-3000px, 0, 0);
}
60% {
opacity: 1;
-webkit-transform: translate3d(25px, 0, 0);
transform: translate3d(25px, 0, 0);
}
75% {
-webkit-transform: translate3d(-10px, 0, 0);
transform: translate3d(-10px, 0, 0);
}
90% {
-webkit-transform: translate3d(5px, 0, 0);
transform: translate3d(5px, 0, 0);
}
to {
-webkit-transform: none;
transform: none;
}
}
.bounceInLeft {
-webkit-animation-name: bounceInLeft;
animation-name: bounceInLeft;
}
@-webkit-keyframes bounceInRight {
from, 60%, 75%, 90%, to {
-webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
}
from {
opacity: 0;
-webkit-transform: translate3d(3000px, 0, 0);
transform: translate3d(3000px, 0, 0);
}
60% {
opacity: 1;
-webkit-transform: translate3d(-25px, 0, 0);
transform: translate3d(-25px, 0, 0);
}
75% {
-webkit-transform: translate3d(10px, 0, 0);
transform: translate3d(10px, 0, 0);
}
90% {
-webkit-transform: translate3d(-5px, 0, 0);
transform: translate3d(-5px, 0, 0);
}
to {
-webkit-transform: none;
transform: none;
}
}
@keyframes bounceInRight {
from, 60%, 75%, 90%, to {
-webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
}
from {
opacity: 0;
-webkit-transform: translate3d(3000px, 0, 0);
transform: translate3d(3000px, 0, 0);
}
60% {
opacity: 1;
-webkit-transform: translate3d(-25px, 0, 0);
transform: translate3d(-25px, 0, 0);
}
75% {
-webkit-transform: translate3d(10px, 0, 0);
transform: translate3d(10px, 0, 0);
}
90% {
-webkit-transform: translate3d(-5px, 0, 0);
transform: translate3d(-5px, 0, 0);
}
to {
-webkit-transform: none;
transform: none;
}
}
.bounceInRight {
-webkit-animation-name: bounceInRight;
animation-name: bounceInRight;
}
@-webkit-keyframes bounceInUp {
from, 60%, 75%, 90%, to {
-webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
}
from {
opacity: 0;
-webkit-transform: translate3d(0, 3000px, 0);
transform: translate3d(0, 3000px, 0);
}
60% {
opacity: 1;
-webkit-transform: translate3d(0, -20px, 0);
transform: translate3d(0, -20px, 0);
}
75% {
-webkit-transform: translate3d(0, 10px, 0);
transform: translate3d(0, 10px, 0);
}
90% {
-webkit-transform: translate3d(0, -5px, 0);
transform: translate3d(0, -5px, 0);
}
to {
-webkit-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
}
}
@keyframes bounceInUp {
from, 60%, 75%, 90%, to {
-webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
}
from {
opacity: 0;
-webkit-transform: translate3d(0, 3000px, 0);
transform: translate3d(0, 3000px, 0);
}
60% {
opacity: 1;
-webkit-transform: translate3d(0, -20px, 0);
transform: translate3d(0, -20px, 0);
}
75% {
-webkit-transform: translate3d(0, 10px, 0);
transform: translate3d(0, 10px, 0);
}
90% {
-webkit-transform: translate3d(0, -5px, 0);
transform: translate3d(0, -5px, 0);
}
to {
-webkit-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
}
}
.bounceInUp {
-webkit-animation-name: bounceInUp;
animation-name: bounceInUp;
}
@-webkit-keyframes bounceOut {
20% {
-webkit-transform: scale3d(0.9, 0.9, 0.9);
transform: scale3d(0.9, 0.9, 0.9);
}
50%, 55% {
opacity: 1;
-webkit-transform: scale3d(1.1, 1.1, 1.1);
transform: scale3d(1.1, 1.1, 1.1);
}
to {
opacity: 0;
-webkit-transform: scale3d(0.3, 0.3, 0.3);
transform: scale3d(0.3, 0.3, 0.3);
}
}
@keyframes bounceOut {
20% {
-webkit-transform: scale3d(0.9, 0.9, 0.9);
transform: scale3d(0.9, 0.9, 0.9);
}
50%, 55% {
opacity: 1;
-webkit-transform: scale3d(1.1, 1.1, 1.1);
transform: scale3d(1.1, 1.1, 1.1);
}
to {
opacity: 0;
-webkit-transform: scale3d(0.3, 0.3, 0.3);
transform: scale3d(0.3, 0.3, 0.3);
}
}
.bounceOut {
-webkit-animation-name: bounceOut;
animation-name: bounceOut;
}
@-webkit-keyframes bounceOutDown {
20% {
-webkit-transform: translate3d(0, 10px, 0);
transform: translate3d(0, 10px, 0);
}
40%, 45% {
opacity: 1;
-webkit-transform: translate3d(0, -20px, 0);
transform: translate3d(0, -20px, 0);
}
to {
opacity: 0;
-webkit-transform: translate3d(0, 2000px, 0);
transform: translate3d(0, 2000px, 0);
}
}
@keyframes bounceOutDown {
20% {
-webkit-transform: translate3d(0, 10px, 0);
transform: translate3d(0, 10px, 0);
}
40%, 45% {
opacity: 1;
-webkit-transform: translate3d(0, -20px, 0);
transform: translate3d(0, -20px, 0);
}
to {
opacity: 0;
-webkit-transform: translate3d(0, 2000px, 0);
transform: translate3d(0, 2000px, 0);
}
}
.bounceOutDown {
-webkit-animation-name: bounceOutDown;
animation-name: bounceOutDown;
}
@-webkit-keyframes bounceOutLeft {
20% {
opacity: 1;
-webkit-transform: translate3d(20px, 0, 0);
transform: translate3d(20px, 0, 0);
}
to {
opacity: 0;
-webkit-transform: translate3d(-2000px, 0, 0);
transform: translate3d(-2000px, 0, 0);
}
}
@keyframes bounceOutLeft {
20% {
opacity: 1;
-webkit-transform: translate3d(20px, 0, 0);
transform: translate3d(20px, 0, 0);
}
to {
opacity: 0;
-webkit-transform: translate3d(-2000px, 0, 0);
transform: translate3d(-2000px, 0, 0);
}
}
.bounceOutLeft {
-webkit-animation-name: bounceOutLeft;
animation-name: bounceOutLeft;
}
@-webkit-keyframes bounceOutRight {
20% {
opacity: 1;
-webkit-transform: translate3d(-20px, 0, 0);
transform: translate3d(-20px, 0, 0);
}
to {
opacity: 0;
-webkit-transform: translate3d(2000px, 0, 0);
transform: translate3d(2000px, 0, 0);
}
}
@keyframes bounceOutRight {
20% {
opacity: 1;
-webkit-transform: translate3d(-20px, 0, 0);
transform: translate3d(-20px, 0, 0);
}
to {
opacity: 0;
-webkit-transform: translate3d(2000px, 0, 0);
transform: translate3d(2000px, 0, 0);
}
}
.bounceOutRight {
-webkit-animation-name: bounceOutRight;
animation-name: bounceOutRight;
}
@-webkit-keyframes bounceOutUp {
20% {
-webkit-transform: translate3d(0, -10px, 0);
transform: translate3d(0, -10px, 0);
}
40%, 45% {
opacity: 1;
-webkit-transform: translate3d(0, 20px, 0);
transform: translate3d(0, 20px, 0);
}
to {
opacity: 0;
-webkit-transform: translate3d(0, -2000px, 0);
transform: translate3d(0, -2000px, 0);
}
}
@keyframes bounceOutUp {
20% {
-webkit-transform: translate3d(0, -10px, 0);
transform: translate3d(0, -10px, 0);
}
40%, 45% {
opacity: 1;
-webkit-transform: translate3d(0, 20px, 0);
transform: translate3d(0, 20px, 0);
}
to {
opacity: 0;
-webkit-transform: translate3d(0, -2000px, 0);
transform: translate3d(0, -2000px, 0);
}
}
.bounceOutUp {
-webkit-animation-name: bounceOutUp;
animation-name: bounceOutUp;
}
@-webkit-keyframes fadeIn {
from {
opacity: 0;
}
to {
opacity: 1;
}
}
@keyframes fadeIn {
from {
opacity: 0;
}
to {
opacity: 1;
}
}
.fadeIn {
-webkit-animation-name: fadeIn;
animation-name: fadeIn;
}
@-webkit-keyframes fadeInDown {
from {
opacity: 0;
-webkit-transform: translate3d(0, -100%, 0);
transform: translate3d(0, -100%, 0);
}
to {
opacity: 1;
-webkit-transform: none;
transform: none;
}
}
@keyframes fadeInDown {
from {
opacity: 0;
-webkit-transform: translate3d(0, -100%, 0);
transform: translate3d(0, -100%, 0);
}
to {
opacity: 1;
-webkit-transform: none;
transform: none;
}
}
.fadeInDown {
-webkit-animation-name: fadeInDown;
animation-name: fadeInDown;
}
@-webkit-keyframes fadeInDownBig {
from {
opacity: 0;
-webkit-transform: translate3d(0, -2000px, 0);
transform: translate3d(0, -2000px, 0);
}
to {
opacity: 1;
-webkit-transform: none;
transform: none;
}
}
@keyframes fadeInDownBig {
from {
opacity: 0;
-webkit-transform: translate3d(0, -2000px, 0);
transform: translate3d(0, -2000px, 0);
}
to {
opacity: 1;
-webkit-transform: none;
transform: none;
}
}
.fadeInDownBig {
-webkit-animation-name: fadeInDownBig;
animation-name: fadeInDownBig;
}
@-webkit-keyframes fadeInLeft {
from {
opacity: 0;
-webkit-transform: translate3d(-100%, 0, 0);
transform: translate3d(-100%, 0, 0);
}
to {
opacity: 1;
-webkit-transform: none;
transform: none;
}
}
@keyframes fadeInLeft {
from {
opacity: 0;
-webkit-transform: translate3d(-100%, 0, 0);
transform: translate3d(-100%, 0, 0);
}
to {
opacity: 1;
-webkit-transform: none;
transform: none;
}
}
.fadeInLeft {
-webkit-animation-name: fadeInLeft;
animation-name: fadeInLeft;
}
@-webkit-keyframes fadeInLeftBig {
from {
opacity: 0;
-webkit-transform: translate3d(-2000px, 0, 0);
transform: translate3d(-2000px, 0, 0);
}
to {
opacity: 1;
-webkit-transform: none;
transform: none;
}
}
@keyframes fadeInLeftBig {
from {
opacity: 0;
-webkit-transform: translate3d(-2000px, 0, 0);
transform: translate3d(-2000px, 0, 0);
}
to {
opacity: 1;
-webkit-transform: none;
transform: none;
}
}
.fadeInLeftBig {
-webkit-animation-name: fadeInLeftBig;
animation-name: fadeInLeftBig;
}
@-webkit-keyframes fadeInRight {
from {
opacity: 0;
-webkit-transform: translate3d(100%, 0, 0);
transform: translate3d(100%, 0, 0);
}
to {
opacity: 1;
-webkit-transform: none;
transform: none;
}
}
@keyframes fadeInRight {
from {
opacity: 0;
-webkit-transform: translate3d(100%, 0, 0);
transform: translate3d(100%, 0, 0);
}
to {
opacity: 1;
-webkit-transform: none;
transform: none;
}
}
.fadeInRight {
-webkit-animation-name: fadeInRight;
animation-name: fadeInRight;
}
@-webkit-keyframes fadeInRightBig {
from {
opacity: 0;
-webkit-transform: translate3d(2000px, 0, 0);
transform: translate3d(2000px, 0, 0);
}
to {
opacity: 1;
-webkit-transform: none;
transform: none;
}
}
@keyframes fadeInRightBig {
from {
opacity: 0;
-webkit-transform: translate3d(2000px, 0, 0);
transform: translate3d(2000px, 0, 0);
}
to {
opacity: 1;
-webkit-transform: none;
transform: none;
}
}
.fadeInRightBig {
-webkit-animation-name: fadeInRightBig;
animation-name: fadeInRightBig;
}
@-webkit-keyframes fadeInUp {
from {
opacity: 0;
-webkit-transform: translate3d(0, 100%, 0);
transform: translate3d(0, 100%, 0);
}
to {
opacity: 1;
-webkit-transform: none;
transform: none;
}
}
@keyframes fadeInUp {
from {
opacity: 0;
-webkit-transform: translate3d(0, 100%, 0);
transform: translate3d(0, 100%, 0);
}
to {
opacity: 1;
-webkit-transform: none;
transform: none;
}
}
.fadeInUp {
-webkit-animation-name: fadeInUp;
animation-name: fadeInUp;
}
@-webkit-keyframes fadeInUpBig {
from {
opacity: 0;
-webkit-transform: translate3d(0, 2000px, 0);
transform: translate3d(0, 2000px, 0);
}
to {
opacity: 1;
-webkit-transform: none;
transform: none;
}
}
@keyframes fadeInUpBig {
from {
opacity: 0;
-webkit-transform: translate3d(0, 2000px, 0);
transform: translate3d(0, 2000px, 0);
}
to {
opacity: 1;
-webkit-transform: none;
transform: none;
}
}
.fadeInUpBig {
-webkit-animation-name: fadeInUpBig;
animation-name: fadeInUpBig;
}
@-webkit-keyframes fadeOut {
from {
opacity: 1;
}
to {
opacity: 0;
}
}
@keyframes fadeOut {
from {
opacity: 1;
}
to {
opacity: 0;
}
}
.fadeOut {
-webkit-animation-name: fadeOut;
animation-name: fadeOut;
}
@-webkit-keyframes fadeOutDown {
from {
opacity: 1;
}
to {
opacity: 0;
-webkit-transform: translate3d(0, 100%, 0);
transform: translate3d(0, 100%, 0);
}
}
@keyframes fadeOutDown {
from {
opacity: 1;
}
to {
opacity: 0;
-webkit-transform: translate3d(0, 100%, 0);
transform: translate3d(0, 100%, 0);
}
}
.fadeOutDown {
-webkit-animation-name: fadeOutDown;
animation-name: fadeOutDown;
}
@-webkit-keyframes fadeOutDownBig {
from {
opacity: 1;
}
to {
opacity: 0;
-webkit-transform: translate3d(0, 2000px, 0);
transform: translate3d(0, 2000px, 0);
}
}
@keyframes fadeOutDownBig {
from {
opacity: 1;
}
to {
opacity: 0;
-webkit-transform: translate3d(0, 2000px, 0);
transform: translate3d(0, 2000px, 0);
}
}
.fadeOutDownBig {
-webkit-animation-name: fadeOutDownBig;
animation-name: fadeOutDownBig;
}
@-webkit-keyframes fadeOutLeft {
from {
opacity: 1;
}
to {
opacity: 0;
-webkit-transform: translate3d(-100%, 0, 0);
transform: translate3d(-100%, 0, 0);
}
}
@keyframes fadeOutLeft {
from {
opacity: 1;
}
to {
opacity: 0;
-webkit-transform: translate3d(-100%, 0, 0);
transform: translate3d(-100%, 0, 0);
}
}
.fadeOutLeft {
-webkit-animation-name: fadeOutLeft;
animation-name: fadeOutLeft;
}
@-webkit-keyframes fadeOutLeftBig {
from {
opacity: 1;
}
to {
opacity: 0;
-webkit-transform: translate3d(-2000px, 0, 0);
transform: translate3d(-2000px, 0, 0);
}
}
@keyframes fadeOutLeftBig {
from {
opacity: 1;
}
to {
opacity: 0;
-webkit-transform: translate3d(-2000px, 0, 0);
transform: translate3d(-2000px, 0, 0);
}
}
.fadeOutLeftBig {
-webkit-animation-name: fadeOutLeftBig;
animation-name: fadeOutLeftBig;
}
@-webkit-keyframes fadeOutRight {
from {
opacity: 1;
}
to {
opacity: 0;
-webkit-transform: translate3d(100%, 0, 0);
transform: translate3d(100%, 0, 0);
}
}
@keyframes fadeOutRight {
from {
opacity: 1;
}
to {
opacity: 0;
-webkit-transform: translate3d(100%, 0, 0);
transform: translate3d(100%, 0, 0);
}
}
.fadeOutRight {
-webkit-animation-name: fadeOutRight;
animation-name: fadeOutRight;
}
@-webkit-keyframes fadeOutRightBig {
from {
opacity: 1;
}
to {
opacity: 0;
-webkit-transform: translate3d(2000px, 0, 0);
transform: translate3d(2000px, 0, 0);
}
}
@keyframes fadeOutRightBig {
from {
opacity: 1;
}
to {
opacity: 0;
-webkit-transform: translate3d(2000px, 0, 0);
transform: translate3d(2000px, 0, 0);
}
}
.fadeOutRightBig {
-webkit-animation-name: fadeOutRightBig;
animation-name: fadeOutRightBig;
}
@-webkit-keyframes fadeOutUp {
from {
opacity: 1;
}
to {
opacity: 0;
-webkit-transform: translate3d(0, -100%, 0);
transform: translate3d(0, -100%, 0);
}
}
@keyframes fadeOutUp {
from {
opacity: 1;
}
to {
opacity: 0;
-webkit-transform: translate3d(0, -100%, 0);
transform: translate3d(0, -100%, 0);
}
}
.fadeOutUp {
-webkit-animation-name: fadeOutUp;
animation-name: fadeOutUp;
}
@-webkit-keyframes fadeOutUpBig {
from {
opacity: 1;
}
to {
opacity: 0;
-webkit-transform: translate3d(0, -2000px, 0);
transform: translate3d(0, -2000px, 0);
}
}
@keyframes fadeOutUpBig {
from {
opacity: 1;
}
to {
opacity: 0;
-webkit-transform: translate3d(0, -2000px, 0);
transform: translate3d(0, -2000px, 0);
}
}
.fadeOutUpBig {
-webkit-animation-name: fadeOutUpBig;
animation-name: fadeOutUpBig;
}
@-webkit-keyframes flip {
from {
-webkit-transform: perspective(400px) rotate3d(0, 1, 0, -360deg);
transform: perspective(400px) rotate3d(0, 1, 0, -360deg);
-webkit-animation-timing-function: ease-out;
animation-timing-function: ease-out;
}
40% {
-webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg);
transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg);
-webkit-animation-timing-function: ease-out;
animation-timing-function: ease-out;
}
50% {
-webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg);
transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg);
-webkit-animation-timing-function: ease-in;
animation-timing-function: ease-in;
}
80% {
-webkit-transform: perspective(400px) scale3d(0.95, 0.95, 0.95);
transform: perspective(400px) scale3d(0.95, 0.95, 0.95);
-webkit-animation-timing-function: ease-in;
animation-timing-function: ease-in;
}
to {
-webkit-transform: perspective(400px);
transform: perspective(400px);
-webkit-animation-timing-function: ease-in;
animation-timing-function: ease-in;
}
}
@keyframes flip {
from {
-webkit-transform: perspective(400px) rotate3d(0, 1, 0, -360deg);
transform: perspective(400px) rotate3d(0, 1, 0, -360deg);
-webkit-animation-timing-function: ease-out;
animation-timing-function: ease-out;
}
40% {
-webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg);
transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -190deg);
-webkit-animation-timing-function: ease-out;
animation-timing-function: ease-out;
}
50% {
-webkit-transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg);
transform: perspective(400px) translate3d(0, 0, 150px) rotate3d(0, 1, 0, -170deg);
-webkit-animation-timing-function: ease-in;
animation-timing-function: ease-in;
}
80% {
-webkit-transform: perspective(400px) scale3d(0.95, 0.95, 0.95);
transform: perspective(400px) scale3d(0.95, 0.95, 0.95);
-webkit-animation-timing-function: ease-in;
animation-timing-function: ease-in;
}
to {
-webkit-transform: perspective(400px);
transform: perspective(400px);
-webkit-animation-timing-function: ease-in;
animation-timing-function: ease-in;
}
}
.animated.flip {
-webkit-backface-visibility: visible;
backface-visibility: visible;
-webkit-animation-name: flip;
animation-name: flip;
}
@-webkit-keyframes flipInX {
from {
-webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
-webkit-animation-timing-function: ease-in;
animation-timing-function: ease-in;
opacity: 0;
}
40% {
-webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg);
transform: perspective(400px) rotate3d(1, 0, 0, -20deg);
-webkit-animation-timing-function: ease-in;
animation-timing-function: ease-in;
}
60% {
-webkit-transform: perspective(400px) rotate3d(1, 0, 0, 10deg);
transform: perspective(400px) rotate3d(1, 0, 0, 10deg);
opacity: 1;
}
80% {
-webkit-transform: perspective(400px) rotate3d(1, 0, 0, -5deg);
transform: perspective(400px) rotate3d(1, 0, 0, -5deg);
}
to {
-webkit-transform: perspective(400px);
transform: perspective(400px);
}
}
@keyframes flipInX {
from {
-webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
-webkit-animation-timing-function: ease-in;
animation-timing-function: ease-in;
opacity: 0;
}
40% {
-webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg);
transform: perspective(400px) rotate3d(1, 0, 0, -20deg);
-webkit-animation-timing-function: ease-in;
animation-timing-function: ease-in;
}
60% {
-webkit-transform: perspective(400px) rotate3d(1, 0, 0, 10deg);
transform: perspective(400px) rotate3d(1, 0, 0, 10deg);
opacity: 1;
}
80% {
-webkit-transform: perspective(400px) rotate3d(1, 0, 0, -5deg);
transform: perspective(400px) rotate3d(1, 0, 0, -5deg);
}
to {
-webkit-transform: perspective(400px);
transform: perspective(400px);
}
}
.flipInX {
-webkit-backface-visibility: visible !important;
backface-visibility: visible !important;
-webkit-animation-name: flipInX;
animation-name: flipInX;
}
@-webkit-keyframes flipInY {
from {
-webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
-webkit-animation-timing-function: ease-in;
animation-timing-function: ease-in;
opacity: 0;
}
40% {
-webkit-transform: perspective(400px) rotate3d(0, 1, 0, -20deg);
transform: perspective(400px) rotate3d(0, 1, 0, -20deg);
-webkit-animation-timing-function: ease-in;
animation-timing-function: ease-in;
}
60% {
-webkit-transform: perspective(400px) rotate3d(0, 1, 0, 10deg);
transform: perspective(400px) rotate3d(0, 1, 0, 10deg);
opacity: 1;
}
80% {
-webkit-transform: perspective(400px) rotate3d(0, 1, 0, -5deg);
transform: perspective(400px) rotate3d(0, 1, 0, -5deg);
}
to {
-webkit-transform: perspective(400px);
transform: perspective(400px);
}
}
@keyframes flipInY {
from {
-webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
-webkit-animation-timing-function: ease-in;
animation-timing-function: ease-in;
opacity: 0;
}
40% {
-webkit-transform: perspective(400px) rotate3d(0, 1, 0, -20deg);
transform: perspective(400px) rotate3d(0, 1, 0, -20deg);
-webkit-animation-timing-function: ease-in;
animation-timing-function: ease-in;
}
60% {
-webkit-transform: perspective(400px) rotate3d(0, 1, 0, 10deg);
transform: perspective(400px) rotate3d(0, 1, 0, 10deg);
opacity: 1;
}
80% {
-webkit-transform: perspective(400px) rotate3d(0, 1, 0, -5deg);
transform: perspective(400px) rotate3d(0, 1, 0, -5deg);
}
to {
-webkit-transform: perspective(400px);
transform: perspective(400px);
}
}
.flipInY {
-webkit-backface-visibility: visible !important;
backface-visibility: visible !important;
-webkit-animation-name: flipInY;
animation-name: flipInY;
}
@-webkit-keyframes flipOutX {
from {
-webkit-transform: perspective(400px);
transform: perspective(400px);
}
30% {
-webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg);
transform: perspective(400px) rotate3d(1, 0, 0, -20deg);
opacity: 1;
}
to {
-webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
opacity: 0;
}
}
@keyframes flipOutX {
from {
-webkit-transform: perspective(400px);
transform: perspective(400px);
}
30% {
-webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg);
transform: perspective(400px) rotate3d(1, 0, 0, -20deg);
opacity: 1;
}
to {
-webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
opacity: 0;
}
}
.flipOutX {
-webkit-animation-name: flipOutX;
animation-name: flipOutX;
-webkit-backface-visibility: visible !important;
backface-visibility: visible !important;
}
@-webkit-keyframes flipOutY {
from {
-webkit-transform: perspective(400px);
transform: perspective(400px);
}
30% {
-webkit-transform: perspective(400px) rotate3d(0, 1, 0, -15deg);
transform: perspective(400px) rotate3d(0, 1, 0, -15deg);
opacity: 1;
}
to {
-webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
opacity: 0;
}
}
@keyframes flipOutY {
from {
-webkit-transform: perspective(400px);
transform: perspective(400px);
}
30% {
-webkit-transform: perspective(400px) rotate3d(0, 1, 0, -15deg);
transform: perspective(400px) rotate3d(0, 1, 0, -15deg);
opacity: 1;
}
to {
-webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
opacity: 0;
}
}
.flipOutY {
-webkit-backface-visibility: visible !important;
backface-visibility: visible !important;
-webkit-animation-name: flipOutY;
animation-name: flipOutY;
}
@-webkit-keyframes lightSpeedIn {
from {
-webkit-transform: translate3d(100%, 0, 0) skewX(-30deg);
transform: translate3d(100%, 0, 0) skewX(-30deg);
opacity: 0;
}
60% {
-webkit-transform: skewX(20deg);
transform: skewX(20deg);
opacity: 1;
}
80% {
-webkit-transform: skewX(-5deg);
transform: skewX(-5deg);
opacity: 1;
}
to {
-webkit-transform: none;
transform: none;
opacity: 1;
}
}
@keyframes lightSpeedIn {
from {
-webkit-transform: translate3d(100%, 0, 0) skewX(-30deg);
transform: translate3d(100%, 0, 0) skewX(-30deg);
opacity: 0;
}
60% {
-webkit-transform: skewX(20deg);
transform: skewX(20deg);
opacity: 1;
}
80% {
-webkit-transform: skewX(-5deg);
transform: skewX(-5deg);
opacity: 1;
}
to {
-webkit-transform: none;
transform: none;
opacity: 1;
}
}
.lightSpeedIn {
-webkit-animation-name: lightSpeedIn;
animation-name: lightSpeedIn;
-webkit-animation-timing-function: ease-out;
animation-timing-function: ease-out;
}
@-webkit-keyframes lightSpeedOut {
from {
opacity: 1;
}
to {
-webkit-transform: translate3d(100%, 0, 0) skewX(30deg);
transform: translate3d(100%, 0, 0) skewX(30deg);
opacity: 0;
}
}
@keyframes lightSpeedOut {
from {
opacity: 1;
}
to {
-webkit-transform: translate3d(100%, 0, 0) skewX(30deg);
transform: translate3d(100%, 0, 0) skewX(30deg);
opacity: 0;
}
}
.lightSpeedOut {
-webkit-animation-name: lightSpeedOut;
animation-name: lightSpeedOut;
-webkit-animation-timing-function: ease-in;
animation-timing-function: ease-in;
}
@-webkit-keyframes rotateIn {
from {
-webkit-transform-origin: center;
transform-origin: center;
-webkit-transform: rotate3d(0, 0, 1, -200deg);
transform: rotate3d(0, 0, 1, -200deg);
opacity: 0;
}
to {
-webkit-transform-origin: center;
transform-origin: center;
-webkit-transform: none;
transform: none;
opacity: 1;
}
}
@keyframes rotateIn {
from {
-webkit-transform-origin: center;
transform-origin: center;
-webkit-transform: rotate3d(0, 0, 1, -200deg);
transform: rotate3d(0, 0, 1, -200deg);
opacity: 0;
}
to {
-webkit-transform-origin: center;
transform-origin: center;
-webkit-transform: none;
transform: none;
opacity: 1;
}
}
.rotateIn {
-webkit-animation-name: rotateIn;
animation-name: rotateIn;
}
@-webkit-keyframes rotateInDownLeft {
from {
-webkit-transform-origin: left bottom;
transform-origin: left bottom;
-webkit-transform: rotate3d(0, 0, 1, -45deg);
transform: rotate3d(0, 0, 1, -45deg);
opacity: 0;
}
to {
-webkit-transform-origin: left bottom;
transform-origin: left bottom;
-webkit-transform: none;
transform: none;
opacity: 1;
}
}
@keyframes rotateInDownLeft {
from {
-webkit-transform-origin: left bottom;
transform-origin: left bottom;
-webkit-transform: rotate3d(0, 0, 1, -45deg);
transform: rotate3d(0, 0, 1, -45deg);
opacity: 0;
}
to {
-webkit-transform-origin: left bottom;
transform-origin: left bottom;
-webkit-transform: none;
transform: none;
opacity: 1;
}
}
.rotateInDownLeft {
-webkit-animation-name: rotateInDownLeft;
animation-name: rotateInDownLeft;
}
@-webkit-keyframes rotateInDownRight {
from {
-webkit-transform-origin: right bottom;
transform-origin: right bottom;
-webkit-transform: rotate3d(0, 0, 1, 45deg);
transform: rotate3d(0, 0, 1, 45deg);
opacity: 0;
}
to {
-webkit-transform-origin: right bottom;
transform-origin: right bottom;
-webkit-transform: none;
transform: none;
opacity: 1;
}
}
@keyframes rotateInDownRight {
from {
-webkit-transform-origin: right bottom;
transform-origin: right bottom;
-webkit-transform: rotate3d(0, 0, 1, 45deg);
transform: rotate3d(0, 0, 1, 45deg);
opacity: 0;
}
to {
-webkit-transform-origin: right bottom;
transform-origin: right bottom;
-webkit-transform: none;
transform: none;
opacity: 1;
}
}
.rotateInDownRight {
-webkit-animation-name: rotateInDownRight;
animation-name: rotateInDownRight;
}
@-webkit-keyframes rotateInUpLeft {
from {
-webkit-transform-origin: left bottom;
transform-origin: left bottom;
-webkit-transform: rotate3d(0, 0, 1, 45deg);
transform: rotate3d(0, 0, 1, 45deg);
opacity: 0;
}
to {
-webkit-transform-origin: left bottom;
transform-origin: left bottom;
-webkit-transform: none;
transform: none;
opacity: 1;
}
}
@keyframes rotateInUpLeft {
from {
-webkit-transform-origin: left bottom;
transform-origin: left bottom;
-webkit-transform: rotate3d(0, 0, 1, 45deg);
transform: rotate3d(0, 0, 1, 45deg);
opacity: 0;
}
to {
-webkit-transform-origin: left bottom;
transform-origin: left bottom;
-webkit-transform: none;
transform: none;
opacity: 1;
}
}
.rotateInUpLeft {
-webkit-animation-name: rotateInUpLeft;
animation-name: rotateInUpLeft;
}
@-webkit-keyframes rotateInUpRight {
from {
-webkit-transform-origin: right bottom;
transform-origin: right bottom;
-webkit-transform: rotate3d(0, 0, 1, -90deg);
transform: rotate3d(0, 0, 1, -90deg);
opacity: 0;
}
to {
-webkit-transform-origin: right bottom;
transform-origin: right bottom;
-webkit-transform: none;
transform: none;
opacity: 1;
}
}
@keyframes rotateInUpRight {
from {
-webkit-transform-origin: right bottom;
transform-origin: right bottom;
-webkit-transform: rotate3d(0, 0, 1, -90deg);
transform: rotate3d(0, 0, 1, -90deg);
opacity: 0;
}
to {
-webkit-transform-origin: right bottom;
transform-origin: right bottom;
-webkit-transform: none;
transform: none;
opacity: 1;
}
}
.rotateInUpRight {
-webkit-animation-name: rotateInUpRight;
animation-name: rotateInUpRight;
}
@-webkit-keyframes rotateOut {
from {
-webkit-transform-origin: center;
transform-origin: center;
opacity: 1;
}
to {
-webkit-transform-origin: center;
transform-origin: center;
-webkit-transform: rotate3d(0, 0, 1, 200deg);
transform: rotate3d(0, 0, 1, 200deg);
opacity: 0;
}
}
@keyframes rotateOut {
from {
-webkit-transform-origin: center;
transform-origin: center;
opacity: 1;
}
to {
-webkit-transform-origin: center;
transform-origin: center;
-webkit-transform: rotate3d(0, 0, 1, 200deg);
transform: rotate3d(0, 0, 1, 200deg);
opacity: 0;
}
}
.rotateOut {
-webkit-animation-name: rotateOut;
animation-name: rotateOut;
}
@-webkit-keyframes rotateOutDownLeft {
from {
-webkit-transform-origin: left bottom;
transform-origin: left bottom;
opacity: 1;
}
to {
-webkit-transform-origin: left bottom;
transform-origin: left bottom;
-webkit-transform: rotate3d(0, 0, 1, 45deg);
transform: rotate3d(0, 0, 1, 45deg);
opacity: 0;
}
}
@keyframes rotateOutDownLeft {
from {
-webkit-transform-origin: left bottom;
transform-origin: left bottom;
opacity: 1;
}
to {
-webkit-transform-origin: left bottom;
transform-origin: left bottom;
-webkit-transform: rotate3d(0, 0, 1, 45deg);
transform: rotate3d(0, 0, 1, 45deg);
opacity: 0;
}
}
.rotateOutDownLeft {
-webkit-animation-name: rotateOutDownLeft;
animation-name: rotateOutDownLeft;
}
@-webkit-keyframes rotateOutDownRight {
from {
-webkit-transform-origin: right bottom;
transform-origin: right bottom;
opacity: 1;
}
to {
-webkit-transform-origin: right bottom;
transform-origin: right bottom;
-webkit-transform: rotate3d(0, 0, 1, -45deg);
transform: rotate3d(0, 0, 1, -45deg);
opacity: 0;
}
}
@keyframes rotateOutDownRight {
from {
-webkit-transform-origin: right bottom;
transform-origin: right bottom;
opacity: 1;
}
to {
-webkit-transform-origin: right bottom;
transform-origin: right bottom;
-webkit-transform: rotate3d(0, 0, 1, -45deg);
transform: rotate3d(0, 0, 1, -45deg);
opacity: 0;
}
}
.rotateOutDownRight {
-webkit-animation-name: rotateOutDownRight;
animation-name: rotateOutDownRight;
}
@-webkit-keyframes rotateOutUpLeft {
from {
-webkit-transform-origin: left bottom;
transform-origin: left bottom;
opacity: 1;
}
to {
-webkit-transform-origin: left bottom;
transform-origin: left bottom;
-webkit-transform: rotate3d(0, 0, 1, -45deg);
transform: rotate3d(0, 0, 1, -45deg);
opacity: 0;
}
}
@keyframes rotateOutUpLeft {
from {
-webkit-transform-origin: left bottom;
transform-origin: left bottom;
opacity: 1;
}
to {
-webkit-transform-origin: left bottom;
transform-origin: left bottom;
-webkit-transform: rotate3d(0, 0, 1, -45deg);
transform: rotate3d(0, 0, 1, -45deg);
opacity: 0;
}
}
.rotateOutUpLeft {
-webkit-animation-name: rotateOutUpLeft;
animation-name: rotateOutUpLeft;
}
@-webkit-keyframes rotateOutUpRight {
from {
-webkit-transform-origin: right bottom;
transform-origin: right bottom;
opacity: 1;
}
to {
-webkit-transform-origin: right bottom;
transform-origin: right bottom;
-webkit-transform: rotate3d(0, 0, 1, 90deg);
transform: rotate3d(0, 0, 1, 90deg);
opacity: 0;
}
}
@keyframes rotateOutUpRight {
from {
-webkit-transform-origin: right bottom;
transform-origin: right bottom;
opacity: 1;
}
to {
-webkit-transform-origin: right bottom;
transform-origin: right bottom;
-webkit-transform: rotate3d(0, 0, 1, 90deg);
transform: rotate3d(0, 0, 1, 90deg);
opacity: 0;
}
}
.rotateOutUpRight {
-webkit-animation-name: rotateOutUpRight;
animation-name: rotateOutUpRight;
}
@-webkit-keyframes hinge {
0% {
-webkit-transform-origin: top left;
transform-origin: top left;
-webkit-animation-timing-function: ease-in-out;
animation-timing-function: ease-in-out;
}
20%, 60% {
-webkit-transform: rotate3d(0, 0, 1, 80deg);
transform: rotate3d(0, 0, 1, 80deg);
-webkit-transform-origin: top left;
transform-origin: top left;
-webkit-animation-timing-function: ease-in-out;
animation-timing-function: ease-in-out;
}
40%, 80% {
-webkit-transform: rotate3d(0, 0, 1, 60deg);
transform: rotate3d(0, 0, 1, 60deg);
-webkit-transform-origin: top left;
transform-origin: top left;
-webkit-animation-timing-function: ease-in-out;
animation-timing-function: ease-in-out;
opacity: 1;
}
to {
-webkit-transform: translate3d(0, 700px, 0);
transform: translate3d(0, 700px, 0);
opacity: 0;
}
}
@keyframes hinge {
0% {
-webkit-transform-origin: top left;
transform-origin: top left;
-webkit-animation-timing-function: ease-in-out;
animation-timing-function: ease-in-out;
}
20%, 60% {
-webkit-transform: rotate3d(0, 0, 1, 80deg);
transform: rotate3d(0, 0, 1, 80deg);
-webkit-transform-origin: top left;
transform-origin: top left;
-webkit-animation-timing-function: ease-in-out;
animation-timing-function: ease-in-out;
}
40%, 80% {
-webkit-transform: rotate3d(0, 0, 1, 60deg);
transform: rotate3d(0, 0, 1, 60deg);
-webkit-transform-origin: top left;
transform-origin: top left;
-webkit-animation-timing-function: ease-in-out;
animation-timing-function: ease-in-out;
opacity: 1;
}
to {
-webkit-transform: translate3d(0, 700px, 0);
transform: translate3d(0, 700px, 0);
opacity: 0;
}
}
.hinge {
-webkit-animation-name: hinge;
animation-name: hinge;
}
/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */
@-webkit-keyframes rollIn {
from {
opacity: 0;
-webkit-transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg);
transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg);
}
to {
opacity: 1;
-webkit-transform: none;
transform: none;
}
}
@keyframes rollIn {
from {
opacity: 0;
-webkit-transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg);
transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg);
}
to {
opacity: 1;
-webkit-transform: none;
transform: none;
}
}
.rollIn {
-webkit-animation-name: rollIn;
animation-name: rollIn;
}
/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */
@-webkit-keyframes rollOut {
from {
opacity: 1;
}
to {
opacity: 0;
-webkit-transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg);
transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg);
}
}
@keyframes rollOut {
from {
opacity: 1;
}
to {
opacity: 0;
-webkit-transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg);
transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg);
}
}
.rollOut {
-webkit-animation-name: rollOut;
animation-name: rollOut;
}
@-webkit-keyframes zoomIn {
from {
opacity: 0;
-webkit-transform: scale3d(0.3, 0.3, 0.3);
transform: scale3d(0.3, 0.3, 0.3);
}
50% {
opacity: 1;
}
}
@keyframes zoomIn {
from {
opacity: 0;
-webkit-transform: scale3d(0.3, 0.3, 0.3);
transform: scale3d(0.3, 0.3, 0.3);
}
50% {
opacity: 1;
}
}
.zoomIn {
-webkit-animation-name: zoomIn;
animation-name: zoomIn;
}
@-webkit-keyframes zoomInDown {
from {
opacity: 0;
-webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -1000px, 0);
transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -1000px, 0);
-webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
}
60% {
opacity: 1;
-webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0);
transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0);
-webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);
animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);
}
}
@keyframes zoomInDown {
from {
opacity: 0;
-webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -1000px, 0);
transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -1000px, 0);
-webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
}
60% {
opacity: 1;
-webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0);
transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0);
-webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);
animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);
}
}
.zoomInDown {
-webkit-animation-name: zoomInDown;
animation-name: zoomInDown;
}
@-webkit-keyframes zoomInLeft {
from {
opacity: 0;
-webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(-1000px, 0, 0);
transform: scale3d(0.1, 0.1, 0.1) translate3d(-1000px, 0, 0);
-webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
}
60% {
opacity: 1;
-webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(10px, 0, 0);
transform: scale3d(0.475, 0.475, 0.475) translate3d(10px, 0, 0);
-webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);
animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);
}
}
@keyframes zoomInLeft {
from {
opacity: 0;
-webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(-1000px, 0, 0);
transform: scale3d(0.1, 0.1, 0.1) translate3d(-1000px, 0, 0);
-webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
}
60% {
opacity: 1;
-webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(10px, 0, 0);
transform: scale3d(0.475, 0.475, 0.475) translate3d(10px, 0, 0);
-webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);
animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);
}
}
.zoomInLeft {
-webkit-animation-name: zoomInLeft;
animation-name: zoomInLeft;
}
@-webkit-keyframes zoomInRight {
from {
opacity: 0;
-webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(1000px, 0, 0);
transform: scale3d(0.1, 0.1, 0.1) translate3d(1000px, 0, 0);
-webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
}
60% {
opacity: 1;
-webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(-10px, 0, 0);
transform: scale3d(0.475, 0.475, 0.475) translate3d(-10px, 0, 0);
-webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);
animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);
}
}
@keyframes zoomInRight {
from {
opacity: 0;
-webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(1000px, 0, 0);
transform: scale3d(0.1, 0.1, 0.1) translate3d(1000px, 0, 0);
-webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
}
60% {
opacity: 1;
-webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(-10px, 0, 0);
transform: scale3d(0.475, 0.475, 0.475) translate3d(-10px, 0, 0);
-webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);
animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);
}
}
.zoomInRight {
-webkit-animation-name: zoomInRight;
animation-name: zoomInRight;
}
@-webkit-keyframes zoomInUp {
from {
opacity: 0;
-webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 1000px, 0);
transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 1000px, 0);
-webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
}
60% {
opacity: 1;
-webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0);
transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0);
-webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);
animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);
}
}
@keyframes zoomInUp {
from {
opacity: 0;
-webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 1000px, 0);
transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 1000px, 0);
-webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
}
60% {
opacity: 1;
-webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0);
transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0);
-webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);
animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);
}
}
.zoomInUp {
-webkit-animation-name: zoomInUp;
animation-name: zoomInUp;
}
@-webkit-keyframes zoomOut {
from {
opacity: 1;
}
50% {
opacity: 0;
-webkit-transform: scale3d(0.3, 0.3, 0.3);
transform: scale3d(0.3, 0.3, 0.3);
}
to {
opacity: 0;
}
}
@keyframes zoomOut {
from {
opacity: 1;
}
50% {
opacity: 0;
-webkit-transform: scale3d(0.3, 0.3, 0.3);
transform: scale3d(0.3, 0.3, 0.3);
}
to {
opacity: 0;
}
}
.zoomOut {
-webkit-animation-name: zoomOut;
animation-name: zoomOut;
}
@-webkit-keyframes zoomOutDown {
40% {
opacity: 1;
-webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0);
transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0);
-webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
}
to {
opacity: 0;
-webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 2000px, 0);
transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 2000px, 0);
-webkit-transform-origin: center bottom;
transform-origin: center bottom;
-webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);
animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);
}
}
@keyframes zoomOutDown {
40% {
opacity: 1;
-webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0);
transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0);
-webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
}
to {
opacity: 0;
-webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 2000px, 0);
transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 2000px, 0);
-webkit-transform-origin: center bottom;
transform-origin: center bottom;
-webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);
animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);
}
}
.zoomOutDown {
-webkit-animation-name: zoomOutDown;
animation-name: zoomOutDown;
}
@-webkit-keyframes zoomOutLeft {
40% {
opacity: 1;
-webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(42px, 0, 0);
transform: scale3d(0.475, 0.475, 0.475) translate3d(42px, 0, 0);
}
to {
opacity: 0;
-webkit-transform: scale(0.1) translate3d(-2000px, 0, 0);
transform: scale(0.1) translate3d(-2000px, 0, 0);
-webkit-transform-origin: left center;
transform-origin: left center;
}
}
@keyframes zoomOutLeft {
40% {
opacity: 1;
-webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(42px, 0, 0);
transform: scale3d(0.475, 0.475, 0.475) translate3d(42px, 0, 0);
}
to {
opacity: 0;
-webkit-transform: scale(0.1) translate3d(-2000px, 0, 0);
transform: scale(0.1) translate3d(-2000px, 0, 0);
-webkit-transform-origin: left center;
transform-origin: left center;
}
}
.zoomOutLeft {
-webkit-animation-name: zoomOutLeft;
animation-name: zoomOutLeft;
}
@-webkit-keyframes zoomOutRight {
40% {
opacity: 1;
-webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(-42px, 0, 0);
transform: scale3d(0.475, 0.475, 0.475) translate3d(-42px, 0, 0);
}
to {
opacity: 0;
-webkit-transform: scale(0.1) translate3d(2000px, 0, 0);
transform: scale(0.1) translate3d(2000px, 0, 0);
-webkit-transform-origin: right center;
transform-origin: right center;
}
}
@keyframes zoomOutRight {
40% {
opacity: 1;
-webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(-42px, 0, 0);
transform: scale3d(0.475, 0.475, 0.475) translate3d(-42px, 0, 0);
}
to {
opacity: 0;
-webkit-transform: scale(0.1) translate3d(2000px, 0, 0);
transform: scale(0.1) translate3d(2000px, 0, 0);
-webkit-transform-origin: right center;
transform-origin: right center;
}
}
.zoomOutRight {
-webkit-animation-name: zoomOutRight;
animation-name: zoomOutRight;
}
@-webkit-keyframes zoomOutUp {
40% {
opacity: 1;
-webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0);
transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0);
-webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
}
to {
opacity: 0;
-webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -2000px, 0);
transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -2000px, 0);
-webkit-transform-origin: center bottom;
transform-origin: center bottom;
-webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);
animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);
}
}
@keyframes zoomOutUp {
40% {
opacity: 1;
-webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0);
transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0);
-webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
}
to {
opacity: 0;
-webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -2000px, 0);
transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -2000px, 0);
-webkit-transform-origin: center bottom;
transform-origin: center bottom;
-webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);
animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);
}
}
.zoomOutUp {
-webkit-animation-name: zoomOutUp;
animation-name: zoomOutUp;
}
@-webkit-keyframes slideInDown {
from {
-webkit-transform: translate3d(0, -100%, 0);
transform: translate3d(0, -100%, 0);
visibility: visible;
}
to {
-webkit-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
}
}
@keyframes slideInDown {
from {
-webkit-transform: translate3d(0, -100%, 0);
transform: translate3d(0, -100%, 0);
visibility: visible;
}
to {
-webkit-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
}
}
.slideInDown {
-webkit-animation-name: slideInDown;
animation-name: slideInDown;
}
@-webkit-keyframes slideInLeft {
from {
-webkit-transform: translate3d(-100%, 0, 0);
transform: translate3d(-100%, 0, 0);
visibility: visible;
}
to {
-webkit-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
}
}
@keyframes slideInLeft {
from {
-webkit-transform: translate3d(-100%, 0, 0);
transform: translate3d(-100%, 0, 0);
visibility: visible;
}
to {
-webkit-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
}
}
.slideInLeft {
-webkit-animation-name: slideInLeft;
animation-name: slideInLeft;
}
@-webkit-keyframes slideInRight {
from {
-webkit-transform: translate3d(100%, 0, 0);
transform: translate3d(100%, 0, 0);
visibility: visible;
}
to {
-webkit-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
}
}
@keyframes slideInRight {
from {
-webkit-transform: translate3d(100%, 0, 0);
transform: translate3d(100%, 0, 0);
visibility: visible;
}
to {
-webkit-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
}
}
.slideInRight {
-webkit-animation-name: slideInRight;
animation-name: slideInRight;
}
@-webkit-keyframes slideInUp {
from {
-webkit-transform: translate3d(0, 100%, 0);
transform: translate3d(0, 100%, 0);
visibility: visible;
}
to {
-webkit-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
}
}
@keyframes slideInUp {
from {
-webkit-transform: translate3d(0, 100%, 0);
transform: translate3d(0, 100%, 0);
visibility: visible;
}
to {
-webkit-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
}
}
.slideInUp {
-webkit-animation-name: slideInUp;
animation-name: slideInUp;
}
@-webkit-keyframes slideOutDown {
from {
-webkit-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
}
to {
visibility: hidden;
-webkit-transform: translate3d(0, 100%, 0);
transform: translate3d(0, 100%, 0);
}
}
@keyframes slideOutDown {
from {
-webkit-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
}
to {
visibility: hidden;
-webkit-transform: translate3d(0, 100%, 0);
transform: translate3d(0, 100%, 0);
}
}
.slideOutDown {
-webkit-animation-name: slideOutDown;
animation-name: slideOutDown;
}
@-webkit-keyframes slideOutLeft {
from {
-webkit-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
}
to {
visibility: hidden;
-webkit-transform: translate3d(-100%, 0, 0);
transform: translate3d(-100%, 0, 0);
}
}
@keyframes slideOutLeft {
from {
-webkit-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
}
to {
visibility: hidden;
-webkit-transform: translate3d(-100%, 0, 0);
transform: translate3d(-100%, 0, 0);
}
}
.slideOutLeft {
-webkit-animation-name: slideOutLeft;
animation-name: slideOutLeft;
}
@-webkit-keyframes slideOutRight {
from {
-webkit-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
}
to {
visibility: hidden;
-webkit-transform: translate3d(100%, 0, 0);
transform: translate3d(100%, 0, 0);
}
}
@keyframes slideOutRight {
from {
-webkit-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
}
to {
visibility: hidden;
-webkit-transform: translate3d(100%, 0, 0);
transform: translate3d(100%, 0, 0);
}
}
.slideOutRight {
-webkit-animation-name: slideOutRight;
animation-name: slideOutRight;
}
@-webkit-keyframes slideOutUp {
from {
-webkit-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
}
to {
visibility: hidden;
-webkit-transform: translate3d(0, -100%, 0);
transform: translate3d(0, -100%, 0);
}
}
@keyframes slideOutUp {
from {
-webkit-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
}
to {
visibility: hidden;
-webkit-transform: translate3d(0, -100%, 0);
transform: translate3d(0, -100%, 0);
}
}
.slideOutUp {
-webkit-animation-name: slideOutUp;
animation-name: slideOutUp;
}
@keyframes spin {
from {
-webkit-transform-origin: center;
transform-origin: center;
-webkit-transform: rotate3d(0, 0, 1, -360deg);
transform: rotate3d(0, 0, 1, -360deg);
}
to {
-webkit-transform-origin: center;
transform-origin: center;
-webkit-transform: none;
transform: none;
}
}
.spin {
-webkit-animation-name: spin;
animation-name: spin;
}
\ No newline at end of file
var diff_match_patch=function(){this.Diff_Timeout=1;this.Diff_EditCost=4;this.Match_Threshold=.5;this.Match_Distance=1E3;this.Patch_DeleteThreshold=.5;this.Patch_Margin=4;this.Match_MaxBits=32},DIFF_DELETE=-1,DIFF_INSERT=1,DIFF_EQUAL=0;diff_match_patch.Diff=function(a,b){this[0]=a;this[1]=b};diff_match_patch.Diff.prototype.length=2;diff_match_patch.Diff.prototype.toString=function(){return this[0]+","+this[1]};
diff_match_patch.prototype.diff_main=function(a,b,c,d){"undefined"==typeof d&&(d=0>=this.Diff_Timeout?Number.MAX_VALUE:(new Date).getTime()+1E3*this.Diff_Timeout);if(null==a||null==b)throw Error("Null input. (diff_main)");if(a==b)return a?[new diff_match_patch.Diff(DIFF_EQUAL,a)]:[];"undefined"==typeof c&&(c=!0);var e=c,f=this.diff_commonPrefix(a,b);c=a.substring(0,f);a=a.substring(f);b=b.substring(f);f=this.diff_commonSuffix(a,b);var g=a.substring(a.length-f);a=a.substring(0,a.length-f);b=b.substring(0,
b.length-f);a=this.diff_compute_(a,b,e,d);c&&a.unshift(new diff_match_patch.Diff(DIFF_EQUAL,c));g&&a.push(new diff_match_patch.Diff(DIFF_EQUAL,g));this.diff_cleanupMerge(a);return a};
diff_match_patch.prototype.diff_compute_=function(a,b,c,d){if(!a)return[new diff_match_patch.Diff(DIFF_INSERT,b)];if(!b)return[new diff_match_patch.Diff(DIFF_DELETE,a)];var e=a.length>b.length?a:b,f=a.length>b.length?b:a,g=e.indexOf(f);return-1!=g?(c=[new diff_match_patch.Diff(DIFF_INSERT,e.substring(0,g)),new diff_match_patch.Diff(DIFF_EQUAL,f),new diff_match_patch.Diff(DIFF_INSERT,e.substring(g+f.length))],a.length>b.length&&(c[0][0]=c[2][0]=DIFF_DELETE),c):1==f.length?[new diff_match_patch.Diff(DIFF_DELETE,
a),new diff_match_patch.Diff(DIFF_INSERT,b)]:(e=this.diff_halfMatch_(a,b))?(b=e[1],f=e[3],a=e[4],e=this.diff_main(e[0],e[2],c,d),c=this.diff_main(b,f,c,d),e.concat([new diff_match_patch.Diff(DIFF_EQUAL,a)],c)):c&&100<a.length&&100<b.length?this.diff_lineMode_(a,b,d):this.diff_bisect_(a,b,d)};
diff_match_patch.prototype.diff_lineMode_=function(a,b,c){var d=this.diff_linesToChars_(a,b);a=d.chars1;b=d.chars2;d=d.lineArray;a=this.diff_main(a,b,!1,c);this.diff_charsToLines_(a,d);this.diff_cleanupSemantic(a);a.push(new diff_match_patch.Diff(DIFF_EQUAL,""));for(var e=d=b=0,f="",g="";b<a.length;){switch(a[b][0]){case DIFF_INSERT:e++;g+=a[b][1];break;case DIFF_DELETE:d++;f+=a[b][1];break;case DIFF_EQUAL:if(1<=d&&1<=e){a.splice(b-d-e,d+e);b=b-d-e;d=this.diff_main(f,g,!1,c);for(e=d.length-1;0<=e;e--)a.splice(b,
0,d[e]);b+=d.length}d=e=0;g=f=""}b++}a.pop();return a};
diff_match_patch.prototype.diff_bisect_=function(a,b,c){for(var d=a.length,e=b.length,f=Math.ceil((d+e)/2),g=2*f,h=Array(g),l=Array(g),k=0;k<g;k++)h[k]=-1,l[k]=-1;h[f+1]=0;l[f+1]=0;k=d-e;for(var m=0!=k%2,p=0,x=0,w=0,q=0,t=0;t<f&&!((new Date).getTime()>c);t++){for(var v=-t+p;v<=t-x;v+=2){var n=f+v;var r=v==-t||v!=t&&h[n-1]<h[n+1]?h[n+1]:h[n-1]+1;for(var y=r-v;r<d&&y<e&&a.charAt(r)==b.charAt(y);)r++,y++;h[n]=r;if(r>d)x+=2;else if(y>e)p+=2;else if(m&&(n=f+k-v,0<=n&&n<g&&-1!=l[n])){var u=d-l[n];if(r>=
u)return this.diff_bisectSplit_(a,b,r,y,c)}}for(v=-t+w;v<=t-q;v+=2){n=f+v;u=v==-t||v!=t&&l[n-1]<l[n+1]?l[n+1]:l[n-1]+1;for(r=u-v;u<d&&r<e&&a.charAt(d-u-1)==b.charAt(e-r-1);)u++,r++;l[n]=u;if(u>d)q+=2;else if(r>e)w+=2;else if(!m&&(n=f+k-v,0<=n&&n<g&&-1!=h[n]&&(r=h[n],y=f+r-n,u=d-u,r>=u)))return this.diff_bisectSplit_(a,b,r,y,c)}}return[new diff_match_patch.Diff(DIFF_DELETE,a),new diff_match_patch.Diff(DIFF_INSERT,b)]};
diff_match_patch.prototype.diff_bisectSplit_=function(a,b,c,d,e){var f=a.substring(0,c),g=b.substring(0,d);a=a.substring(c);b=b.substring(d);f=this.diff_main(f,g,!1,e);e=this.diff_main(a,b,!1,e);return f.concat(e)};
diff_match_patch.prototype.diff_linesToChars_=function(a,b){function c(a){for(var b="",c=0,g=-1,h=d.length;g<a.length-1;){g=a.indexOf("\n",c);-1==g&&(g=a.length-1);var l=a.substring(c,g+1);(e.hasOwnProperty?e.hasOwnProperty(l):void 0!==e[l])?b+=String.fromCharCode(e[l]):(h==f&&(l=a.substring(c),g=a.length),b+=String.fromCharCode(h),e[l]=h,d[h++]=l);c=g+1}return b}var d=[],e={};d[0]="";var f=4E4,g=c(a);f=65535;var h=c(b);return{chars1:g,chars2:h,lineArray:d}};
diff_match_patch.prototype.diff_charsToLines_=function(a,b){for(var c=0;c<a.length;c++){for(var d=a[c][1],e=[],f=0;f<d.length;f++)e[f]=b[d.charCodeAt(f)];a[c][1]=e.join("")}};diff_match_patch.prototype.diff_commonPrefix=function(a,b){if(!a||!b||a.charAt(0)!=b.charAt(0))return 0;for(var c=0,d=Math.min(a.length,b.length),e=d,f=0;c<e;)a.substring(f,e)==b.substring(f,e)?f=c=e:d=e,e=Math.floor((d-c)/2+c);return e};
diff_match_patch.prototype.diff_commonSuffix=function(a,b){if(!a||!b||a.charAt(a.length-1)!=b.charAt(b.length-1))return 0;for(var c=0,d=Math.min(a.length,b.length),e=d,f=0;c<e;)a.substring(a.length-e,a.length-f)==b.substring(b.length-e,b.length-f)?f=c=e:d=e,e=Math.floor((d-c)/2+c);return e};
diff_match_patch.prototype.diff_commonOverlap_=function(a,b){var c=a.length,d=b.length;if(0==c||0==d)return 0;c>d?a=a.substring(c-d):c<d&&(b=b.substring(0,c));c=Math.min(c,d);if(a==b)return c;d=0;for(var e=1;;){var f=a.substring(c-e);f=b.indexOf(f);if(-1==f)return d;e+=f;if(0==f||a.substring(c-e)==b.substring(0,e))d=e,e++}};
diff_match_patch.prototype.diff_halfMatch_=function(a,b){function c(a,b,c){for(var d=a.substring(c,c+Math.floor(a.length/4)),e=-1,g="",h,k,l,m;-1!=(e=b.indexOf(d,e+1));){var p=f.diff_commonPrefix(a.substring(c),b.substring(e)),u=f.diff_commonSuffix(a.substring(0,c),b.substring(0,e));g.length<u+p&&(g=b.substring(e-u,e)+b.substring(e,e+p),h=a.substring(0,c-u),k=a.substring(c+p),l=b.substring(0,e-u),m=b.substring(e+p))}return 2*g.length>=a.length?[h,k,l,m,g]:null}if(0>=this.Diff_Timeout)return null;
var d=a.length>b.length?a:b,e=a.length>b.length?b:a;if(4>d.length||2*e.length<d.length)return null;var f=this,g=c(d,e,Math.ceil(d.length/4));d=c(d,e,Math.ceil(d.length/2));if(g||d)g=d?g?g[4].length>d[4].length?g:d:d:g;else return null;if(a.length>b.length){d=g[0];e=g[1];var h=g[2];var l=g[3]}else h=g[0],l=g[1],d=g[2],e=g[3];return[d,e,h,l,g[4]]};
diff_match_patch.prototype.diff_cleanupSemantic=function(a){for(var b=!1,c=[],d=0,e=null,f=0,g=0,h=0,l=0,k=0;f<a.length;)a[f][0]==DIFF_EQUAL?(c[d++]=f,g=l,h=k,k=l=0,e=a[f][1]):(a[f][0]==DIFF_INSERT?l+=a[f][1].length:k+=a[f][1].length,e&&e.length<=Math.max(g,h)&&e.length<=Math.max(l,k)&&(a.splice(c[d-1],0,new diff_match_patch.Diff(DIFF_DELETE,e)),a[c[d-1]+1][0]=DIFF_INSERT,d--,d--,f=0<d?c[d-1]:-1,k=l=h=g=0,e=null,b=!0)),f++;b&&this.diff_cleanupMerge(a);this.diff_cleanupSemanticLossless(a);for(f=1;f<
a.length;){if(a[f-1][0]==DIFF_DELETE&&a[f][0]==DIFF_INSERT){b=a[f-1][1];c=a[f][1];d=this.diff_commonOverlap_(b,c);e=this.diff_commonOverlap_(c,b);if(d>=e){if(d>=b.length/2||d>=c.length/2)a.splice(f,0,new diff_match_patch.Diff(DIFF_EQUAL,c.substring(0,d))),a[f-1][1]=b.substring(0,b.length-d),a[f+1][1]=c.substring(d),f++}else if(e>=b.length/2||e>=c.length/2)a.splice(f,0,new diff_match_patch.Diff(DIFF_EQUAL,b.substring(0,e))),a[f-1][0]=DIFF_INSERT,a[f-1][1]=c.substring(0,c.length-e),a[f+1][0]=DIFF_DELETE,
a[f+1][1]=b.substring(e),f++;f++}f++}};
diff_match_patch.prototype.diff_cleanupSemanticLossless=function(a){function b(a,b){if(!a||!b)return 6;var c=a.charAt(a.length-1),d=b.charAt(0),e=c.match(diff_match_patch.nonAlphaNumericRegex_),f=d.match(diff_match_patch.nonAlphaNumericRegex_),g=e&&c.match(diff_match_patch.whitespaceRegex_),h=f&&d.match(diff_match_patch.whitespaceRegex_);c=g&&c.match(diff_match_patch.linebreakRegex_);d=h&&d.match(diff_match_patch.linebreakRegex_);var k=c&&a.match(diff_match_patch.blanklineEndRegex_),l=d&&b.match(diff_match_patch.blanklineStartRegex_);
return k||l?5:c||d?4:e&&!g&&h?3:g||h?2:e||f?1:0}for(var c=1;c<a.length-1;){if(a[c-1][0]==DIFF_EQUAL&&a[c+1][0]==DIFF_EQUAL){var d=a[c-1][1],e=a[c][1],f=a[c+1][1],g=this.diff_commonSuffix(d,e);if(g){var h=e.substring(e.length-g);d=d.substring(0,d.length-g);e=h+e.substring(0,e.length-g);f=h+f}g=d;h=e;for(var l=f,k=b(d,e)+b(e,f);e.charAt(0)===f.charAt(0);){d+=e.charAt(0);e=e.substring(1)+f.charAt(0);f=f.substring(1);var m=b(d,e)+b(e,f);m>=k&&(k=m,g=d,h=e,l=f)}a[c-1][1]!=g&&(g?a[c-1][1]=g:(a.splice(c-
1,1),c--),a[c][1]=h,l?a[c+1][1]=l:(a.splice(c+1,1),c--))}c++}};diff_match_patch.nonAlphaNumericRegex_=/[^a-zA-Z0-9]/;diff_match_patch.whitespaceRegex_=/\s/;diff_match_patch.linebreakRegex_=/[\r\n]/;diff_match_patch.blanklineEndRegex_=/\n\r?\n$/;diff_match_patch.blanklineStartRegex_=/^\r?\n\r?\n/;
diff_match_patch.prototype.diff_cleanupEfficiency=function(a){for(var b=!1,c=[],d=0,e=null,f=0,g=!1,h=!1,l=!1,k=!1;f<a.length;)a[f][0]==DIFF_EQUAL?(a[f][1].length<this.Diff_EditCost&&(l||k)?(c[d++]=f,g=l,h=k,e=a[f][1]):(d=0,e=null),l=k=!1):(a[f][0]==DIFF_DELETE?k=!0:l=!0,e&&(g&&h&&l&&k||e.length<this.Diff_EditCost/2&&3==g+h+l+k)&&(a.splice(c[d-1],0,new diff_match_patch.Diff(DIFF_DELETE,e)),a[c[d-1]+1][0]=DIFF_INSERT,d--,e=null,g&&h?(l=k=!0,d=0):(d--,f=0<d?c[d-1]:-1,l=k=!1),b=!0)),f++;b&&this.diff_cleanupMerge(a)};
diff_match_patch.prototype.diff_cleanupMerge=function(a){a.push(new diff_match_patch.Diff(DIFF_EQUAL,""));for(var b=0,c=0,d=0,e="",f="",g;b<a.length;)switch(a[b][0]){case DIFF_INSERT:d++;f+=a[b][1];b++;break;case DIFF_DELETE:c++;e+=a[b][1];b++;break;case DIFF_EQUAL:1<c+d?(0!==c&&0!==d&&(g=this.diff_commonPrefix(f,e),0!==g&&(0<b-c-d&&a[b-c-d-1][0]==DIFF_EQUAL?a[b-c-d-1][1]+=f.substring(0,g):(a.splice(0,0,new diff_match_patch.Diff(DIFF_EQUAL,f.substring(0,g))),b++),f=f.substring(g),e=e.substring(g)),
g=this.diff_commonSuffix(f,e),0!==g&&(a[b][1]=f.substring(f.length-g)+a[b][1],f=f.substring(0,f.length-g),e=e.substring(0,e.length-g))),b-=c+d,a.splice(b,c+d),e.length&&(a.splice(b,0,new diff_match_patch.Diff(DIFF_DELETE,e)),b++),f.length&&(a.splice(b,0,new diff_match_patch.Diff(DIFF_INSERT,f)),b++),b++):0!==b&&a[b-1][0]==DIFF_EQUAL?(a[b-1][1]+=a[b][1],a.splice(b,1)):b++,c=d=0,f=e=""}""===a[a.length-1][1]&&a.pop();c=!1;for(b=1;b<a.length-1;)a[b-1][0]==DIFF_EQUAL&&a[b+1][0]==DIFF_EQUAL&&(a[b][1].substring(a[b][1].length-
a[b-1][1].length)==a[b-1][1]?(a[b][1]=a[b-1][1]+a[b][1].substring(0,a[b][1].length-a[b-1][1].length),a[b+1][1]=a[b-1][1]+a[b+1][1],a.splice(b-1,1),c=!0):a[b][1].substring(0,a[b+1][1].length)==a[b+1][1]&&(a[b-1][1]+=a[b+1][1],a[b][1]=a[b][1].substring(a[b+1][1].length)+a[b+1][1],a.splice(b+1,1),c=!0)),b++;c&&this.diff_cleanupMerge(a)};
diff_match_patch.prototype.diff_xIndex=function(a,b){var c=0,d=0,e=0,f=0,g;for(g=0;g<a.length;g++){a[g][0]!==DIFF_INSERT&&(c+=a[g][1].length);a[g][0]!==DIFF_DELETE&&(d+=a[g][1].length);if(c>b)break;e=c;f=d}return a.length!=g&&a[g][0]===DIFF_DELETE?f:f+(b-e)};
diff_match_patch.prototype.diff_prettyHtml=function(a){for(var b=[],c=/&/g,d=/</g,e=/>/g,f=/\n/g,g=0;g<a.length;g++){var h=a[g][0],l=a[g][1].replace(c,"&amp;").replace(d,"&lt;").replace(e,"&gt;").replace(f,"&para;<br>");switch(h){case DIFF_INSERT:b[g]='<ins style="background:#e6ffe6;">'+l+"</ins>";break;case DIFF_DELETE:b[g]='<del style="background:#ffe6e6;">'+l+"</del>";break;case DIFF_EQUAL:b[g]="<span>"+l+"</span>"}}return b.join("")};
diff_match_patch.prototype.diff_text1=function(a){for(var b=[],c=0;c<a.length;c++)a[c][0]!==DIFF_INSERT&&(b[c]=a[c][1]);return b.join("")};diff_match_patch.prototype.diff_text2=function(a){for(var b=[],c=0;c<a.length;c++)a[c][0]!==DIFF_DELETE&&(b[c]=a[c][1]);return b.join("")};
diff_match_patch.prototype.diff_levenshtein=function(a){for(var b=0,c=0,d=0,e=0;e<a.length;e++){var f=a[e][1];switch(a[e][0]){case DIFF_INSERT:c+=f.length;break;case DIFF_DELETE:d+=f.length;break;case DIFF_EQUAL:b+=Math.max(c,d),d=c=0}}return b+=Math.max(c,d)};
diff_match_patch.prototype.diff_toDelta=function(a){for(var b=[],c=0;c<a.length;c++)switch(a[c][0]){case DIFF_INSERT:b[c]="+"+encodeURI(a[c][1]);break;case DIFF_DELETE:b[c]="-"+a[c][1].length;break;case DIFF_EQUAL:b[c]="="+a[c][1].length}return b.join("\t").replace(/%20/g," ")};
diff_match_patch.prototype.diff_fromDelta=function(a,b){for(var c=[],d=0,e=0,f=b.split(/\t/g),g=0;g<f.length;g++){var h=f[g].substring(1);switch(f[g].charAt(0)){case "+":try{c[d++]=new diff_match_patch.Diff(DIFF_INSERT,decodeURI(h))}catch(k){throw Error("Illegal escape in diff_fromDelta: "+h);}break;case "-":case "=":var l=parseInt(h,10);if(isNaN(l)||0>l)throw Error("Invalid number in diff_fromDelta: "+h);h=a.substring(e,e+=l);"="==f[g].charAt(0)?c[d++]=new diff_match_patch.Diff(DIFF_EQUAL,h):c[d++]=
new diff_match_patch.Diff(DIFF_DELETE,h);break;default:if(f[g])throw Error("Invalid diff operation in diff_fromDelta: "+f[g]);}}if(e!=a.length)throw Error("Delta length ("+e+") does not equal source text length ("+a.length+").");return c};diff_match_patch.prototype.match_main=function(a,b,c){if(null==a||null==b||null==c)throw Error("Null input. (match_main)");c=Math.max(0,Math.min(c,a.length));return a==b?0:a.length?a.substring(c,c+b.length)==b?c:this.match_bitap_(a,b,c):-1};
diff_match_patch.prototype.match_bitap_=function(a,b,c){function d(a,d){var e=a/b.length,g=Math.abs(c-d);return f.Match_Distance?e+g/f.Match_Distance:g?1:e}if(b.length>this.Match_MaxBits)throw Error("Pattern too long for this browser.");var e=this.match_alphabet_(b),f=this,g=this.Match_Threshold,h=a.indexOf(b,c);-1!=h&&(g=Math.min(d(0,h),g),h=a.lastIndexOf(b,c+b.length),-1!=h&&(g=Math.min(d(0,h),g)));var l=1<<b.length-1;h=-1;for(var k,m,p=b.length+a.length,x,w=0;w<b.length;w++){k=0;for(m=p;k<m;)d(w,
c+m)<=g?k=m:p=m,m=Math.floor((p-k)/2+k);p=m;k=Math.max(1,c-m+1);var q=Math.min(c+m,a.length)+b.length;m=Array(q+2);for(m[q+1]=(1<<w)-1;q>=k;q--){var t=e[a.charAt(q-1)];m[q]=0===w?(m[q+1]<<1|1)&t:(m[q+1]<<1|1)&t|(x[q+1]|x[q])<<1|1|x[q+1];if(m[q]&l&&(t=d(w,q-1),t<=g))if(g=t,h=q-1,h>c)k=Math.max(1,2*c-h);else break}if(d(w+1,c)>g)break;x=m}return h};
diff_match_patch.prototype.match_alphabet_=function(a){for(var b={},c=0;c<a.length;c++)b[a.charAt(c)]=0;for(c=0;c<a.length;c++)b[a.charAt(c)]|=1<<a.length-c-1;return b};
diff_match_patch.prototype.patch_addContext_=function(a,b){if(0!=b.length){if(null===a.start2)throw Error("patch not initialized");for(var c=b.substring(a.start2,a.start2+a.length1),d=0;b.indexOf(c)!=b.lastIndexOf(c)&&c.length<this.Match_MaxBits-this.Patch_Margin-this.Patch_Margin;)d+=this.Patch_Margin,c=b.substring(a.start2-d,a.start2+a.length1+d);d+=this.Patch_Margin;(c=b.substring(a.start2-d,a.start2))&&a.diffs.unshift(new diff_match_patch.Diff(DIFF_EQUAL,c));(d=b.substring(a.start2+a.length1,
a.start2+a.length1+d))&&a.diffs.push(new diff_match_patch.Diff(DIFF_EQUAL,d));a.start1-=c.length;a.start2-=c.length;a.length1+=c.length+d.length;a.length2+=c.length+d.length}};
diff_match_patch.prototype.patch_make=function(a,b,c){if("string"==typeof a&&"string"==typeof b&&"undefined"==typeof c){var d=a;b=this.diff_main(d,b,!0);2<b.length&&(this.diff_cleanupSemantic(b),this.diff_cleanupEfficiency(b))}else if(a&&"object"==typeof a&&"undefined"==typeof b&&"undefined"==typeof c)b=a,d=this.diff_text1(b);else if("string"==typeof a&&b&&"object"==typeof b&&"undefined"==typeof c)d=a;else if("string"==typeof a&&"string"==typeof b&&c&&"object"==typeof c)d=a,b=c;else throw Error("Unknown call format to patch_make.");
if(0===b.length)return[];c=[];a=new diff_match_patch.patch_obj;for(var e=0,f=0,g=0,h=d,l=0;l<b.length;l++){var k=b[l][0],m=b[l][1];e||k===DIFF_EQUAL||(a.start1=f,a.start2=g);switch(k){case DIFF_INSERT:a.diffs[e++]=b[l];a.length2+=m.length;d=d.substring(0,g)+m+d.substring(g);break;case DIFF_DELETE:a.length1+=m.length;a.diffs[e++]=b[l];d=d.substring(0,g)+d.substring(g+m.length);break;case DIFF_EQUAL:m.length<=2*this.Patch_Margin&&e&&b.length!=l+1?(a.diffs[e++]=b[l],a.length1+=m.length,a.length2+=m.length):
m.length>=2*this.Patch_Margin&&e&&(this.patch_addContext_(a,h),c.push(a),a=new diff_match_patch.patch_obj,e=0,h=d,f=g)}k!==DIFF_INSERT&&(f+=m.length);k!==DIFF_DELETE&&(g+=m.length)}e&&(this.patch_addContext_(a,h),c.push(a));return c};
diff_match_patch.prototype.patch_deepCopy=function(a){for(var b=[],c=0;c<a.length;c++){var d=a[c],e=new diff_match_patch.patch_obj;e.diffs=[];for(var f=0;f<d.diffs.length;f++)e.diffs[f]=new diff_match_patch.Diff(d.diffs[f][0],d.diffs[f][1]);e.start1=d.start1;e.start2=d.start2;e.length1=d.length1;e.length2=d.length2;b[c]=e}return b};
diff_match_patch.prototype.patch_apply=function(a,b){if(0==a.length)return[b,[]];a=this.patch_deepCopy(a);var c=this.patch_addPadding(a);b=c+b+c;this.patch_splitMax(a);for(var d=0,e=[],f=0;f<a.length;f++){var g=a[f].start2+d,h=this.diff_text1(a[f].diffs),l=-1;if(h.length>this.Match_MaxBits){var k=this.match_main(b,h.substring(0,this.Match_MaxBits),g);-1!=k&&(l=this.match_main(b,h.substring(h.length-this.Match_MaxBits),g+h.length-this.Match_MaxBits),-1==l||k>=l)&&(k=-1)}else k=this.match_main(b,h,
g);if(-1==k)e[f]=!1,d-=a[f].length2-a[f].length1;else if(e[f]=!0,d=k-g,g=-1==l?b.substring(k,k+h.length):b.substring(k,l+this.Match_MaxBits),h==g)b=b.substring(0,k)+this.diff_text2(a[f].diffs)+b.substring(k+h.length);else if(g=this.diff_main(h,g,!1),h.length>this.Match_MaxBits&&this.diff_levenshtein(g)/h.length>this.Patch_DeleteThreshold)e[f]=!1;else{this.diff_cleanupSemanticLossless(g);h=0;var m;for(l=0;l<a[f].diffs.length;l++){var p=a[f].diffs[l];p[0]!==DIFF_EQUAL&&(m=this.diff_xIndex(g,h));p[0]===
DIFF_INSERT?b=b.substring(0,k+m)+p[1]+b.substring(k+m):p[0]===DIFF_DELETE&&(b=b.substring(0,k+m)+b.substring(k+this.diff_xIndex(g,h+p[1].length)));p[0]!==DIFF_DELETE&&(h+=p[1].length)}}}b=b.substring(c.length,b.length-c.length);return[b,e]};
diff_match_patch.prototype.patch_addPadding=function(a){for(var b=this.Patch_Margin,c="",d=1;d<=b;d++)c+=String.fromCharCode(d);for(d=0;d<a.length;d++)a[d].start1+=b,a[d].start2+=b;d=a[0];var e=d.diffs;if(0==e.length||e[0][0]!=DIFF_EQUAL)e.unshift(new diff_match_patch.Diff(DIFF_EQUAL,c)),d.start1-=b,d.start2-=b,d.length1+=b,d.length2+=b;else if(b>e[0][1].length){var f=b-e[0][1].length;e[0][1]=c.substring(e[0][1].length)+e[0][1];d.start1-=f;d.start2-=f;d.length1+=f;d.length2+=f}d=a[a.length-1];e=d.diffs;
0==e.length||e[e.length-1][0]!=DIFF_EQUAL?(e.push(new diff_match_patch.Diff(DIFF_EQUAL,c)),d.length1+=b,d.length2+=b):b>e[e.length-1][1].length&&(f=b-e[e.length-1][1].length,e[e.length-1][1]+=c.substring(0,f),d.length1+=f,d.length2+=f);return c};
diff_match_patch.prototype.patch_splitMax=function(a){for(var b=this.Match_MaxBits,c=0;c<a.length;c++)if(!(a[c].length1<=b)){var d=a[c];a.splice(c--,1);for(var e=d.start1,f=d.start2,g="";0!==d.diffs.length;){var h=new diff_match_patch.patch_obj,l=!0;h.start1=e-g.length;h.start2=f-g.length;""!==g&&(h.length1=h.length2=g.length,h.diffs.push(new diff_match_patch.Diff(DIFF_EQUAL,g)));for(;0!==d.diffs.length&&h.length1<b-this.Patch_Margin;){g=d.diffs[0][0];var k=d.diffs[0][1];g===DIFF_INSERT?(h.length2+=
k.length,f+=k.length,h.diffs.push(d.diffs.shift()),l=!1):g===DIFF_DELETE&&1==h.diffs.length&&h.diffs[0][0]==DIFF_EQUAL&&k.length>2*b?(h.length1+=k.length,e+=k.length,l=!1,h.diffs.push(new diff_match_patch.Diff(g,k)),d.diffs.shift()):(k=k.substring(0,b-h.length1-this.Patch_Margin),h.length1+=k.length,e+=k.length,g===DIFF_EQUAL?(h.length2+=k.length,f+=k.length):l=!1,h.diffs.push(new diff_match_patch.Diff(g,k)),k==d.diffs[0][1]?d.diffs.shift():d.diffs[0][1]=d.diffs[0][1].substring(k.length))}g=this.diff_text2(h.diffs);
g=g.substring(g.length-this.Patch_Margin);k=this.diff_text1(d.diffs).substring(0,this.Patch_Margin);""!==k&&(h.length1+=k.length,h.length2+=k.length,0!==h.diffs.length&&h.diffs[h.diffs.length-1][0]===DIFF_EQUAL?h.diffs[h.diffs.length-1][1]+=k:h.diffs.push(new diff_match_patch.Diff(DIFF_EQUAL,k)));l||a.splice(++c,0,h)}}};diff_match_patch.prototype.patch_toText=function(a){for(var b=[],c=0;c<a.length;c++)b[c]=a[c];return b.join("")};
diff_match_patch.prototype.patch_fromText=function(a){var b=[];if(!a)return b;a=a.split("\n");for(var c=0,d=/^@@ -(\d+),?(\d*) \+(\d+),?(\d*) @@$/;c<a.length;){var e=a[c].match(d);if(!e)throw Error("Invalid patch string: "+a[c]);var f=new diff_match_patch.patch_obj;b.push(f);f.start1=parseInt(e[1],10);""===e[2]?(f.start1--,f.length1=1):"0"==e[2]?f.length1=0:(f.start1--,f.length1=parseInt(e[2],10));f.start2=parseInt(e[3],10);""===e[4]?(f.start2--,f.length2=1):"0"==e[4]?f.length2=0:(f.start2--,f.length2=
parseInt(e[4],10));for(c++;c<a.length;){e=a[c].charAt(0);try{var g=decodeURI(a[c].substring(1))}catch(h){throw Error("Illegal escape in patch_fromText: "+g);}if("-"==e)f.diffs.push(new diff_match_patch.Diff(DIFF_DELETE,g));else if("+"==e)f.diffs.push(new diff_match_patch.Diff(DIFF_INSERT,g));else if(" "==e)f.diffs.push(new diff_match_patch.Diff(DIFF_EQUAL,g));else if("@"==e)break;else if(""!==e)throw Error('Invalid patch mode "'+e+'" in: '+g);c++}}return b};
diff_match_patch.patch_obj=function(){this.diffs=[];this.start2=this.start1=null;this.length2=this.length1=0};
diff_match_patch.patch_obj.prototype.toString=function(){for(var a=["@@ -"+(0===this.length1?this.start1+",0":1==this.length1?this.start1+1:this.start1+1+","+this.length1)+" +"+(0===this.length2?this.start2+",0":1==this.length2?this.start2+1:this.start2+1+","+this.length2)+" @@\n"],b,c=0;c<this.diffs.length;c++){switch(this.diffs[c][0]){case DIFF_INSERT:b="+";break;case DIFF_DELETE:b="-";break;case DIFF_EQUAL:b=" "}a[c+1]=b+encodeURI(this.diffs[c][1])+"\n"}return a.join("").replace(/%20/g," ")};
this.diff_match_patch=diff_match_patch;this.DIFF_DELETE=DIFF_DELETE;this.DIFF_INSERT=DIFF_INSERT;this.DIFF_EQUAL=DIFF_EQUAL;
window.diff_match_patch = diff_match_patch
window.DIFF_INSERT = DIFF_INSERT
window.DIFF_DELETE = DIFF_DELETE
window.DIFF_EQUAL = DIFF_EQUAL
const renderEm = (tokens, idx, opts, env, slf) => {
const token = tokens[idx];
if (token.markup === '_') {
token.tag = 'u';
}
return slf.renderToken(tokens, idx, opts);
}
module.exports = (md) => {
md.renderer.rules.em_open = renderEm;
md.renderer.rules.em_close = renderEm;
}
/*! modernizr 3.6.0 (Custom Build) | MIT *
* https://modernizr.com/download/?-setclasses !*/
!function(n,e,s){function o(n){var e=r.className,s=Modernizr._config.classPrefix||"";if(c&&(e=e.baseVal),Modernizr._config.enableJSClass){var o=new RegExp("(^|\\s)"+s+"no-js(\\s|$)");e=e.replace(o,"$1"+s+"js$2")}Modernizr._config.enableClasses&&(e+=" "+s+n.join(" "+s),c?r.className.baseVal=e:r.className=e)}function a(n,e){return typeof n===e}function i(){var n,e,s,o,i,l,r;for(var c in f)if(f.hasOwnProperty(c)){if(n=[],e=f[c],e.name&&(n.push(e.name.toLowerCase()),e.options&&e.options.aliases&&e.options.aliases.length))for(s=0;s<e.options.aliases.length;s++)n.push(e.options.aliases[s].toLowerCase());for(o=a(e.fn,"function")?e.fn():e.fn,i=0;i<n.length;i++)l=n[i],r=l.split("."),1===r.length?Modernizr[r[0]]=o:(!Modernizr[r[0]]||Modernizr[r[0]]instanceof Boolean||(Modernizr[r[0]]=new Boolean(Modernizr[r[0]])),Modernizr[r[0]][r[1]]=o),t.push((o?"":"no-")+r.join("-"))}}var t=[],f=[],l={_version:"3.6.0",_config:{classPrefix:"",enableClasses:!0,enableJSClass:!0,usePrefixes:!0},_q:[],on:function(n,e){var s=this;setTimeout(function(){e(s[n])},0)},addTest:function(n,e,s){f.push({name:n,fn:e,options:s})},addAsyncTest:function(n){f.push({name:null,fn:n})}},Modernizr=function(){};Modernizr.prototype=l,Modernizr=new Modernizr;var r=e.documentElement,c="svg"===r.nodeName.toLowerCase();i(),o(t),delete l.addTest,delete l.addAsyncTest;for(var u=0;u<Modernizr._q.length;u++)Modernizr._q[u]();n.Modernizr=Modernizr}(window,document);
\ No newline at end of file
/* PrismJS 1.11.0
http://prismjs.com/download.html?themes=prism-dark&languages=markup+css+clike+javascript+c+bash+basic+cpp+csharp+arduino+ruby+elixir+fsharp+go+graphql+handlebars+haskell+ini+java+json+kotlin+latex+less+makefile+markdown+matlab+nginx+objectivec+perl+php+powershell+pug+python+typescript+rust+scss+scala+smalltalk+sql+stylus+swift+vbnet+yaml&plugins=line-numbers */
/**
* prism.js Dark theme for JavaScript, CSS and HTML
* Based on the slides of the talk “/Reg(exp){2}lained/”
* @author Lea Verou
*/
code[class*="language-"],
pre[class*="language-"] {
color: white;
background: none;
text-shadow: 0 -.1em .2em black;
font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
text-align: left;
white-space: pre;
word-spacing: normal;
word-break: normal;
word-wrap: normal;
line-height: 1.5;
-moz-tab-size: 4;
-o-tab-size: 4;
tab-size: 4;
-webkit-hyphens: none;
-moz-hyphens: none;
-ms-hyphens: none;
hyphens: none;
}
@media print {
code[class*="language-"],
pre[class*="language-"] {
text-shadow: none;
}
}
pre[class*="language-"],
:not(pre) > code[class*="language-"] {
background: hsl(30, 20%, 25%);
}
/* Code blocks */
pre[class*="language-"] {
padding: 1em;
margin: .5em 0;
overflow: auto;
border: .3em solid hsl(30, 20%, 40%);
border-radius: .5em;
box-shadow: 1px 1px .5em black inset;
}
/* Inline code */
:not(pre) > code[class*="language-"] {
padding: .15em .2em .05em;
border-radius: .3em;
border: .13em solid hsl(30, 20%, 40%);
box-shadow: 1px 1px .3em -.1em black inset;
white-space: normal;
}
.token.comment,
.token.prolog,
.token.doctype,
.token.cdata {
color: hsl(30, 20%, 50%);
}
.token.punctuation {
opacity: .7;
}
.namespace {
opacity: .7;
}
.token.property,
.token.tag,
.token.boolean,
.token.number,
.token.constant,
.token.symbol {
color: hsl(350, 40%, 70%);
}
.token.selector,
.token.attr-name,
.token.string,
.token.char,
.token.builtin,
.token.inserted {
color: hsl(75, 70%, 60%);
}
.token.operator,
.token.entity,
.token.url,
.language-css .token.string,
.style .token.string,
.token.variable {
color: hsl(40, 90%, 60%);
}
.token.atrule,
.token.attr-value,
.token.keyword {
color: hsl(350, 40%, 70%);
}
.token.regex,
.token.important {
color: #e90;
}
.token.important,
.token.bold {
font-weight: bold;
}
.token.italic {
font-style: italic;
}
.token.entity {
cursor: help;
}
.token.deleted {
color: red;
}
pre.line-numbers {
position: relative;
padding-left: 3.8em;
counter-reset: linenumber;
}
pre.line-numbers > code {
position: relative;
white-space: inherit;
}
.line-numbers .line-numbers-rows {
position: absolute;
pointer-events: none;
top: 0;
font-size: 100%;
left: -3.8em;
width: 3em; /* works for line-numbers below 1000 lines */
letter-spacing: -1px;
border-right: 1px solid #999;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
.line-numbers-rows > span {
pointer-events: none;
display: block;
counter-increment: linenumber;
}
.line-numbers-rows > span:before {
content: counter(linenumber);
color: #999;
display: block;
padding-right: 0.8em;
text-align: right;
}
/* PrismJS 1.11.0
http://prismjs.com/download.html?themes=prism-dark&languages=markup+css+clike+javascript+c+bash+basic+cpp+csharp+arduino+ruby+elixir+fsharp+go+graphql+handlebars+haskell+ini+java+json+kotlin+latex+less+makefile+markdown+matlab+nginx+objectivec+perl+php+powershell+pug+python+typescript+rust+scss+scala+smalltalk+sql+stylus+swift+vbnet+yaml&plugins=line-numbers */
var _self="undefined"!=typeof window?window:"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:{},Prism=function(){var e=/\blang(?:uage)?-(\w+)\b/i,t=0,n=_self.Prism={manual:_self.Prism&&_self.Prism.manual,disableWorkerMessageHandler:_self.Prism&&_self.Prism.disableWorkerMessageHandler,util:{encode:function(e){return e instanceof r?new r(e.type,n.util.encode(e.content),e.alias):"Array"===n.util.type(e)?e.map(n.util.encode):e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/\u00a0/g," ")},type:function(e){return Object.prototype.toString.call(e).match(/\[object (\w+)\]/)[1]},objId:function(e){return e.__id||Object.defineProperty(e,"__id",{value:++t}),e.__id},clone:function(e){var t=n.util.type(e);switch(t){case"Object":var r={};for(var a in e)e.hasOwnProperty(a)&&(r[a]=n.util.clone(e[a]));return r;case"Array":return e.map(function(e){return n.util.clone(e)})}return e}},languages:{extend:function(e,t){var r=n.util.clone(n.languages[e]);for(var a in t)r[a]=t[a];return r},insertBefore:function(e,t,r,a){a=a||n.languages;var l=a[e];if(2==arguments.length){r=arguments[1];for(var i in r)r.hasOwnProperty(i)&&(l[i]=r[i]);return l}var o={};for(var s in l)if(l.hasOwnProperty(s)){if(s==t)for(var i in r)r.hasOwnProperty(i)&&(o[i]=r[i]);o[s]=l[s]}return n.languages.DFS(n.languages,function(t,n){n===a[e]&&t!=e&&(this[t]=o)}),a[e]=o},DFS:function(e,t,r,a){a=a||{};for(var l in e)e.hasOwnProperty(l)&&(t.call(e,l,e[l],r||l),"Object"!==n.util.type(e[l])||a[n.util.objId(e[l])]?"Array"!==n.util.type(e[l])||a[n.util.objId(e[l])]||(a[n.util.objId(e[l])]=!0,n.languages.DFS(e[l],t,l,a)):(a[n.util.objId(e[l])]=!0,n.languages.DFS(e[l],t,null,a)))}},plugins:{},highlightAll:function(e,t){n.highlightAllUnder(document,e,t)},highlightAllUnder:function(e,t,r){var a={callback:r,selector:'code[class*="language-"], [class*="language-"] code, code[class*="lang-"], [class*="lang-"] code'};n.hooks.run("before-highlightall",a);for(var l,i=a.elements||e.querySelectorAll(a.selector),o=0;l=i[o++];)n.highlightElement(l,t===!0,a.callback)},highlightElement:function(t,r,a){for(var l,i,o=t;o&&!e.test(o.className);)o=o.parentNode;o&&(l=(o.className.match(e)||[,""])[1].toLowerCase(),i=n.languages[l]),t.className=t.className.replace(e,"").replace(/\s+/g," ")+" language-"+l,t.parentNode&&(o=t.parentNode,/pre/i.test(o.nodeName)&&(o.className=o.className.replace(e,"").replace(/\s+/g," ")+" language-"+l));var s=t.textContent,g={element:t,language:l,grammar:i,code:s};if(n.hooks.run("before-sanity-check",g),!g.code||!g.grammar)return g.code&&(n.hooks.run("before-highlight",g),g.element.textContent=g.code,n.hooks.run("after-highlight",g)),n.hooks.run("complete",g),void 0;if(n.hooks.run("before-highlight",g),r&&_self.Worker){var u=new Worker(n.filename);u.onmessage=function(e){g.highlightedCode=e.data,n.hooks.run("before-insert",g),g.element.innerHTML=g.highlightedCode,a&&a.call(g.element),n.hooks.run("after-highlight",g),n.hooks.run("complete",g)},u.postMessage(JSON.stringify({language:g.language,code:g.code,immediateClose:!0}))}else g.highlightedCode=n.highlight(g.code,g.grammar,g.language),n.hooks.run("before-insert",g),g.element.innerHTML=g.highlightedCode,a&&a.call(t),n.hooks.run("after-highlight",g),n.hooks.run("complete",g)},highlight:function(e,t,a){var l=n.tokenize(e,t);return r.stringify(n.util.encode(l),a)},matchGrammar:function(e,t,r,a,l,i,o){var s=n.Token;for(var g in r)if(r.hasOwnProperty(g)&&r[g]){if(g==o)return;var u=r[g];u="Array"===n.util.type(u)?u:[u];for(var c=0;c<u.length;++c){var h=u[c],f=h.inside,d=!!h.lookbehind,m=!!h.greedy,p=0,y=h.alias;if(m&&!h.pattern.global){var v=h.pattern.toString().match(/[imuy]*$/)[0];h.pattern=RegExp(h.pattern.source,v+"g")}h=h.pattern||h;for(var b=a,k=l;b<t.length;k+=t[b].length,++b){var w=t[b];if(t.length>e.length)return;if(!(w instanceof s)){h.lastIndex=0;var _=h.exec(w),P=1;if(!_&&m&&b!=t.length-1){if(h.lastIndex=k,_=h.exec(e),!_)break;for(var A=_.index+(d?_[1].length:0),j=_.index+_[0].length,x=b,O=k,N=t.length;N>x&&(j>O||!t[x].type&&!t[x-1].greedy);++x)O+=t[x].length,A>=O&&(++b,k=O);if(t[b]instanceof s||t[x-1].greedy)continue;P=x-b,w=e.slice(k,O),_.index-=k}if(_){d&&(p=_[1].length);var A=_.index+p,_=_[0].slice(p),j=A+_.length,S=w.slice(0,A),C=w.slice(j),M=[b,P];S&&(++b,k+=S.length,M.push(S));var E=new s(g,f?n.tokenize(_,f):_,y,_,m);if(M.push(E),C&&M.push(C),Array.prototype.splice.apply(t,M),1!=P&&n.matchGrammar(e,t,r,b,k,!0,g),i)break}else if(i)break}}}}},tokenize:function(e,t){var r=[e],a=t.rest;if(a){for(var l in a)t[l]=a[l];delete t.rest}return n.matchGrammar(e,r,t,0,0,!1),r},hooks:{all:{},add:function(e,t){var r=n.hooks.all;r[e]=r[e]||[],r[e].push(t)},run:function(e,t){var r=n.hooks.all[e];if(r&&r.length)for(var a,l=0;a=r[l++];)a(t)}}},r=n.Token=function(e,t,n,r,a){this.type=e,this.content=t,this.alias=n,this.length=0|(r||"").length,this.greedy=!!a};if(r.stringify=function(e,t,a){if("string"==typeof e)return e;if("Array"===n.util.type(e))return e.map(function(n){return r.stringify(n,t,e)}).join("");var l={type:e.type,content:r.stringify(e.content,t,a),tag:"span",classes:["token",e.type],attributes:{},language:t,parent:a};if(e.alias){var i="Array"===n.util.type(e.alias)?e.alias:[e.alias];Array.prototype.push.apply(l.classes,i)}n.hooks.run("wrap",l);var o=Object.keys(l.attributes).map(function(e){return e+'="'+(l.attributes[e]||"").replace(/"/g,"&quot;")+'"'}).join(" ");return"<"+l.tag+' class="'+l.classes.join(" ")+'"'+(o?" "+o:"")+">"+l.content+"</"+l.tag+">"},!_self.document)return _self.addEventListener?(n.disableWorkerMessageHandler||_self.addEventListener("message",function(e){var t=JSON.parse(e.data),r=t.language,a=t.code,l=t.immediateClose;_self.postMessage(n.highlight(a,n.languages[r],r)),l&&_self.close()},!1),_self.Prism):_self.Prism;var a=document.currentScript||[].slice.call(document.getElementsByTagName("script")).pop();return a&&(n.filename=a.src,n.manual||a.hasAttribute("data-manual")||("loading"!==document.readyState?window.requestAnimationFrame?window.requestAnimationFrame(n.highlightAll):window.setTimeout(n.highlightAll,16):document.addEventListener("DOMContentLoaded",n.highlightAll))),_self.Prism}();"undefined"!=typeof module&&module.exports&&(module.exports=Prism),"undefined"!=typeof global&&(global.Prism=Prism);
Prism.languages.markup={comment:/<!--[\s\S]*?-->/,prolog:/<\?[\s\S]+?\?>/,doctype:/<!DOCTYPE[\s\S]+?>/i,cdata:/<!\[CDATA\[[\s\S]*?]]>/i,tag:{pattern:/<\/?(?!\d)[^\s>\/=$<]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+))?)*\s*\/?>/i,inside:{tag:{pattern:/^<\/?[^\s>\/]+/i,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"attr-value":{pattern:/=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+)/i,inside:{punctuation:[/^=/,{pattern:/(^|[^\\])["']/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:/&#?[\da-z]{1,8};/i},Prism.languages.markup.tag.inside["attr-value"].inside.entity=Prism.languages.markup.entity,Prism.hooks.add("wrap",function(a){"entity"===a.type&&(a.attributes.title=a.content.replace(/&amp;/,"&"))}),Prism.languages.xml=Prism.languages.markup,Prism.languages.html=Prism.languages.markup,Prism.languages.mathml=Prism.languages.markup,Prism.languages.svg=Prism.languages.markup;
Prism.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-]+?.*?(?:;|(?=\s*\{))/i,inside:{rule:/@[\w-]+/}},url:/url\((?:(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1|.*?)\)/i,selector:/[^{}\s][^{};]*?(?=\s*\{)/,string:{pattern:/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},property:/[-_a-z\xA0-\uFFFF][-\w\xA0-\uFFFF]*(?=\s*:)/i,important:/\B!important\b/i,"function":/[-a-z0-9]+(?=\()/i,punctuation:/[(){};:]/},Prism.languages.css.atrule.inside.rest=Prism.util.clone(Prism.languages.css),Prism.languages.markup&&(Prism.languages.insertBefore("markup","tag",{style:{pattern:/(<style[\s\S]*?>)[\s\S]*?(?=<\/style>)/i,lookbehind:!0,inside:Prism.languages.css,alias:"language-css",greedy:!0}}),Prism.languages.insertBefore("inside","attr-value",{"style-attr":{pattern:/\s*style=("|')(?:\\[\s\S]|(?!\1)[^\\])*\1/i,inside:{"attr-name":{pattern:/^\s*style/i,inside:Prism.languages.markup.tag.inside},punctuation:/^\s*=\s*['"]|['"]\s*$/,"attr-value":{pattern:/.+/i,inside:Prism.languages.css}},alias:"language-css"}},Prism.languages.markup.tag));
Prism.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/((?:\b(?:class|interface|extends|implements|trait|instanceof|new)\s+)|(?:catch\s+\())[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\b/,"boolean":/\b(?:true|false)\b/,"function":/[a-z0-9_]+(?=\()/i,number:/\b-?(?:0x[\da-f]+|\d*\.?\d+(?:e[+-]?\d+)?)\b/i,operator:/--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&?|\|\|?|\?|\*|\/|~|\^|%/,punctuation:/[{}[\];(),.:]/};
Prism.languages.javascript=Prism.languages.extend("clike",{keyword:/\b(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|var|void|while|with|yield)\b/,number:/\b-?(?:0[xX][\dA-Fa-f]+|0[bB][01]+|0[oO][0-7]+|\d*\.?\d+(?:[Ee][+-]?\d+)?|NaN|Infinity)\b/,"function":/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*\()/i,operator:/-[-=]?|\+[+=]?|!=?=?|<<?=?|>>?>?=?|=(?:==?|>)?|&[&=]?|\|[|=]?|\*\*?=?|\/=?|~|\^=?|%=?|\?|\.{3}/}),Prism.languages.insertBefore("javascript","keyword",{regex:{pattern:/(^|[^\/])\/(?!\/)(\[[^\]\r\n]+]|\\.|[^\/\\\[\r\n])+\/[gimyu]{0,5}(?=\s*($|[\r\n,.;})]))/,lookbehind:!0,greedy:!0},"function-variable":{pattern:/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*=\s*(?:function\b|(?:\([^()]*\)|[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*)\s*=>))/i,alias:"function"}}),Prism.languages.insertBefore("javascript","string",{"template-string":{pattern:/`(?:\\[\s\S]|[^\\`])*`/,greedy:!0,inside:{interpolation:{pattern:/\$\{[^}]+\}/,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:Prism.languages.javascript}},string:/[\s\S]+/}}}),Prism.languages.markup&&Prism.languages.insertBefore("markup","tag",{script:{pattern:/(<script[\s\S]*?>)[\s\S]*?(?=<\/script>)/i,lookbehind:!0,inside:Prism.languages.javascript,alias:"language-javascript",greedy:!0}}),Prism.languages.js=Prism.languages.javascript;
Prism.languages.c=Prism.languages.extend("clike",{keyword:/\b(?:_Alignas|_Alignof|_Atomic|_Bool|_Complex|_Generic|_Imaginary|_Noreturn|_Static_assert|_Thread_local|asm|typeof|inline|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|union|unsigned|void|volatile|while)\b/,operator:/-[>-]?|\+\+?|!=?|<<?=?|>>?=?|==?|&&?|\|\|?|[~^%?*\/]/,number:/\b-?(?:0x[\da-f]+|\d*\.?\d+(?:e[+-]?\d+)?)[ful]*\b/i}),Prism.languages.insertBefore("c","string",{macro:{pattern:/(^\s*)#\s*[a-z]+(?:[^\r\n\\]|\\(?:\r\n|[\s\S]))*/im,lookbehind:!0,alias:"property",inside:{string:{pattern:/(#\s*include\s*)(?:<.+?>|("|')(?:\\?.)+?\2)/,lookbehind:!0},directive:{pattern:/(#\s*)\b(?:define|defined|elif|else|endif|error|ifdef|ifndef|if|import|include|line|pragma|undef|using)\b/,lookbehind:!0,alias:"keyword"}}},constant:/\b(?:__FILE__|__LINE__|__DATE__|__TIME__|__TIMESTAMP__|__func__|EOF|NULL|SEEK_CUR|SEEK_END|SEEK_SET|stdin|stdout|stderr)\b/}),delete Prism.languages.c["class-name"],delete Prism.languages.c["boolean"];
!function(e){var t={variable:[{pattern:/\$?\(\([\s\S]+?\)\)/,inside:{variable:[{pattern:/(^\$\(\([\s\S]+)\)\)/,lookbehind:!0},/^\$\(\(/],number:/\b-?(?:0x[\dA-Fa-f]+|\d*\.?\d+(?:[Ee]-?\d+)?)\b/,operator:/--?|-=|\+\+?|\+=|!=?|~|\*\*?|\*=|\/=?|%=?|<<=?|>>=?|<=?|>=?|==?|&&?|&=|\^=?|\|\|?|\|=|\?|:/,punctuation:/\(\(?|\)\)?|,|;/}},{pattern:/\$\([^)]+\)|`[^`]+`/,inside:{variable:/^\$\(|^`|\)$|`$/}},/\$(?:[\w#?*!@]+|\{[^}]+\})/i]};e.languages.bash={shebang:{pattern:/^#!\s*\/bin\/bash|^#!\s*\/bin\/sh/,alias:"important"},comment:{pattern:/(^|[^"{\\])#.*/,lookbehind:!0},string:[{pattern:/((?:^|[^<])<<\s*)["']?(\w+?)["']?\s*\r?\n(?:[\s\S])*?\r?\n\2/,lookbehind:!0,greedy:!0,inside:t},{pattern:/(["'])(?:\\[\s\S]|(?!\1)[^\\])*\1/,greedy:!0,inside:t}],variable:t.variable,"function":{pattern:/(^|[\s;|&])(?:alias|apropos|apt-get|aptitude|aspell|awk|basename|bash|bc|bg|builtin|bzip2|cal|cat|cd|cfdisk|chgrp|chmod|chown|chroot|chkconfig|cksum|clear|cmp|comm|command|cp|cron|crontab|csplit|cut|date|dc|dd|ddrescue|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|du|egrep|eject|enable|env|ethtool|eval|exec|expand|expect|export|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|getopts|git|grep|groupadd|groupdel|groupmod|groups|gzip|hash|head|help|hg|history|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|jobs|join|kill|killall|less|link|ln|locate|logname|logout|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|make|man|mkdir|mkfifo|mkisofs|mknod|more|most|mount|mtools|mtr|mv|mmv|nano|netstat|nice|nl|nohup|notify-send|npm|nslookup|open|op|passwd|paste|pathchk|ping|pkill|popd|pr|printcap|printenv|printf|ps|pushd|pv|pwd|quota|quotacheck|quotactl|ram|rar|rcp|read|readarray|readonly|reboot|rename|renice|remsync|rev|rm|rmdir|rsync|screen|scp|sdiff|sed|seq|service|sftp|shift|shopt|shutdown|sleep|slocate|sort|source|split|ssh|stat|strace|su|sudo|sum|suspend|sync|tail|tar|tee|test|time|timeout|times|touch|top|traceroute|trap|tr|tsort|tty|type|ulimit|umask|umount|unalias|uname|unexpand|uniq|units|unrar|unshar|uptime|useradd|userdel|usermod|users|uuencode|uudecode|v|vdir|vi|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yes|zip)(?=$|[\s;|&])/,lookbehind:!0},keyword:{pattern:/(^|[\s;|&])(?:let|:|\.|if|then|else|elif|fi|for|break|continue|while|in|case|function|select|do|done|until|echo|exit|return|set|declare)(?=$|[\s;|&])/,lookbehind:!0},"boolean":{pattern:/(^|[\s;|&])(?:true|false)(?=$|[\s;|&])/,lookbehind:!0},operator:/&&?|\|\|?|==?|!=?|<<<?|>>|<=?|>=?|=~/,punctuation:/\$?\(\(?|\)\)?|\.\.|[{}[\];]/};var a=t.variable[1].inside;a["function"]=e.languages.bash["function"],a.keyword=e.languages.bash.keyword,a.boolean=e.languages.bash.boolean,a.operator=e.languages.bash.operator,a.punctuation=e.languages.bash.punctuation}(Prism);
Prism.languages.basic={comment:{pattern:/(?:!|REM\b).+/i,inside:{keyword:/^REM/i}},string:{pattern:/"(?:""|[!#$%&'()*,\/:;<=>?^_ +\-.A-Z\d])*"/i,greedy:!0},number:/(?:\b|\B[.-])(?:\d+\.?\d*)(?:E[+-]?\d+)?/i,keyword:/\b(?:AS|BEEP|BLOAD|BSAVE|CALL(?: ABSOLUTE)?|CASE|CHAIN|CHDIR|CLEAR|CLOSE|CLS|COM|COMMON|CONST|DATA|DECLARE|DEF(?: FN| SEG|DBL|INT|LNG|SNG|STR)|DIM|DO|DOUBLE|ELSE|ELSEIF|END|ENVIRON|ERASE|ERROR|EXIT|FIELD|FILES|FOR|FUNCTION|GET|GOSUB|GOTO|IF|INPUT|INTEGER|IOCTL|KEY|KILL|LINE INPUT|LOCATE|LOCK|LONG|LOOP|LSET|MKDIR|NAME|NEXT|OFF|ON(?: COM| ERROR| KEY| TIMER)?|OPEN|OPTION BASE|OUT|POKE|PUT|READ|REDIM|REM|RESTORE|RESUME|RETURN|RMDIR|RSET|RUN|SHARED|SINGLE|SELECT CASE|SHELL|SLEEP|STATIC|STEP|STOP|STRING|SUB|SWAP|SYSTEM|THEN|TIMER|TO|TROFF|TRON|TYPE|UNLOCK|UNTIL|USING|VIEW PRINT|WAIT|WEND|WHILE|WRITE)(?:\$|\b)/i,"function":/\b(?:ABS|ACCESS|ACOS|ANGLE|AREA|ARITHMETIC|ARRAY|ASIN|ASK|AT|ATN|BASE|BEGIN|BREAK|CAUSE|CEIL|CHR|CLIP|COLLATE|COLOR|CON|COS|COSH|COT|CSC|DATE|DATUM|DEBUG|DECIMAL|DEF|DEG|DEGREES|DELETE|DET|DEVICE|DISPLAY|DOT|ELAPSED|EPS|ERASABLE|EXLINE|EXP|EXTERNAL|EXTYPE|FILETYPE|FIXED|FP|GO|GRAPH|HANDLER|IDN|IMAGE|IN|INT|INTERNAL|IP|IS|KEYED|LBOUND|LCASE|LEFT|LEN|LENGTH|LET|LINE|LINES|LOG|LOG10|LOG2|LTRIM|MARGIN|MAT|MAX|MAXNUM|MID|MIN|MISSING|MOD|NATIVE|NUL|NUMERIC|OF|OPTION|ORD|ORGANIZATION|OUTIN|OUTPUT|PI|POINT|POINTER|POINTS|POS|PRINT|PROGRAM|PROMPT|RAD|RADIANS|RANDOMIZE|RECORD|RECSIZE|RECTYPE|RELATIVE|REMAINDER|REPEAT|REST|RETRY|REWRITE|RIGHT|RND|ROUND|RTRIM|SAME|SEC|SELECT|SEQUENTIAL|SET|SETTER|SGN|SIN|SINH|SIZE|SKIP|SQR|STANDARD|STATUS|STR|STREAM|STYLE|TAB|TAN|TANH|TEMPLATE|TEXT|THERE|TIME|TIMEOUT|TRACE|TRANSFORM|TRUNCATE|UBOUND|UCASE|USE|VAL|VARIABLE|VIEWPORT|WHEN|WINDOW|WITH|ZER|ZONEWIDTH)(?:\$|\b)/i,operator:/<[=>]?|>=?|[+\-*\/^=&]|\b(?:AND|EQV|IMP|NOT|OR|XOR)\b/i,punctuation:/[,;:()]/};
Prism.languages.cpp=Prism.languages.extend("c",{keyword:/\b(?:alignas|alignof|asm|auto|bool|break|case|catch|char|char16_t|char32_t|class|compl|const|constexpr|const_cast|continue|decltype|default|delete|do|double|dynamic_cast|else|enum|explicit|export|extern|float|for|friend|goto|if|inline|int|int8_t|int16_t|int32_t|int64_t|uint8_t|uint16_t|uint32_t|uint64_t|long|mutable|namespace|new|noexcept|nullptr|operator|private|protected|public|register|reinterpret_cast|return|short|signed|sizeof|static|static_assert|static_cast|struct|switch|template|this|thread_local|throw|try|typedef|typeid|typename|union|unsigned|using|virtual|void|volatile|wchar_t|while)\b/,"boolean":/\b(?:true|false)\b/,operator:/--?|\+\+?|!=?|<{1,2}=?|>{1,2}=?|->|:{1,2}|={1,2}|\^|~|%|&{1,2}|\|\|?|\?|\*|\/|\b(?:and|and_eq|bitand|bitor|not|not_eq|or|or_eq|xor|xor_eq)\b/}),Prism.languages.insertBefore("cpp","keyword",{"class-name":{pattern:/(class\s+)\w+/i,lookbehind:!0}}),Prism.languages.insertBefore("cpp","string",{"raw-string":{pattern:/R"([^()\\ ]{0,16})\([\s\S]*?\)\1"/,alias:"string",greedy:!0}});
Prism.languages.csharp=Prism.languages.extend("clike",{keyword:/\b(abstract|as|async|await|base|bool|break|byte|case|catch|char|checked|class|const|continue|decimal|default|delegate|do|double|else|enum|event|explicit|extern|false|finally|fixed|float|for|foreach|goto|if|implicit|in|int|interface|internal|is|lock|long|namespace|new|null|object|operator|out|override|params|private|protected|public|readonly|ref|return|sbyte|sealed|short|sizeof|stackalloc|static|string|struct|switch|this|throw|true|try|typeof|uint|ulong|unchecked|unsafe|ushort|using|virtual|void|volatile|while|add|alias|ascending|async|await|descending|dynamic|from|get|global|group|into|join|let|orderby|partial|remove|select|set|value|var|where|yield)\b/,string:[{pattern:/@("|')(?:\1\1|\\[\s\S]|(?!\1)[^\\])*\1/,greedy:!0},{pattern:/("|')(?:\\.|(?!\1)[^\\\r\n])*?\1/,greedy:!0}],number:/\b-?(?:0x[\da-f]+|\d*\.?\d+f?)\b/i}),Prism.languages.insertBefore("csharp","keyword",{"generic-method":{pattern:/[a-z0-9_]+\s*<[^>\r\n]+?>\s*(?=\()/i,alias:"function",inside:{keyword:Prism.languages.csharp.keyword,punctuation:/[<>(),.:]/}},preprocessor:{pattern:/(^\s*)#.*/m,lookbehind:!0,alias:"property",inside:{directive:{pattern:/(\s*#)\b(?:define|elif|else|endif|endregion|error|if|line|pragma|region|undef|warning)\b/,lookbehind:!0,alias:"keyword"}}}});
Prism.languages.arduino=Prism.languages.extend("cpp",{keyword:/\b(?:setup|if|else|while|do|for|return|in|instanceof|default|function|loop|goto|switch|case|new|try|throw|catch|finally|null|break|continue|boolean|bool|void|byte|word|string|String|array|int|long|integer|double)\b/,builtin:/\b(?:KeyboardController|MouseController|SoftwareSerial|EthernetServer|EthernetClient|LiquidCrystal|LiquidCrystal_I2C|RobotControl|GSMVoiceCall|EthernetUDP|EsploraTFT|HttpClient|RobotMotor|WiFiClient|GSMScanner|FileSystem|Scheduler|GSMServer|YunClient|YunServer|IPAddress|GSMClient|GSMModem|Keyboard|Ethernet|Console|GSMBand|Esplora|Stepper|Process|WiFiUDP|GSM_SMS|Mailbox|USBHost|Firmata|PImage|Client|Server|GSMPIN|FileIO|Bridge|Serial|EEPROM|Stream|Mouse|Audio|Servo|File|Task|GPRS|WiFi|Wire|TFT|GSM|SPI|SD|runShellCommandAsynchronously|analogWriteResolution|retrieveCallingNumber|printFirmwareVersion|analogReadResolution|sendDigitalPortPair|noListenOnLocalhost|readJoystickButton|setFirmwareVersion|readJoystickSwitch|scrollDisplayRight|getVoiceCallStatus|scrollDisplayLeft|writeMicroseconds|delayMicroseconds|beginTransmission|getSignalStrength|runAsynchronously|getAsynchronously|listenOnLocalhost|getCurrentCarrier|readAccelerometer|messageAvailable|sendDigitalPorts|lineFollowConfig|countryNameWrite|runShellCommand|readStringUntil|rewindDirectory|readTemperature|setClockDivider|readLightSensor|endTransmission|analogReference|detachInterrupt|countryNameRead|attachInterrupt|encryptionType|readBytesUntil|robotNameWrite|readMicrophone|robotNameRead|cityNameWrite|userNameWrite|readJoystickY|readJoystickX|mouseReleased|openNextFile|scanNetworks|noInterrupts|digitalWrite|beginSpeaker|mousePressed|isActionDone|mouseDragged|displayLogos|noAutoscroll|addParameter|remoteNumber|getModifiers|keyboardRead|userNameRead|waitContinue|processInput|parseCommand|printVersion|readNetworks|writeMessage|blinkVersion|cityNameRead|readMessage|setDataMode|parsePacket|isListening|setBitOrder|beginPacket|isDirectory|motorsWrite|drawCompass|digitalRead|clearScreen|serialEvent|rightToLeft|setTextSize|leftToRight|requestFrom|keyReleased|compassRead|analogWrite|interrupts|WiFiServer|disconnect|playMelody|parseFloat|autoscroll|getPINUsed|setPINUsed|setTimeout|sendAnalog|readSlider|analogRead|beginWrite|createChar|motorsStop|keyPressed|tempoWrite|readButton|subnetMask|debugPrint|macAddress|writeGreen|randomSeed|attachGPRS|readString|sendString|remotePort|releaseAll|mouseMoved|background|getXChange|getYChange|answerCall|getResult|voiceCall|endPacket|constrain|getSocket|writeJSON|getButton|available|connected|findUntil|readBytes|exitValue|readGreen|writeBlue|startLoop|IPAddress|isPressed|sendSysex|pauseMode|gatewayIP|setCursor|getOemKey|tuneWrite|noDisplay|loadImage|switchPIN|onRequest|onReceive|changePIN|playFile|noBuffer|parseInt|overflow|checkPIN|knobRead|beginTFT|bitClear|updateIR|bitWrite|position|writeRGB|highByte|writeRed|setSpeed|readBlue|noStroke|remoteIP|transfer|shutdown|hangCall|beginSMS|endWrite|attached|maintain|noCursor|checkReg|checkPUK|shiftOut|isValid|shiftIn|pulseIn|connect|println|localIP|pinMode|getIMEI|display|noBlink|process|getBand|running|beginSD|drawBMP|lowByte|setBand|release|bitRead|prepare|pointTo|readRed|setMode|noFill|remove|listen|stroke|detach|attach|noTone|exists|buffer|height|bitSet|circle|config|cursor|random|IRread|setDNS|endSMS|getKey|micros|millis|begin|print|write|ready|flush|width|isPIN|blink|clear|press|mkdir|rmdir|close|point|yield|image|BSSID|click|delay|read|text|move|peek|beep|rect|line|open|seek|fill|size|turn|stop|home|find|step|tone|sqrt|RSSI|SSID|end|bit|tan|cos|sin|pow|map|abs|max|min|get|run|put)\b/,constant:/\b(?:DIGITAL_MESSAGE|FIRMATA_STRING|ANALOG_MESSAGE|REPORT_DIGITAL|REPORT_ANALOG|INPUT_PULLUP|SET_PIN_MODE|INTERNAL2V56|SYSTEM_RESET|LED_BUILTIN|INTERNAL1V1|SYSEX_START|INTERNAL|EXTERNAL|DEFAULT|OUTPUT|INPUT|HIGH|LOW)\b/});
!function(e){e.languages.ruby=e.languages.extend("clike",{comment:[/#(?!\{[^\r\n]*?\}).*/,/^=begin(?:\r?\n|\r)(?:.*(?:\r?\n|\r))*?=end/m],keyword:/\b(?:alias|and|BEGIN|begin|break|case|class|def|define_method|defined|do|each|else|elsif|END|end|ensure|false|for|if|in|module|new|next|nil|not|or|raise|redo|require|rescue|retry|return|self|super|then|throw|true|undef|unless|until|when|while|yield)\b/});var n={pattern:/#\{[^}]+\}/,inside:{delimiter:{pattern:/^#\{|\}$/,alias:"tag"},rest:e.util.clone(e.languages.ruby)}};e.languages.insertBefore("ruby","keyword",{regex:[{pattern:/%r([^a-zA-Z0-9\s{(\[<])(?:(?!\1)[^\\]|\\[\s\S])*\1[gim]{0,3}/,greedy:!0,inside:{interpolation:n}},{pattern:/%r\((?:[^()\\]|\\[\s\S])*\)[gim]{0,3}/,greedy:!0,inside:{interpolation:n}},{pattern:/%r\{(?:[^#{}\\]|#(?:\{[^}]+\})?|\\[\s\S])*\}[gim]{0,3}/,greedy:!0,inside:{interpolation:n}},{pattern:/%r\[(?:[^\[\]\\]|\\[\s\S])*\][gim]{0,3}/,greedy:!0,inside:{interpolation:n}},{pattern:/%r<(?:[^<>\\]|\\[\s\S])*>[gim]{0,3}/,greedy:!0,inside:{interpolation:n}},{pattern:/(^|[^\/])\/(?!\/)(\[.+?]|\\.|[^\/\\\r\n])+\/[gim]{0,3}(?=\s*($|[\r\n,.;})]))/,lookbehind:!0,greedy:!0}],variable:/[@$]+[a-zA-Z_]\w*(?:[?!]|\b)/,symbol:/:[a-zA-Z_]\w*(?:[?!]|\b)/}),e.languages.insertBefore("ruby","number",{builtin:/\b(?:Array|Bignum|Binding|Class|Continuation|Dir|Exception|FalseClass|File|Stat|Fixnum|Float|Hash|Integer|IO|MatchData|Method|Module|NilClass|Numeric|Object|Proc|Range|Regexp|String|Struct|TMS|Symbol|ThreadGroup|Thread|Time|TrueClass)\b/,constant:/\b[A-Z]\w*(?:[?!]|\b)/}),e.languages.ruby.string=[{pattern:/%[qQiIwWxs]?([^a-zA-Z0-9\s{(\[<])(?:(?!\1)[^\\]|\\[\s\S])*\1/,greedy:!0,inside:{interpolation:n}},{pattern:/%[qQiIwWxs]?\((?:[^()\\]|\\[\s\S])*\)/,greedy:!0,inside:{interpolation:n}},{pattern:/%[qQiIwWxs]?\{(?:[^#{}\\]|#(?:\{[^}]+\})?|\\[\s\S])*\}/,greedy:!0,inside:{interpolation:n}},{pattern:/%[qQiIwWxs]?\[(?:[^\[\]\\]|\\[\s\S])*\]/,greedy:!0,inside:{interpolation:n}},{pattern:/%[qQiIwWxs]?<(?:[^<>\\]|\\[\s\S])*>/,greedy:!0,inside:{interpolation:n}},{pattern:/("|')(?:#\{[^}]+\}|\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0,inside:{interpolation:n}}]}(Prism);
Prism.languages.elixir={comment:{pattern:/(^|[^#])#(?![{#]).*/m,lookbehind:!0},regex:/~[rR](?:("""|''')(?:\\[\s\S]|(?!\1)[^\\])+\1|([\/|"'])(?:\\.|(?!\2)[^\\\r\n])+\2|\((?:\\.|[^\\)\r\n])+\)|\[(?:\\.|[^\\\]\r\n])+\]|\{(?:\\.|[^\\}\r\n])+\}|<(?:\\.|[^\\>\r\n])+>)[uismxfr]*/,string:[{pattern:/~[cCsSwW](?:("""|''')(?:\\[\s\S]|(?!\1)[^\\])+\1|([\/|"'])(?:\\.|(?!\2)[^\\\r\n])+\2|\((?:\\.|[^\\)\r\n])+\)|\[(?:\\.|[^\\\]\r\n])+\]|\{(?:\\.|#\{[^}]+\}|[^\\}\r\n])+\}|<(?:\\.|[^\\>\r\n])+>)[csa]?/,greedy:!0,inside:{}},{pattern:/("""|''')[\s\S]*?\1/,greedy:!0,inside:{}},{pattern:/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0,inside:{}}],atom:{pattern:/(^|[^:]):\w+/,lookbehind:!0,alias:"symbol"},"attr-name":/\w+:(?!:)/,capture:{pattern:/(^|[^&])&(?:[^&\s\d()][^\s()]*|(?=\())/,lookbehind:!0,alias:"function"},argument:{pattern:/(^|[^&])&\d+/,lookbehind:!0,alias:"variable"},attribute:{pattern:/@[\S]+/,alias:"variable"},number:/\b(?:0[box][a-f\d_]+|\d[\d_]*)(?:\.[\d_]+)?(?:e[+-]?[\d_]+)?\b/i,keyword:/\b(?:after|alias|and|case|catch|cond|def(?:callback|exception|impl|module|p|protocol|struct)?|do|else|end|fn|for|if|import|not|or|require|rescue|try|unless|use|when)\b/,"boolean":/\b(?:true|false|nil)\b/,operator:[/\bin\b|&&?|\|[|>]?|\\\\|::|\.\.\.?|\+\+?|-[->]?|<[-=>]|>=|!==?|\B!|=(?:==?|[>~])?|[*\/^]/,{pattern:/([^<])<(?!<)/,lookbehind:!0},{pattern:/([^>])>(?!>)/,lookbehind:!0}],punctuation:/<<|>>|[.,%\[\]{}()]/},Prism.languages.elixir.string.forEach(function(e){e.inside={interpolation:{pattern:/#\{[^}]+\}/,inside:{delimiter:{pattern:/^#\{|\}$/,alias:"punctuation"},rest:Prism.util.clone(Prism.languages.elixir)}}}});
Prism.languages.fsharp=Prism.languages.extend("clike",{comment:[{pattern:/(^|[^\\])\(\*[\s\S]*?\*\)/,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0}],keyword:/\b(?:let|return|use|yield)(?:!\B|\b)|\b(abstract|and|as|assert|base|begin|class|default|delegate|do|done|downcast|downto|elif|else|end|exception|extern|false|finally|for|fun|function|global|if|in|inherit|inline|interface|internal|lazy|match|member|module|mutable|namespace|new|not|null|of|open|or|override|private|public|rec|select|static|struct|then|to|true|try|type|upcast|val|void|when|while|with|asr|land|lor|lsl|lsr|lxor|mod|sig|atomic|break|checked|component|const|constraint|constructor|continue|eager|event|external|fixed|functor|include|method|mixin|object|parallel|process|protected|pure|sealed|tailcall|trait|virtual|volatile)\b/,string:{pattern:/(?:"""[\s\S]*?"""|@"(?:""|[^"])*"|("|')(?:\\[\s\S]|(?!\1)[^\\])*\1)B?/,greedy:!0},number:[/\b-?0x[\da-fA-F]+(?:un|lf|LF)?\b/,/\b-?0b[01]+(?:y|uy)?\b/,/\b-?(?:\d*\.?\d+|\d+\.)(?:[fFmM]|[eE][+-]?\d+)?\b/,/\b-?\d+(?:y|uy|s|us|l|u|ul|L|UL|I)?\b/]}),Prism.languages.insertBefore("fsharp","keyword",{preprocessor:{pattern:/^[^\r\n\S]*#.*/m,alias:"property",inside:{directive:{pattern:/(\s*#)\b(?:else|endif|if|light|line|nowarn)\b/,lookbehind:!0,alias:"keyword"}}}});
Prism.languages.go=Prism.languages.extend("clike",{keyword:/\b(?:break|case|chan|const|continue|default|defer|else|fallthrough|for|func|go(?:to)?|if|import|interface|map|package|range|return|select|struct|switch|type|var)\b/,builtin:/\b(?:bool|byte|complex(?:64|128)|error|float(?:32|64)|rune|string|u?int(?:8|16|32|64)?|uintptr|append|cap|close|complex|copy|delete|imag|len|make|new|panic|print(?:ln)?|real|recover)\b/,"boolean":/\b(?:_|iota|nil|true|false)\b/,operator:/[*\/%^!=]=?|\+[=+]?|-[=-]?|\|[=|]?|&(?:=|&|\^=?)?|>(?:>=?|=)?|<(?:<=?|=|-)?|:=|\.\.\./,number:/\b(-?(0x[a-f\d]+|(\d+\.?\d*|\.\d+)(e[-+]?\d+)?)i?)\b/i,string:{pattern:/(["'`])(\\[\s\S]|(?!\1)[^\\])*\1/,greedy:!0}}),delete Prism.languages.go["class-name"];
Prism.languages.graphql={comment:/#.*/,string:{pattern:/"(?:\\.|[^\\"\r\n])*"/,greedy:!0},number:/(?:\B-|\b)\d+(?:\.\d+)?(?:[eE][+-]?\d+)?\b/,"boolean":/\b(?:true|false)\b/,variable:/\$[a-z_]\w*/i,directive:{pattern:/@[a-z_]\w*/i,alias:"function"},"attr-name":/[a-z_]\w*(?=\s*:)/i,keyword:[{pattern:/(fragment\s+(?!on)[a-z_]\w*\s+|\.{3}\s*)on\b/,lookbehind:!0},/\b(?:query|fragment|mutation)\b/],operator:/!|=|\.{3}/,punctuation:/[!(){}\[\]:=,]/};
!function(e){var a=/\{\{\{[\s\S]+?\}\}\}|\{\{[\s\S]+?\}\}/;e.languages.handlebars=e.languages.extend("markup",{handlebars:{pattern:a,inside:{delimiter:{pattern:/^\{\{\{?|\}\}\}?$/i,alias:"punctuation"},string:/(["'])(?:\\.|(?!\1)[^\\\r\n])*\1/,number:/\b-?(?:0x[\dA-Fa-f]+|\d*\.?\d+(?:[Ee][+-]?\d+)?)\b/,"boolean":/\b(?:true|false)\b/,block:{pattern:/^(\s*~?\s*)[#\/]\S+?(?=\s*~?\s*$|\s)/i,lookbehind:!0,alias:"keyword"},brackets:{pattern:/\[[^\]]+\]/,inside:{punctuation:/\[|\]/,variable:/[\s\S]+/}},punctuation:/[!"#%&'()*+,.\/;<=>@\[\\\]^`{|}~]/,variable:/[^!"#%&'()*+,.\/;<=>@\[\\\]^`{|}~\s]+/}}}),e.languages.insertBefore("handlebars","tag",{"handlebars-comment":{pattern:/\{\{![\s\S]*?\}\}/,alias:["handlebars","comment"]}}),e.hooks.add("before-highlight",function(e){"handlebars"===e.language&&(e.tokenStack=[],e.backupCode=e.code,e.code=e.code.replace(a,function(a){for(var n=e.tokenStack.length;-1!==e.backupCode.indexOf("___HANDLEBARS"+n+"___");)++n;return e.tokenStack[n]=a,"___HANDLEBARS"+n+"___"}))}),e.hooks.add("before-insert",function(e){"handlebars"===e.language&&(e.code=e.backupCode,delete e.backupCode)}),e.hooks.add("after-highlight",function(a){if("handlebars"===a.language){for(var n=0,t=Object.keys(a.tokenStack);n<t.length;++n){var r=t[n],o=a.tokenStack[r];a.highlightedCode=a.highlightedCode.replace("___HANDLEBARS"+r+"___",e.highlight(o,a.grammar,"handlebars").replace(/\$/g,"$$$$"))}a.element.innerHTML=a.highlightedCode}})}(Prism);
Prism.languages.haskell={comment:{pattern:/(^|[^-!#$%*+=?&@|~.:<>^\\\/])(?:--[^-!#$%*+=?&@|~.:<>^\\\/].*|{-[\s\S]*?-})/m,lookbehind:!0},"char":/'(?:[^\\']|\\(?:[abfnrtv\\"'&]|\^[A-Z@[\]^_]|NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE|DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS|US|SP|DEL|\d+|o[0-7]+|x[0-9a-fA-F]+))'/,string:{pattern:/"(?:[^\\"]|\\(?:[abfnrtv\\"'&]|\^[A-Z@[\]^_]|NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE|DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS|US|SP|DEL|\d+|o[0-7]+|x[0-9a-fA-F]+)|\\\s+\\)*"/,greedy:!0},keyword:/\b(?:case|class|data|deriving|do|else|if|in|infixl|infixr|instance|let|module|newtype|of|primitive|then|type|where)\b/,import_statement:{pattern:/((?:\r?\n|\r|^)\s*)import\s+(?:qualified\s+)?(?:[A-Z][\w']*)(?:\.[A-Z][\w']*)*(?:\s+as\s+(?:[A-Z][_a-zA-Z0-9']*)(?:\.[A-Z][\w']*)*)?(?:\s+hiding\b)?/m,lookbehind:!0,inside:{keyword:/\b(?:import|qualified|as|hiding)\b/}},builtin:/\b(?:abs|acos|acosh|all|and|any|appendFile|approxRational|asTypeOf|asin|asinh|atan|atan2|atanh|basicIORun|break|catch|ceiling|chr|compare|concat|concatMap|const|cos|cosh|curry|cycle|decodeFloat|denominator|digitToInt|div|divMod|drop|dropWhile|either|elem|encodeFloat|enumFrom|enumFromThen|enumFromThenTo|enumFromTo|error|even|exp|exponent|fail|filter|flip|floatDigits|floatRadix|floatRange|floor|fmap|foldl|foldl1|foldr|foldr1|fromDouble|fromEnum|fromInt|fromInteger|fromIntegral|fromRational|fst|gcd|getChar|getContents|getLine|group|head|id|inRange|index|init|intToDigit|interact|ioError|isAlpha|isAlphaNum|isAscii|isControl|isDenormalized|isDigit|isHexDigit|isIEEE|isInfinite|isLower|isNaN|isNegativeZero|isOctDigit|isPrint|isSpace|isUpper|iterate|last|lcm|length|lex|lexDigits|lexLitChar|lines|log|logBase|lookup|map|mapM|mapM_|max|maxBound|maximum|maybe|min|minBound|minimum|mod|negate|not|notElem|null|numerator|odd|or|ord|otherwise|pack|pi|pred|primExitWith|print|product|properFraction|putChar|putStr|putStrLn|quot|quotRem|range|rangeSize|read|readDec|readFile|readFloat|readHex|readIO|readInt|readList|readLitChar|readLn|readOct|readParen|readSigned|reads|readsPrec|realToFrac|recip|rem|repeat|replicate|return|reverse|round|scaleFloat|scanl|scanl1|scanr|scanr1|seq|sequence|sequence_|show|showChar|showInt|showList|showLitChar|showParen|showSigned|showString|shows|showsPrec|significand|signum|sin|sinh|snd|sort|span|splitAt|sqrt|subtract|succ|sum|tail|take|takeWhile|tan|tanh|threadToIOResult|toEnum|toInt|toInteger|toLower|toRational|toUpper|truncate|uncurry|undefined|unlines|until|unwords|unzip|unzip3|userError|words|writeFile|zip|zip3|zipWith|zipWith3)\b/,number:/\b(?:\d+(?:\.\d+)?(?:e[+-]?\d+)?|0o[0-7]+|0x[0-9a-f]+)\b/i,operator:/\s\.\s|[-!#$%*+=?&@|~.:<>^\\\/]*\.[-!#$%*+=?&@|~.:<>^\\\/]+|[-!#$%*+=?&@|~.:<>^\\\/]+\.[-!#$%*+=?&@|~.:<>^\\\/]*|[-!#$%*+=?&@|~:<>^\\\/]+|`([A-Z][\w']*\.)*[_a-z][\w']*`/,hvariable:/\b(?:[A-Z][\w']*\.)*[_a-z][\w']*\b/,constant:/\b(?:[A-Z][\w']*\.)*[A-Z][\w']*\b/,punctuation:/[{}[\];(),.:]/};
Prism.languages.ini={comment:/^[ \t]*;.*$/m,selector:/^[ \t]*\[.*?\]/m,constant:/^[ \t]*[^\s=]+?(?=[ \t]*=)/m,"attr-value":{pattern:/=.*/,inside:{punctuation:/^[=]/}}};
Prism.languages.java=Prism.languages.extend("clike",{keyword:/\b(?:abstract|continue|for|new|switch|assert|default|goto|package|synchronized|boolean|do|if|private|this|break|double|implements|protected|throw|byte|else|import|public|throws|case|enum|instanceof|return|transient|catch|extends|int|short|try|char|final|interface|static|void|class|finally|long|strictfp|volatile|const|float|native|super|while)\b/,number:/\b0b[01]+\b|\b0x[\da-f]*\.?[\da-fp\-]+\b|\b\d*\.?\d+(?:e[+-]?\d+)?[df]?\b/i,operator:{pattern:/(^|[^.])(?:\+[+=]?|-[-=]?|!=?|<<?=?|>>?>?=?|==?|&[&=]?|\|[|=]?|\*=?|\/=?|%=?|\^=?|[?:~])/m,lookbehind:!0}}),Prism.languages.insertBefore("java","function",{annotation:{alias:"punctuation",pattern:/(^|[^.])@\w+/,lookbehind:!0}});
Prism.languages.json={property:/"(?:\\.|[^\\"\r\n])*"(?=\s*:)/i,string:{pattern:/"(?:\\.|[^\\"\r\n])*"(?!\s*:)/,greedy:!0},number:/\b-?(?:0x[\dA-Fa-f]+|\d*\.?\d+(?:[Ee][+-]?\d+)?)\b/,punctuation:/[{}[\]);,]/,operator:/:/g,"boolean":/\b(?:true|false)\b/i,"null":/\bnull\b/i},Prism.languages.jsonp=Prism.languages.json;
!function(n){n.languages.kotlin=n.languages.extend("clike",{keyword:{pattern:/(^|[^.])\b(?:abstract|annotation|as|break|by|catch|class|companion|const|constructor|continue|crossinline|data|do|else|enum|final|finally|for|fun|get|if|import|in|init|inline|inner|interface|internal|is|lateinit|noinline|null|object|open|out|override|package|private|protected|public|reified|return|sealed|set|super|tailrec|this|throw|to|try|val|var|when|where|while)\b/,lookbehind:!0},"function":[/\w+(?=\s*\()/,{pattern:/(\.)\w+(?=\s*\{)/,lookbehind:!0}],number:/\b(?:0[bx][\da-fA-F]+|\d+(?:\.\d+)?(?:e[+-]?\d+)?[fFL]?)\b/,operator:/\+[+=]?|-[-=>]?|==?=?|!(?:!|==?)?|[\/*%<>]=?|[?:]:?|\.\.|&&|\|\||\b(?:and|inv|or|shl|shr|ushr|xor)\b/}),delete n.languages.kotlin["class-name"],n.languages.insertBefore("kotlin","string",{"raw-string":{pattern:/("""|''')[\s\S]*?\1/,alias:"string"}}),n.languages.insertBefore("kotlin","keyword",{annotation:{pattern:/\B@(?:\w+:)?(?:[A-Z]\w*|\[[^\]]+\])/,alias:"builtin"}}),n.languages.insertBefore("kotlin","function",{label:{pattern:/\w+@|@\w+/,alias:"symbol"}});var e=[{pattern:/\$\{[^}]+\}/,inside:{delimiter:{pattern:/^\$\{|\}$/,alias:"variable"},rest:n.util.clone(n.languages.kotlin)}},{pattern:/\$\w+/,alias:"variable"}];n.languages.kotlin.string.inside=n.languages.kotlin["raw-string"].inside={interpolation:e}}(Prism);
!function(a){var e=/\\(?:[^a-z()[\]]|[a-z*]+)/i,n={"equation-command":{pattern:e,alias:"regex"}};a.languages.latex={comment:/%.*/m,cdata:{pattern:/(\\begin\{((?:verbatim|lstlisting)\*?)\})[\s\S]*?(?=\\end\{\2\})/,lookbehind:!0},equation:[{pattern:/\$(?:\\[\s\S]|[^\\$])*\$|\\\([\s\S]*?\\\)|\\\[[\s\S]*?\\\]/,inside:n,alias:"string"},{pattern:/(\\begin\{((?:equation|math|eqnarray|align|multline|gather)\*?)\})[\s\S]*?(?=\\end\{\2\})/,lookbehind:!0,inside:n,alias:"string"}],keyword:{pattern:/(\\(?:begin|end|ref|cite|label|usepackage|documentclass)(?:\[[^\]]+\])?\{)[^}]+(?=\})/,lookbehind:!0},url:{pattern:/(\\url\{)[^}]+(?=\})/,lookbehind:!0},headline:{pattern:/(\\(?:part|chapter|section|subsection|frametitle|subsubsection|paragraph|subparagraph|subsubparagraph|subsubsubparagraph)\*?(?:\[[^\]]+\])?\{)[^}]+(?=\}(?:\[[^\]]+\])?)/,lookbehind:!0,alias:"class-name"},"function":{pattern:e,alias:"selector"},punctuation:/[[\]{}&]/}}(Prism);
Prism.languages.less=Prism.languages.extend("css",{comment:[/\/\*[\s\S]*?\*\//,{pattern:/(^|[^\\])\/\/.*/,lookbehind:!0}],atrule:{pattern:/@[\w-]+?(?:\([^{}]+\)|[^(){};])*?(?=\s*\{)/i,inside:{punctuation:/[:()]/}},selector:{pattern:/(?:@\{[\w-]+\}|[^{};\s@])(?:@\{[\w-]+\}|\([^{}]*\)|[^{};@])*?(?=\s*\{)/,inside:{variable:/@+[\w-]+/}},property:/(?:@\{[\w-]+\}|[\w-])+(?:\+_?)?(?=\s*:)/i,punctuation:/[{}();:,]/,operator:/[+\-*\/]/}),Prism.languages.insertBefore("less","punctuation",{"function":Prism.languages.less.function}),Prism.languages.insertBefore("less","property",{variable:[{pattern:/@[\w-]+\s*:/,inside:{punctuation:/:/}},/@@?[\w-]+/],"mixin-usage":{pattern:/([{;]\s*)[.#](?!\d)[\w-]+.*?(?=[(;])/,lookbehind:!0,alias:"function"}});
Prism.languages.makefile={comment:{pattern:/(^|[^\\])#(?:\\(?:\r\n|[\s\S])|[^\\\r\n])*/,lookbehind:!0},string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},builtin:/\.[A-Z][^:#=\s]+(?=\s*:(?!=))/,symbol:{pattern:/^[^:=\r\n]+(?=\s*:(?!=))/m,inside:{variable:/\$+(?:[^(){}:#=\s]+|(?=[({]))/}},variable:/\$+(?:[^(){}:#=\s]+|\([@*%<^+?][DF]\)|(?=[({]))/,keyword:[/-include\b|\b(?:define|else|endef|endif|export|ifn?def|ifn?eq|include|override|private|sinclude|undefine|unexport|vpath)\b/,{pattern:/(\()(?:addsuffix|abspath|and|basename|call|dir|error|eval|file|filter(?:-out)?|findstring|firstword|flavor|foreach|guile|if|info|join|lastword|load|notdir|or|origin|patsubst|realpath|shell|sort|strip|subst|suffix|value|warning|wildcard|word(?:s|list)?)(?=[ \t])/,lookbehind:!0}],operator:/(?:::|[?:+!])?=|[|@]/,punctuation:/[:;(){}]/};
Prism.languages.markdown=Prism.languages.extend("markup",{}),Prism.languages.insertBefore("markdown","prolog",{blockquote:{pattern:/^>(?:[\t ]*>)*/m,alias:"punctuation"},code:[{pattern:/^(?: {4}|\t).+/m,alias:"keyword"},{pattern:/``.+?``|`[^`\n]+`/,alias:"keyword"}],title:[{pattern:/\w+.*(?:\r?\n|\r)(?:==+|--+)/,alias:"important",inside:{punctuation:/==+$|--+$/}},{pattern:/(^\s*)#+.+/m,lookbehind:!0,alias:"important",inside:{punctuation:/^#+|#+$/}}],hr:{pattern:/(^\s*)([*-])(?:[\t ]*\2){2,}(?=\s*$)/m,lookbehind:!0,alias:"punctuation"},list:{pattern:/(^\s*)(?:[*+-]|\d+\.)(?=[\t ].)/m,lookbehind:!0,alias:"punctuation"},"url-reference":{pattern:/!?\[[^\]]+\]:[\t ]+(?:\S+|<(?:\\.|[^>\\])+>)(?:[\t ]+(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\)))?/,inside:{variable:{pattern:/^(!?\[)[^\]]+/,lookbehind:!0},string:/(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\))$/,punctuation:/^[\[\]!:]|[<>]/},alias:"url"},bold:{pattern:/(^|[^\\])(\*\*|__)(?:(?:\r?\n|\r)(?!\r?\n|\r)|.)+?\2/,lookbehind:!0,inside:{punctuation:/^\*\*|^__|\*\*$|__$/}},italic:{pattern:/(^|[^\\])([*_])(?:(?:\r?\n|\r)(?!\r?\n|\r)|.)+?\2/,lookbehind:!0,inside:{punctuation:/^[*_]|[*_]$/}},url:{pattern:/!?\[[^\]]+\](?:\([^\s)]+(?:[\t ]+"(?:\\.|[^"\\])*")?\)| ?\[[^\]\n]*\])/,inside:{variable:{pattern:/(!?\[)[^\]]+(?=\]$)/,lookbehind:!0},string:{pattern:/"(?:\\.|[^"\\])*"(?=\)$)/}}}}),Prism.languages.markdown.bold.inside.url=Prism.util.clone(Prism.languages.markdown.url),Prism.languages.markdown.italic.inside.url=Prism.util.clone(Prism.languages.markdown.url),Prism.languages.markdown.bold.inside.italic=Prism.util.clone(Prism.languages.markdown.italic),Prism.languages.markdown.italic.inside.bold=Prism.util.clone(Prism.languages.markdown.bold);
Prism.languages.matlab={comment:[/%\{[\s\S]*?\}%/,/%.+/],string:{pattern:/\B'(?:''|[^'\r\n])*'/,greedy:!0},number:/\b-?(?:\d*\.?\d+(?:[eE][+-]?\d+)?(?:[ij])?|[ij])\b/,keyword:/\b(?:break|case|catch|continue|else|elseif|end|for|function|if|inf|NaN|otherwise|parfor|pause|pi|return|switch|try|while)\b/,"function":/(?!\d)\w+(?=\s*\()/,operator:/\.?[*^\/\\']|[+\-:@]|[<>=~]=?|&&?|\|\|?/,punctuation:/\.{3}|[.,;\[\](){}!]/};
Prism.languages.nginx=Prism.languages.extend("clike",{comment:{pattern:/(^|[^"{\\])#.*/,lookbehind:!0},keyword:/\b(?:CONTENT_|DOCUMENT_|GATEWAY_|HTTP_|HTTPS|if_not_empty|PATH_|QUERY_|REDIRECT_|REMOTE_|REQUEST_|SCGI|SCRIPT_|SERVER_|http|events|accept_mutex|accept_mutex_delay|access_log|add_after_body|add_before_body|add_header|addition_types|aio|alias|allow|ancient_browser|ancient_browser_value|auth|auth_basic|auth_basic_user_file|auth_http|auth_http_header|auth_http_timeout|autoindex|autoindex_exact_size|autoindex_localtime|break|charset|charset_map|charset_types|chunked_transfer_encoding|client_body_buffer_size|client_body_in_file_only|client_body_in_single_buffer|client_body_temp_path|client_body_timeout|client_header_buffer_size|client_header_timeout|client_max_body_size|connection_pool_size|create_full_put_path|daemon|dav_access|dav_methods|debug_connection|debug_points|default_type|deny|devpoll_changes|devpoll_events|directio|directio_alignment|disable_symlinks|empty_gif|env|epoll_events|error_log|error_page|expires|fastcgi_buffer_size|fastcgi_buffers|fastcgi_busy_buffers_size|fastcgi_cache|fastcgi_cache_bypass|fastcgi_cache_key|fastcgi_cache_lock|fastcgi_cache_lock_timeout|fastcgi_cache_methods|fastcgi_cache_min_uses|fastcgi_cache_path|fastcgi_cache_purge|fastcgi_cache_use_stale|fastcgi_cache_valid|fastcgi_connect_timeout|fastcgi_hide_header|fastcgi_ignore_client_abort|fastcgi_ignore_headers|fastcgi_index|fastcgi_intercept_errors|fastcgi_keep_conn|fastcgi_max_temp_file_size|fastcgi_next_upstream|fastcgi_no_cache|fastcgi_param|fastcgi_pass|fastcgi_pass_header|fastcgi_read_timeout|fastcgi_redirect_errors|fastcgi_send_timeout|fastcgi_split_path_info|fastcgi_store|fastcgi_store_access|fastcgi_temp_file_write_size|fastcgi_temp_path|flv|geo|geoip_city|geoip_country|google_perftools_profiles|gzip|gzip_buffers|gzip_comp_level|gzip_disable|gzip_http_version|gzip_min_length|gzip_proxied|gzip_static|gzip_types|gzip_vary|if|if_modified_since|ignore_invalid_headers|image_filter|image_filter_buffer|image_filter_jpeg_quality|image_filter_sharpen|image_filter_transparency|imap_capabilities|imap_client_buffer|include|index|internal|ip_hash|keepalive|keepalive_disable|keepalive_requests|keepalive_timeout|kqueue_changes|kqueue_events|large_client_header_buffers|limit_conn|limit_conn_log_level|limit_conn_zone|limit_except|limit_rate|limit_rate_after|limit_req|limit_req_log_level|limit_req_zone|limit_zone|lingering_close|lingering_time|lingering_timeout|listen|location|lock_file|log_format|log_format_combined|log_not_found|log_subrequest|map|map_hash_bucket_size|map_hash_max_size|master_process|max_ranges|memcached_buffer_size|memcached_connect_timeout|memcached_next_upstream|memcached_pass|memcached_read_timeout|memcached_send_timeout|merge_slashes|min_delete_depth|modern_browser|modern_browser_value|mp4|mp4_buffer_size|mp4_max_buffer_size|msie_padding|msie_refresh|multi_accept|open_file_cache|open_file_cache_errors|open_file_cache_min_uses|open_file_cache_valid|open_log_file_cache|optimize_server_names|override_charset|pcre_jit|perl|perl_modules|perl_require|perl_set|pid|pop3_auth|pop3_capabilities|port_in_redirect|post_action|postpone_output|protocol|proxy|proxy_buffer|proxy_buffer_size|proxy_buffering|proxy_buffers|proxy_busy_buffers_size|proxy_cache|proxy_cache_bypass|proxy_cache_key|proxy_cache_lock|proxy_cache_lock_timeout|proxy_cache_methods|proxy_cache_min_uses|proxy_cache_path|proxy_cache_use_stale|proxy_cache_valid|proxy_connect_timeout|proxy_cookie_domain|proxy_cookie_path|proxy_headers_hash_bucket_size|proxy_headers_hash_max_size|proxy_hide_header|proxy_http_version|proxy_ignore_client_abort|proxy_ignore_headers|proxy_intercept_errors|proxy_max_temp_file_size|proxy_method|proxy_next_upstream|proxy_no_cache|proxy_pass|proxy_pass_error_message|proxy_pass_header|proxy_pass_request_body|proxy_pass_request_headers|proxy_read_timeout|proxy_redirect|proxy_redirect_errors|proxy_send_lowat|proxy_send_timeout|proxy_set_body|proxy_set_header|proxy_ssl_session_reuse|proxy_store|proxy_store_access|proxy_temp_file_write_size|proxy_temp_path|proxy_timeout|proxy_upstream_fail_timeout|proxy_upstream_max_fails|random_index|read_ahead|real_ip_header|recursive_error_pages|request_pool_size|reset_timedout_connection|resolver|resolver_timeout|return|rewrite|root|rtsig_overflow_events|rtsig_overflow_test|rtsig_overflow_threshold|rtsig_signo|satisfy|satisfy_any|secure_link_secret|send_lowat|send_timeout|sendfile|sendfile_max_chunk|server|server_name|server_name_in_redirect|server_names_hash_bucket_size|server_names_hash_max_size|server_tokens|set|set_real_ip_from|smtp_auth|smtp_capabilities|so_keepalive|source_charset|split_clients|ssi|ssi_silent_errors|ssi_types|ssi_value_length|ssl|ssl_certificate|ssl_certificate_key|ssl_ciphers|ssl_client_certificate|ssl_crl|ssl_dhparam|ssl_engine|ssl_prefer_server_ciphers|ssl_protocols|ssl_session_cache|ssl_session_timeout|ssl_verify_client|ssl_verify_depth|starttls|stub_status|sub_filter|sub_filter_once|sub_filter_types|tcp_nodelay|tcp_nopush|timeout|timer_resolution|try_files|types|types_hash_bucket_size|types_hash_max_size|underscores_in_headers|uninitialized_variable_warn|upstream|use|user|userid|userid_domain|userid_expires|userid_name|userid_p3p|userid_path|userid_service|valid_referers|variables_hash_bucket_size|variables_hash_max_size|worker_connections|worker_cpu_affinity|worker_priority|worker_processes|worker_rlimit_core|worker_rlimit_nofile|worker_rlimit_sigpending|working_directory|xclient|xml_entities|xslt_entities|xslt_stylesheet|xslt_types)\b/i}),Prism.languages.insertBefore("nginx","keyword",{variable:/\$[a-z_]+/i});
Prism.languages.objectivec=Prism.languages.extend("c",{keyword:/\b(?:asm|typeof|inline|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|union|unsigned|void|volatile|while|in|self|super)\b|(?:@interface|@end|@implementation|@protocol|@class|@public|@protected|@private|@property|@try|@catch|@finally|@throw|@synthesize|@dynamic|@selector)\b/,string:/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1|@"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/,operator:/-[->]?|\+\+?|!=?|<<?=?|>>?=?|==?|&&?|\|\|?|[~^%?*\/@]/});
Prism.languages.perl={comment:[{pattern:/(^\s*)=\w+[\s\S]*?=cut.*/m,lookbehind:!0},{pattern:/(^|[^\\$])#.*/,lookbehind:!0}],string:[{pattern:/\b(?:q|qq|qx|qw)\s*([^a-zA-Z0-9\s{(\[<])(?:(?!\1)[^\\]|\\[\s\S])*\1/,greedy:!0},{pattern:/\b(?:q|qq|qx|qw)\s+([a-zA-Z0-9])(?:(?!\1)[^\\]|\\[\s\S])*\1/,greedy:!0},{pattern:/\b(?:q|qq|qx|qw)\s*\((?:[^()\\]|\\[\s\S])*\)/,greedy:!0},{pattern:/\b(?:q|qq|qx|qw)\s*\{(?:[^{}\\]|\\[\s\S])*\}/,greedy:!0},{pattern:/\b(?:q|qq|qx|qw)\s*\[(?:[^[\]\\]|\\[\s\S])*\]/,greedy:!0},{pattern:/\b(?:q|qq|qx|qw)\s*<(?:[^<>\\]|\\[\s\S])*>/,greedy:!0},{pattern:/("|`)(?:(?!\1)[^\\]|\\[\s\S])*\1/,greedy:!0},{pattern:/'(?:[^'\\\r\n]|\\.)*'/,greedy:!0}],regex:[{pattern:/\b(?:m|qr)\s*([^a-zA-Z0-9\s{(\[<])(?:(?!\1)[^\\]|\\[\s\S])*\1[msixpodualngc]*/,greedy:!0},{pattern:/\b(?:m|qr)\s+([a-zA-Z0-9])(?:(?!\1)[^\\]|\\[\s\S])*\1[msixpodualngc]*/,greedy:!0},{pattern:/\b(?:m|qr)\s*\((?:[^()\\]|\\[\s\S])*\)[msixpodualngc]*/,greedy:!0},{pattern:/\b(?:m|qr)\s*\{(?:[^{}\\]|\\[\s\S])*\}[msixpodualngc]*/,greedy:!0},{pattern:/\b(?:m|qr)\s*\[(?:[^[\]\\]|\\[\s\S])*\][msixpodualngc]*/,greedy:!0},{pattern:/\b(?:m|qr)\s*<(?:[^<>\\]|\\[\s\S])*>[msixpodualngc]*/,greedy:!0},{pattern:/(^|[^-]\b)(?:s|tr|y)\s*([^a-zA-Z0-9\s{(\[<])(?:(?!\2)[^\\]|\\[\s\S])*\2(?:(?!\2)[^\\]|\\[\s\S])*\2[msixpodualngcer]*/,lookbehind:!0,greedy:!0},{pattern:/(^|[^-]\b)(?:s|tr|y)\s+([a-zA-Z0-9])(?:(?!\2)[^\\]|\\[\s\S])*\2(?:(?!\2)[^\\]|\\[\s\S])*\2[msixpodualngcer]*/,lookbehind:!0,greedy:!0},{pattern:/(^|[^-]\b)(?:s|tr|y)\s*\((?:[^()\\]|\\[\s\S])*\)\s*\((?:[^()\\]|\\[\s\S])*\)[msixpodualngcer]*/,lookbehind:!0,greedy:!0},{pattern:/(^|[^-]\b)(?:s|tr|y)\s*\{(?:[^{}\\]|\\[\s\S])*\}\s*\{(?:[^{}\\]|\\[\s\S])*\}[msixpodualngcer]*/,lookbehind:!0,greedy:!0},{pattern:/(^|[^-]\b)(?:s|tr|y)\s*\[(?:[^[\]\\]|\\[\s\S])*\]\s*\[(?:[^[\]\\]|\\[\s\S])*\][msixpodualngcer]*/,lookbehind:!0,greedy:!0},{pattern:/(^|[^-]\b)(?:s|tr|y)\s*<(?:[^<>\\]|\\[\s\S])*>\s*<(?:[^<>\\]|\\[\s\S])*>[msixpodualngcer]*/,lookbehind:!0,greedy:!0},{pattern:/\/(?:[^\/\\\r\n]|\\.)*\/[msixpodualngc]*(?=\s*(?:$|[\r\n,.;})&|\-+*~<>!?^]|(lt|gt|le|ge|eq|ne|cmp|not|and|or|xor|x)\b))/,greedy:!0}],variable:[/[&*$@%]\{\^[A-Z]+\}/,/[&*$@%]\^[A-Z_]/,/[&*$@%]#?(?=\{)/,/[&*$@%]#?(?:(?:::)*'?(?!\d)[\w$]+)+(?:::)*/i,/[&*$@%]\d+/,/(?!%=)[$@%][!"#$%&'()*+,\-.\/:;<=>?@[\\\]^_`{|}~]/],filehandle:{pattern:/<(?![<=])\S*>|\b_\b/,alias:"symbol"},vstring:{pattern:/v\d+(?:\.\d+)*|\d+(?:\.\d+){2,}/,alias:"string"},"function":{pattern:/sub [a-z0-9_]+/i,inside:{keyword:/sub/}},keyword:/\b(?:any|break|continue|default|delete|die|do|else|elsif|eval|for|foreach|given|goto|if|last|local|my|next|our|package|print|redo|require|say|state|sub|switch|undef|unless|until|use|when|while)\b/,number:/\b-?(?:0x[\dA-Fa-f](?:_?[\dA-Fa-f])*|0b[01](?:_?[01])*|(?:\d(?:_?\d)*)?\.?\d(?:_?\d)*(?:[Ee][+-]?\d+)?)\b/,operator:/-[rwxoRWXOezsfdlpSbctugkTBMAC]\b|\+[+=]?|-[-=>]?|\*\*?=?|\/\/?=?|=[=~>]?|~[~=]?|\|\|?=?|&&?=?|<(?:=>?|<=?)?|>>?=?|![~=]?|[%^]=?|\.(?:=|\.\.?)?|[\\?]|\bx(?:=|\b)|\b(?:lt|gt|le|ge|eq|ne|cmp|not|and|or|xor)\b/,punctuation:/[{}[\];(),:]/};
Prism.languages.php=Prism.languages.extend("clike",{string:{pattern:/(["'])(?:\\[\s\S]|(?!\1)[^\\])*\1/,greedy:!0},keyword:/\b(?:and|or|xor|array|as|break|case|cfunction|class|const|continue|declare|default|die|do|else|elseif|enddeclare|endfor|endforeach|endif|endswitch|endwhile|extends|for|foreach|function|include|include_once|global|if|new|return|static|switch|use|require|require_once|var|while|abstract|interface|public|implements|private|protected|parent|throw|null|echo|print|trait|namespace|final|yield|goto|instanceof|finally|try|catch)\b/i,constant:/\b[A-Z0-9_]{2,}\b/,comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0}}),Prism.languages.insertBefore("php","class-name",{"shell-comment":{pattern:/(^|[^\\])#.*/,lookbehind:!0,alias:"comment"}}),Prism.languages.insertBefore("php","keyword",{delimiter:{pattern:/\?>|<\?(?:php|=)?/i,alias:"important"},variable:/\$\w+\b/i,"package":{pattern:/(\\|namespace\s+|use\s+)[\w\\]+/,lookbehind:!0,inside:{punctuation:/\\/}}}),Prism.languages.insertBefore("php","operator",{property:{pattern:/(->)[\w]+/,lookbehind:!0}}),Prism.languages.markup&&(Prism.hooks.add("before-highlight",function(e){"php"===e.language&&/(?:<\?php|<\?)/gi.test(e.code)&&(e.tokenStack=[],e.backupCode=e.code,e.code=e.code.replace(/(?:<\?php|<\?)[\s\S]*?(?:\?>|$)/gi,function(a){for(var n=e.tokenStack.length;-1!==e.backupCode.indexOf("___PHP"+n+"___");)++n;return e.tokenStack[n]=a,"___PHP"+n+"___"}),e.grammar=Prism.languages.markup)}),Prism.hooks.add("before-insert",function(e){"php"===e.language&&e.backupCode&&(e.code=e.backupCode,delete e.backupCode)}),Prism.hooks.add("after-highlight",function(e){if("php"===e.language&&e.tokenStack){e.grammar=Prism.languages.php;for(var a=0,n=Object.keys(e.tokenStack);a<n.length;++a){var t=n[a],r=e.tokenStack[t];e.highlightedCode=e.highlightedCode.replace("___PHP"+t+"___",'<span class="token php language-php">'+Prism.highlight(r,e.grammar,"php").replace(/\$/g,"$$$$")+"</span>")}e.element.innerHTML=e.highlightedCode}}));
Prism.languages.powershell={comment:[{pattern:/(^|[^`])<#[\s\S]*?#>/,lookbehind:!0},{pattern:/(^|[^`])#.*/,lookbehind:!0}],string:[{pattern:/"(?:`[\s\S]|[^`"])*"/,greedy:!0,inside:{"function":{pattern:/[^`]\$\(.*?\)/,inside:{}}}},{pattern:/'(?:[^']|'')*'/,greedy:!0}],namespace:/\[[a-z][\s\S]*?\]/i,"boolean":/\$(?:true|false)\b/i,variable:/\$\w+\b/i,"function":[/\b(?:Add-(?:Computer|Content|History|Member|PSSnapin|Type)|Checkpoint-Computer|Clear-(?:Content|EventLog|History|Item|ItemProperty|Variable)|Compare-Object|Complete-Transaction|Connect-PSSession|ConvertFrom-(?:Csv|Json|StringData)|Convert-Path|ConvertTo-(?:Csv|Html|Json|Xml)|Copy-(?:Item|ItemProperty)|Debug-Process|Disable-(?:ComputerRestore|PSBreakpoint|PSRemoting|PSSessionConfiguration)|Disconnect-PSSession|Enable-(?:ComputerRestore|PSBreakpoint|PSRemoting|PSSessionConfiguration)|Enter-PSSession|Exit-PSSession|Export-(?:Alias|Clixml|Console|Csv|FormatData|ModuleMember|PSSession)|ForEach-Object|Format-(?:Custom|List|Table|Wide)|Get-(?:Alias|ChildItem|Command|ComputerRestorePoint|Content|ControlPanelItem|Culture|Date|Event|EventLog|EventSubscriber|FormatData|Help|History|Host|HotFix|Item|ItemProperty|Job|Location|Member|Module|Process|PSBreakpoint|PSCallStack|PSDrive|PSProvider|PSSession|PSSessionConfiguration|PSSnapin|Random|Service|TraceSource|Transaction|TypeData|UICulture|Unique|Variable|WmiObject)|Group-Object|Import-(?:Alias|Clixml|Csv|LocalizedData|Module|PSSession)|Invoke-(?:Command|Expression|History|Item|RestMethod|WebRequest|WmiMethod)|Join-Path|Limit-EventLog|Measure-(?:Command|Object)|Move-(?:Item|ItemProperty)|New-(?:Alias|Event|EventLog|Item|ItemProperty|Module|ModuleManifest|Object|PSDrive|PSSession|PSSessionConfigurationFile|PSSessionOption|PSTransportOption|Service|TimeSpan|Variable|WebServiceProxy)|Out-(?:Default|File|GridView|Host|Null|Printer|String)|Pop-Location|Push-Location|Read-Host|Receive-(?:Job|PSSession)|Register-(?:EngineEvent|ObjectEvent|PSSessionConfiguration|WmiEvent)|Remove-(?:Computer|Event|EventLog|Item|ItemProperty|Job|Module|PSBreakpoint|PSDrive|PSSession|PSSnapin|TypeData|Variable|WmiObject)|Rename-(?:Computer|Item|ItemProperty)|Reset-ComputerMachinePassword|Resolve-Path|Restart-(?:Computer|Service)|Restore-Computer|Resume-(?:Job|Service)|Save-Help|Select-(?:Object|String|Xml)|Send-MailMessage|Set-(?:Alias|Content|Date|Item|ItemProperty|Location|PSBreakpoint|PSDebug|PSSessionConfiguration|Service|StrictMode|TraceSource|Variable|WmiInstance)|Show-(?:Command|ControlPanelItem|EventLog)|Sort-Object|Split-Path|Start-(?:Job|Process|Service|Sleep|Transaction)|Stop-(?:Computer|Job|Process|Service)|Suspend-(?:Job|Service)|Tee-Object|Test-(?:ComputerSecureChannel|Connection|ModuleManifest|Path|PSSessionConfigurationFile)|Trace-Command|Unblock-File|Undo-Transaction|Unregister-(?:Event|PSSessionConfiguration)|Update-(?:FormatData|Help|List|TypeData)|Use-Transaction|Wait-(?:Event|Job|Process)|Where-Object|Write-(?:Debug|Error|EventLog|Host|Output|Progress|Verbose|Warning))\b/i,/\b(?:ac|cat|chdir|clc|cli|clp|clv|compare|copy|cp|cpi|cpp|cvpa|dbp|del|diff|dir|ebp|echo|epal|epcsv|epsn|erase|fc|fl|ft|fw|gal|gbp|gc|gci|gcs|gdr|gi|gl|gm|gp|gps|group|gsv|gu|gv|gwmi|iex|ii|ipal|ipcsv|ipsn|irm|iwmi|iwr|kill|lp|ls|measure|mi|mount|move|mp|mv|nal|ndr|ni|nv|ogv|popd|ps|pushd|pwd|rbp|rd|rdr|ren|ri|rm|rmdir|rni|rnp|rp|rv|rvpa|rwmi|sal|saps|sasv|sbp|sc|select|set|shcm|si|sl|sleep|sls|sort|sp|spps|spsv|start|sv|swmi|tee|trcm|type|write)\b/i],keyword:/\b(?:Begin|Break|Catch|Class|Continue|Data|Define|Do|DynamicParam|Else|ElseIf|End|Exit|Filter|Finally|For|ForEach|From|Function|If|InlineScript|Parallel|Param|Process|Return|Sequence|Switch|Throw|Trap|Try|Until|Using|Var|While|Workflow)\b/i,operator:{pattern:/(\W?)(?:!|-(eq|ne|gt|ge|lt|le|sh[lr]|not|b?(?:and|x?or)|(?:Not)?(?:Like|Match|Contains|In)|Replace|Join|is(?:Not)?|as)\b|-[-=]?|\+[+=]?|[*\/%]=?)/i,lookbehind:!0},punctuation:/[|{}[\];(),.]/},Prism.languages.powershell.string[0].inside.boolean=Prism.languages.powershell.boolean,Prism.languages.powershell.string[0].inside.variable=Prism.languages.powershell.variable,Prism.languages.powershell.string[0].inside.function.inside=Prism.util.clone(Prism.languages.powershell);
!function(e){e.languages.pug={comment:{pattern:/(^([\t ]*))\/\/.*(?:(?:\r?\n|\r)\2[\t ]+.+)*/m,lookbehind:!0},"multiline-script":{pattern:/(^([\t ]*)script\b.*\.[\t ]*)(?:(?:\r?\n|\r(?!\n))(?:\2[\t ]+.+|\s*?(?=\r?\n|\r)))+/m,lookbehind:!0,inside:{rest:e.languages.javascript}},filter:{pattern:/(^([\t ]*)):.+(?:(?:\r?\n|\r(?!\n))(?:\2[\t ]+.+|\s*?(?=\r?\n|\r)))+/m,lookbehind:!0,inside:{"filter-name":{pattern:/^:[\w-]+/,alias:"variable"}}},"multiline-plain-text":{pattern:/(^([\t ]*)[\w\-#.]+\.[\t ]*)(?:(?:\r?\n|\r(?!\n))(?:\2[\t ]+.+|\s*?(?=\r?\n|\r)))+/m,lookbehind:!0},markup:{pattern:/(^[\t ]*)<.+/m,lookbehind:!0,inside:{rest:e.languages.markup}},doctype:{pattern:/((?:^|\n)[\t ]*)doctype(?: .+)?/,lookbehind:!0},"flow-control":{pattern:/(^[\t ]*)(?:if|unless|else|case|when|default|each|while)\b(?: .+)?/m,lookbehind:!0,inside:{each:{pattern:/^each .+? in\b/,inside:{keyword:/\b(?:each|in)\b/,punctuation:/,/}},branch:{pattern:/^(?:if|unless|else|case|when|default|while)\b/,alias:"keyword"},rest:e.languages.javascript}},keyword:{pattern:/(^[\t ]*)(?:block|extends|include|append|prepend)\b.+/m,lookbehind:!0},mixin:[{pattern:/(^[\t ]*)mixin .+/m,lookbehind:!0,inside:{keyword:/^mixin/,"function":/\w+(?=\s*\(|\s*$)/,punctuation:/[(),.]/}},{pattern:/(^[\t ]*)\+.+/m,lookbehind:!0,inside:{name:{pattern:/^\+\w+/,alias:"function"},rest:e.languages.javascript}}],script:{pattern:/(^[\t ]*script(?:(?:&[^(]+)?\([^)]+\))*[\t ]+).+/m,lookbehind:!0,inside:{rest:e.languages.javascript}},"plain-text":{pattern:/(^[\t ]*(?!-)[\w\-#.]*[\w\-](?:(?:&[^(]+)?\([^)]+\))*\/?[\t ]+).+/m,lookbehind:!0},tag:{pattern:/(^[\t ]*)(?!-)[\w\-#.]*[\w\-](?:(?:&[^(]+)?\([^)]+\))*\/?:?/m,lookbehind:!0,inside:{attributes:[{pattern:/&[^(]+\([^)]+\)/,inside:{rest:e.languages.javascript}},{pattern:/\([^)]+\)/,inside:{"attr-value":{pattern:/(=\s*)(?:\{[^}]*\}|[^,)\r\n]+)/,lookbehind:!0,inside:{rest:e.languages.javascript}},"attr-name":/[\w-]+(?=\s*!?=|\s*[,)])/,punctuation:/[!=(),]+/}}],punctuation:/:/}},code:[{pattern:/(^[\t ]*(?:-|!?=)).+/m,lookbehind:!0,inside:{rest:e.languages.javascript}}],punctuation:/[.\-!=|]+/};for(var t="(^([\\t ]*)):{{filter_name}}(?:(?:\\r?\\n|\\r(?!\\n))(?:\\2[\\t ]+.+|\\s*?(?=\\r?\\n|\\r)))+",n=[{filter:"atpl",language:"twig"},{filter:"coffee",language:"coffeescript"},"ejs","handlebars","hogan","less","livescript","markdown","mustache","plates",{filter:"sass",language:"scss"},"stylus","swig"],a={},i=0,r=n.length;r>i;i++){var s=n[i];s="string"==typeof s?{filter:s,language:s}:s,e.languages[s.language]&&(a["filter-"+s.filter]={pattern:RegExp(t.replace("{{filter_name}}",s.filter),"m"),lookbehind:!0,inside:{"filter-name":{pattern:/^:[\w-]+/,alias:"variable"},rest:e.languages[s.language]}})}e.languages.insertBefore("pug","filter",a)}(Prism);
Prism.languages.python={comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0},"triple-quoted-string":{pattern:/("""|''')[\s\S]+?\1/,greedy:!0,alias:"string"},string:{pattern:/("|')(?:\\.|(?!\1)[^\\\r\n])*\1/,greedy:!0},"function":{pattern:/((?:^|\s)def[ \t]+)[a-zA-Z_]\w*(?=\s*\()/g,lookbehind:!0},"class-name":{pattern:/(\bclass\s+)\w+/i,lookbehind:!0},keyword:/\b(?:as|assert|async|await|break|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|nonlocal|pass|print|raise|return|try|while|with|yield)\b/,builtin:/\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\b/,"boolean":/\b(?:True|False|None)\b/,number:/\b-?(?:0[bo])?(?:(?:\d|0x[\da-f])[\da-f]*\.?\d*|\.\d+)(?:e[+-]?\d+)?j?\b/i,operator:/[-+%=]=?|!=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]|\b(?:or|and|not)\b/,punctuation:/[{}[\];(),.:]/};
Prism.languages.typescript=Prism.languages.extend("javascript",{keyword:/\b(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|var|void|while|with|yield|false|true|module|declare|constructor|namespace|abstract|require|type)\b/,builtin:/\b(?:string|Function|any|number|boolean|Array|symbol|console)\b/}),Prism.languages.ts=Prism.languages.typescript;
Prism.languages.rust={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?\*\//,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0}],string:[{pattern:/b?r(#*)"(?:\\.|(?!"\1)[^\\\r\n])*"\1/,greedy:!0},{pattern:/b?("|')(?:\\.|(?!\1)[^\\\r\n])*\1/,greedy:!0}],keyword:/\b(?:abstract|alignof|as|be|box|break|const|continue|crate|do|else|enum|extern|false|final|fn|for|if|impl|in|let|loop|match|mod|move|mut|offsetof|once|override|priv|pub|pure|ref|return|sizeof|static|self|struct|super|true|trait|type|typeof|unsafe|unsized|use|virtual|where|while|yield)\b/,attribute:{pattern:/#!?\[.+?\]/,greedy:!0,alias:"attr-name"},"function":[/\w+(?=\s*\()/,/\w+!(?=\s*\(|\[)/],"macro-rules":{pattern:/\w+!/,alias:"function"},number:/\b-?(?:0x[\dA-Fa-f](?:_?[\dA-Fa-f])*|0o[0-7](?:_?[0-7])*|0b[01](?:_?[01])*|(\d(?:_?\d)*)?\.?\d(?:_?\d)*(?:[Ee][+-]?\d+)?)(?:_?(?:[iu](?:8|16|32|64)?|f32|f64))?\b/,"closure-params":{pattern:/\|[^|]*\|(?=\s*[{-])/,inside:{punctuation:/[|:,]/,operator:/[&*]/}},punctuation:/[{}[\];(),:]|\.+|->/,operator:/[-+*\/%!^=]=?|@|&[&=]?|\|[|=]?|<<?=?|>>?=?/};
Prism.languages.scss=Prism.languages.extend("css",{comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0},atrule:{pattern:/@[\w-]+(?:\([^()]+\)|[^(])*?(?=\s+[{;])/,inside:{rule:/@[\w-]+/}},url:/(?:[-a-z]+-)*url(?=\()/i,selector:{pattern:/(?=\S)[^@;{}()]?(?:[^@;{}()]|&|#\{\$[-\w]+\})+(?=\s*\{(?:\}|\s|[^}]+[:{][^}]+))/m,inside:{parent:{pattern:/&/,alias:"important"},placeholder:/%[-\w]+/,variable:/\$[-\w]+|#\{\$[-\w]+\}/}}}),Prism.languages.insertBefore("scss","atrule",{keyword:[/@(?:if|else(?: if)?|for|each|while|import|extend|debug|warn|mixin|include|function|return|content)/i,{pattern:/( +)(?:from|through)(?= )/,lookbehind:!0}]}),Prism.languages.scss.property={pattern:/(?:[\w-]|\$[-\w]+|#\{\$[-\w]+\})+(?=\s*:)/i,inside:{variable:/\$[-\w]+|#\{\$[-\w]+\}/}},Prism.languages.insertBefore("scss","important",{variable:/\$[-\w]+|#\{\$[-\w]+\}/}),Prism.languages.insertBefore("scss","function",{placeholder:{pattern:/%[-\w]+/,alias:"selector"},statement:{pattern:/\B!(?:default|optional)\b/i,alias:"keyword"},"boolean":/\b(?:true|false)\b/,"null":/\bnull\b/,operator:{pattern:/(\s)(?:[-+*\/%]|[=!]=|<=?|>=?|and|or|not)(?=\s)/,lookbehind:!0}}),Prism.languages.scss.atrule.inside.rest=Prism.util.clone(Prism.languages.scss);
Prism.languages.scala=Prism.languages.extend("java",{keyword:/<-|=>|\b(?:abstract|case|catch|class|def|do|else|extends|final|finally|for|forSome|if|implicit|import|lazy|match|new|null|object|override|package|private|protected|return|sealed|self|super|this|throw|trait|try|type|val|var|while|with|yield)\b/,string:[{pattern:/"""[\s\S]*?"""/,greedy:!0},{pattern:/("|')(?:\\.|(?!\1)[^\\\r\n])*\1/,greedy:!0}],builtin:/\b(?:String|Int|Long|Short|Byte|Boolean|Double|Float|Char|Any|AnyRef|AnyVal|Unit|Nothing)\b/,number:/\b(?:0x[\da-f]*\.?[\da-f]+|\d*\.?\d+e?\d*[dfl]?)\b/i,symbol:/'[^\d\s\\]\w*/}),delete Prism.languages.scala["class-name"],delete Prism.languages.scala["function"];
Prism.languages.smalltalk={comment:/"(?:""|[^"])+"/,string:/'(?:''|[^'])+'/,symbol:/#[\da-z]+|#(?:-|([+\/\\*~<>=@%|&?!])\1?)|#(?=\()/i,"block-arguments":{pattern:/(\[\s*):[^\[|]*\|/,lookbehind:!0,inside:{variable:/:[\da-z]+/i,punctuation:/\|/}},"temporary-variables":{pattern:/\|[^|]+\|/,inside:{variable:/[\da-z]+/i,punctuation:/\|/}},keyword:/\b(?:nil|true|false|self|super|new)\b/,character:{pattern:/\$./,alias:"string"},number:[/\d+r-?[\dA-Z]+(?:\.[\dA-Z]+)?(?:e-?\d+)?/,/(?:\B-|\b)\d+(?:\.\d+)?(?:e-?\d+)?/],operator:/[<=]=?|:=|~[~=]|\/\/?|\\\\|>[>=]?|[!^+\-*&|,@]/,punctuation:/[.;:?\[\](){}]/};
Prism.languages.sql={comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|(?:--|\/\/|#).*)/,lookbehind:!0},string:{pattern:/(^|[^@\\])("|')(?:\\[\s\S]|(?!\2)[^\\])*\2/,greedy:!0,lookbehind:!0},variable:/@[\w.$]+|@(["'`])(?:\\[\s\S]|(?!\1)[^\\])+\1/,"function":/\b(?:COUNT|SUM|AVG|MIN|MAX|FIRST|LAST|UCASE|LCASE|MID|LEN|ROUND|NOW|FORMAT)(?=\s*\()/i,keyword:/\b(?:ACTION|ADD|AFTER|ALGORITHM|ALL|ALTER|ANALYZE|ANY|APPLY|AS|ASC|AUTHORIZATION|AUTO_INCREMENT|BACKUP|BDB|BEGIN|BERKELEYDB|BIGINT|BINARY|BIT|BLOB|BOOL|BOOLEAN|BREAK|BROWSE|BTREE|BULK|BY|CALL|CASCADED?|CASE|CHAIN|CHAR VARYING|CHARACTER (?:SET|VARYING)|CHARSET|CHECK|CHECKPOINT|CLOSE|CLUSTERED|COALESCE|COLLATE|COLUMN|COLUMNS|COMMENT|COMMIT|COMMITTED|COMPUTE|CONNECT|CONSISTENT|CONSTRAINT|CONTAINS|CONTAINSTABLE|CONTINUE|CONVERT|CREATE|CROSS|CURRENT(?:_DATE|_TIME|_TIMESTAMP|_USER)?|CURSOR|DATA(?:BASES?)?|DATE(?:TIME)?|DBCC|DEALLOCATE|DEC|DECIMAL|DECLARE|DEFAULT|DEFINER|DELAYED|DELETE|DELIMITER(?:S)?|DENY|DESC|DESCRIBE|DETERMINISTIC|DISABLE|DISCARD|DISK|DISTINCT|DISTINCTROW|DISTRIBUTED|DO|DOUBLE(?: PRECISION)?|DROP|DUMMY|DUMP(?:FILE)?|DUPLICATE KEY|ELSE|ENABLE|ENCLOSED BY|END|ENGINE|ENUM|ERRLVL|ERRORS|ESCAPE(?:D BY)?|EXCEPT|EXEC(?:UTE)?|EXISTS|EXIT|EXPLAIN|EXTENDED|FETCH|FIELDS|FILE|FILLFACTOR|FIRST|FIXED|FLOAT|FOLLOWING|FOR(?: EACH ROW)?|FORCE|FOREIGN|FREETEXT(?:TABLE)?|FROM|FULL|FUNCTION|GEOMETRY(?:COLLECTION)?|GLOBAL|GOTO|GRANT|GROUP|HANDLER|HASH|HAVING|HOLDLOCK|IDENTITY(?:_INSERT|COL)?|IF|IGNORE|IMPORT|INDEX|INFILE|INNER|INNODB|INOUT|INSERT|INT|INTEGER|INTERSECT|INTO|INVOKER|ISOLATION LEVEL|JOIN|KEYS?|KILL|LANGUAGE SQL|LAST|LEFT|LIMIT|LINENO|LINES|LINESTRING|LOAD|LOCAL|LOCK|LONG(?:BLOB|TEXT)|MATCH(?:ED)?|MEDIUM(?:BLOB|INT|TEXT)|MERGE|MIDDLEINT|MODIFIES SQL DATA|MODIFY|MULTI(?:LINESTRING|POINT|POLYGON)|NATIONAL(?: CHAR VARYING| CHARACTER(?: VARYING)?| VARCHAR)?|NATURAL|NCHAR(?: VARCHAR)?|NEXT|NO(?: SQL|CHECK|CYCLE)?|NONCLUSTERED|NULLIF|NUMERIC|OFF?|OFFSETS?|ON|OPEN(?:DATASOURCE|QUERY|ROWSET)?|OPTIMIZE|OPTION(?:ALLY)?|ORDER|OUT(?:ER|FILE)?|OVER|PARTIAL|PARTITION|PERCENT|PIVOT|PLAN|POINT|POLYGON|PRECEDING|PRECISION|PREV|PRIMARY|PRINT|PRIVILEGES|PROC(?:EDURE)?|PUBLIC|PURGE|QUICK|RAISERROR|READ(?:S SQL DATA|TEXT)?|REAL|RECONFIGURE|REFERENCES|RELEASE|RENAME|REPEATABLE|REPLICATION|REQUIRE|RESTORE|RESTRICT|RETURNS?|REVOKE|RIGHT|ROLLBACK|ROUTINE|ROW(?:COUNT|GUIDCOL|S)?|RTREE|RULE|SAVE(?:POINT)?|SCHEMA|SELECT|SERIAL(?:IZABLE)?|SESSION(?:_USER)?|SET(?:USER)?|SHARE MODE|SHOW|SHUTDOWN|SIMPLE|SMALLINT|SNAPSHOT|SOME|SONAME|START(?:ING BY)?|STATISTICS|STATUS|STRIPED|SYSTEM_USER|TABLES?|TABLESPACE|TEMP(?:ORARY|TABLE)?|TERMINATED BY|TEXT(?:SIZE)?|THEN|TIMESTAMP|TINY(?:BLOB|INT|TEXT)|TOP?|TRAN(?:SACTIONS?)?|TRIGGER|TRUNCATE|TSEQUAL|TYPES?|UNBOUNDED|UNCOMMITTED|UNDEFINED|UNION|UNIQUE|UNPIVOT|UPDATE(?:TEXT)?|USAGE|USE|USER|USING|VALUES?|VAR(?:BINARY|CHAR|CHARACTER|YING)|VIEW|WAITFOR|WARNINGS|WHEN|WHERE|WHILE|WITH(?: ROLLUP|IN)?|WORK|WRITE(?:TEXT)?)\b/i,"boolean":/\b(?:TRUE|FALSE|NULL)\b/i,number:/\b-?(?:0x)?\d*\.?[\da-f]+\b/,operator:/[-+*\/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?|\b(?:AND|BETWEEN|IN|LIKE|NOT|OR|IS|DIV|REGEXP|RLIKE|SOUNDS LIKE|XOR)\b/i,punctuation:/[;[\]()`,.]/};
!function(n){var t={url:/url\((["']?).*?\1\)/i,string:{pattern:/("|')(?:(?!\1)[^\\\r\n]|\\(?:\r\n|[\s\S]))*\1/,greedy:!0},interpolation:null,func:null,important:/\B!(?:important|optional)\b/i,keyword:{pattern:/(^|\s+)(?:(?:if|else|for|return|unless)(?=\s+|$)|@[\w-]+)/,lookbehind:!0},hexcode:/#[\da-f]{3,6}/i,number:/\b\d+(?:\.\d+)?%?/,"boolean":/\b(?:true|false)\b/,operator:[/~|[+!\/%<>?=]=?|[-:]=|\*[*=]?|\.+|&&|\|\||\B-\B|\b(?:and|in|is(?: a| defined| not|nt)?|not|or)\b/],punctuation:/[{}()\[\];:,]/};t.interpolation={pattern:/\{[^\r\n}:]+\}/,alias:"variable",inside:n.util.clone(t)},t.func={pattern:/[\w-]+\([^)]*\).*/,inside:{"function":/^[^(]+/,rest:n.util.clone(t)}},n.languages.stylus={comment:{pattern:/(^|[^\\])(\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0},"atrule-declaration":{pattern:/(^\s*)@.+/m,lookbehind:!0,inside:{atrule:/^@[\w-]+/,rest:t}},"variable-declaration":{pattern:/(^[ \t]*)[\w$-]+\s*.?=[ \t]*(?:(?:\{[^}]*\}|.+)|$)/m,lookbehind:!0,inside:{variable:/^\S+/,rest:t}},statement:{pattern:/(^[ \t]*)(?:if|else|for|return|unless)[ \t]+.+/m,lookbehind:!0,inside:{keyword:/^\S+/,rest:t}},"property-declaration":{pattern:/((?:^|\{)([ \t]*))(?:[\w-]|\{[^}\r\n]+\})+(?:\s*:\s*|[ \t]+)[^{\r\n]*(?:;|[^{\r\n,](?=$)(?!(\r?\n|\r)(?:\{|\2[ \t]+)))/m,lookbehind:!0,inside:{property:{pattern:/^[^\s:]+/,inside:{interpolation:t.interpolation}},rest:t}},selector:{pattern:/(^[ \t]*)(?:(?=\S)(?:[^{}\r\n:()]|::?[\w-]+(?:\([^)\r\n]*\))?|\{[^}\r\n]+\})+)(?:(?:\r?\n|\r)(?:\1(?:(?=\S)(?:[^{}\r\n:()]|::?[\w-]+(?:\([^)\r\n]*\))?|\{[^}\r\n]+\})+)))*(?:,$|\{|(?=(?:\r?\n|\r)(?:\{|\1[ \t]+)))/m,lookbehind:!0,inside:{interpolation:t.interpolation,punctuation:/[{},]/}},func:t.func,string:t.string,interpolation:t.interpolation,punctuation:/[{}()\[\];:.]/}}(Prism);
Prism.languages.swift=Prism.languages.extend("clike",{string:{pattern:/("|')(\\(?:\((?:[^()]|\([^)]+\))+\)|\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0,inside:{interpolation:{pattern:/\\\((?:[^()]|\([^)]+\))+\)/,inside:{delimiter:{pattern:/^\\\(|\)$/,alias:"variable"}}}}},keyword:/\b(?:as|associativity|break|case|catch|class|continue|convenience|default|defer|deinit|didSet|do|dynamic(?:Type)?|else|enum|extension|fallthrough|final|for|func|get|guard|if|import|in|infix|init|inout|internal|is|lazy|left|let|mutating|new|none|nonmutating|operator|optional|override|postfix|precedence|prefix|private|Protocol|public|repeat|required|rethrows|return|right|safe|self|Self|set|static|struct|subscript|super|switch|throws?|try|Type|typealias|unowned|unsafe|var|weak|where|while|willSet|__(?:COLUMN__|FILE__|FUNCTION__|LINE__))\b/,number:/\b(?:[\d_]+(?:\.[\de_]+)?|0x[a-f0-9_]+(?:\.[a-f0-9p_]+)?|0b[01_]+|0o[0-7_]+)\b/i,constant:/\b(?:nil|[A-Z_]{2,}|k[A-Z][A-Za-z_]+)\b/,atrule:/@\b(?:IB(?:Outlet|Designable|Action|Inspectable)|class_protocol|exported|noreturn|NS(?:Copying|Managed)|objc|UIApplicationMain|auto_closure)\b/,builtin:/\b(?:[A-Z]\S+|abs|advance|alignof(?:Value)?|assert|contains|count(?:Elements)?|debugPrint(?:ln)?|distance|drop(?:First|Last)|dump|enumerate|equal|filter|find|first|getVaList|indices|isEmpty|join|last|lexicographicalCompare|map|max(?:Element)?|min(?:Element)?|numericCast|overlaps|partition|print(?:ln)?|reduce|reflect|reverse|sizeof(?:Value)?|sort(?:ed)?|split|startsWith|stride(?:of(?:Value)?)?|suffix|swap|toDebugString|toString|transcode|underestimateCount|unsafeBitCast|with(?:ExtendedLifetime|Unsafe(?:MutablePointers?|Pointers?)|VaList))\b/}),Prism.languages.swift.string.inside.interpolation.inside.rest=Prism.util.clone(Prism.languages.swift);
Prism.languages.vbnet=Prism.languages.extend("basic",{keyword:/(?:\b(?:ADDHANDLER|ADDRESSOF|ALIAS|AND|ANDALSO|AS|BEEP|BLOAD|BOOLEAN|BSAVE|BYREF|BYTE|BYVAL|CALL(?: ABSOLUTE)?|CASE|CATCH|CBOOL|CBYTE|CCHAR|CDATE|CDEC|CDBL|CHAIN|CHAR|CHDIR|CINT|CLASS|CLEAR|CLNG|CLOSE|CLS|COBJ|COM|COMMON|CONST|CONTINUE|CSBYTE|CSHORT|CSNG|CSTR|CTYPE|CUINT|CULNG|CUSHORT|DATA|DATE|DECIMAL|DECLARE|DEFAULT|DEF(?: FN| SEG|DBL|INT|LNG|SNG|STR)|DELEGATE|DIM|DIRECTCAST|DO|DOUBLE|ELSE|ELSEIF|END|ENUM|ENVIRON|ERASE|ERROR|EVENT|EXIT|FALSE|FIELD|FILES|FINALLY|FOR(?: EACH)?|FRIEND|FUNCTION|GET|GETTYPE|GETXMLNAMESPACE|GLOBAL|GOSUB|GOTO|HANDLES|IF|IMPLEMENTS|IMPORTS|IN|INHERITS|INPUT|INTEGER|INTERFACE|IOCTL|IS|ISNOT|KEY|KILL|LINE INPUT|LET|LIB|LIKE|LOCATE|LOCK|LONG|LOOP|LSET|ME|MKDIR|MOD|MODULE|MUSTINHERIT|MUSTOVERRIDE|MYBASE|MYCLASS|NAME|NAMESPACE|NARROWING|NEW|NEXT|NOT|NOTHING|NOTINHERITABLE|NOTOVERRIDABLE|OBJECT|OF|OFF|ON(?: COM| ERROR| KEY| TIMER)?|OPERATOR|OPEN|OPTION(?: BASE)?|OPTIONAL|OR|ORELSE|OUT|OVERLOADS|OVERRIDABLE|OVERRIDES|PARAMARRAY|PARTIAL|POKE|PRIVATE|PROPERTY|PROTECTED|PUBLIC|PUT|RAISEEVENT|READ|READONLY|REDIM|REM|REMOVEHANDLER|RESTORE|RESUME|RETURN|RMDIR|RSET|RUN|SBYTE|SELECT(?: CASE)?|SET|SHADOWS|SHARED|SHORT|SINGLE|SHELL|SLEEP|STATIC|STEP|STOP|STRING|STRUCTURE|SUB|SYNCLOCK|SWAP|SYSTEM|THEN|THROW|TIMER|TO|TROFF|TRON|TRUE|TRY|TRYCAST|TYPE|TYPEOF|UINTEGER|ULONG|UNLOCK|UNTIL|USHORT|USING|VIEW PRINT|WAIT|WEND|WHEN|WHILE|WIDENING|WITH|WITHEVENTS|WRITE|WRITEONLY|XOR)|\B(?:#CONST|#ELSE|#ELSEIF|#END|#IF))(?:\$|\b)/i,comment:[{pattern:/(?:!|REM\b).+/i,inside:{keyword:/^REM/i}},{pattern:/(^|[^\\:])'.*/,lookbehind:!0}]});
Prism.languages.yaml={scalar:{pattern:/([\-:]\s*(?:![^\s]+)?[ \t]*[|>])[ \t]*(?:((?:\r?\n|\r)[ \t]+)[^\r\n]+(?:\2[^\r\n]+)*)/,lookbehind:!0,alias:"string"},comment:/#.*/,key:{pattern:/(\s*(?:^|[:\-,[{\r\n?])[ \t]*(?:![^\s]+)?[ \t]*)[^\r\n{[\]},#\s]+?(?=\s*:\s)/,lookbehind:!0,alias:"atrule"},directive:{pattern:/(^[ \t]*)%.+/m,lookbehind:!0,alias:"important"},datetime:{pattern:/([:\-,[{]\s*(?:![^\s]+)?[ \t]*)(?:\d{4}-\d\d?-\d\d?(?:[tT]|[ \t]+)\d\d?:\d{2}:\d{2}(?:\.\d*)?[ \t]*(?:Z|[-+]\d\d?(?::\d{2})?)?|\d{4}-\d{2}-\d{2}|\d\d?:\d{2}(?::\d{2}(?:\.\d*)?)?)(?=[ \t]*(?:$|,|]|}))/m,lookbehind:!0,alias:"number"},"boolean":{pattern:/([:\-,[{]\s*(?:![^\s]+)?[ \t]*)(?:true|false)[ \t]*(?=$|,|]|})/im,lookbehind:!0,alias:"important"},"null":{pattern:/([:\-,[{]\s*(?:![^\s]+)?[ \t]*)(?:null|~)[ \t]*(?=$|,|]|})/im,lookbehind:!0,alias:"important"},string:{pattern:/([:\-,[{]\s*(?:![^\s]+)?[ \t]*)("|')(?:(?!\2)[^\\\r\n]|\\.)*\2(?=[ \t]*(?:$|,|]|}))/m,lookbehind:!0,greedy:!0},number:{pattern:/([:\-,[{]\s*(?:![^\s]+)?[ \t]*)[+\-]?(?:0x[\da-f]+|0o[0-7]+|(?:\d+\.?\d*|\.?\d+)(?:e[+-]?\d+)?|\.inf|\.nan)[ \t]*(?=$|,|]|})/im,lookbehind:!0},tag:/![^\s]+/,important:/[&*][\w]+/,punctuation:/---|[:[\]{}\-,|>?]|\.\.\./};
!function(){if("undefined"!=typeof self&&self.Prism&&self.document){var e="line-numbers",t=/\n(?!$)/g,n=function(e){var n=r(e),s=n["white-space"];if("pre-wrap"===s||"pre-line"===s){var l=e.querySelector("code"),i=e.querySelector(".line-numbers-rows"),a=e.querySelector(".line-numbers-sizer"),o=l.textContent.split(t);a||(a=document.createElement("span"),a.className="line-numbers-sizer",l.appendChild(a)),a.style.display="block",o.forEach(function(e,t){a.textContent=e||"\n";var n=a.getBoundingClientRect().height;i.children[t].style.height=n+"px"}),a.textContent="",a.style.display="none"}},r=function(e){return e?window.getComputedStyle?getComputedStyle(e):e.currentStyle||null:null};window.addEventListener("resize",function(){Array.prototype.forEach.call(document.querySelectorAll("pre."+e),n)}),Prism.hooks.add("complete",function(e){if(e.code){var r=e.element.parentNode,s=/\s*\bline-numbers\b\s*/;if(r&&/pre/i.test(r.nodeName)&&(s.test(r.className)||s.test(e.element.className))&&!e.element.querySelector(".line-numbers-rows")){s.test(e.element.className)&&(e.element.className=e.element.className.replace(s," ")),s.test(r.className)||(r.className+=" line-numbers");var l,i=e.code.match(t),a=i?i.length+1:1,o=new Array(a+1);o=o.join("<span></span>"),l=document.createElement("span"),l.setAttribute("aria-hidden","true"),l.className="line-numbers-rows",l.innerHTML=o,r.hasAttribute("data-start")&&(r.style.counterReset="linenumber "+(parseInt(r.getAttribute("data-start"),10)-1)),e.element.appendChild(l),n(r),Prism.hooks.run("line-numbers",e)}}}),Prism.hooks.add("line-numbers",function(e){e.plugins=e.plugins||{},e.plugins.lineNumbers=!0}),Prism.plugins.lineNumbers={getLine:function(t,n){if("PRE"===t.tagName&&t.classList.contains(e)){var r=t.querySelector(".line-numbers-rows"),s=parseInt(t.getAttribute("data-start"),10)||1,l=s+(r.children.length-1);s>n&&(n=s),n>l&&(n=l);var i=n-s;return r.children[i]}}}}}();
.twa {
display: inline-block;
height: 1em;
width: 1em;
margin: 0 .05em 0 .1em;
vertical-align: -0.1em;
background-repeat: no-repeat;
background-position: center center;
background-size: 1em 1em;
}
$size-map: (
"lg": 1.33,
"2x": 2,
"3x": 3,
"4x": 4,
"5x": 5
);
@each $name, $size in $size-map {
.twa-#{$name} {
height: 1em * $size;
width: 1em * $size;
margin: 0 .05em * $size 0 .1em * $size;
vertical-align: -0.1em * $size;
background-size: 1em * $size 1em * $size;
}
}
$emoji-map: (
"1f604": "smile",
"1f606": "laughing",
"1f60a": "blush",
"1f603": "smiley",
"263a": "relaxed",
"1f60f": "smirk",
"1f60d": "heart-eyes",
"1f618": "kissing-heart",
"1f61a": "kissing-closed-eyes",
"1f633": "flushed",
"1f625": "relieved",
"1f60c": "satisfied",
"1f601": "grin",
"1f609": "wink",
"1f61c": "stuck-out-tongue-winking-eye",
"1f61d": "stuck-out-tongue-closed-eyes",
"1f600": "grinning",
"1f617": "kissing",
"1f619": "kissing-smiling-eyes",
"1f61b": "stuck-out-tongue",
"1f634": "sleeping",
"1f61f": "worried",
"1f626": "frowning",
"1f627": "anguished",
"1f62e": "open-mouth",
"1f62c": "grimacing",
"1f615": "confused",
"1f62f": "hushed",
"1f611": "expressionless",
"1f612": "unamused",
"1f605": "sweat-smile",
"1f613": "sweat",
"1f629": "weary",
"1f614": "pensive",
"1f61e": "disappointed",
"1f616": "confounded",
"1f628": "fearful",
"1f630": "cold-sweat",
"1f623": "persevere",
"1f622": "cry",
"1f62d": "sob",
"1f602": "joy",
"1f632": "astonished",
"1f631": "scream",
"1f62b": "tired-face",
"1f620": "angry",
"1f621": "rage",
"1f624": "triumph",
"1f62a": "sleepy",
"1f60b": "yum",
"1f637": "mask",
"1f60e": "sunglasses",
"1f635": "dizzy-face",
"1f47f": "imp",
"1f608": "smiling-imp",
"1f610": "neutral-face",
"1f636": "no-mouth",
"1f607": "innocent",
"1f47d": "alien",
"1f49b": "yellow-heart",
"1f499": "blue-heart",
"1f49c": "purple-heart",
"2764": "heart",
"1f49a": "green-heart",
"1f494": "broken-heart",
"1f493": "heartbeat",
"1f497": "heartpulse",
"1f495": "two-hearts",
"1f49e": "revolving-hearts",
"1f498": "cupid",
"1f496": "sparkling-heart",
"2728": "sparkles",
"2b50": "star",
"1f31f": "star2",
"1f4ab": "dizzy",
"1f4a5": "boom",
"1f4a2": "anger",
"2757": "exclamation",
"2753": "question",
"2755": "grey-exclamation",
"2754": "grey-question",
"1f4a4": "zzz",
"1f4a8": "dash",
"1f4a6": "sweat-drops",
"1f3b6": "notes",
"1f3b5": "musical-note",
"1f525": "fire",
"1f4a9": "poop",
"1f44d": "thumbsup",
"1f44e": "thumbsdown",
"1f44c": "ok-hand",
"1f44a": "punch",
"270a": "fist",
"270c": "v",
"1f44b": "wave",
"270b": "hand",
"1f450": "open-hands",
"261d": "point-up",
"1f447": "point-down",
"1f448": "point-left",
"1f449": "point-right",
"1f64c": "raised-hands",
"1f64f": "pray",
"1f446": "point-up-2",
"1f44f": "clap",
"1f4aa": "muscle",
"1f6b6": "walking",
"1f3c3": "runner",
"1f46b": "couple",
"1f46a": "family",
"1f46c": "two-men-holding-hands",
"1f46d": "two-women-holding-hands",
"1f483": "dancer",
"1f46f": "dancers",
"1f646": "ok-woman",
"1f645": "no-good",
"1f481": "information-desk-person",
"1f64b": "raised-hand",
"1f470": "bride-with-veil",
"1f64e": "person-with-pouting-face",
"1f64d": "person-frowning",
"1f647": "bow",
"1f48f": "couplekiss",
"1f491": "couple-with-heart",
"1f486": "massage",
"1f487": "haircut",
"1f485": "nail-care",
"1f466": "boy",
"1f467": "girl",
"1f469": "woman",
"1f468": "man",
"1f476": "baby",
"1f475": "older-woman",
"1f474": "older-man",
"1f471": "person-with-blond-hair",
"1f472": "man-with-gua-pi-mao",
"1f473": "man-with-turban",
"1f477": "construction-worker",
"1f46e": "cop",
"1f47c": "angel",
"1f478": "princess",
"1f63a": "smiley-cat",
"1f638": "smile-cat",
"1f63b": "heart-eyes-cat",
"1f63d": "kissing-cat",
"1f63c": "smirk-cat",
"1f640": "scream-cat",
"1f63f": "crying-cat-face",
"1f639": "joy-cat",
"1f63e": "pouting-cat",
"1f479": "japanese-ogre",
"1f47a": "japanese-goblin",
"1f648": "see-no-evil",
"1f649": "hear-no-evil",
"1f64a": "speak-no-evil",
"1f482": "guardsman",
"1f480": "skull",
"1f463": "feet",
"1f444": "lips",
"1f48b": "kiss",
"1f4a7": "droplet",
"1f442": "ear",
"1f440": "eyes",
"1f443": "nose",
"1f445": "tongue",
"1f48c": "love-letter",
"1f464": "bust-in-silhouette",
"1f465": "busts-in-silhouette",
"1f4ac": "speech-balloon",
"1f4ad": "thought-balloon",
"2600": "sunny",
"2614": "umbrella",
"2601": "cloud",
"2744": "snowflake",
"26c4": "snowman",
"26a1": "zap",
"1f300": "cyclone",
"1f301": "foggy",
"1f30a": "ocean",
"1f431": "cat",
"1f436": "dog",
"1f42d": "mouse",
"1f439": "hamster",
"1f430": "rabbit",
"1f43a": "wolf",
"1f438": "frog",
"1f42f": "tiger",
"1f428": "koala",
"1f43b": "bear",
"1f437": "pig",
"1f43d": "pig-nose",
"1f42e": "cow",
"1f417": "boar",
"1f435": "monkey-face",
"1f412": "monkey",
"1f434": "horse",
"1f40e": "racehorse",
"1f42b": "camel",
"1f411": "sheep",
"1f418": "elephant",
"1f43c": "panda-face",
"1f40d": "snake",
"1f426": "bird",
"1f424": "baby-chick",
"1f425": "hatched-chick",
"1f423": "hatching-chick",
"1f414": "chicken",
"1f427": "penguin",
"1f422": "turtle",
"1f41b": "bug",
"1f41d": "honeybee",
"1f41c": "ant",
"1f41e": "beetle",
"1f40c": "snail",
"1f419": "octopus",
"1f420": "tropical-fish",
"1f41f": "fish",
"1f433": "whale",
"1f40b": "whale2",
"1f42c": "dolphin",
"1f404": "cow2",
"1f40f": "ram",
"1f400": "rat",
"1f403": "water-buffalo",
"1f405": "tiger2",
"1f407": "rabbit2",
"1f409": "dragon",
"1f410": "goat",
"1f413": "rooster",
"1f415": "dog2",
"1f416": "pig2",
"1f401": "mouse2",
"1f402": "ox",
"1f432": "dragon-face",
"1f421": "blowfish",
"1f40a": "crocodile",
"1f42a": "dromedary-camel",
"1f406": "leopard",
"1f408": "cat2",
"1f429": "poodle",
"1f43e": "paw-prints",
"1f490": "bouquet",
"1f338": "cherry-blossom",
"1f337": "tulip",
"1f340": "four-leaf-clover",
"1f339": "rose",
"1f33b": "sunflower",
"1f33a": "hibiscus",
"1f341": "maple-leaf",
"1f343": "leaves",
"1f342": "fallen-leaf",
"1f33f": "herb",
"1f344": "mushroom",
"1f335": "cactus",
"1f334": "palm-tree",
"1f332": "evergreen-tree",
"1f333": "deciduous-tree",
"1f330": "chestnut",
"1f331": "seedling",
"1f33c": "blossom",
"1f33e": "ear-of-rice",
"1f41a": "shell",
"1f310": "globe-with-meridians",
"1f31e": "sun-with-face",
"1f31d": "full-moon-with-face",
"1f31a": "new-moon-with-face",
"1f311": "new-moon",
"1f312": "waxing-crescent-moon",
"1f313": "first-quarter-moon",
"1f314": "waxing-gibbous-moon",
"1f315": "full-moon",
"1f316": "waning-gibbous-moon",
"1f317": "last-quarter-moon",
"1f318": "waning-crescent-moon",
"1f31c": "last-quarter-moon-with-face",
"1f31b": "first-quarter-moon-with-face",
"1f319": "moon",
"1f30d": "earth-africa",
"1f30e": "earth-americas",
"1f30f": "earth-asia",
"1f30b": "volcano",
"1f30c": "milky-way",
"26c5": "partly-sunny",
"1f38d": "bamboo",
"1f49d": "gift-heart",
"1f38e": "dolls",
"1f392": "school-satchel",
"1f393": "mortar-board",
"1f38f": "flags",
"1f386": "fireworks",
"1f387": "sparkler",
"1f390": "wind-chime",
"1f391": "rice-scene",
"1f383": "jack-o-lantern",
"1f47b": "ghost",
"1f385": "santa",
"1f3b1": "8ball",
"23f0": "alarm-clock",
"1f34e": "apple",
"1f3a8": "art",
"1f37c": "baby-bottle",
"1f388": "balloon",
"1f34c": "banana",
"1f4ca": "bar-chart",
"26be": "baseball",
"1f3c0": "basketball",
"1f6c0": "bath",
"1f6c1": "bathtub",
"1f50b": "battery",
"1f37a": "beer",
"1f37b": "beers",
"1f514": "bell",
"1f371": "bento",
"1f6b4": "bicyclist",
"1f459": "bikini",
"1f382": "birthday",
"1f0cf": "black-joker",
"2712": "black-nib",
"1f4d8": "blue-book",
"1f4a3": "bomb",
"1f516": "bookmark",
"1f4d1": "bookmark-tabs",
"1f4da": "books",
"1f462": "boot",
"1f3b3": "bowling",
"1f35e": "bread",
"1f4bc": "briefcase",
"1f4a1": "bulb",
"1f370": "cake",
"1f4c6": "calendar",
"1f4f2": "calling",
"1f4f7": "camera",
"1f36c": "candy",
"1f4c7": "card-index",
"1f4bf": "cd",
"1f4c9": "chart-with-downwards-trend",
"1f4c8": "chart-with-upwards-trend",
"1f352": "cherries",
"1f36b": "chocolate-bar",
"1f384": "christmas-tree",
"1f3ac": "clapper",
"1f4cb": "clipboard",
"1f4d5": "closed-book",
"1f510": "closed-lock-with-key",
"1f302": "closed-umbrella",
"2663": "clubs",
"1f378": "cocktail",
"2615": "coffee",
"1f4bb": "computer",
"1f38a": "confetti-ball",
"1f36a": "cookie",
"1f33d": "corn",
"1f4b3": "credit-card",
"1f451": "crown",
"1f52e": "crystal-ball",
"1f35b": "curry",
"1f36e": "custard",
"1f361": "dango",
"1f3af": "dart",
"1f4c5": "date",
"2666": "diamonds",
"1f4b5": "dollar",
"1f6aa": "door",
"1f369": "doughnut",
"1f457": "dress",
"1f4c0": "dvd",
"1f4e7": "e-mail",
"1f373": "egg",
"1f346": "eggplant",
"1f50c": "electric-plug",
"2709": "email",
"1f4b6": "euro",
"1f453": "eyeglasses",
"1f4e0": "fax",
"1f4c1": "file-folder",
"1f365": "fish-cake",
"1f3a3": "fishing-pole-and-fish",
"1f526": "flashlight",
"1f4be": "floppy-disk",
"1f3b4": "flower-playing-cards",
"1f3c8": "football",
"1f374": "fork-and-knife",
"1f364": "fried-shrimp",
"1f35f": "fries",
"1f3b2": "game-die",
"1f48e": "gem",
"1f381": "gift",
"26f3": "golf",
"1f347": "grapes",
"1f34f": "green-apple",
"1f4d7": "green-book",
"1f3b8": "guitar",
"1f52b": "gun",
"1f354": "hamburger",
"1f528": "hammer",
"1f45c": "handbag",
"1f3a7": "headphones",
"2665": "hearts",
"1f506": "high-brightness",
"1f460": "high-heel",
"1f52a": "hocho",
"1f36f": "honey-pot",
"1f3c7": "horse-racing",
"231b": "hourglass",
"23f3": "hourglass-flowing-sand",
"1f368": "ice-cream",
"1f366": "icecream",
"1f4e5": "inbox-tray",
"1f4e8": "incoming-envelope",
"1f4f1": "iphone",
"1f456": "jeans",
"1f511": "key",
"1f458": "kimono",
"1f4d2": "ledger",
"1f34b": "lemon",
"1f484": "lipstick",
"1f512": "lock",
"1f50f": "lock-with-ink-pen",
"1f36d": "lollipop",
"27bf": "loop",
"1f4e2": "loudspeaker",
"1f505": "low-brightness",
"1f50d": "mag",
"1f50e": "mag-right",
"1f004": "mahjong",
"1f4eb": "mailbox",
"1f4ea": "mailbox-closed",
"1f4ec": "mailbox-with-mail",
"1f4ed": "mailbox-with-no-mail",
"1f45e": "mans-shoe",
"1f356": "meat-on-bone",
"1f4e3": "mega",
"1f348": "melon",
"1f4dd": "memo",
"1f3a4": "microphone",
"1f52c": "microscope",
"1f4bd": "minidisc",
"1f4b8": "money-with-wings",
"1f4b0": "moneybag",
"1f6b5": "mountain-bicyclist",
"1f3a5": "movie-camera",
"1f3b9": "musical-keyboard",
"1f3bc": "musical-score",
"1f507": "mute",
"1f4db": "name-badge",
"1f454": "necktie",
"1f4f0": "newspaper",
"1f515": "no-bell",
"1f4d3": "notebook",
"1f4d4": "notebook-with-decorative-cover",
"1f529": "nut-and-bolt",
"1f362": "oden",
"1f4c2": "open-file-folder",
"1f4d9": "orange-book",
"1f4e4": "outbox-tray",
"1f4c4": "page-facing-up",
"1f4c3": "page-with-curl",
"1f4df": "pager",
"1f4ce": "paperclip",
"1f351": "peach",
"1f350": "pear",
"270f": "pencil2",
"260e": "phone",
"1f48a": "pill",
"1f34d": "pineapple",
"1f355": "pizza",
"1f4ef": "postal-horn",
"1f4ee": "postbox",
"1f45d": "pouch",
"1f357": "poultry-leg",
"1f4b7": "pound",
"1f45b": "purse",
"1f4cc": "pushpin",
"1f4fb": "radio",
"1f35c": "ramen",
"1f380": "ribbon",
"1f35a": "rice",
"1f359": "rice-ball",
"1f358": "rice-cracker",
"1f48d": "ring",
"1f3c9": "rugby-football",
"1f3bd": "running-shirt-with-sash",
"1f376": "sake",
"1f461": "sandal",
"1f4e1": "satellite",
"1f3b7": "saxophone",
"2702": "scissors",
"1f4dc": "scroll",
"1f4ba": "seat",
"1f367": "shaved-ice",
"1f455": "shirt",
"1f6bf": "shower",
"1f3bf": "ski",
"1f6ac": "smoking",
"1f3c2": "snowboarder",
"26bd": "soccer",
"1f509": "sound",
"1f47e": "space-invader",
"2660": "spades",
"1f35d": "spaghetti",
"1f50a": "speaker",
"1f372": "stew",
"1f4cf": "straight-ruler",
"1f353": "strawberry",
"1f3c4": "surfer",
"1f363": "sushi",
"1f360": "sweet-potato",
"1f3ca": "swimmer",
"1f489": "syringe",
"1f389": "tada",
"1f38b": "tanabata-tree",
"1f34a": "tangerine",
"1f375": "tea",
"1f4de": "telephone-receiver",
"1f52d": "telescope",
"1f3be": "tennis",
"1f6bd": "toilet",
"1f345": "tomato",
"1f3a9": "tophat",
"1f4d0": "triangular-ruler",
"1f3c6": "trophy",
"1f379": "tropical-drink",
"1f3ba": "trumpet",
"1f4fa": "tv",
"1f513": "unlock",
"1f4fc": "vhs",
"1f4f9": "video-camera",
"1f3ae": "video-game",
"1f3bb": "violin",
"231a": "watch",
"1f349": "watermelon",
"1f377": "wine-glass",
"1f45a": "womans-clothes",
"1f452": "womans-hat",
"1f527": "wrench",
"1f4b4": "yen",
"1f6a1": "aerial-tramway",
"2708": "airplane",
"1f691": "ambulance",
"2693": "anchor",
"1f69b": "articulated-lorry",
"1f3e7": "atm",
"1f3e6": "bank",
"1f488": "barber",
"1f530": "beginner",
"1f6b2": "bike",
"1f699": "blue-car",
"26f5": "boat",
"1f309": "bridge-at-night",
"1f685": "bullettrain-front",
"1f684": "bullettrain-side",
"1f68c": "bus",
"1f68f": "busstop",
"1f697": "car",
"1f3a0": "carousel-horse",
"1f3c1": "checkered-flag",
"26ea": "church",
"1f3aa": "circus-tent",
"1f307": "city-sunrise",
"1f306": "city-sunset",
"1f6a7": "construction",
"1f3ea": "convenience-store",
"1f38c": "crossed-flags",
"1f3ec": "department-store",
"1f3f0": "european-castle",
"1f3e4": "european-post-office",
"1f3ed": "factory",
"1f3a1": "ferris-wheel",
"1f692": "fire-engine",
"26f2": "fountain",
"26fd": "fuelpump",
"1f681": "helicopter",
"1f3e5": "hospital",
"1f3e8": "hotel",
"2668": "hotsprings",
"1f3e0": "house",
"1f3e1": "house-with-garden",
"1f5fe": "japan",
"1f3ef": "japanese-castle",
"1f688": "light-rail",
"1f3e9": "love-hotel",
"1f690": "minibus",
"1f69d": "monorail",
"1f5fb": "mount-fuji",
"1f6a0": "mountain-cableway",
"1f69e": "mountain-railway",
"1f5ff": "moyai",
"1f3e2": "office",
"1f698": "oncoming-automobile",
"1f68d": "oncoming-bus",
"1f694": "oncoming-police-car",
"1f696": "oncoming-taxi",
"1f3ad": "performing-arts",
"1f693": "police-car",
"1f3e3": "post-office",
"1f683": "railway-car",
"1f308": "rainbow",
"1f680": "rocket",
"1f3a2": "roller-coaster",
"1f6a8": "rotating-light",
"1f4cd": "round-pushpin",
"1f6a3": "rowboat",
"1f3eb": "school",
"1f6a2": "ship",
"1f3b0": "slot-machine",
"1f6a4": "speedboat",
"1f303": "stars",
"1f689": "station",
"1f5fd": "statue-of-liberty",
"1f682": "steam-locomotive",
"1f305": "sunrise",
"1f304": "sunrise-over-mountains",
"1f69f": "suspension-railway",
"1f695": "taxi",
"26fa": "tent",
"1f3ab": "ticket",
"1f5fc": "tokyo-tower",
"1f69c": "tractor",
"1f6a5": "traffic-light",
"1f686": "train2",
"1f68a": "tram",
"1f6a9": "triangular-flag-on-post",
"1f68e": "trolleybus",
"1f69a": "truck",
"1f6a6": "vertical-traffic-light",
"26a0": "warning",
"1f492": "wedding",
"1f1e6-1f1e9": "flag-ad",
"1f1e6-1f1ea": "flag-ae",
"1f1e6-1f1eb": "flag-af",
"1f1e6-1f1ec": "flag-ag",
"1f1e6-1f1ee": "flag-ai",
"1f1e6-1f1f1": "flag-al",
"1f1e6-1f1f2": "flag-am",
"1f1e6-1f1f4": "flag-ao",
"1f1e6-1f1f6": "flag-aq",
"1f1e6-1f1f7": "flag-ar",
"1f1e6-1f1f8": "flag-as",
"1f1e6-1f1f9": "flag-at",
"1f1e6-1f1fa": "flag-au",
"1f1e6-1f1fc": "flag-aw",
"1f1e6-1f1fd": "flag-ax",
"1f1e6-1f1ff": "flag-az",
"1f1e7-1f1e6": "flag-ba",
"1f1e7-1f1e7": "flag-bb",
"1f1e7-1f1e9": "flag-bd",
"1f1e7-1f1ea": "flag-be",
"1f1e7-1f1eb": "flag-bf",
"1f1e7-1f1ec": "flag-bg",
"1f1e7-1f1ed": "flag-bh",
"1f1e7-1f1ee": "flag-bi",
"1f1e7-1f1ef": "flag-bj",
"1f1e7-1f1f1": "flag-bl",
"1f1e7-1f1f2": "flag-bm",
"1f1e7-1f1f3": "flag-bn",
"1f1e7-1f1f4": "flag-bo",
"1f1e7-1f1f6": "flag-bq",
"1f1e7-1f1f7": "flag-br",
"1f1e7-1f1f8": "flag-bs",
"1f1e7-1f1f9": "flag-bt",
"1f1e7-1f1fb": "flag-bv",
"1f1e7-1f1fc": "flag-bw",
"1f1e7-1f1fe": "flag-by",
"1f1e7-1f1ff": "flag-bz",
"1f1e8-1f1e6": "flag-ca",
"1f1e8-1f1e8": "flag-cc",
"1f1e8-1f1e9": "flag-cd",
"1f1e8-1f1eb": "flag-cf",
"1f1e8-1f1ec": "flag-cg",
"1f1e8-1f1ed": "flag-ch",
"1f1e8-1f1ee": "flag-ci",
"1f1e8-1f1f0": "flag-ck",
"1f1e8-1f1f1": "flag-cl",
"1f1e8-1f1f2": "flag-cm",
"1f1e8-1f1f3": "flag-cn",
"1f1e8-1f1f4": "flag-co",
"1f1e8-1f1f7": "flag-cr",
"1f1e8-1f1fa": "flag-cu",
"1f1e8-1f1fb": "flag-cv",
"1f1e8-1f1fc": "flag-cw",
"1f1e8-1f1fd": "flag-cx",
"1f1e8-1f1fe": "flag-cy",
"1f1e8-1f1ff": "flag-cz",
"1f1e9-1f1ea": "flag-de",
"1f1e9-1f1ec": "flag-dg",
"1f1e9-1f1ef": "flag-dj",
"1f1e9-1f1f0": "flag-dk",
"1f1e9-1f1f2": "flag-dm",
"1f1e9-1f1f4": "flag-do",
"1f1e9-1f1ff": "flag-dz",
"1f1ea-1f1e8": "flag-ec",
"1f1ea-1f1ea": "flag-ee",
"1f1ea-1f1ec": "flag-eg",
"1f1ea-1f1ed": "flag-eh",
"1f1ea-1f1f7": "flag-er",
"1f1ea-1f1f8": "flag-es",
"1f1ea-1f1fa": "flag-eu",
"1f1ea-1f1f9": "flag-et",
"1f1eb-1f1ee": "flag-fi",
"1f1eb-1f1ef": "flag-fj",
"1f1eb-1f1f0": "flag-fk",
"1f1eb-1f1f2": "flag-fm",
"1f1eb-1f1f4": "flag-fo",
"1f1eb-1f1f7": "flag-fr",
"1f1ec-1f1e6": "flag-ga",
"1f1ec-1f1e7": "flag-gb",
"1f1ec-1f1e9": "flag-gd",
"1f1ec-1f1ea": "flag-ge",
"1f1ec-1f1eb": "flag-gf",
"1f1ec-1f1ec": "flag-gg",
"1f1ec-1f1ed": "flag-gh",
"1f1ec-1f1ee": "flag-gi",
"1f1ec-1f1f1": "flag-gl",
"1f1ec-1f1f2": "flag-gm",
"1f1ec-1f1f3": "flag-gn",
"1f1ec-1f1f5": "flag-gp",
"1f1ec-1f1f6": "flag-gq",
"1f1ec-1f1f7": "flag-gr",
"1f1ec-1f1f8": "flag-gs",
"1f1ec-1f1f9": "flag-gt",
"1f1ec-1f1fa": "flag-gu",
"1f1ec-1f1fc": "flag-gw",
"1f1ec-1f1fe": "flag-gy",
"1f1ed-1f1f0": "flag-hk",
"1f1ed-1f1f2": "flag-hm",
"1f1ed-1f1f3": "flag-hn",
"1f1ed-1f1f7": "flag-hr",
"1f1ed-1f1f9": "flag-ht",
"1f1ed-1f1fa": "flag-hu",
"1f1ee-1f1e9": "flag-id",
"1f1ee-1f1ea": "flag-ie",
"1f1ee-1f1f1": "flag-il",
"1f1ee-1f1f2": "flag-im",
"1f1ee-1f1f3": "flag-in",
"1f1ee-1f1f4": "flag-io",
"1f1ee-1f1f6": "flag-iq",
"1f1ee-1f1f7": "flag-ir",
"1f1ee-1f1f8": "flag-is",
"1f1ee-1f1f9": "flag-it",
"1f1ef-1f1ea": "flag-je",
"1f1ef-1f1f2": "flag-jm",
"1f1ef-1f1f4": "flag-jo",
"1f1ef-1f1f5": "flag-jp",
"1f1f0-1f1ea": "flag-ke",
"1f1f0-1f1ec": "flag-kg",
"1f1f0-1f1ed": "flag-kh",
"1f1f0-1f1ee": "flag-ki",
"1f1f0-1f1f2": "flag-km",
"1f1f0-1f1f3": "flag-kn",
"1f1f0-1f1f5": "flag-kp",
"1f1f0-1f1f7": "flag-kr",
"1f1f0-1f1fc": "flag-kw",
"1f1f0-1f1fe": "flag-ky",
"1f1f0-1f1ff": "flag-kz",
"1f1f1-1f1e6": "flag-la",
"1f1f1-1f1e7": "flag-lb",
"1f1f1-1f1e8": "flag-lc",
"1f1f1-1f1ee": "flag-li",
"1f1f1-1f1f0": "flag-lk",
"1f1f1-1f1f7": "flag-lr",
"1f1f1-1f1f8": "flag-ls",
"1f1f1-1f1f9": "flag-lt",
"1f1f1-1f1fa": "flag-lu",
"1f1f1-1f1fb": "flag-lv",
"1f1f1-1f1fe": "flag-ly",
"1f1f2-1f1e6": "flag-ma",
"1f1f2-1f1e8": "flag-mc",
"1f1f2-1f1e9": "flag-md",
"1f1f2-1f1ea": "flag-me",
"1f1f2-1f1eb": "flag-mf",
"1f1f2-1f1ec": "flag-mg",
"1f1f2-1f1ed": "flag-mh",
"1f1f2-1f1f0": "flag-mk",
"1f1f2-1f1f1": "flag-ml",
"1f1f2-1f1f2": "flag-mm",
"1f1f2-1f1f3": "flag-mn",
"1f1f2-1f1f4": "flag-mo",
"1f1f2-1f1f5": "flag-mp",
"1f1f2-1f1f6": "flag-mq",
"1f1f2-1f1f7": "flag-mr",
"1f1f2-1f1f8": "flag-ms",
"1f1f2-1f1f9": "flag-mt",
"1f1f2-1f1fa": "flag-mu",
"1f1f2-1f1fb": "flag-mv",
"1f1f2-1f1fc": "flag-mw",
"1f1f2-1f1fd": "flag-mx",
"1f1f2-1f1fe": "flag-my",
"1f1f2-1f1ff": "flag-mz",
"1f1f3-1f1e6": "flag-na",
"1f1f3-1f1e8": "flag-nc",
"1f1f3-1f1ea": "flag-ne",
"1f1f3-1f1eb": "flag-nf",
"1f1f3-1f1ec": "flag-ng",
"1f1f3-1f1ee": "flag-ni",
"1f1f3-1f1f1": "flag-nl",
"1f1f3-1f1f4": "flag-no",
"1f1f3-1f1f5": "flag-np",
"1f1f3-1f1f7": "flag-nr",
"1f1f3-1f1fa": "flag-nu",
"1f1f3-1f1ff": "flag-nz",
"1f1f4-1f1f2": "flag-om",
"1f1f5-1f1e6": "flag-pa",
"1f1f5-1f1ea": "flag-pe",
"1f1f5-1f1eb": "flag-pf",
"1f1f5-1f1ec": "flag-pg",
"1f1f5-1f1ed": "flag-ph",
"1f1f5-1f1f0": "flag-pk",
"1f1f5-1f1f1": "flag-pl",
"1f1f5-1f1f2": "flag-pm",
"1f1f5-1f1f3": "flag-pn",
"1f1f5-1f1f7": "flag-pr",
"1f1f5-1f1f8": "flag-ps",
"1f1f5-1f1f9": "flag-pt",
"1f1f5-1f1fc": "flag-pw",
"1f1f5-1f1fe": "flag-py",
"1f1f6-1f1e6": "flag-qa",
"1f1f7-1f1ea": "flag-re",
"1f1f7-1f1f4": "flag-ro",
"1f1f7-1f1f8": "flag-rs",
"1f1f7-1f1fa": "flag-ru",
"1f1f7-1f1fc": "flag-rw",
"1f1f8-1f1e6": "flag-sa",
"1f1f8-1f1e7": "flag-sb",
"1f1f8-1f1e8": "flag-sc",
"1f1f8-1f1e9": "flag-sd",
"1f1f8-1f1ea": "flag-se",
"1f1f8-1f1ec": "flag-sg",
"1f1f8-1f1ed": "flag-sh",
"1f1f8-1f1ee": "flag-si",
"1f1f8-1f1ef": "flag-sj",
"1f1f8-1f1f0": "flag-sk",
"1f1f8-1f1f1": "flag-sl",
"1f1f8-1f1f2": "flag-sm",
"1f1f8-1f1f3": "flag-sn",
"1f1f8-1f1f4": "flag-so",
"1f1f8-1f1f7": "flag-sr",
"1f1f8-1f1f8": "flag-ss",
"1f1f8-1f1f9": "flag-st",
"1f1f8-1f1fb": "flag-sv",
"1f1f8-1f1fd": "flag-sx",
"1f1f8-1f1fe": "flag-sy",
"1f1f8-1f1ff": "flag-sz",
"1f1f9-1f1e8": "flag-tc",
"1f1f9-1f1e9": "flag-td",
"1f1f9-1f1eb": "flag-tf",
"1f1f9-1f1ec": "flag-tg",
"1f1f9-1f1ed": "flag-th",
"1f1f9-1f1ef": "flag-tj",
"1f1f9-1f1f0": "flag-tk",
"1f1f9-1f1f1": "flag-tl",
"1f1f9-1f1f2": "flag-tm",
"1f1f9-1f1f3": "flag-tn",
"1f1f9-1f1f4": "flag-to",
"1f1f9-1f1f7": "flag-tr",
"1f1f9-1f1f9": "flag-tt",
"1f1f9-1f1fb": "flag-tv",
"1f1f9-1f1fc": "flag-tw",
"1f1f9-1f1ff": "flag-tz",
"1f1fa-1f1e6": "flag-ua",
"1f1fa-1f1ec": "flag-ug",
"1f1fa-1f1f2": "flag-um",
"1f1fa-1f1f8": "flag-us",
"1f1fa-1f1fe": "flag-uy",
"1f1fa-1f1ff": "flag-uz",
"1f1fb-1f1e6": "flag-va",
"1f1fb-1f1e8": "flag-vc",
"1f1fb-1f1ea": "flag-ve",
"1f1fb-1f1ec": "flag-vg",
"1f1fb-1f1ee": "flag-vi",
"1f1fb-1f1f3": "flag-vn",
"1f1fb-1f1fa": "flag-vu",
"1f1fc-1f1eb": "flag-wf",
"1f1fc-1f1f8": "flag-ws",
"1f1fd-1f1f0": "flag-xk",
"1f1fe-1f1ea": "flag-ye",
"1f1fe-1f1f9": "flag-yt",
"1f1ff-1f1e6": "flag-za",
"1f1ff-1f1f2": "flag-zm",
"1f1ff-1f1fc": "flag-zw",
"1f4af": "100",
"1f522": "1234",
"1f170": "a",
"1f18e": "ab",
"1f524": "abc",
"1f521": "abcd",
"1f251": "accept",
"2652": "aquarius",
"2648": "aries",
"25c0": "arrow-backward",
"23ec": "arrow-double-down",
"23eb": "arrow-double-up",
"2b07": "arrow-down",
"1f53d": "arrow-down-small",
"25b6": "arrow-forward",
"2935": "arrow-heading-down",
"2934": "arrow-heading-up",
"2b05": "arrow-left",
"2199": "arrow-lower-left",
"2198": "arrow-lower-right",
"27a1": "arrow-right",
"21aa": "arrow-right-hook",
"2b06": "arrow-up",
"2195": "arrow-up-down",
"1f53c": "arrow-up-small",
"2196": "arrow-upper-left",
"2197": "arrow-upper-right",
"1f503": "arrows-clockwise",
"1f504": "arrows-counterclockwise",
"1f171": "b",
"1f6bc": "baby-symbol",
"1f6c4": "baggage-claim",
"2611": "ballot-box-with-check",
"203c": "bangbang",
"26ab": "black-circle",
"1f532": "black-square-button",
"264b": "cancer",
"1f520": "capital-abcd",
"2651": "capricorn",
"1f4b9": "chart",
"1f6b8": "children-crossing",
"1f3a6": "cinema",
"1f191": "cl",
"1f550": "clock1",
"1f559": "clock10",
"1f565": "clock1030",
"1f55a": "clock11",
"1f566": "clock1130",
"1f55b": "clock12",
"1f567": "clock1230",
"1f55c": "clock130",
"1f551": "clock2",
"1f55d": "clock230",
"1f552": "clock3",
"1f55e": "clock330",
"1f553": "clock4",
"1f55f": "clock430",
"1f554": "clock5",
"1f560": "clock530",
"1f555": "clock6",
"1f561": "clock630",
"1f556": "clock7",
"1f562": "clock730",
"1f557": "clock8",
"1f563": "clock830",
"1f558": "clock9",
"1f564": "clock930",
"3297": "congratulations",
"1f192": "cool",
"a9": "copyright",
"27b0": "curly-loop",
"1f4b1": "currency-exchange",
"1f6c3": "customs",
"1f4a0": "diamond-shape-with-a-dot-inside",
"1f6af": "do-not-litter",
"38-20e3": "eight",
"2734": "eight-pointed-black-star",
"2733": "eight-spoked-asterisk",
"1f51a": "end",
"23e9": "fast-forward",
"35-20e3": "five",
"34-20e3": "four",
"1f193": "free",
"264a": "gemini",
"23-20e3": "hash",
"1f49f": "heart-decoration",
"2714": "heavy-check-mark",
"2797": "heavy-division-sign",
"1f4b2": "heavy-dollar-sign",
"2796": "heavy-minus-sign",
"2716": "heavy-multiplication-x",
"2795": "heavy-plus-sign",
"1f194": "id",
"1f250": "ideograph-advantage",
"2139": "information-source",
"2049": "interrobang",
"1f51f": "keycap-ten",
"1f201": "koko",
"1f535": "large-blue-circle",
"1f537": "large-blue-diamond",
"1f536": "large-orange-diamond",
"1f6c5": "left-luggage",
"2194": "left-right-arrow",
"21a9": "leftwards-arrow-with-hook",
"264c": "leo",
"264e": "libra",
"1f517": "link",
"24c2": "m",
"1f6b9": "mens",
"1f687": "metro",
"1f4f4": "mobile-phone-off",
"274e": "negative-squared-cross-mark",
"1f195": "new",
"1f196": "ng",
"39-20e3": "nine",
"1f6b3": "no-bicycles",
"26d4": "no-entry",
"1f6ab": "no-entry-sign",
"1f4f5": "no-mobile-phones",
"1f6b7": "no-pedestrians",
"1f6ad": "no-smoking",
"1f6b1": "non-potable-water",
"2b55": "o",
"1f17e": "o2",
"1f197": "ok",
"1f51b": "on",
"31-20e3": "one",
"26ce": "ophiuchus",
"1f17f": "parking",
"303d": "part-alternation-mark",
"1f6c2": "passport-control",
"2653": "pisces",
"1f6b0": "potable-water",
"1f6ae": "put-litter-in-its-place",
"1f518": "radio-button",
"267b": "recycle",
"1f534": "red-circle",
"ae": "registered",
"1f501": "repeat",
"1f502": "repeat-one",
"1f6bb": "restroom",
"23ea": "rewind",
"1f202": "sa",
"2650": "sagittarius",
"264f": "scorpius",
"3299": "secret",
"37-20e3": "seven",
"1f4f6": "signal-strength",
"36-20e3": "six",
"1f52f": "six-pointed-star",
"1f539": "small-blue-diamond",
"1f538": "small-orange-diamond",
"1f53a": "small-red-triangle",
"1f53b": "small-red-triangle-down",
"1f51c": "soon",
"1f198": "sos",
"1f523": "symbols",
"2649": "taurus",
"33-20e3": "three",
"2122": "tm",
"1f51d": "top",
"1f531": "trident",
"1f500": "twisted-rightwards-arrows",
"32-20e3": "two",
"1f239": "u5272",
"1f234": "u5408",
"1f23a": "u55b6",
"1f22f": "u6307",
"1f237": "u6708",
"1f236": "u6709",
"1f235": "u6e80",
"1f21a": "u7121",
"1f238": "u7533",
"1f232": "u7981",
"1f233": "u7a7a",
"1f51e": "underage",
"1f199": "up",
"1f4f3": "vibration-mode",
"264d": "virgo",
"1f19a": "vs",
"3030": "wavy-dash",
"1f6be": "wc",
"267f": "wheelchair",
"2705": "white-check-mark",
"26aa": "white-circle",
"1f4ae": "white-flower",
"1f533": "white-square-button",
"1f6ba": "womens",
"274c": "x",
"30-20e3": "zero"
);
@each $code, $name in $emoji-map {
.twa-#{$name} {
background-image: url("https://twemoji.maxcdn.com/svg/#{$code}.svg");
}
}
\ No newline at end of file
export default {
readyStates: [],
callbacks: [],
/**
* Check if event has been sent
*
* @param {String} evt Event name
* @returns {Boolean} True if fired
*/
isReady (evt) {
return this.readyStates.indexOf(evt) >= 0
},
/**
* Register a callback to be executed when event is sent
*
* @param {String} evt Event name to register to
* @param {Function} clb Callback function
* @param {Boolean} once If the callback should be called only once
*/
register (evt, clb, once) {
if (this.isReady(evt)) {
clb()
} else {
this.callbacks.push({
event: evt,
callback: clb,
once: false,
called: false
})
}
},
/**
* Register a callback to be executed only once when event is sent
*
* @param {String} evt Event name to register to
* @param {Function} clb Callback function
*/
registerOnce (evt, clb) {
this.register(evt, clb, true)
},
/**
* Set ready state and execute callbacks
*/
notify (evt) {
this.readyStates.push(evt)
this.callbacks.forEach(clb => {
if (clb.event === evt) {
if (clb.once && clb.called) {
return
}
clb.called = true
clb.callback()
}
})
},
/**
* Execute callback on DOM ready
*
* @param {Function} clb Callback function
*/
onDOMReady (clb) {
if (document.readyState === 'interactive' || document.readyState === 'complete' || document.readyState === 'loaded') {
clb()
} else {
document.addEventListener('DOMContentLoaded', clb)
}
}
}
import i18next from 'i18next'
import Backend from 'i18next-chained-backend'
import LocalStorageBackend from 'i18next-localstorage-backend'
import i18nextXHR from 'i18next-xhr-backend'
import VueI18Next from '@panter/vue-i18next'
import _ from 'lodash'
/* global siteConfig, graphQL */
import localeQuery from 'gql/common/common-localization-query-translations.gql'
export default {
VueI18Next,
init() {
i18next
.use(Backend)
.init({
backend: {
backends: [
LocalStorageBackend,
i18nextXHR
],
backendOptions: [
{
expirationTime: 1000 * 60 * 60 * 24 // 24h
},
{
loadPath: '{{lng}}/{{ns}}',
parse: (data) => data,
ajax: (url, opts, cb, data) => {
let ns = {}
return cb(ns, {status: '200'})
// let langParams = url.split('/')
// graphQL.query({
// query: localeQuery,
// variables: {
// locale: langParams[0],
// namespace: langParams[1]
// }
// }).then(resp => {
// let ns = {}
// if (_.get(resp, 'data.localization.translations', []).length > 0) {
// resp.data.localization.translations.forEach(entry => {
// _.set(ns, entry.key, entry.value)
// })
// }
// return cb(ns, {status: '200'})
// }).catch(err => {
// console.error(err)
// return cb(null, {status: '404'})
// })
}
}
]
},
defaultNS: 'common',
lng: siteConfig.lang,
load: 'currentOnly',
lowerCaseLng: true,
fallbackLng: siteConfig.lang,
ns: ['common', 'auth']
})
return new VueI18Next(i18next)
}
}
// Production steps of ECMA-262, Edition 6, 22.1.2.1
if (!Array.from) {
Array.from = (function () {
var toStr = Object.prototype.toString
var isCallable = function (fn) {
return typeof fn === 'function' || toStr.call(fn) === '[object Function]'
}
var toInteger = function (value) {
var number = Number(value)
if (isNaN(number)) { return 0 }
if (number === 0 || !isFinite(number)) { return number }
return (number > 0 ? 1 : -1) * Math.floor(Math.abs(number))
}
var maxSafeInteger = Math.pow(2, 53) - 1
var toLength = function (value) {
var len = toInteger(value)
return Math.min(Math.max(len, 0), maxSafeInteger)
}
// The length property of the from method is 1.
return function from (arrayLike/*, mapFn, thisArg */) {
// 1. Let C be the this value.
var C = this
// 2. Let items be ToObject(arrayLike).
var items = Object(arrayLike)
// 3. ReturnIfAbrupt(items).
if (arrayLike == null) {
throw new TypeError('Array.from requires an array-like object - not null or undefined')
}
// 4. If mapfn is undefined, then let mapping be false.
var mapFn = arguments.length > 1 ? arguments[1] : void undefined
var T
if (typeof mapFn !== 'undefined') {
// 5. else
// 5. a If IsCallable(mapfn) is false, throw a TypeError exception.
if (!isCallable(mapFn)) {
throw new TypeError('Array.from: when provided, the second argument must be a function')
}
// 5. b. If thisArg was supplied, let T be thisArg; else let T be undefined.
if (arguments.length > 2) {
T = arguments[2]
}
}
// 10. Let lenValue be Get(items, "length").
// 11. Let len be ToLength(lenValue).
var len = toLength(items.length)
// 13. If IsConstructor(C) is true, then
// 13. a. Let A be the result of calling the [[Construct]] internal method
// of C with an argument list containing the single item len.
// 14. a. Else, Let A be ArrayCreate(len).
var A = isCallable(C) ? Object(new C(len)) : new Array(len)
// 16. Let k be 0.
var k = 0
// 17. Repeat, while k < len… (also steps a - h)
var kValue
while (k < len) {
kValue = items[k]
if (mapFn) {
A[k] = typeof T === 'undefined' ? mapFn(kValue, k) : mapFn.call(T, kValue, k)
} else {
A[k] = kValue
}
k += 1
}
// 18. Let putStatus be Put(A, "length", len, true).
A.length = len
// 20. Return A.
return A
}
}())
}
@import "global";
@import "base/base";
@import "base/icons";
@import "base/animation";
@import '~vuescroll/dist/vuescroll.css';
@import '~katex/dist/katex.min.css';
@import '~diff2html/bundles/css/diff2html.min.css';
@import 'components/codemirror';
@import 'components/katex';
@import 'components/v-btn';
@import 'components/v-data-table';
@import 'components/v-dialog';
@import 'components/v-form';
@import 'components/v-tabs';
// @import '../libs/twemoji/twemoji-awesome';
// @import '../libs/prism/prism.css';
// @import '~vue-tour/dist/vue-tour.css';
// @import '~xterm/dist/xterm.css';
// @import 'node_modules/diff2html/dist/diff2html.min';
@import 'pages/new';
@import 'pages/notfound';
@import 'pages/unauthorized';
@import 'pages/welcome';
@import 'pages/error';
@import 'layout/_rtl';
$use-fade: true;
$use-zoom: true;
$use-bounce: true;
@import "~animate-sass/animate";
@for $i from 1 to 12 {
.wait-p#{$i}s {
animation-delay: $i * .1s !important;
}
}
html {
box-sizing: border-box;
height: 100%;
overflow-y: auto !important;
}
*, *:before, *:after {
box-sizing: inherit;
}
[v-cloak], .is-hidden {
display: none;
}
#root {
position: relative;
min-height: 100%;
&.is-fullscreen {
height: 100vh;
}
}
.v-application--wrap {
transition: all 1.2s ease;
transform-origin: 50% 50%;
// background-color: #FFF;
@at-root .theme--dark & {
background-color: mc('grey', '900');
}
}
#root .v-application {
.overline {
line-height: 1rem;
font-size: .625rem!important;
font-weight: 400;
letter-spacing: .1666666667em!important;
}
@for $i from 0 through 25 {
.radius-#{$i} {
border-radius: #{$i}px;
}
}
@for $i from 1 through 5 {
.grey.darken-2-d#{$i} {
background-color: darken(mc('grey', '700'), percentage($i/100)) !important;
border-color: darken(mc('grey', '700'), percentage($i/100)) !important;
}
.grey.darken-2-l#{$i} {
background-color: lighten(mc('grey', '700'), percentage($i/100)) !important;
border-color: lighten(mc('grey', '700'), percentage($i/100)) !important;
}
.grey.darken-3-d#{$i} {
background-color: darken(mc('grey', '800'), percentage($i/100)) !important;
border-color: darken(mc('grey', '800'), percentage($i/100)) !important;
}
.grey.darken-3-l#{$i} {
background-color: lighten(mc('grey', '800'), percentage($i/100)) !important;
border-color: lighten(mc('grey', '800'), percentage($i/100)) !important;
}
.grey.darken-4-d#{$i} {
background-color: darken(mc('grey', '900'), percentage($i/100)) !important;
border-color: darken(mc('grey', '900'), percentage($i/100)) !important;
}
.grey.darken-4-l#{$i} {
background-color: lighten(mc('grey', '900'), percentage($i/100)) !important;
border-color: lighten(mc('grey', '900'), percentage($i/100)) !important;
}
}
.grey.darken-5 {
background-color: #0C0C0C !important;
border-color: #0C0C0C !important;
}
.blue.darken-5 {
background-color: darken(mc('blue', '900'), 20%) !important;
border-color: darken(mc('blue', '900'), 20%) !important;
}
.indigo.darken-5 {
background-color: darken(mc('indigo', '900'), 10%) !important;
border-color: darken(mc('indigo', '900'), 10%) !important;
}
}
// @font-face {
// font-family: 'Material Icons';
// font-style: normal;
// font-weight: 400;
// src: local('Material Icons'),
// local('MaterialIcons-Regular'),
// url(/fonts/MaterialIcons-Regular.woff2) format('woff2'),
// url(/fonts/MaterialIcons-Regular.woff) format('woff');
// }
// .material-icons {
// font-family: 'Material Icons', sans-serif;
// font-weight: normal;
// font-style: normal;
// font-size: 24px; /* Preferred icon size */
// display: inline-flex;
// line-height: 1;
// text-transform: none;
// letter-spacing: normal;
// word-wrap: normal;
// white-space: nowrap;
// direction: ltr;
// /* Support for all WebKit browsers. */
// -webkit-font-smoothing: antialiased;
// /* Support for Safari and Chrome. */
// text-rendering: optimizeLegibility;
// /* Support for Firefox. */
// -moz-osx-font-smoothing: grayscale;
// /* Support for IE. */
// font-feature-settings: 'liga';
// }
.icons {
display: inline-block;
color: mc('grey', '800');
&.is-text {
display: inline-block;
width: 1em;
height: 1em;
vertical-align: middle;
position: relative;
top: -0.0625em;
stroke: none;
fill: none;
}
@each $size in 16,18,20,24,32,48,64,96,128 {
&.is-#{$size} {
width: #{$size}px;
height: #{$size}px;
}
}
&.has-right-pad {
margin-right: .5rem;
}
&.is-outlined {
stroke-width: 2px;
use {
fill: inherit;
stroke: mc('grey', '800');
}
}
}
.material-design-icon {
display: inline-flex;
}
$material-colors: (
'red': (
'50': #ffebee,
'100': #ffcdd2,
'200': #ef9a9a,
'300': #e57373,
'400': #ef5350,
'500': #f44336,
'600': #e53935,
'700': #d32f2f,
'800': #c62828,
'900': #b71c1c,
'a100': #ff8a80,
'a200': #ff5252,
'a400': #ff1744,
'a700': #d50000
),
'pink': (
'50': #fce4ec,
'100': #f8bbd0,
'200': #f48fb1,
'300': #f06292,
'400': #ec407a,
'500': #e91e63,
'600': #d81b60,
'700': #c2185b,
'800': #ad1457,
'900': #880e4f,
'a100': #ff80ab,
'a200': #ff4081,
'a400': #f50057,
'a700': #c51162
),
'purple': (
'50': #f3e5f5,
'100': #e1bee7,
'200': #ce93d8,
'300': #ba68c8,
'400': #ab47bc,
'500': #9c27b0,
'600': #8e24aa,
'700': #7b1fa2,
'800': #6a1b9a,
'900': #4a148c,
'a100': #ea80fc,
'a200': #e040fb,
'a400': #d500f9,
'a700': #aa00ff
),
'deep-purple': (
'50': #ede7f6,
'100': #d1c4e9,
'200': #b39ddb,
'300': #9575cd,
'400': #7e57c2,
'500': #673ab7,
'600': #5e35b1,
'700': #512da8,
'800': #4527a0,
'900': #311b92,
'a100': #b388ff,
'a200': #7c4dff,
'a400': #651fff,
'a700': #6200ea
),
'indigo': (
'50': #e8eaf6,
'100': #c5cae9,
'200': #9fa8da,
'300': #7986cb,
'400': #5c6bc0,
'500': #3f51b5,
'600': #3949ab,
'700': #303f9f,
'800': #283593,
'900': #1a237e,
'a100': #8c9eff,
'a200': #536dfe,
'a400': #3d5afe,
'a700': #304ffe
),
'blue': (
'50': #e3f2fd,
'100': #bbdefb,
'200': #90caf9,
'300': #64b5f6,
'400': #42a5f5,
'500': #2196f3,
'600': #1e88e5,
'700': #1976d2,
'800': #1565c0,
'900': #0d47a1,
'a100': #82b1ff,
'a200': #448aff,
'a400': #2979ff,
'a700': #2962ff
),
'light-blue': (
'50': #e1f5fe,
'100': #b3e5fc,
'200': #81d4fa,
'300': #4fc3f7,
'400': #29b6f6,
'500': #03a9f4,
'600': #039be5,
'700': #0288d1,
'800': #0277bd,
'900': #01579b,
'a100': #80d8ff,
'a200': #40c4ff,
'a400': #00b0ff,
'a700': #0091ea
),
'cyan': (
'50': #e0f7fa,
'100': #b2ebf2,
'200': #80deea,
'300': #4dd0e1,
'400': #26c6da,
'500': #00bcd4,
'600': #00acc1,
'700': #0097a7,
'800': #00838f,
'900': #006064,
'a100': #84ffff,
'a200': #18ffff,
'a400': #00e5ff,
'a700': #00b8d4
),
'teal': (
'50': #e0f2f1,
'100': #b2dfdb,
'200': #80cbc4,
'300': #4db6ac,
'400': #26a69a,
'500': #009688,
'600': #00897b,
'700': #00796b,
'800': #00695c,
'900': #004d40,
'a100': #a7ffeb,
'a200': #64ffda,
'a400': #1de9b6,
'a700': #00bfa5
),
'green': (
'50': #e8f5e9,
'100': #c8e6c9,
'200': #a5d6a7,
'300': #81c784,
'400': #66bb6a,
'500': #4caf50,
'600': #43a047,
'700': #388e3c,
'800': #2e7d32,
'900': #1b5e20,
'a100': #b9f6ca,
'a200': #69f0ae,
'a400': #00e676,
'a700': #00c853
),
'light-green': (
'50': #f1f8e9,
'100': #dcedc8,
'200': #c5e1a5,
'300': #aed581,
'400': #9ccc65,
'500': #8bc34a,
'600': #7cb342,
'700': #689f38,
'800': #558b2f,
'900': #33691e,
'a100': #ccff90,
'a200': #b2ff59,
'a400': #76ff03,
'a700': #64dd17
),
'lime': (
'50': #f9fbe7,
'100': #f0f4c3,
'200': #e6ee9c,
'300': #dce775,
'400': #d4e157,
'500': #cddc39,
'600': #c0ca33,
'700': #afb42b,
'800': #9e9d24,
'900': #827717,
'a100': #f4ff81,
'a200': #eeff41,
'a400': #c6ff00,
'a700': #aeea00
),
'yellow': (
'50': #fffde7,
'100': #fff9c4,
'200': #fff59d,
'300': #fff176,
'400': #ffee58,
'500': #ffeb3b,
'600': #fdd835,
'700': #fbc02d,
'800': #f9a825,
'900': #f57f17,
'a100': #ffff8d,
'a200': #ffff00,
'a400': #ffea00,
'a700': #ffd600
),
'amber': (
'50': #fff8e1,
'100': #ffecb3,
'200': #ffe082,
'300': #ffd54f,
'400': #ffca28,
'500': #ffc107,
'600': #ffb300,
'700': #ffa000,
'800': #ff8f00,
'900': #ff6f00,
'a100': #ffe57f,
'a200': #ffd740,
'a400': #ffc400,
'a700': #ffab00
),
'orange': (
'50': #fff3e0,
'100': #ffe0b2,
'200': #ffcc80,
'300': #ffb74d,
'400': #ffa726,
'500': #ff9800,
'600': #fb8c00,
'700': #f57c00,
'800': #ef6c00,
'900': #e65100,
'a100': #ffd180,
'a200': #ffab40,
'a400': #ff9100,
'a700': #ff6d00
),
'deep-orange': (
'50': #fbe9e7,
'100': #ffccbc,
'200': #ffab91,
'300': #ff8a65,
'400': #ff7043,
'500': #ff5722,
'600': #f4511e,
'700': #e64a19,
'800': #d84315,
'900': #bf360c,
'a100': #ff9e80,
'a200': #ff6e40,
'a400': #ff3d00,
'a700': #dd2c00
),
'brown': (
'50': #efebe9,
'100': #d7ccc8,
'200': #bcaaa4,
'300': #a1887f,
'400': #8d6e63,
'500': #795548,
'600': #6d4c41,
'700': #5d4037,
'800': #4e342e,
'900': #3e2723
),
'grey': (
'50': #fafafa,
'100': #f5f5f5,
'200': #eeeeee,
'300': #e0e0e0,
'400': #bdbdbd,
'500': #9e9e9e,
'600': #757575,
'700': #616161,
'800': #424242,
'900': #212121
),
'blue-grey': (
'50': #eceff1,
'100': #cfd8dc,
'200': #b0bec5,
'300': #90a4ae,
'400': #78909c,
'500': #607d8b,
'600': #546e7a,
'700': #455a64,
'800': #37474f,
'900': #263238,
'1000': #11171a
),
'theme': (
'primary': #1976D2,
'secondary': #424242,
'accent': #82B1FF,
'error': #FF5252,
'info': #2196F3,
'success': #4CAF50,
'warning': #FFC107
)
);
@function mc($color-name, $color-variant: '500') {
$color: map-get(map-get($material-colors, $color-name),$color-variant);
@if $color {
@return $color;
} @else {
// Libsass still doesn't seem to support @error
@warn "=> ERROR: COLOR NOT FOUND! <= | Your $color-name, $color-variant combination did not match any of the values in the $material-colors map.";
}
}
/**
* Placeholder attribute for inputs
*
* @return {string} Placeholder attributes
*/
@mixin placeholder {
&::-webkit-input-placeholder {@content;}
&::-moz-placeholder {@content;}
&:-ms-input-placeholder {@content;}
&:placeholder-shown {@content;}
}
/**
* Spinner element
*
* @param {string} $color - Color
* @param {string} $dur - Animation Duration
* @param {int} $width - Width
* @param {int} $height [$width] - height
*
* @return {string} Spinner element
*/
@mixin spinner($color,$dur,$width,$height:$width) {
width: $width;
height: $height;
border-radius: 50%;
box-shadow: 0 0 0 1px rgba(0,0,0,0.1), 2px 1px 0 $color;
@include prefix(animation, spin $dur linear infinite);
@include keyframes(spin) {
100%{
@include prefix(transform, rotate(360deg));
}
}
}
/**
* Prefixes for keyframes
*
* @param {string} $animation-name - The animation name
*
* @return {string} Prefixed keyframes attributes
*/
@mixin keyframes($animation-name) {
@-webkit-keyframes #{$animation-name} {
@content;
}
@-moz-keyframes #{$animation-name} {
@content;
}
@-o-keyframes #{$animation-name} {
@content;
}
@keyframes #{$animation-name} {
@content;
}
}
/**
* Prefix function for browser compatibility
*
* @param {string} $property - Property name
* @param {any} $value - Property value
*
* @return {string} Prefixed attributes
*/
@mixin prefix($property, $value) {
-webkit-#{$property}: #{$value};
-moz-#{$property}: #{$value};
-ms-#{$property}: #{$value};
-o-#{$property}: #{$value};
#{$property}: #{$value};
}
/**
* Layout Mixins
*/
@mixin from($device) {
@media screen and (min-width: $device) {
@content;
}
}
@mixin until($device) {
@media screen and (max-width: $device - 1px) {
@content;
}
}
@mixin mobile {
@media screen and (max-width: $tablet - 1px) {
@content;
}
}
@mixin tablet {
@media screen and (min-width: $tablet) {
@content;
}
}
@mixin tablet-only {
@media screen and (min-width: $tablet) and (max-width: $desktop - 1px) {
@content;
}
}
@mixin touch {
@media screen and (max-width: $desktop - 1px) {
@content;
}
}
@mixin desktop {
@media screen and (min-width: $desktop) {
@content;
}
}
@mixin desktop-only {
@media screen and (min-width: $desktop) and (max-width: $widescreen - 1px) {
@content;
}
}
@mixin widescreen {
@media screen and (min-width: $widescreen) {
@content;
}
}
// Nucleo Icons
@mixin nc-rotate($degrees, $rotation) {
filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation});
-webkit-transform: rotate($degrees);
-moz-transform: rotate($degrees);
-ms-transform: rotate($degrees);
-o-transform: rotate($degrees);
transform: rotate($degrees);
}
@mixin nc-flip($horiz, $vert, $rotation) {
filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation});
-webkit-transform: scale($horiz, $vert);
-moz-transform: scale($horiz, $vert);
-ms-transform: scale($horiz, $vert);
-o-transform: scale($horiz, $vert);
transform: scale($horiz, $vert);
}
.cm-s-wikijs-dark.CodeMirror {
background: darken(mc('grey','900'), 3%);
color: #e0e0e0;
}
.cm-s-wikijs-dark div.CodeMirror-selected {
background: mc('blue','800');
}
.cm-s-wikijs-dark .cm-matchhighlight {
background: mc('blue','800');
}
.cm-s-wikijs-dark .CodeMirror-line::selection, .cm-s-wikijs-dark .CodeMirror-line > span::selection, .cm-s-wikijs-dark .CodeMirror-line > span > span::selection {
background: mc('amber', '500');
}
.cm-s-wikijs-dark .CodeMirror-line::-moz-selection, .cm-s-wikijs-dark .CodeMirror-line > span::-moz-selection, .cm-s-wikijs-dark .CodeMirror-line > span > span::-moz-selection {
background: mc('amber', '500');
}
.cm-s-wikijs-dark .CodeMirror-gutters {
background: darken(mc('grey','900'), 6%);
border-right: 1px solid mc('grey','900');
}
.cm-s-wikijs-dark .CodeMirror-guttermarker {
color: #ac4142;
}
.cm-s-wikijs-dark .CodeMirror-guttermarker-subtle {
color: #505050;
}
.cm-s-wikijs-dark .CodeMirror-linenumber {
color: mc('grey','800');
}
.cm-s-wikijs-dark .CodeMirror-cursor {
border-left: 1px solid #b0b0b0;
}
.cm-s-wikijs-dark span.cm-comment {
color: mc('orange','800');
}
.cm-s-wikijs-dark span.cm-atom {
color: #aa759f;
}
.cm-s-wikijs-dark span.cm-number {
color: #aa759f;
}
.cm-s-wikijs-dark span.cm-property, .cm-s-wikijs-dark span.cm-attribute {
color: #90a959;
}
.cm-s-wikijs-dark span.cm-keyword {
color: #ac4142;
}
.cm-s-wikijs-dark span.cm-string {
color: #f4bf75;
}
.cm-s-wikijs-dark span.cm-variable {
color: #90a959;
}
.cm-s-wikijs-dark span.cm-variable-2 {
color: #6a9fb5;
}
.cm-s-wikijs-dark span.cm-def {
color: #d28445;
}
.cm-s-wikijs-dark span.cm-bracket {
color: #e0e0e0;
}
.cm-s-wikijs-dark span.cm-tag {
color: #ac4142;
}
.cm-s-wikijs-dark span.cm-link {
color: #aa759f;
}
.cm-s-wikijs-dark span.cm-error {
background: #ac4142;
color: #b0b0b0;
}
.cm-s-wikijs-dark .CodeMirror-activeline-background {
background: mc('grey','900');
}
.cm-s-wikijs-dark .CodeMirror-matchingbracket {
text-decoration: underline;
color: white !important;
}
.cm-s-wikijs-dark .CodeMirror-foldmarker {
margin-left: 10px;
display: inline-block;
background-color: rgba(mc('amber', '800'), .3);
padding: 8px 5px;
color: mc('amber', '500');
border-radius: 5px;
text-shadow: none;
}
.cm-s-wikijs-dark .CodeMirror-buttonmarker {
display: inline-block;
background-color: rgba(mc('blue', '500'), .3);
border: 1px solid mc('blue', '800');
padding: 1px 10px;
color: mc('blue', '200') !important;
border-radius: 5px;
margin-left: 5px;
cursor: pointer;
}
.v-application .katex .accent {
background-color: inherit !important;
border-color: inherit !important;
}
.v-btn.is-icon {
min-width: auto;
}
.btn-animate-rotate {
i {
transition: all 4s ease;
transform: rotate(0deg);
}
&:hover i {
transform: rotate(360deg);
}
}
.btn-animate-grow {
i {
transition: all 2s ease;
transform: scale(1);
}
&:hover i {
transform: scale(1.25);
}
}
.btn-animate-edit {
i {
transition: all .7s cubic-bezier(0.68, -0.55, 0.265, 1.55);
transform: rotate(0deg);
}
&:hover i {
transform: rotate(-45deg);
}
}
.btn-animate-wrench {
i {
transition: all .7s cubic-bezier(0.68, -0.55, 0.265, 1.55);
transform: rotate(0deg);
}
&:hover i {
transform: rotate(45deg);
}
}
.btn-animate-app {
i {
transition: all .6s ease;
transform: translate3d(0,0,0);
transform-style: preserve-3d;
}
&:hover i {
transform: scale(.7) rotateX(-180deg);
}
}
.btn-normalcase {
text-transform: none;
}
.v-data-table {
.is-clickable {
cursor: pointer;
}
}
.dialog-header {
background-color: mc('blue', '700');
background-image: radial-gradient(ellipse at top, mc('blue', '500'), mc('blue', '700')),
radial-gradient(ellipse at bottom, mc('blue', '800'), mc('blue', '700'));
height: 60px;
color: #FFF;
display: flex;
align-items: center;
padding: 0 1rem;
font-size: 1.2rem;
&.is-red {
background-color: mc('red', '700');
background-image: radial-gradient(ellipse at top, mc('red', '500'), mc('red', '700')),
radial-gradient(ellipse at bottom, mc('red', '800'), mc('red', '700'));
}
&.is-orange {
background-color: mc('orange', '700');
background-image: radial-gradient(ellipse at top, mc('orange', '600'), mc('orange', '800')),
radial-gradient(ellipse at bottom, mc('orange', '900'), mc('orange', '800'));
}
&.is-indigo {
background-color: mc('indigo', '700');
background-image: radial-gradient(ellipse at top, mc('indigo', '500'), mc('indigo', '700')),
radial-gradient(ellipse at bottom, mc('indigo', '800'), mc('indigo', '700'));
}
&.is-dark {
background-color: mc('grey', '900');
background-image: radial-gradient(ellipse at top, mc('grey', '800'), mc('grey', '900')),
radial-gradient(ellipse at bottom, mc('grey', '800'), mc('grey', '900'));
}
&.is-teal {
background-color: mc('teal', '700');
background-image: radial-gradient(ellipse at top, mc('teal', '500'), mc('teal', '700')),
radial-gradient(ellipse at bottom, mc('teal', '800'), mc('teal', '700'));
}
}
.v-dialog--fullscreen {
@include until($tablet) {
padding-top: 56px;
}
}
.wiki-form {
&.theme--light {
background-color: mc('grey', '50');
}
.v-text-field--outline {
.v-input__slot {
background-color: #FFF !important;
border-color: mc('grey', '300') !important;
border-radius: 7px;
@at-root .theme--dark & {
background-color: lighten(mc('grey', '900'), 5%) !important;
border-color: mc('grey', '700') !important;
.v-label.v-label--active.primary--text {
color: mc('blue', '500') !important;
}
}
}
&.v-input--is-focused .v-input__slot {
border-color: mc('blue', '500') !important;
}
@at-root .theme--dark & {
.v-icon.primary--text {
color: mc('blue', '500') !important;
}
}
}
}
.grad-tabs > .v-tabs-bar {
background-image: linear-gradient(to top, rgba(#000, .025), transparent);
border-bottom: 1px solid rgba(#000, .1);
border-radius: 4px 4px 0 0;
@at-root .theme--dark & {
background-image: linear-gradient(to bottom, rgba(#FFF, .05), transparent);
border-bottom-color: transparent;
}
}
@font-face {
font-family: 'Tajawal';
src: url('../../fonts/arabic/Tajawal-Bold.woff2') format('woff2'),
url('../../fonts/arabic/Tajawal-Bold.woff') format('woff');
font-weight: bold;
font-style: normal;
}
@font-face {
font-family: 'Tajawal';
src: url('../../fonts/arabic/Tajawal-Regular.woff2') format('woff2'),
url('../../fonts/arabic/Tajawal-Regular.woff') format('woff');
font-weight: normal;
font-style: normal;
}
@font-face {
font-family: 'Tajawal';
src: url('../../fonts/arabic/Tajawal-Medium.woff2') format('woff2'),
url('../../fonts/arabic/Tajawal-Medium.woff') format('woff');
font-weight: 500;
font-style: normal;
}
@font-face {
font-family: 'BalooBhaijaan';
src: url('../../fonts/arabic/BalooBhaijaan-Regular.woff2') format('woff2'),
url('../../fonts/arabic/BalooBhaijaan-Regular.woff') format('woff');
font-weight: normal;
font-style: normal;
}
@font-face {
font-family: 'Roboto Mono';
src: url('../../fonts/default/RobotoMono-Regular.woff2') format('woff2'),
url('../../fonts/default/RobotoMono-Regular.woff') format('woff');
font-weight: normal;
font-style: normal;
}
html:lang(ar) {
font-family: Tajawal, sans-serif;
.v-application {
font-family: Tajawal, sans-serif;
& .headline, & .title {
font-family: Tajawal, sans-serif !important;
}
&.v-application--is-rtl {
h1, h2, h3, h4, h5, h6 {
font-family: BalooBhaijaan, sans-serif;
font-weight: normal;
}
}
}
}
@font-face {
font-family: 'Roboto';
src: url('../../fonts/default/Roboto-MediumItalic.woff2') format('woff2'),
url('../../fonts/default/Roboto-MediumItalic.woff') format('woff');
font-weight: 500;
font-style: italic;
}
@font-face {
font-family: 'Roboto';
src: url('../../fonts/default/Roboto-Italic.woff2') format('woff2'),
url('../../fonts/default/Roboto-Italic.woff') format('woff');
font-weight: normal;
font-style: italic;
}
@font-face {
font-family: 'Roboto';
src: url('../../fonts/default/Roboto-Bold.woff2') format('woff2'),
url('../../fonts/default/Roboto-Bold.woff') format('woff');
font-weight: bold;
font-style: normal;
}
@font-face {
font-family: 'Roboto';
src: url('../../fonts/default/Roboto-Regular.woff2') format('woff2'),
url('../../fonts/default/Roboto-Regular.woff') format('woff');
font-weight: normal;
font-style: normal;
}
@font-face {
font-family: 'Roboto';
src: url('../../fonts/default/Roboto-BoldItalic.woff2') format('woff2'),
url('../../fonts/default/Roboto-BoldItalic.woff') format('woff');
font-weight: bold;
font-style: italic;
}
@font-face {
font-family: 'Roboto';
src: url('../../fonts/default/Roboto-Medium.woff2') format('woff2'),
url('../../fonts/default/Roboto-Medium.woff') format('woff');
font-weight: 500;
font-style: normal;
}
@font-face {
font-family: 'Roboto Mono';
src: url('../../fonts/default/RobotoMono-Regular.woff2') format('woff2'),
url('../../fonts/default/RobotoMono-Regular.woff') format('woff');
font-weight: normal;
font-style: normal;
}
@charset "utf-8";
@import "base/material";
@import "base/mixins";
$tablet: 769px !default;
$desktop: 980px !default;
$widescreen: 1180px !default;
$grid-breakpoints: (
'xs': 0,
'sm': 600px,
'md': 960px,
'lg': 1280px - 16px,
'xl': 1920px - 16px
) !default;
$display-breakpoints: (
'print-only': 'only print',
'screen-only': 'only screen',
'xs-only': 'only screen and (max-width: #{map-get($grid-breakpoints, 'sm') - 1})',
'sm-only': 'only screen and (min-width: #{map-get($grid-breakpoints, 'sm')}) and (max-width: #{map-get($grid-breakpoints, 'md') - 1})',
'sm-and-down': 'only screen and (max-width: #{map-get($grid-breakpoints, 'md') - 1})',
'sm-and-up': 'only screen and (min-width: #{map-get($grid-breakpoints, 'sm')})',
'md-only': 'only screen and (min-width: #{map-get($grid-breakpoints, 'md')}) and (max-width: #{map-get($grid-breakpoints, 'lg') - 1})',
'md-and-down': 'only screen and (max-width: #{map-get($grid-breakpoints, 'lg') - 1})',
'md-and-up': 'only screen and (min-width: #{map-get($grid-breakpoints, 'md')})',
'lg-only': 'only screen and (min-width: #{map-get($grid-breakpoints, 'lg')}) and (max-width: #{map-get($grid-breakpoints, 'xl') - 1})',
'lg-and-down': 'only screen and (max-width: #{map-get($grid-breakpoints, 'xl') - 1})',
'lg-and-up': 'only screen and (min-width: #{map-get($grid-breakpoints, 'lg')})',
'xl-only': 'only screen and (min-width: #{map-get($grid-breakpoints, 'xl')})'
) !default;
.rtl {
direction: rtl;
.button i {
margin-left: 8px;
margin-right: 0px;
}
.nav-right .nav-item {
padding: 0 10px 0 0;
}
.nav-item h1 i {
margin-left: 8px;
margin-right: 8px;
}
.sidebar aside .sidebar-menu li a i {
margin-left: 7px;
margin-right: 0;
}
.mkcontent {
ul {
padding: 10px 40px 10px 0;
}
}
}
@import "global";
@import "./base/icons.scss";
@import '~katex/dist/katex.min.css';
@import '~@mdi/font/css/materialdesignicons.css';
.mdi {
font-family: 'Material Design Icons', sans-serif;
font-weight: normal;
font-style: normal;
font-size: 24px; /* Preferred icon size */
display: inline-flex;
line-height: 1;
text-transform: none;
letter-spacing: normal;
word-wrap: normal;
white-space: nowrap;
direction: ltr;
/* Support for all WebKit browsers. */
-webkit-font-smoothing: antialiased;
/* Support for Safari and Chrome. */
text-rendering: optimizeLegibility;
/* Support for Firefox. */
-moz-osx-font-smoothing: grayscale;
/* Support for IE. */
font-feature-settings: 'liga';
}
html {
box-sizing: border-box;
background-color: mc('grey', '50');
font-size: 15px;
}
*, *:before, *:after {
box-sizing: inherit;
}
* {
margin: 0;
padding: 0;
}
.is-hidden {
display: none;
}
body {
margin: 0;
padding: 0;
font-family: "Roboto",sans-serif;
line-height: 1.5;
min-height: 100vh;
}
// LOGIN
.login {
background-color: mc('grey', '900');
height: 100vh;
display: flex;
align-items: center;
justify-content: center;
&-deprecated {
position: absolute;
top: 0;
left: 0;
width: 100%;
background-color: mc('grey', '800');
text-align: center;
color: mc('grey', '50');
height: 64px;
display: flex;
align-items: center;
justify-content: center;
a {
color: mc('red', '200');
margin-left: 5px;
}
}
&-error {
background-color: mc('red', '500');
color: #FFF;
padding: 5px;
border-radius: 5px;
margin-bottom: 2rem;
}
&-dialog {
width: 650px;
background-color: mc('grey', '100');
border-radius: 5px;
text-align: center;
padding: 2rem;
color: mc('grey', '800');
h1 {
margin-bottom: 2rem;
}
input, select {
display: block;
background-color: #FFF;
border: none;
border-radius: 5px;
width: 100%;
height: 40px;
padding: 0 1rem;
margin: 5px 0;
}
button {
height: 40px;
display: block;
width: 200px;
border: none;
border-radius: 5px;
margin: 0 auto;
background-color: mc('blue', '700');
color: #FFF;
cursor: pointer;
margin-top: 1rem;
font-weight: 600;
&:hover {
background-color: mc('blue', '800');
}
}
}
&-social {
margin-top: 2rem;
padding-top: 1rem;
border-top: 1px solid mc('grey', '400');
h2 {
font-size: 14px;
font-weight: 600;
margin-bottom: 1rem;
}
&-icon {
display: inline-flex;
justify-content: center;
align-items: center;
border-radius: 5px;
width: 54px;
height: 54px;
cursor: pointer;
transition: opacity .2s ease;
margin: .5rem .25rem;
&:hover {
opacity: .8;
}
svg {
width: 24px;
height: 24px;
bottom: 0;
path {
fill: #FFF;
}
}
@each $colorName, $color in $material-colors {
&.#{$colorName} {
background-color: map-get($color, '500');
}
}
}
}
}
// PAGE
.header {
background-color: #000;
color: #FFF;
height: 64px;
padding: 0 16px;
display: flex;
justify-content: space-between;
align-items: center;
&-title {
margin: 0;
font-size: 16px;
font-weight: 500;
letter-spacing: .02em;
}
&-deprecated {
color: mc('red', '100');
a {
color: mc('pink', '400');
}
}
&-login {
a {
text-decoration: none;
color: #FFF;
transition: color .3s ease;
border-radius: 50%;
background-color: mc('grey', '900');
display: flex;
width: 40px;
height: 40px;
justify-content: center;
align-items: center;
&:hover {
color: mc('blue', '500');
}
}
}
}
.main {
display: flex;
align-items: stretch;
min-height: calc(100vh - 64px);
height: 100%;
&-container {
flex-grow: 1;
}
}
.sidebar {
width: 256px;
background-color: mc('blue', '700');
color: #FFF;
padding: 8px 0;
align-self: stretch;
flex-shrink: 0;
.sidebar-link {
height: 40px;
font-size: 13px;
display: flex;
align-items: center;
padding: 0 16px;
transition: background .3s cubic-bezier(.25,.8,.5,1);
font-weight: 400;
color: #FFF;
text-decoration: none;
&:hover {
background: hsla(0,0%,100%,.08);
}
}
i.mdi {
width: 56px;
padding-left: 8px;
}
.sidebar-divider {
border-top: 1px solid hsla(0,0%,100%,.12);
margin: 8px 0;
}
.sidebar-title {
font-size: 13px;
height: 40px;
display: flex;
align-items: center;
padding: 0 16px 0 24px;
font-weight: 500;
color: hsla(0,0%,100%,.7);
}
}
.page-header {
background-color: mc('grey', '100');
padding: 0 24px;
height: 90px;
display: flex;
align-items: center;
border-bottom: 1px solid mc('grey', '200');
h1 {
font-size: 24px;
font-weight: 400;
line-height: 32px;
color: mc('grey', '800');
}
h2 {
color: mc('grey', '600');
font-size: 12px;
font-weight: 400;
}
&-left {
flex-grow: 1;
}
&-right {
flex: 0 0 308px;
padding-left: 16px;
&-title {
color: mc('grey', '500');
font-size: 12px;
}
&-author {
color: mc('grey', '800');
font-weight: 500;
}
&-updated {
color: mc('grey', '600');
font-size: 12px;
}
}
}
.page-contents {
display: flex;
}
.toc {
flex: 0 0 348px;
background-color: mc('grey', '200');
padding: 4px 0;
&-title {
font-size: 13px;
height: 40px;
display: flex;
color: mc('blue', '600');
align-items: center;
font-weight: 500;
padding: 0 16px;
}
&-tile {
text-decoration: none;
height: 40px;
display: flex;
font-size: 13px;
align-items: center;
padding: 0 16px;
color: mc('grey', '800');
transition: background-color .3s ease;
&.inset {
padding-left: 32px;
}
&:hover {
background-color: rgba(0,0,0,.06);
}
}
&-divider {
border-top: 1px solid rgba(0,0,0,.12);
margin: 0 0 0 24px;
&.inset {
margin-left: 40px;
}
}
}
@import "../themes/default/scss/app.scss";
.contents {
flex-grow: 1;
padding: 24px !important;
}
.app-error {
background: linear-gradient(to bottom, mc('grey', '900') 0%, mc('grey', '800') 100%);
height: 100%;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
color: mc('grey', '50');
font-family: Roboto, Arial, sans-serif;
img {
width: 250px;
filter: grayscale(50%) brightness(120%);
animation: errorlogo 5s linear infinite;
margin-bottom: 3rem;
@include until($tablet) {
width: 200px;
}
}
@keyframes errorlogo {
0% {
filter: blur(0) grayscale(50%) brightness(200%) hue-rotate(110deg);
}
10% {
filter: blur(0) grayscale(50%) brightness(200%) hue-rotate(110deg) invert(100%);
}
15% {
filter: blur(0) grayscale(50%) brightness(200%) hue-rotate(110deg) invert(0%);
}
30% {
filter: blur(0) grayscale(50%) brightness(200%) hue-rotate(110deg);
}
32% {
filter: blur(0) grayscale(50%) brightness(200%) hue-rotate(2700deg) invert(100%);
}
34% {
filter: blur(0) grayscale(100%) brightness(50%) hue-rotate(110deg);
}
50% {
filter: blur(0) grayscale(100%) brightness(200%) hue-rotate(110deg) sepia(0%);
}
55% {
filter: blur(0) grayscale(100%) brightness(100%) hue-rotate(110deg) sepia(100%);
}
60% {
filter: blur(0) grayscale(50%) brightness(200%) hue-rotate(110deg) sepia(0%);
}
90% {
filter: blur(0) grayscale(50%) brightness(200%) hue-rotate(110deg);
}
95% {
filter: blur(5px) grayscale(50%) brightness(200%) hue-rotate(720deg);
}
100% {
filter: blur(0) grayscale(50%) brightness(200%) hue-rotate(110deg) invert(100%);
}
}
> strong {
font-size: 1.5rem;
}
> span {
margin-top: 1rem;
}
> pre {
margin-top: 2rem;
code {
color: mc('grey', '500');
font-size: .8rem;
}
}
}
.newpage {
background: linear-gradient(to bottom, darken(mc('blue', '900'), 10%) 0%, mc('purple', '500') 100%);
height: 100%;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
color: mc('grey', '50');
&::before {
content: '';
display:block;
width: 100%;
height: 100%;
position: absolute;
top: 0;
left: 0;
background-image: url('../static/svg/motif-circuit.svg');
background-position: center center;
background-repeat: repeat;
background-size: 200px;
z-index: 0;
opacity: .75;
animation: onboardingBgReveal 80s linear infinite;
@include keyframes(onboardingBgReveal) {
0% {
background-position-y: 0;
}
100% {
background-position-y: -2000px;
}
}
}
&::after {
content: '';
position: absolute;
background-color: transparent;
background-image: url('../static/svg/motif-overlay.svg');
background-attachment: fixed;
background-size: cover;
opacity: .5;
top: 0;
left: 0;
width: 100vw;
height: 100vh;
}
&-content {
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
z-index: 2;
}
img {
height: 250px;
margin-bottom: 3rem;
z-index: 2;
animation-duration: 2s;
@include until($tablet) {
height: 200px;
}
}
h1 {
font-size: 1.5rem;
margin-bottom: 1rem;
z-index: 2;
}
h2 {
margin-bottom: 3rem;
z-index: 2;
}
.v-btn {
z-index: 2;
}
}
.notfound {
background: linear-gradient(to bottom, darken(mc('red', '900'), 25%) 0%, mc('red', '600') 100%);
height: 100%;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
color: mc('grey', '50');
&::before {
content: '';
display:block;
width: 100%;
height: 100%;
position: absolute;
top: 0;
left: 0;
background-image: url('../static/svg/motif-circuit.svg');
background-position: center center;
background-repeat: repeat;
background-size: 200px;
z-index: 0;
opacity: .75;
animation: onboardingBgReveal 80s linear infinite;
@include keyframes(onboardingBgReveal) {
0% {
background-position-y: 0;
}
100% {
background-position-y: -2000px;
}
}
}
&::after {
content: '';
position: absolute;
background-color: transparent;
background-image: url('../static/svg/motif-overlay.svg');
background-attachment: fixed;
background-size: cover;
opacity: .5;
top: 0;
left: 0;
width: 100vw;
height: 100vh;
}
&-content {
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
z-index: 2;
}
img {
height: 250px;
margin-bottom: 3rem;
z-index: 2;
animation-duration: 2s;
@include until($tablet) {
height: 200px;
}
}
h1 {
font-size: 1.5rem;
margin-bottom: 1rem;
z-index: 2;
}
h2 {
margin-bottom: 3rem;
z-index: 2;
}
.v-btn {
z-index: 2;
}
}
.unauthorized {
background: linear-gradient(to bottom, darken(mc('blue', '900'), 10%) 0%, mc('red', '500') 100%);
height: 100%;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
color: mc('grey', '50');
&::before {
content: '';
display:block;
width: 100%;
height: 100%;
position: absolute;
top: 0;
left: 0;
background-image: url('../static/svg/motif-diagonals.svg');
background-position: center center;
background-repeat: repeat;
background-size: 50px;
z-index: 0;
opacity: .75;
animation: onboardingBgReveal 50s linear infinite;
@include keyframes(onboardingBgReveal) {
0% {
background-position-y: 0;
}
100% {
background-position-y: -2000px;
}
}
}
&::after {
content: '';
position: absolute;
background-color: transparent;
background-image: url('../static/svg/motif-overlay.svg');
background-attachment: fixed;
background-size: cover;
opacity: .5;
top: 0;
left: 0;
width: 100vw;
height: 100vh;
}
&-content {
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
z-index: 2;
}
img {
height: 250px;
margin-bottom: 3rem;
z-index: 2;
animation-duration: 2s;
@include until($tablet) {
height: 200px;
}
}
h1 {
font-size: 1.5rem;
margin-bottom: 1rem;
z-index: 2;
}
h2 {
margin-bottom: 3rem;
z-index: 2;
}
.v-btn {
z-index: 2;
}
}
.onboarding {
background: linear-gradient(to bottom, mc('grey', '900') 0%, mc('grey', '700') 100%);
height: 100%;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
color: mc('grey', '50');
&::before {
content: '';
display:block;
width: 100%;
height: 100%;
position: absolute;
top: 0;
left: 0;
background-image: url('../static/svg/motif-blocks.svg');
background-position: center center;
background-repeat: repeat;
background-size: 500px;
z-index: 0;
opacity: .75;
animation: onboardingBgReveal 50s linear infinite;
@include keyframes(onboardingBgReveal) {
0% {
background-position-y: 0;
}
100% {
background-position-y: -2000px;
}
}
}
&-content {
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
z-index: 2;
}
img {
width: 500px;
filter: grayscale(100%) brightness(160%);
margin-bottom: 3rem;
z-index: 2;
animation-duration: 3s;
@include until($tablet) {
width: 300px;
}
}
h1 {
font-size: 1.5rem;
margin-bottom: 1rem;
z-index: 2;
}
h2 {
margin-bottom: 3rem;
z-index: 2;
}
.v-btn {
z-index: 2;
}
}
<?xml version="1.0" encoding="utf-8"?>
<browserconfig>
<msapplication>
<tile>
<square150x150logo src="/_assets-legacy/favicons/ms-icon-150x150.png"/>
<TileColor>#1976d2</TileColor>
</tile>
</msapplication>
</browserconfig>
This diff was suppressed by a .gitattributes entry.
This diff was suppressed by a .gitattributes entry.
This diff was suppressed by a .gitattributes entry.
This diff was suppressed by a .gitattributes entry.
<?xml version="1.0" encoding="utf-8"?>
<browserconfig>
<msapplication>
<tile>
<square150x150logo src="/mstile-150x150.png"/>
<TileColor>#1976d2</TileColor>
</tile>
</msapplication>
</browserconfig>
This diff was suppressed by a .gitattributes entry.
This diff was suppressed by a .gitattributes entry.
This diff was suppressed by a .gitattributes entry.
<svg version="1" xmlns="http://www.w3.org/2000/svg" width="400" height="400" viewBox="0 0 300.000000 300.000000"><path d="M250 43.3c-2.5 2.7-8.1 7.9-12.5 11.4l-8 6.3-1.2-3.7c-.7-2-1.5-3.8-1.7-4-.2-.2-2.4 3.4-5 8-4.5 8-5.3 8.8-14.5 15.1-14 9.4-18.6 14.3-33.6 35.9-6.6 9.5-11.6 15.4-19 22.2l-10 9.3v-6.4c0-5.9.2-6.4 2.6-7.3 5.4-1.9 8.1-7.7 4-8.8-1.9-.5-1.9-.7.6-7.7 3.8-10.7 7.7-17.8 11.9-21.9 3.4-3.3 4.4-3.7 8.5-3.6 5.7.2 7.5-.7 5.7-2.8-2.1-2.6-11.4-1.1-15 2.4-5.3 5-11.5 15.7-13.2 22.5-.9 3.9-2.8 3.5-2.2-.5.3-1.7.8-5.2 1.1-7.7.3-2.5.9-6.3 1.2-8.5 1.1-7.9 5.3-22.7 7.5-26.3 2.7-4.6 3.6-5.2 7.1-5.2 3.1 0 6.7-1.6 6.7-3 0-.5-.7-1.6-1.6-2.4-1.9-1.9-5.8-1.4-9.4 1.2-6.2 4.5-12.7 25.1-13.7 43.7-.3 6-.7 11.2-.9 11.4-.2.2-2.1.3-4.1.2-2.1-.2-4.5-.3-5.4-.3-.9 0-2-1.6-2.9-4.6-2.1-7.1-8.5-17.3-13.4-21.4-4.1-3.3-14.6-3.5-14.6-.2 0 1.5 1.1 1.7 7.1 1.4 6.4-.3 11.7 5.8 17.8 20.7 3.7 9.1 4.7 13.5 3 13.1-2.7-.6-2.1 3.9.8 6.3 2.7 2.3 2.8 2.7 2.3 8.4l-.5 6-4.5-4.2c-3.4-3.1-6.3-7.6-11.4-17.9-8.7-17.4-13.1-23.8-21.4-31.1-10.2-8.9-24-23-26.9-27.4-1.4-2.1-2.8-3.9-3-3.9-1.6 0-4.5 2.5-5.8 5-.9 1.7-1.9 3-2.3 3-1.1 0-12.8-17.8-15-22.8-2.3-5.1-3.1-4.4-5.5 4.3-2.3 8.3-2.8 12.6-2.8 22.6 0 8 .3 11.5 1.7 18.2.5 2.5.3 2.8-1.2 2.4-2.4-.7-12.8-1.6-26.2-2.2-9-.4-10.2-.3-10.2 1.2 0 3.4 10.5 14.5 24 25.5 4.1 3.4 7.4 6.5 7.2 7-.1.5.2.7.7.4.5-.4 1.5-.1 2.3.6 2.4 2.3 7.3 5.5 9.3 6.2 1.1.3 3.1 1.5 4.5 2.6 1.9 1.4 2.2 2.2 1.3 3.1-1.4 1.4-.6 3.9 1.2 3.9.7 0 1.9-.8 2.6-1.7 1.2-1.4 1.2-1.6 0-.8-1 .6-1.2.4-.6-.5.5-.9.4-1.1-.4-.6-.6.4-.9 1.2-.6 1.7.4.5.2.9-.4.9-2 0-2.1-1.9-.2-2.9 1.5-.8 2.3-.7 3.4.4.8.8 1.8 1.1 2.2.7.4-.4.6-.3.5.3-.4 2 0 3 .8 1.7.6-.9 1.3-.7 2.9.7 1.1 1.1 2.3 1.8 2.6 1.5.2-.2.9.2 1.5.9.9 1.1.2 1.3-4.1 1.3-5.2-.1-8.3-2-5.7-3.6.8-.5.8-1 .2-1.4-1.1-.7-2.5 2.1-1.6 3.5.6 1-4.7.4-11.1-1.3-2.2-.5-4.7-1.1-5.6-1.3-.8-.2-3.9-1-6.9-1.9-2.9-.9-5.5-1.4-5.7-1.2-.2.2 1.7 3.1 4.2 6.5 5.3 6.9 12.2 13.3 21.2 19.4 5.8 3.9 8.3 6.7 4.7 5.3-1-.4-1.3-.2-.8.6s.1.9-1.2.4c-1-.4-1.5-.4-1.1 0 .4.4-1.9 2.5-5 4.5-17.1 11.3-35.9 37-38.8 53.1l-.7 3.8 5.3.1c31.7.8 43.2-.5 62.9-6.6 16.5-5.2 31.8-14.9 44.6-28.2 3.3-3.5 6-6.4 5.9-6.6-.2-.1.5-.9 1.4-1.9 1.5-1.5 1.6-1.1 1.3 5-.2 3.6-.1 9.1.3 12.1l.7 5.6 2.6-4.5c1.5-2.4 2.7-4.9 2.8-5.5.1-.5.8-3 1.5-5.5 1.6-5.3 1.6-5.6 1.8-9.5.2-3 .2-2.9 1.6 1 .8 2.2 1.5 4.6 1.5 5.3 0 3.2 9.5 20.6 15 27.6 11.8 15.2 28.9 25.8 55.7 34.5 13.4 4.4 39.1 10.6 40 9.8.3-.4.8-4.9 1.1-10.1 1.1-20.8-4.9-41.5-17.2-60-4.9-7.3-14-17.3-19.1-21-1.1-.8-1.8-1.6-1.5-1.8.3-.3 5.9-2.8 12.5-5.8 12.4-5.4 14.5-6.7 14.8-9.1.2-.8.7-2 1.1-2.8.5-.8.5-1.2 0-.8-.5.3-.9-.5-.9-1.8 0-1.9.3-2.1 1.4-1.2 1.1.9 1.3.9.8 0-.9-1.4.2-4.5 1.4-3.7.5.3.9 0 .9-.6 0-.7.6-1 1.3-.7.7.3 2.1-.1 3.1-.9 1.6-1.1 2.4-1.1 5 .2 2.7 1.3 2.8 1.3 1.2 0-2.3-1.9-1.5-3.1 3.9-5.5 2.4-1.1 5-2.5 5.7-3.1.7-.6 3.5-2.6 6.3-4.5 2.7-1.9 4.7-3.5 4.4-3.5-.3 0 1.3-2 3.7-4.4 3.8-4 9.1-12.3 8.2-13.1-.2-.2-1.9-.6-3.8-.9-1.9-.3-4.5-.8-5.6-1-2.8-.6-7.8-1.3-13.9-2.2-2.7-.3-5.5-1-6.2-1.6-.7-.6-1.4-.5-1.8.2-.3.6-1.1.8-1.6.4-.6-.3-.6-1-.1-1.7 1.8-2.3 5.3-13.3 6.6-21.2 1.8-10.3 1.4-23.9-1-30.4-1.7-4.9-6.4-11.2-8.1-11-.4.1-2.8 2.4-5.3 5.2z"/><path d="M113 56.9c-1.5 2.8 1.2 5.1 6 5.1 3.8 0 4 .2 6.9 6.2 3.2 6.9 9.1 30.9 9.1 37.6 0 1.5.5 3.4 1.1 4.2.7 1.1.8-1 .4-7-1.3-17.7-8.2-40.9-13.7-45.5-3.6-3-8.3-3.3-9.8-.6zM39.3 128.5c0 .8.4 1.2.9.9.5-.3.6-1 .3-1.5-.9-1.3-1.2-1.1-1.2.6zM35.6 132.7c-.6 1.4-.5 1.5.5.6.7-.7 1-1.5.7-1.8-.3-.3-.9.2-1.2 1.2zM46 132c0 .5.5 1 1.1 1 .5 0 .7-.5.4-1-.3-.6-.8-1-1.1-1-.2 0-.4.4-.4 1zM283.6 132.7c-.6 1.4-.5 1.5.5.6.7-.7 1-1.5.7-1.8-.3-.3-.9.2-1.2 1.2zM271 133.1c0 .5-.5.7-1.2.3-.7-.4-.8-.3-.4.4.4.6 1.3.9 2.1.6.8-.4 1.2-1 .9-1.5-.7-1.2-1.4-1.1-1.4.2zM43.3 134.5c0 .8.4 1.2.9.9.4-.3.8-.9.8-1.5 0-.5-.4-.9-.8-.9-.5 0-.9.7-.9 1.5zM48.5 134c-.4.6-1.1.7-1.7.4-.7-.4-.8-.2-.4.5.6.9 1.1.9 2.2 0 1.4-1.1 1.8-1.9 1-1.9-.3 0-.8.5-1.1 1zM274.6 134.1c.2.4 1.3.7 2.4.6 2.3-.2 1.7-1-1-1.2-1-.1-1.7.2-1.4.6zM45.4 137.8c.4.3 1.4.7 2.2.8.9.1 1.3 0 1-.4-.4-.3-1.4-.7-2.2-.8-.9-.1-1.3 0-1 .4zM260.1 138.4c-2.1 1.2-2.2 1.4-.5 2 1 .4 1.5.4 1.1 0-.4-.4.1-1.3 1.1-2 2.2-1.7 1.4-1.7-1.7 0zM265.5 138.1c-.3.5.1.6 1 .3 1.1-.5 1.4-.2.9 1.2-.7 2-.6 1.9 1.3-.6 1-1.3.8-1.6-.7-1.7-1.1-.1-2.2.2-2.5.8zM56.3 140.4c-.3.5-.1.6.5.2.6-.3 1.3-.2 1.7.3.3.5 1.4.9 2.5.8 1.4-.1 1.6-.5.9-1.3-1.2-1.4-4.8-1.4-5.6 0zM263.2 142.9c.7.9 1.3 1.8 1.5 2 .1.2.1-.5 0-1.6 0-1.1-.7-2-1.4-2-1 0-1 .4-.1 1.6zM248.2 144.6c-1.6 1.7-1.5 2.1.3 2.1.8 0 1.3-.3 1-.5-.3-.3.3-1 1.1-1.7 1.3-.9 1.4-1.2.2-1.2-.7 0-1.9.6-2.6 1.3zM254.5 144.1c-.4.6-.5 1.2-.2 1.5.2.3.7-.2 1-1.1.7-1.7.1-2-.8-.4zM257.6 147.3c.3 1 .9 1.5 1.2 1.2.3-.3 0-1.1-.7-1.8-1-.9-1.1-.8-.5.6zM251.9 148.7c-1.3 1.6-1.2 1.7.4.4.9-.7 1.7-1.5 1.7-1.7 0-.8-.8-.3-2.1 1.3z"/></svg>
\ No newline at end of file
This diff was suppressed by a .gitattributes entry.
<?xml version="1.0" encoding="UTF-8" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg width="100%" height="100%" viewBox="0 0 326 77" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5;"><path d="M325.5,7.65c0,-4.222 -3.428,-7.65 -7.65,-7.65l-310.2,0c-4.222,0 -7.65,3.428 -7.65,7.65l0,61.2c0,4.222 3.428,7.65 7.65,7.65l310.2,0c4.222,0 7.65,-3.428 7.65,-7.65l0,-61.2Z" style="fill:url(#_Linear1);stroke:#b7b7b7;stroke-width:0.75px;"/><path d="M96.758,45.53l-4.375,0c-0.632,0 -1.083,-0.141 -1.353,-0.425c-0.27,-0.283 -0.405,-0.734 -0.405,-1.352l0,-10.762c0,-0.631 0.138,-1.085 0.415,-1.362c0.277,-0.277 0.724,-0.415 1.343,-0.415l4.638,0c0.684,0 1.277,0.042 1.778,0.127c0.501,0.084 0.95,0.247 1.347,0.488c0.339,0.202 0.638,0.457 0.899,0.767c0.26,0.309 0.459,0.651 0.596,1.025c0.136,0.374 0.205,0.77 0.205,1.187c0,1.432 -0.716,2.48 -2.149,3.144c1.882,0.599 2.823,1.764 2.823,3.496c0,0.801 -0.206,1.522 -0.616,2.163c-0.41,0.642 -0.963,1.115 -1.66,1.421c-0.436,0.183 -0.937,0.311 -1.504,0.386c-0.566,0.075 -1.227,0.112 -1.982,0.112Zm-0.215,-6.357l-3.018,0l0,4.18l3.116,0c1.959,0 2.939,-0.707 2.939,-2.12c0,-0.722 -0.254,-1.246 -0.762,-1.572c-0.507,-0.325 -1.266,-0.488 -2.275,-0.488Zm-3.018,-5.781l0,3.701l2.657,0c0.722,0 1.281,-0.069 1.674,-0.205c0.394,-0.137 0.695,-0.397 0.904,-0.782c0.163,-0.273 0.244,-0.579 0.244,-0.918c0,-0.722 -0.257,-1.202 -0.772,-1.44c-0.514,-0.238 -1.298,-0.356 -2.353,-0.356l-2.354,0Z" style="fill-rule:nonzero;"/><path d="M114.463,33.45l-6.533,0l0,3.516l6.015,0c0.443,0 0.773,0.099 0.991,0.298c0.219,0.198 0.328,0.46 0.328,0.786c0,0.325 -0.108,0.591 -0.323,0.796c-0.214,0.205 -0.546,0.307 -0.996,0.307l-6.015,0l0,4.073l6.757,0c0.456,0 0.8,0.105 1.031,0.317c0.231,0.212 0.346,0.493 0.346,0.845c0,0.338 -0.115,0.613 -0.346,0.825c-0.231,0.211 -0.575,0.317 -1.031,0.317l-7.88,0c-0.632,0 -1.086,-0.14 -1.363,-0.42c-0.276,-0.28 -0.415,-0.732 -0.415,-1.357l0,-10.762c0,-0.416 0.062,-0.757 0.186,-1.02c0.124,-0.264 0.317,-0.456 0.581,-0.576c0.264,-0.121 0.6,-0.181 1.011,-0.181l7.656,0c0.462,0 0.806,0.102 1.03,0.307c0.225,0.206 0.337,0.474 0.337,0.806c0,0.339 -0.112,0.61 -0.337,0.816c-0.224,0.205 -0.568,0.307 -1.03,0.307Z" style="fill-rule:nonzero;"/><path d="M130.566,41.009c0,0.456 -0.112,0.949 -0.337,1.479c-0.224,0.531 -0.577,1.052 -1.059,1.563c-0.482,0.511 -1.097,0.926 -1.846,1.245c-0.749,0.319 -1.621,0.478 -2.617,0.478c-0.755,0 -1.442,-0.071 -2.061,-0.214c-0.618,-0.144 -1.18,-0.367 -1.684,-0.669c-0.505,-0.303 -0.969,-0.702 -1.392,-1.197c-0.377,-0.449 -0.7,-0.952 -0.967,-1.508c-0.266,-0.557 -0.467,-1.151 -0.6,-1.783c-0.134,-0.631 -0.2,-1.302 -0.2,-2.011c0,-1.153 0.167,-2.185 0.503,-3.096c0.335,-0.912 0.815,-1.691 1.44,-2.339c0.625,-0.648 1.357,-1.141 2.197,-1.479c0.84,-0.339 1.735,-0.508 2.686,-0.508c1.159,0 2.191,0.231 3.096,0.693c0.905,0.462 1.598,1.034 2.08,1.714c0.481,0.68 0.722,1.323 0.722,1.929c0,0.332 -0.117,0.625 -0.351,0.879c-0.235,0.253 -0.518,0.38 -0.85,0.38c-0.371,0 -0.649,-0.087 -0.835,-0.263c-0.185,-0.176 -0.392,-0.479 -0.62,-0.908c-0.378,-0.71 -0.822,-1.241 -1.333,-1.592c-0.511,-0.352 -1.141,-0.528 -1.89,-0.528c-1.191,0 -2.14,0.453 -2.846,1.358c-0.707,0.905 -1.06,2.191 -1.06,3.857c0,1.114 0.156,2.04 0.469,2.779c0.312,0.739 0.755,1.29 1.328,1.655c0.573,0.364 1.244,0.547 2.012,0.547c0.833,0 1.538,-0.207 2.114,-0.62c0.576,-0.414 1.011,-1.021 1.304,-1.822c0.123,-0.377 0.276,-0.685 0.459,-0.923c0.182,-0.237 0.475,-0.356 0.879,-0.356c0.345,0 0.641,0.12 0.888,0.361c0.248,0.241 0.371,0.541 0.371,0.899Z" style="fill-rule:nonzero;"/><path d="M139.473,30.97c1.484,0 2.758,0.301 3.823,0.903c1.064,0.602 1.87,1.458 2.417,2.568c0.547,1.11 0.82,2.414 0.82,3.912c0,1.106 -0.15,2.112 -0.449,3.017c-0.3,0.905 -0.749,1.69 -1.348,2.354c-0.599,0.664 -1.334,1.172 -2.207,1.523c-0.872,0.352 -1.871,0.527 -2.998,0.527c-1.12,0 -2.122,-0.18 -3.008,-0.542c-0.885,-0.361 -1.624,-0.87 -2.216,-1.528c-0.593,-0.657 -1.04,-1.448 -1.343,-2.373c-0.303,-0.924 -0.454,-1.924 -0.454,-2.998c0,-1.1 0.158,-2.109 0.473,-3.027c0.316,-0.918 0.773,-1.7 1.372,-2.344c0.599,-0.645 1.329,-1.138 2.188,-1.48c0.859,-0.341 1.836,-0.512 2.93,-0.512Zm4.121,7.363c0,-1.048 -0.17,-1.956 -0.508,-2.725c-0.339,-0.768 -0.822,-1.349 -1.45,-1.743c-0.629,-0.394 -1.35,-0.591 -2.163,-0.591c-0.58,0 -1.115,0.109 -1.607,0.328c-0.491,0.218 -0.915,0.535 -1.269,0.952c-0.355,0.416 -0.635,0.949 -0.84,1.596c-0.205,0.648 -0.308,1.376 -0.308,2.183c0,0.814 0.103,1.549 0.308,2.207c0.205,0.658 0.495,1.203 0.869,1.636c0.374,0.433 0.804,0.757 1.289,0.971c0.485,0.215 1.017,0.323 1.597,0.323c0.742,0 1.424,-0.186 2.046,-0.557c0.621,-0.371 1.116,-0.944 1.484,-1.719c0.368,-0.774 0.552,-1.728 0.552,-2.861Z" style="fill-rule:nonzero;"/><path d="M153.848,43.372l-2.295,-9.121l0,9.883c0,0.547 -0.122,0.957 -0.367,1.23c-0.244,0.274 -0.568,0.41 -0.971,0.41c-0.391,0 -0.71,-0.135 -0.957,-0.405c-0.248,-0.27 -0.371,-0.682 -0.371,-1.235l0,-11.328c0,-0.625 0.162,-1.047 0.488,-1.265c0.325,-0.218 0.765,-0.327 1.318,-0.327l0.899,0c0.54,0 0.932,0.049 1.177,0.146c0.244,0.098 0.424,0.274 0.542,0.528c0.117,0.254 0.25,0.667 0.4,1.24l2.08,7.842l2.08,-7.842c0.15,-0.573 0.283,-0.986 0.4,-1.24c0.118,-0.254 0.298,-0.43 0.542,-0.528c0.245,-0.097 0.637,-0.146 1.177,-0.146l0.899,0c0.553,0 0.992,0.109 1.318,0.327c0.326,0.218 0.488,0.64 0.488,1.265l0,11.328c0,0.547 -0.122,0.957 -0.366,1.23c-0.244,0.274 -0.571,0.41 -0.981,0.41c-0.384,0 -0.7,-0.136 -0.948,-0.41c-0.247,-0.273 -0.371,-0.683 -0.371,-1.23l0,-9.883l-2.295,9.121c-0.149,0.593 -0.271,1.027 -0.366,1.304c-0.094,0.276 -0.268,0.529 -0.522,0.757c-0.254,0.227 -0.606,0.341 -1.055,0.341c-0.339,0 -0.625,-0.073 -0.859,-0.219c-0.235,-0.147 -0.417,-0.334 -0.547,-0.562c-0.13,-0.228 -0.233,-0.48 -0.308,-0.757c-0.075,-0.276 -0.151,-0.564 -0.229,-0.864Z" style="fill-rule:nonzero;"/><path d="M175.107,33.45l-6.533,0l0,3.516l6.016,0c0.443,0 0.773,0.099 0.991,0.298c0.218,0.198 0.327,0.46 0.327,0.786c0,0.325 -0.107,0.591 -0.322,0.796c-0.215,0.205 -0.547,0.307 -0.996,0.307l-6.016,0l0,4.073l6.758,0c0.456,0 0.799,0.105 1.03,0.317c0.231,0.212 0.347,0.493 0.347,0.845c0,0.338 -0.116,0.613 -0.347,0.825c-0.231,0.211 -0.574,0.317 -1.03,0.317l-7.881,0c-0.631,0 -1.085,-0.14 -1.362,-0.42c-0.277,-0.28 -0.415,-0.732 -0.415,-1.357l0,-10.762c0,-0.416 0.062,-0.757 0.185,-1.02c0.124,-0.264 0.318,-0.456 0.581,-0.576c0.264,-0.121 0.601,-0.181 1.011,-0.181l7.656,0c0.463,0 0.806,0.102 1.031,0.307c0.224,0.206 0.337,0.474 0.337,0.806c0,0.339 -0.113,0.61 -0.337,0.816c-0.225,0.205 -0.568,0.307 -1.031,0.307Z" style="fill-rule:nonzero;"/><path d="M193.174,43.909l-0.684,-1.797l-5.82,0l-0.684,1.836c-0.267,0.716 -0.494,1.2 -0.683,1.45c-0.189,0.251 -0.498,0.376 -0.928,0.376c-0.365,0 -0.687,-0.133 -0.967,-0.4c-0.28,-0.267 -0.42,-0.57 -0.42,-0.908c0,-0.195 0.033,-0.397 0.098,-0.606c0.065,-0.208 0.172,-0.498 0.322,-0.869l3.662,-9.297c0.104,-0.267 0.23,-0.587 0.376,-0.962c0.147,-0.374 0.303,-0.685 0.469,-0.932c0.166,-0.248 0.384,-0.448 0.654,-0.601c0.27,-0.153 0.604,-0.229 1.001,-0.229c0.404,0 0.741,0.076 1.011,0.229c0.27,0.153 0.488,0.35 0.654,0.591c0.166,0.241 0.306,0.5 0.42,0.776c0.114,0.277 0.259,0.647 0.435,1.109l3.74,9.238c0.293,0.703 0.44,1.214 0.44,1.533c0,0.332 -0.139,0.637 -0.416,0.913c-0.276,0.277 -0.61,0.415 -1.001,0.415c-0.227,0 -0.423,-0.04 -0.585,-0.122c-0.163,-0.081 -0.3,-0.192 -0.411,-0.332c-0.11,-0.14 -0.229,-0.355 -0.356,-0.644c-0.127,-0.29 -0.236,-0.545 -0.327,-0.767Zm-5.742,-3.974l4.277,0l-2.158,-5.909l-2.119,5.909Z" style="fill-rule:nonzero;"/><path d="M214.277,41.233c0,0.866 -0.223,1.644 -0.669,2.334c-0.446,0.69 -1.098,1.231 -1.958,1.621c-0.859,0.391 -1.878,0.586 -3.056,0.586c-1.413,0 -2.578,-0.267 -3.496,-0.8c-0.651,-0.384 -1.18,-0.897 -1.587,-1.538c-0.407,-0.642 -0.611,-1.265 -0.611,-1.871c0,-0.351 0.122,-0.652 0.367,-0.903c0.244,-0.251 0.555,-0.376 0.932,-0.376c0.306,0 0.565,0.098 0.777,0.293c0.211,0.195 0.392,0.485 0.542,0.869c0.182,0.456 0.379,0.837 0.59,1.143c0.212,0.306 0.51,0.558 0.894,0.757c0.384,0.198 0.889,0.298 1.514,0.298c0.859,0 1.557,-0.201 2.094,-0.601c0.537,-0.4 0.806,-0.9 0.806,-1.499c0,-0.475 -0.145,-0.861 -0.435,-1.157c-0.289,-0.297 -0.664,-0.523 -1.123,-0.679c-0.459,-0.156 -1.072,-0.322 -1.84,-0.498c-1.029,-0.241 -1.89,-0.523 -2.583,-0.845c-0.694,-0.322 -1.244,-0.762 -1.651,-1.318c-0.407,-0.557 -0.61,-1.249 -0.61,-2.075c0,-0.788 0.215,-1.488 0.644,-2.1c0.43,-0.612 1.052,-1.082 1.866,-1.411c0.813,-0.329 1.77,-0.493 2.871,-0.493c0.879,0 1.639,0.109 2.28,0.327c0.641,0.218 1.173,0.508 1.597,0.869c0.423,0.361 0.732,0.741 0.927,1.138c0.196,0.397 0.293,0.784 0.293,1.162c0,0.345 -0.122,0.656 -0.366,0.932c-0.244,0.277 -0.548,0.415 -0.913,0.415c-0.332,0 -0.584,-0.083 -0.757,-0.249c-0.172,-0.166 -0.36,-0.437 -0.561,-0.815c-0.261,-0.54 -0.573,-0.962 -0.938,-1.265c-0.364,-0.302 -0.95,-0.454 -1.758,-0.454c-0.748,0 -1.352,0.165 -1.811,0.493c-0.459,0.329 -0.689,0.725 -0.689,1.187c0,0.286 0.078,0.534 0.235,0.742c0.156,0.208 0.371,0.388 0.644,0.537c0.274,0.15 0.55,0.267 0.83,0.352c0.28,0.084 0.743,0.208 1.387,0.371c0.807,0.189 1.538,0.397 2.192,0.625c0.655,0.228 1.211,0.504 1.67,0.83c0.459,0.326 0.817,0.737 1.075,1.235c0.257,0.498 0.385,1.109 0.385,1.831Z" style="fill-rule:nonzero;"/><path d="M222.295,39.954l-2.656,0l0,4.053c0,0.579 -0.137,1.019 -0.411,1.318c-0.273,0.3 -0.618,0.449 -1.035,0.449c-0.436,0 -0.787,-0.148 -1.054,-0.444c-0.267,-0.296 -0.401,-0.731 -0.401,-1.304l0,-11.035c0,-0.638 0.147,-1.094 0.44,-1.367c0.293,-0.273 0.758,-0.41 1.396,-0.41l3.721,0c1.1,0 1.947,0.085 2.539,0.254c0.586,0.163 1.092,0.433 1.519,0.81c0.426,0.378 0.75,0.84 0.971,1.387c0.222,0.547 0.332,1.162 0.332,1.846c0,1.458 -0.449,2.563 -1.347,3.315c-0.899,0.752 -2.237,1.128 -4.014,1.128Zm-0.703,-6.562l-1.953,0l0,4.375l1.953,0c0.683,0 1.255,-0.072 1.714,-0.215c0.459,-0.143 0.809,-0.378 1.049,-0.703c0.241,-0.326 0.362,-0.752 0.362,-1.28c0,-0.631 -0.186,-1.145 -0.557,-1.543c-0.417,-0.423 -1.273,-0.634 -2.568,-0.634Z" style="fill-rule:nonzero;"/><path d="M236.377,30.97c1.484,0 2.759,0.301 3.823,0.903c1.065,0.602 1.87,1.458 2.417,2.568c0.547,1.11 0.82,2.414 0.82,3.912c0,1.106 -0.149,2.112 -0.449,3.017c-0.299,0.905 -0.748,1.69 -1.347,2.354c-0.599,0.664 -1.335,1.172 -2.207,1.523c-0.873,0.352 -1.872,0.527 -2.998,0.527c-1.12,0 -2.123,-0.18 -3.008,-0.542c-0.886,-0.361 -1.625,-0.87 -2.217,-1.528c-0.593,-0.657 -1.04,-1.448 -1.343,-2.373c-0.303,-0.924 -0.454,-1.924 -0.454,-2.998c0,-1.1 0.158,-2.109 0.474,-3.027c0.315,-0.918 0.773,-1.7 1.372,-2.344c0.599,-0.645 1.328,-1.138 2.187,-1.48c0.86,-0.341 1.836,-0.512 2.93,-0.512Zm4.121,7.363c0,-1.048 -0.169,-1.956 -0.508,-2.725c-0.338,-0.768 -0.822,-1.349 -1.45,-1.743c-0.628,-0.394 -1.349,-0.591 -2.163,-0.591c-0.579,0 -1.115,0.109 -1.607,0.328c-0.491,0.218 -0.914,0.535 -1.269,0.952c-0.355,0.416 -0.635,0.949 -0.84,1.596c-0.205,0.648 -0.308,1.376 -0.308,2.183c0,0.814 0.103,1.549 0.308,2.207c0.205,0.658 0.495,1.203 0.869,1.636c0.375,0.433 0.804,0.757 1.289,0.971c0.485,0.215 1.018,0.323 1.597,0.323c0.742,0 1.424,-0.186 2.046,-0.557c0.622,-0.371 1.116,-0.944 1.484,-1.719c0.368,-0.774 0.552,-1.728 0.552,-2.861Z" style="fill-rule:nonzero;"/><path d="M249.697,32.708l5.576,8.438l0,-8.516c0,-0.554 0.119,-0.969 0.357,-1.245c0.237,-0.277 0.558,-0.415 0.962,-0.415c0.416,0 0.745,0.138 0.986,0.415c0.241,0.276 0.361,0.691 0.361,1.245l0,11.26c0,1.256 -0.52,1.884 -1.562,1.884c-0.26,0 -0.495,-0.037 -0.703,-0.112c-0.209,-0.075 -0.404,-0.194 -0.586,-0.356c-0.182,-0.163 -0.352,-0.354 -0.508,-0.572c-0.156,-0.218 -0.312,-0.441 -0.469,-0.669l-5.439,-8.339l0,8.388c0,0.547 -0.127,0.961 -0.381,1.24c-0.254,0.28 -0.579,0.42 -0.977,0.42c-0.41,0 -0.739,-0.141 -0.986,-0.424c-0.247,-0.284 -0.371,-0.695 -0.371,-1.236l0,-11.045c0,-0.468 0.052,-0.836 0.156,-1.103c0.124,-0.293 0.329,-0.532 0.615,-0.718c0.287,-0.186 0.596,-0.278 0.928,-0.278c0.261,0 0.484,0.042 0.669,0.127c0.186,0.084 0.348,0.198 0.488,0.341c0.14,0.144 0.284,0.329 0.43,0.557c0.147,0.228 0.298,0.466 0.454,0.713Z" style="fill-rule:nonzero;"/><path d="M271.992,41.233c0,0.866 -0.223,1.644 -0.669,2.334c-0.446,0.69 -1.098,1.231 -1.958,1.621c-0.859,0.391 -1.878,0.586 -3.056,0.586c-1.413,0 -2.579,-0.267 -3.497,-0.8c-0.651,-0.384 -1.18,-0.897 -1.586,-1.538c-0.407,-0.642 -0.611,-1.265 -0.611,-1.871c0,-0.351 0.122,-0.652 0.366,-0.903c0.245,-0.251 0.555,-0.376 0.933,-0.376c0.306,0 0.565,0.098 0.776,0.293c0.212,0.195 0.393,0.485 0.542,0.869c0.183,0.456 0.38,0.837 0.591,1.143c0.212,0.306 0.51,0.558 0.894,0.757c0.384,0.198 0.888,0.298 1.513,0.298c0.86,0 1.558,-0.201 2.095,-0.601c0.537,-0.4 0.806,-0.9 0.806,-1.499c0,-0.475 -0.145,-0.861 -0.435,-1.157c-0.289,-0.297 -0.664,-0.523 -1.123,-0.679c-0.459,-0.156 -1.072,-0.322 -1.841,-0.498c-1.028,-0.241 -1.889,-0.523 -2.583,-0.845c-0.693,-0.322 -1.243,-0.762 -1.65,-1.318c-0.407,-0.557 -0.61,-1.249 -0.61,-2.075c0,-0.788 0.214,-1.488 0.644,-2.1c0.43,-0.612 1.052,-1.082 1.865,-1.411c0.814,-0.329 1.771,-0.493 2.872,-0.493c0.878,0 1.639,0.109 2.28,0.327c0.641,0.218 1.173,0.508 1.596,0.869c0.424,0.361 0.733,0.741 0.928,1.138c0.196,0.397 0.293,0.784 0.293,1.162c0,0.345 -0.122,0.656 -0.366,0.932c-0.244,0.277 -0.549,0.415 -0.913,0.415c-0.332,0 -0.584,-0.083 -0.757,-0.249c-0.172,-0.166 -0.36,-0.437 -0.561,-0.815c-0.261,-0.54 -0.573,-0.962 -0.938,-1.265c-0.365,-0.302 -0.951,-0.454 -1.758,-0.454c-0.749,0 -1.352,0.165 -1.811,0.493c-0.459,0.329 -0.689,0.725 -0.689,1.187c0,0.286 0.078,0.534 0.235,0.742c0.156,0.208 0.371,0.388 0.644,0.537c0.274,0.15 0.55,0.267 0.83,0.352c0.28,0.084 0.742,0.208 1.387,0.371c0.807,0.189 1.538,0.397 2.192,0.625c0.655,0.228 1.211,0.504 1.67,0.83c0.459,0.326 0.817,0.737 1.074,1.235c0.258,0.498 0.386,1.109 0.386,1.831Z" style="fill-rule:nonzero;"/><path d="M280.752,30.97c1.484,0 2.759,0.301 3.823,0.903c1.065,0.602 1.87,1.458 2.417,2.568c0.547,1.11 0.82,2.414 0.82,3.912c0,1.106 -0.149,2.112 -0.449,3.017c-0.299,0.905 -0.748,1.69 -1.347,2.354c-0.599,0.664 -1.335,1.172 -2.207,1.523c-0.873,0.352 -1.872,0.527 -2.998,0.527c-1.12,0 -2.123,-0.18 -3.008,-0.542c-0.886,-0.361 -1.625,-0.87 -2.217,-1.528c-0.593,-0.657 -1.04,-1.448 -1.343,-2.373c-0.303,-0.924 -0.454,-1.924 -0.454,-2.998c0,-1.1 0.158,-2.109 0.474,-3.027c0.315,-0.918 0.773,-1.7 1.372,-2.344c0.599,-0.645 1.328,-1.138 2.187,-1.48c0.86,-0.341 1.836,-0.512 2.93,-0.512Zm4.121,7.363c0,-1.048 -0.169,-1.956 -0.508,-2.725c-0.338,-0.768 -0.822,-1.349 -1.45,-1.743c-0.628,-0.394 -1.349,-0.591 -2.163,-0.591c-0.579,0 -1.115,0.109 -1.607,0.328c-0.491,0.218 -0.914,0.535 -1.269,0.952c-0.355,0.416 -0.635,0.949 -0.84,1.596c-0.205,0.648 -0.308,1.376 -0.308,2.183c0,0.814 0.103,1.549 0.308,2.207c0.205,0.658 0.495,1.203 0.869,1.636c0.375,0.433 0.804,0.757 1.289,0.971c0.485,0.215 1.018,0.323 1.597,0.323c0.742,0 1.424,-0.186 2.046,-0.557c0.622,-0.371 1.116,-0.944 1.484,-1.719c0.368,-0.774 0.552,-1.728 0.552,-2.861Z" style="fill-rule:nonzero;"/><path d="M294.189,39.407l-1.015,0l0,4.6c0,0.605 -0.134,1.051 -0.401,1.338c-0.267,0.286 -0.615,0.429 -1.045,0.429c-0.462,0 -0.82,-0.149 -1.074,-0.449c-0.254,-0.299 -0.381,-0.739 -0.381,-1.318l0,-11.016c0,-0.625 0.14,-1.077 0.42,-1.357c0.28,-0.28 0.733,-0.42 1.358,-0.42l4.717,0c0.651,0 1.207,0.028 1.669,0.083c0.463,0.055 0.879,0.168 1.25,0.337c0.45,0.189 0.847,0.459 1.192,0.81c0.345,0.352 0.607,0.76 0.786,1.226c0.179,0.465 0.269,0.959 0.269,1.479c0,1.068 -0.302,1.921 -0.904,2.559c-0.602,0.638 -1.515,1.091 -2.739,1.357c0.514,0.274 1.006,0.678 1.475,1.211c0.468,0.534 0.887,1.102 1.254,1.704c0.368,0.603 0.655,1.146 0.86,1.631c0.205,0.485 0.307,0.819 0.307,1.001c0,0.189 -0.06,0.376 -0.18,0.562c-0.121,0.185 -0.285,0.332 -0.493,0.439c-0.209,0.108 -0.45,0.161 -0.723,0.161c-0.326,0 -0.599,-0.076 -0.82,-0.229c-0.222,-0.153 -0.412,-0.347 -0.572,-0.581c-0.159,-0.235 -0.376,-0.58 -0.649,-1.035l-1.162,-1.934c-0.417,-0.71 -0.79,-1.25 -1.118,-1.621c-0.329,-0.371 -0.663,-0.625 -1.001,-0.762c-0.339,-0.136 -0.765,-0.205 -1.28,-0.205Zm1.661,-6.015l-2.676,0l0,3.935l2.597,0c0.697,0 1.283,-0.06 1.758,-0.181c0.476,-0.12 0.838,-0.325 1.089,-0.615c0.251,-0.289 0.376,-0.688 0.376,-1.196c0,-0.397 -0.101,-0.747 -0.303,-1.05c-0.201,-0.303 -0.481,-0.529 -0.839,-0.679c-0.339,-0.143 -1.006,-0.214 -2.002,-0.214Z" style="fill-rule:nonzero;"/><path d="M43.775,29.607c2.832,-4.65 8.497,-4.65 11.329,-2.076c2.832,2.574 2.832,7.722 0,12.87c-1.983,3.861 -7.081,7.721 -11.329,10.295c-4.248,-2.574 -9.347,-6.434 -11.329,-10.295c-2.832,-5.148 -2.832,-10.296 0,-12.87c2.832,-2.574 8.497,-2.574 11.329,2.076Z" style="fill:#ea4aaa;"/><defs><linearGradient id="_Linear1" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(4.68427e-15,76.5,-76.5,4.68427e-15,171.607,2.66454e-15)"><stop offset="0" style="stop-color:#fff;stop-opacity:1"/><stop offset="1" style="stop-color:#e7e7e7;stop-opacity:1"/></linearGradient></defs></svg>
\ No newline at end of file
This diff was suppressed by a .gitattributes entry.
This diff was suppressed by a .gitattributes entry.
This diff was suppressed by a .gitattributes entry.
This diff was suppressed by a .gitattributes entry.
This diff was suppressed by a .gitattributes entry.
{
"name": "Wiki.js",
"short_name": "Wiki.js",
"start_url": "/",
"icons": [
{
"src": "/_assets-legacy/favicons/android-chrome-192x192.png",
"sizes": "192x192",
"type": "image/png"
},
{
"src": "/_assets-legacy/favicons/android-chrome-256x256.png",
"sizes": "256x256",
"type": "image/png"
}
],
"theme_color": "#1976d2",
"background_color": "#1976d2",
"display": "standalone"
}
<?xml version="1.0" encoding="UTF-8" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg width="100%" height="100%" viewBox="0 0 2230 2500" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;"><path d="M1770.4,2016.82l-250.262,-770.331l655.122,-475.959l-809.808,0l-250.287,-770.313l-0.079,-0.209l809.93,0l250.349,770.435l0.017,-0.017l0.209,-0.113c145.384,446.951 -4.355,955.313 -405.191,1246.5l0,0.009l0,-0.002Zm-1310.54,-0l-0.201,0.148l655.296,476.088l655.445,-476.219l-655.235,-476.098l-655.297,476.081l-0.008,0Zm-405.009,-1246.49c-153.049,471.15 24.608,970.383 404.887,1246.59l0.061,-0.244l250.305,-770.287l-654.983,-475.871l809.617,-0l250.296,-770.305l0.052,-0.209l-809.974,0l-250.27,770.331l0.009,0l0,-0.005Z" style="fill:#ec5526;fill-rule:nonzero;"/></svg>
\ No newline at end of file
<svg width="100%" height="100%" viewBox="0 0 159 158" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:1.41421;">
<path fill="#51b5d7" d="M87.477,3.864c-4.583,-4.583 -12.024,-4.583 -16.608,0l-66.432,66.432c-4.583,4.583 -4.583,12.025 0,16.608l67.352,67.352c4.583,4.583 12.025,4.583 16.608,0l66.432,-66.432c4.583,-4.583 4.583,-12.025 0,-16.608l-67.352,-67.352Zm-14.477,44.282c-3.497,-2.176 -5.826,-6.054 -5.826,-10.472c0,-6.803 5.523,-12.326 12.326,-12.326c6.803,0 12.326,5.523 12.326,12.326c0,4.418 -2.329,8.296 -5.826,10.472l0,61.157c0.415,0.214 0.818,0.447 1.208,0.699l24.89,-24.89c-0.909,-1.718 -1.424,-3.676 -1.424,-5.753c0,-6.803 5.523,-12.326 12.326,-12.326c6.803,0 12.326,5.523 12.326,12.326c0,6.803 -5.523,12.326 -12.326,12.326c-1.493,0 -2.924,-0.266 -4.249,-0.753l-25.952,25.951c0.606,1.58 0.938,3.295 0.938,5.088c0,7.857 -6.38,14.236 -14.237,14.236c-7.857,0 -14.237,-6.379 -14.237,-14.236c0,-1.804 0.337,-3.531 0.95,-5.119l-26.466,-26.466c-1.182,0.377 -2.441,0.581 -3.747,0.581c-6.803,0 -12.326,-5.523 -12.326,-12.326c0,-6.803 5.523,-12.326 12.326,-12.326c6.803,0 12.326,5.523 12.326,12.326c0,2.254 -0.606,4.368 -1.665,6.187l25.157,25.157c0.382,-0.245 0.776,-0.473 1.182,-0.682l0,-61.157Z" />
<path fill="#97cbe1" d="M91.745,39.094l28.297,28.297c-4.527,1.116 -8.072,4.737 -9.079,9.306l-24.963,-24.963l0,-3.588c3.116,-1.939 5.306,-5.231 5.745,-9.052Zm-24.49,0c0.439,3.821 2.629,7.113 5.745,9.052l0,3.588l-24.846,24.846c-0.785,-4.655 -4.183,-8.427 -8.632,-9.753l27.733,-27.733Z" />
<circle fill="#97cbe1" cx="35.84" cy="78.701" r="6.701" />
<circle fill="#97cbe1" cx="123.16" cy="79.778" r="6.701" />
<circle fill="#97cbe1" cx="79.299" cy="37.243" r="6.701" />
<circle fill="#97cbe1" cx="79.633" cy="122.201" r="8.201" />
</svg>
<?xml version="1.0" encoding="UTF-8" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg width="100%" height="100%" viewBox="0 0 60 74" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;"><path d="M21.292,54.324c0.332,0.67 0.402,0.971 0.786,1.564c2.846,4.39 6.612,6.586 11.297,6.586c3.749,0 6.942,-1.476 9.58,-4.426c2.637,-2.95 4.13,-6.473 4.477,-10.568l11.87,1.301c-0.764,7.115 -3.514,12.972 -8.252,17.571c-4.737,4.599 -10.959,6.898 -18.664,6.898c-6.49,0 -11.757,-1.631 -15.8,-4.894c-2.868,-2.313 -5.268,-5.211 -7.201,-8.694c3.018,-1.229 7.139,-2.71 11.907,-5.338Zm-14.486,-0.403c-1.897,-5.277 -2.845,-11.051 -2.845,-17.322c0,-10.829 2.568,-19.636 7.705,-26.421c5.137,-6.785 12.199,-10.178 21.189,-10.178c7.045,0 12.911,2.169 17.596,6.508c4.686,4.338 7.636,10.551 8.851,18.638l-10.262,3.552c-2.187,-10.725 -8.619,-18.39 -16.081,-18.39c-4.79,0 -8.512,2.23 -11.167,6.69c-2.655,4.46 -3.983,10.924 -3.983,19.393c0,3.518 0.114,6.087 0.59,8.9c-5.15,2.938 -8.825,6.276 -11.593,8.63Z" style="fill:#024c71;fill-rule:nonzero;"/><path d="M0,61.855c0,-0.579 14.243,-12.318 30.088,-21.125c13.64,-7.581 29.214,-12.496 29.214,-11.997c-0,0.474 -11.713,8.753 -24.578,15.996c-16.362,9.21 -34.724,17.729 -34.724,17.126Z" style="fill:#73c062;"/></svg>
\ No newline at end of file
<svg width="2184" height="2500" viewBox="0 0 256 293" xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMidYMid"><path d="M226.011 0H29.99C13.459 0 0 13.458 0 30.135v197.778c0 16.677 13.458 30.135 29.989 30.135h165.888l-7.754-27.063 18.725 17.408 17.7 16.384L256 292.571V30.135C256 13.458 242.542 0 226.011 0zm-56.466 191.05s-5.266-6.291-9.655-11.85c19.164-5.413 26.478-17.408 26.478-17.408-5.998 3.95-11.703 6.73-16.823 8.63-7.314 3.073-14.336 5.12-21.211 6.291-14.044 2.633-26.917 1.902-37.888-.146-8.339-1.61-15.507-3.95-21.504-6.29-3.365-1.317-7.022-2.926-10.68-4.974-.438-.293-.877-.439-1.316-.732-.292-.146-.439-.292-.585-.438-2.633-1.463-4.096-2.487-4.096-2.487s7.022 11.703 25.6 17.261c-4.388 5.56-9.801 12.142-9.801 12.142-32.33-1.024-44.617-22.235-44.617-22.235 0-47.104 21.065-85.285 21.065-85.285 21.065-15.799 41.106-15.36 41.106-15.36l1.463 1.756C80.75 77.53 68.608 89.088 68.608 89.088s3.218-1.755 8.63-4.242c15.653-6.876 28.088-8.777 33.208-9.216.877-.147 1.609-.293 2.487-.293a123.776 123.776 0 0 1 29.55-.292c13.896 1.609 28.818 5.705 44.031 14.043 0 0-11.556-10.971-36.425-18.578l2.048-2.34s20.041-.44 41.106 15.36c0 0 21.066 38.18 21.066 85.284 0 0-12.435 21.211-44.764 22.235zm-68.023-68.316c-8.338 0-14.92 7.314-14.92 16.237 0 8.924 6.728 16.238 14.92 16.238 8.339 0 14.921-7.314 14.921-16.238.147-8.923-6.582-16.237-14.92-16.237m53.394 0c-8.339 0-14.922 7.314-14.922 16.237 0 8.924 6.73 16.238 14.922 16.238 8.338 0 14.92-7.314 14.92-16.238 0-8.923-6.582-16.237-14.92-16.237" fill="#7289DA"/></svg>
\ No newline at end of file
<svg id="Layer_1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 42.4 39.5" width="2500" height="2329"><style>.st0{fill:#0062ff}</style><path class="st0" d="M10.6 1.7L0 8.5l10.6 6.7 10.6-6.7zm21.2 0L21.2 8.5l10.6 6.7 10.6-6.7zM0 22l10.6 6.8L21.2 22l-10.6-6.8zm31.8-6.8L21.2 22l10.6 6.8L42.4 22zM10.6 31l10.6 6.8L31.8 31l-10.6-6.7z"/></svg>
\ No newline at end of file
<svg width="100%" height="100%" viewBox="0 0 500 500" preserveAspectRatio="xMinYMin meet">
<path fill="#3B5998" d="M288.714,500l0,-228.073l76.554,0l11.461,-88.885l-88.017,0l0,-56.749c0,-25.735 7.145,-43.271 44.049,-43.271l47.067,-0.022l0,-79.498c-8.141,-1.081 -36.082,-3.502 -68.584,-3.502c-67.862,0 -114.321,41.422 -114.321,117.492l0,65.55l-76.751,0l0,88.885l76.751,0l0,228.071l91.791,0l0,0.002Z" style="fill-rule:nonzero;"/>
</svg>
\ No newline at end of file
<svg width="2500" height="2432" viewBox="0 0 256 249" xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMinYMin meet"><g fill="#161614"><path d="M127.505 0C57.095 0 0 57.085 0 127.505c0 56.336 36.534 104.13 87.196 120.99 6.372 1.18 8.712-2.766 8.712-6.134 0-3.04-.119-13.085-.173-23.739-35.473 7.713-42.958-15.044-42.958-15.044-5.8-14.738-14.157-18.656-14.157-18.656-11.568-7.914.872-7.752.872-7.752 12.804.9 19.546 13.14 19.546 13.14 11.372 19.493 29.828 13.857 37.104 10.6 1.144-8.242 4.449-13.866 8.095-17.05-28.32-3.225-58.092-14.158-58.092-63.014 0-13.92 4.981-25.295 13.138-34.224-1.324-3.212-5.688-16.18 1.235-33.743 0 0 10.707-3.427 35.073 13.07 10.17-2.826 21.078-4.242 31.914-4.29 10.836.048 21.752 1.464 31.942 4.29 24.337-16.497 35.029-13.07 35.029-13.07 6.94 17.563 2.574 30.531 1.25 33.743 8.175 8.929 13.122 20.303 13.122 34.224 0 48.972-29.828 59.756-58.22 62.912 4.573 3.957 8.648 11.717 8.648 23.612 0 17.06-.148 30.791-.148 34.991 0 3.393 2.295 7.369 8.759 6.117 50.634-16.879 87.122-64.656 87.122-120.973C255.009 57.085 197.922 0 127.505 0"/><path d="M47.755 181.634c-.28.633-1.278.823-2.185.389-.925-.416-1.445-1.28-1.145-1.916.275-.652 1.273-.834 2.196-.396.927.415 1.455 1.287 1.134 1.923M54.027 187.23c-.608.564-1.797.302-2.604-.589-.834-.889-.99-2.077-.373-2.65.627-.563 1.78-.3 2.616.59.834.899.996 2.08.36 2.65M58.33 194.39c-.782.543-2.06.034-2.849-1.1-.781-1.133-.781-2.493.017-3.038.792-.545 2.05-.055 2.85 1.07.78 1.153.78 2.513-.019 3.069M65.606 202.683c-.699.77-2.187.564-3.277-.488-1.114-1.028-1.425-2.487-.724-3.258.707-.772 2.204-.555 3.302.488 1.107 1.026 1.445 2.496.7 3.258M75.01 205.483c-.307.998-1.741 1.452-3.185 1.028-1.442-.437-2.386-1.607-2.095-2.616.3-1.005 1.74-1.478 3.195-1.024 1.44.435 2.386 1.596 2.086 2.612M85.714 206.67c.036 1.052-1.189 1.924-2.705 1.943-1.525.033-2.758-.818-2.774-1.852 0-1.062 1.197-1.926 2.721-1.951 1.516-.03 2.758.815 2.758 1.86M96.228 206.267c.182 1.026-.872 2.08-2.377 2.36-1.48.27-2.85-.363-3.039-1.38-.184-1.052.89-2.105 2.367-2.378 1.508-.262 2.857.355 3.049 1.398"/></g></svg>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="210px" height="194px" viewBox="0 0 210 194" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sketch="http://www.bohemiancoding.com/sketch/ns">
<!-- Generator: Sketch 3.3.2 (12043) - http://www.bohemiancoding.com/sketch -->
<title>Group</title>
<desc>Created with Sketch.</desc>
<defs></defs>
<g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" sketch:type="MSPage">
<g id="Fill-1-+-Group-24" sketch:type="MSLayerGroup">
<g id="Group-24" sketch:type="MSShapeGroup">
<g id="Group">
<path d="M105.0614,193.655 L105.0614,193.655 L143.7014,74.734 L66.4214,74.734 L105.0614,193.655 L105.0614,193.655 Z" id="Fill-4" fill="#E24329"></path>
<path id="Fill-6" fill="#FC6D26"></path>
<path d="M105.0614,193.6548 L66.4214,74.7338 L12.2684,74.7338 L105.0614,193.6548 Z" id="Fill-8" fill="#FC6D26"></path>
<path id="Fill-10" fill="#FC6D26"></path>
<path d="M12.2685,74.7341 L12.2685,74.7341 L0.5265,110.8731 C-0.5445,114.1691 0.6285,117.7801 3.4325,119.8171 L105.0615,193.6551 L12.2685,74.7341 Z" id="Fill-12" fill="#FCA326"></path>
<path id="Fill-14" fill="#FC6D26"></path>
<path d="M12.2685,74.7342 L66.4215,74.7342 L43.1485,3.1092 C41.9515,-0.5768 36.7375,-0.5758 35.5405,3.1092 L12.2685,74.7342 Z" id="Fill-16" fill="#E24329"></path>
<path d="M105.0614,193.6548 L143.7014,74.7338 L197.8544,74.7338 L105.0614,193.6548 Z" id="Fill-18" fill="#FC6D26"></path>
<path d="M197.8544,74.7341 L197.8544,74.7341 L209.5964,110.8731 C210.6674,114.1691 209.4944,117.7801 206.6904,119.8171 L105.0614,193.6551 L197.8544,74.7341 Z" id="Fill-20" fill="#FCA326"></path>
<path d="M197.8544,74.7342 L143.7014,74.7342 L166.9744,3.1092 C168.1714,-0.5768 173.3854,-0.5758 174.5824,3.1092 L197.8544,74.7342 Z" id="Fill-22" fill="#E24329"></path>
</g>
</g>
</g>
</g>
</svg>
\ No newline at end of file
<svg width="2443" height="2500" viewBox="0 0 256 262" xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMidYMid"><path d="M255.878 133.451c0-10.734-.871-18.567-2.756-26.69H130.55v48.448h71.947c-1.45 12.04-9.283 30.172-26.69 42.356l-.244 1.622 38.755 30.023 2.685.268c24.659-22.774 38.875-56.282 38.875-96.027" fill="#4285F4"/><path d="M130.55 261.1c35.248 0 64.839-11.605 86.453-31.622l-41.196-31.913c-11.024 7.688-25.82 13.055-45.257 13.055-34.523 0-63.824-22.773-74.269-54.25l-1.531.13-40.298 31.187-.527 1.465C35.393 231.798 79.49 261.1 130.55 261.1" fill="#34A853"/><path d="M56.281 156.37c-2.756-8.123-4.351-16.827-4.351-25.82 0-8.994 1.595-17.697 4.206-25.82l-.073-1.73L15.26 71.312l-1.335.635C5.077 89.644 0 109.517 0 130.55s5.077 40.905 13.925 58.602l42.356-32.782" fill="#FBBC05"/><path d="M130.55 50.479c24.514 0 41.05 10.589 50.479 19.438l36.844-35.974C195.245 12.91 165.798 0 130.55 0 79.49 0 35.393 29.301 13.925 71.947l42.211 32.783c10.59-31.477 39.891-54.251 74.414-54.251" fill="#EB4335"/></svg>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg width="100%" height="100%" viewBox="0 0 256 256" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;"><g><path d="M183.621,234.868l-121.118,0c-0.702,0.005 -1.355,-0.369 -1.707,-0.977l-30.834,-53.447l-14.674,-25.407l-11.762,-20.351l-3.258,-5.632c-0.17,-0.292 -0.259,-0.617 -0.266,-0.944c-0.015,-0.365 0.07,-0.733 0.256,-1.061l29.724,-51.494l30.835,-53.446c0.351,-0.608 1.003,-0.982 1.706,-0.977l121.098,0c0.722,0.012 1.387,0.403 1.747,1.028l29.684,51.443c0.351,0.608 1.004,0.981 1.706,0.976l36.981,0l0.041,0c1.218,0 2.22,1.002 2.22,2.22c0,0.003 0,0.007 0,0.01l0,102.495c0,1.217 -1.002,2.219 -2.22,2.22l-37.002,0c-0.702,-0.005 -1.355,0.368 -1.706,0.976l-29.724,51.391c-0.37,0.599 -1.022,0.968 -1.727,0.977Zm-20.464,-35.707c0.606,0 1.169,-0.311 1.49,-0.822l40.147,-69.532c0.162,-0.27 0.247,-0.579 0.247,-0.894c0.004,-0.315 -0.078,-0.624 -0.237,-0.895l-10.498,-18.17l-0.002,0.004l-29.677,-51.335c-0.322,-0.512 -0.886,-0.823 -1.491,-0.822l-18.5,0c-0.294,0.004 -0.582,0.076 -0.843,0.209l-0.051,0.027c-0.253,0.139 -0.47,0.332 -0.638,0.566l-9.25,16.085c-0.324,0.548 -0.324,1.231 0,1.778l29.807,51.669c0.16,0.267 0.245,0.572 0.246,0.884l0.031,0c0,0.315 -0.085,0.624 -0.247,0.894l-29.806,51.72c-0.271,0.518 -0.271,1.137 0,1.655l9.25,16.105l0,0.052c0.145,0.226 0.337,0.419 0.561,0.567l0.046,0.029c0.274,0.151 0.601,0.222 0.914,0.226l18.501,0Zm-60.779,-0.255c0.224,-0.148 0.415,-0.341 0.561,-0.567l0,-0.052l9.25,-16.105c0.271,-0.518 0.271,-1.137 0,-1.655l-29.807,-51.72c-0.161,-0.27 -0.247,-0.579 -0.246,-0.894l0.031,0c0.001,-0.312 0.086,-0.617 0.246,-0.884l29.807,-51.669c0.324,-0.547 0.324,-1.23 0,-1.778l-9.25,-16.085c-0.168,-0.234 -0.386,-0.427 -0.638,-0.566l-0.051,-0.027c-0.261,-0.133 -0.549,-0.205 -0.843,-0.209l-18.501,0c-0.604,-0.001 -1.168,0.31 -1.49,0.822l-29.677,51.335l-0.002,-0.004l-10.498,18.17c-0.159,0.271 -0.241,0.58 -0.237,0.895c0,0.315 0.085,0.624 0.247,0.894l40.147,69.532c0.321,0.511 0.885,0.823 1.49,0.822l18.501,0c0.313,-0.004 0.64,-0.075 0.914,-0.226l0.046,-0.029Z" style="fill:#4d4d4d;fill-rule:nonzero;"/></g></svg>
\ No newline at end of file
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="48px" height="48px" viewBox="0 0 48 48" enable-background="new 0 0 48 48" xml:space="preserve">
<path fill="#458BC4" d="M44.804,30.404l-20-27C24.615,3.15,24.308,3.023,24,3.023V46c0.2,0,0.401-0.061,0.573-0.181l20-14
c0.222-0.155,0.37-0.393,0.414-0.659C45.03,30.895,44.964,30.622,44.804,30.404z"/>
<path fill="#43A6DD" d="M23.196,3.405l-20,27c-0.16,0.218-0.227,0.49-0.184,0.756c0.044,0.267,0.192,0.504,0.414,0.659l20,14
C23.599,45.939,23.8,46,24,46V3.023C23.692,3.023,23.385,3.15,23.196,3.405z"/>
</svg>
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="64px" height="64px" viewBox="0 0 64 64" enable-background="new 0 0 64 64" xml:space="preserve">
<path d="M32,19c13.089,0,27-3.154,27-9S45.089,1,32,1S5,4.154,5,10S18.911,19,32,19z"/>
<path d="M32,41c13.089,0,27-3.154,27-9V14.436c-1.481,1.493-3.963,2.968-8.022,4.174C45.864,20.128,38.946,21,32,21
s-13.864-0.872-18.978-2.391C8.963,17.403,6.481,15.929,5,14.436V32C5,37.846,18.911,41,32,41z"/>
<path d="M32,63c13.089,0,27-3.154,27-9V36.436c-1.481,1.493-3.963,2.968-8.022,4.174C45.864,42.128,38.946,43,32,43
s-13.864-0.872-18.978-2.391C8.963,39.403,6.481,37.929,5,36.436V54C5,59.846,18.911,63,32,63z"/>
</svg>
<svg width="2490" height="2500" viewBox="0 0 256 257" xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMidYMid"><path d="M0 36.357L104.62 22.11l.045 100.914-104.57.595L0 36.358zm104.57 98.293l.08 101.002L.081 221.275l-.006-87.302 104.494.677zm12.682-114.405L255.968 0v121.74l-138.716 1.1V20.246zM256 135.6l-.033 121.191-138.716-19.578-.194-101.84L256 135.6z" fill="#00ADEF"/></svg>
\ No newline at end of file
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M21 21v3h-18v-3h18zm-13-15c0-2.206 1.795-4 4-4s4 1.794 4 4v3h2v-3c0-3.313-2.687-6-6-6s-6 2.687-6 6v3h2v-3zm13 8v-3h-18v3h18zm0 5v-3h-18v3h18z"/></svg>
\ No newline at end of file
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M8 9v-3c0-2.206 1.794-4 4-4s4 1.794 4 4v3h2v-3c0-3.313-2.687-6-6-6s-6 2.687-6 6v3h2zm.746 2h2.831l-8.577 8.787v-2.9l5.746-5.887zm12.254 1.562v-1.562h-1.37l-12.69 13h2.894l11.166-11.438zm-6.844-1.562l-11.156 11.431v1.569h1.361l12.689-13h-2.894zm6.844 7.13v-2.927l-8.586 8.797h2.858l5.728-5.87zm-3.149 5.87h3.149v-3.226l-3.149 3.226zm-11.685-13h-3.166v3.244l3.166-3.244z"/></svg>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg width="100%" height="100%" viewBox="0 0 3840 3840" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;"><path d="M1920,0c1059.68,0 1920,860.323 1920,1920c0,1059.68 -860.323,1920 -1920,1920c-1059.68,0 -1920,-860.323 -1920,-1920c0,-1059.68 860.323,-1920 1920,-1920Zm0,960c529.838,0 960,430.162 960,960c0,529.838 -430.162,960 -960,960c-529.838,0 -960,-430.162 -960,-960c0,-529.838 430.162,-960 960,-960Z" style="fill:#027bc0;"/></svg>
\ No newline at end of file
<svg width="2500" height="2139" viewBox="0 0 256 219" xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMidYMid"><path d="M255.95 109.307c0-12.853-3.844-25.173-11.43-36.63-6.81-10.283-16.351-19.385-28.355-27.057-23.18-14.806-53.647-22.963-85.782-22.963-10.734 0-21.315.907-31.577 2.705-6.366-5.96-13.82-11.322-21.707-15.56C34.964-10.62.022 9.322.022 9.322s32.487 26.688 27.204 50.08C12.693 73.821 4.814 91.207 4.814 109.307c0 .056.003.115.003.173 0 .057-.003.113-.003.174 0 18.1 7.876 35.486 22.412 49.902C32.509 182.95.022 209.639.022 209.639s34.942 19.939 77.077-.48c7.886-4.238 15.338-9.603 21.707-15.56 10.264 1.796 20.843 2.702 31.577 2.702 32.137 0 62.601-8.151 85.782-22.958 12.004-7.671 21.545-16.77 28.356-27.058 7.585-11.455 11.43-23.781 11.43-36.628 0-.06-.003-.115-.003-.174l.002-.176z" fill="#C1272D"/><path d="M130.383 40.828c59.505 0 107.746 30.814 107.746 68.824 0 38.007-48.241 68.823-107.746 68.823-13.25 0-25.94-1.532-37.662-4.325-11.915 14.332-38.125 34.26-63.587 27.82 8.282-8.895 20.552-23.926 17.926-48.686-15.262-11.873-24.422-27.07-24.422-43.632-.003-38.013 48.238-68.824 107.745-68.824" fill="#FFF"/><path d="M130.383 126.18c7.906 0 14.314-6.408 14.314-14.314 0-7.905-6.408-14.313-14.314-14.313-7.905 0-14.313 6.408-14.313 14.313 0 7.906 6.408 14.314 14.313 14.314zm49.764 0c7.905 0 14.314-6.408 14.314-14.314 0-7.905-6.409-14.313-14.314-14.313s-14.313 6.408-14.313 14.313c0 7.906 6.408 14.314 14.313 14.314zm-99.53-.003c7.904 0 14.311-6.407 14.311-14.31 0-7.904-6.407-14.312-14.31-14.312-7.905 0-14.312 6.408-14.312 14.311 0 7.904 6.407 14.311 14.311 14.311z" fill="#C1272D"/><path d="M130.383 169.42c-13.25 0-25.94-1.33-37.662-3.75-10.52 10.969-32.188 25.714-54.643 25.172-2.959 4.484-6.175 8.15-8.944 11.126 25.462 6.44 51.672-13.486 63.587-27.82 11.723 2.795 24.414 4.325 37.662 4.325 59.027 0 106.962-30.326 107.726-67.915-.764 32.582-48.699 58.861-107.726 58.861z" fill="#CCC"/></svg>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg width="100%" height="100%" viewBox="0 0 71 74" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;"><path id="path0" d="M17.853,0.124c-0.103,0.067 -1.003,0.38 -1.999,0.696c-10.672,3.376 -16.206,11.122 -15.837,22.164c0.321,9.583 4.693,16.927 11.683,19.623c2.1,0.809 0.956,0.764 19.409,0.766c14.486,0.002 16.916,0.028 17.532,0.188c2.81,0.732 4.406,2.841 4.707,6.22c0.441,4.964 -1.581,8.399 -5.726,9.727l-1.171,0.375l-17.33,0.124c-9.532,0.067 -19.177,0.136 -21.435,0.152l-4.105,0.028l-0.239,0.295c-0.228,0.282 -0.238,0.579 -0.238,6.532l0,6.236l26.374,0c17.135,0 26.375,-0.043 26.375,-0.123c0,-0.067 0.24,-0.242 0.531,-0.39c8.882,-4.471 13.65,-12.414 13.648,-22.737c-0.001,-9.581 -4.31,-16.351 -12.241,-19.233l-1.25,-0.453l-17.688,-0.063c-16.589,-0.06 -17.722,-0.077 -18.246,-0.286c-2.673,-1.067 -4.032,-3.356 -4.21,-7.09c-0.223,-4.676 1.706,-7.536 6.183,-9.166l1.086,-0.396l21,-0.032l21,-0.031l0.219,-0.264c0.329,-0.397 0.336,-11.475 0.007,-12.392l-0.213,-0.594l-23.819,0.002c-15.145,0.001 -23.888,0.046 -24.007,0.123" style="fill:#d0021b;"/></svg>
\ No newline at end of file
<svg width="2500" height="2500" viewBox="0 0 256 256" xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMidYMid"><path d="M165.964 15.838c-3.89-11.975-16.752-18.528-28.725-14.636-11.975 3.89-18.528 16.752-14.636 28.725l58.947 181.365c4.048 11.187 16.132 17.473 27.732 14.135 12.1-3.483 19.475-16.334 15.614-28.217L165.964 15.838" fill="#DFA22F"/><path d="M74.626 45.516C70.734 33.542 57.873 26.989 45.9 30.879 33.924 34.77 27.37 47.631 31.263 59.606l58.948 181.366c4.047 11.186 16.132 17.473 27.732 14.132 12.099-3.481 19.474-16.332 15.613-28.217L74.626 45.516" fill="#3CB187"/><path d="M240.162 166.045c11.975-3.89 18.526-16.75 14.636-28.726-3.89-11.973-16.752-18.527-28.725-14.636L44.708 181.632c-11.187 4.046-17.473 16.13-14.135 27.73 3.483 12.099 16.334 19.475 28.217 15.614l181.372-58.93" fill="#CE1E5B"/><path d="M82.508 217.27l43.347-14.084-14.086-43.352-43.35 14.09 14.089 43.347" fill="#392538"/><path d="M173.847 187.591c16.388-5.323 31.62-10.273 43.348-14.084l-14.088-43.36-43.35 14.09 14.09 43.354" fill="#BB242A"/><path d="M210.484 74.706c11.974-3.89 18.527-16.751 14.637-28.727-3.89-11.973-16.752-18.526-28.727-14.636L15.028 90.293C3.842 94.337-2.445 106.422.896 118.022c3.481 12.098 16.332 19.474 28.217 15.613l181.371-58.93" fill="#72C5CD"/><path d="M52.822 125.933c11.805-3.836 27.025-8.782 43.354-14.086-5.323-16.39-10.273-31.622-14.084-43.352l-43.36 14.092 14.09 43.346" fill="#248C73"/><path d="M144.16 96.256l43.356-14.088a546179.21 546179.21 0 0 0-14.089-43.36L130.07 52.9l14.09 43.356" fill="#62803A"/></svg>
\ No newline at end of file
<svg xmlns="http://www.w3.org/2000/svg" width="2500" height="2500" viewBox="0 0 300 300"><path fill-rule="evenodd" clip-rule="evenodd" fill="#65459B" d="M215.2 260.8h-58.7L117.4 300H78.3v-39.2H6.6V52.2L26.1 0h267.3v182.6l-78.2 78.2zm52.2-91.2V26.1H52.2v189.1h58.7v39.1l39.1-39.1h71.7l45.7-45.6z"/><path fill="#65459B" d="M195.6 78.3v78.3h26.1V78.3h-26.1zm-71.7 78.2H150V78.3h-26.1v78.2z"/></svg>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="80pt" height="80pt" viewBox="0 0 80 80" version="1.1">
<g id="surface1">
<path style=" stroke:none;fill-rule:nonzero;fill:#98CCFD;fill-opacity:1;" d="M 6 67 C 4.347656 67 3 65.652344 3 64 L 3 16 C 3 14.347656 4.347656 13 6 13 L 74 13 C 75.652344 13 77 14.347656 77 16 L 77 64 C 77 65.652344 75.652344 67 74 67 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:#4788C7;fill-opacity:1;" d="M 74 14 C 75.101563 14 76 14.898438 76 16 L 76 64 C 76 65.101563 75.101563 66 74 66 L 6 66 C 4.898438 66 4 65.101563 4 64 L 4 16 C 4 14.898438 4.898438 14 6 14 L 74 14 M 74 12 L 6 12 C 3.789063 12 2 13.789063 2 16 L 2 64 C 2 66.210938 3.789063 68 6 68 L 74 68 C 76.210938 68 78 66.210938 78 64 L 78 16 C 78 13.789063 76.210938 12 74 12 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:#FFFFFF;fill-opacity:1;" d="M 38 30.382813 C 39.09375 30.148438 40.570313 30 42.046875 30 C 44.355469 30 46.3125 30.324219 47.585938 31.535156 C 48.765625 32.570313 49.296875 34.222656 49.296875 35.90625 C 49.296875 38.066406 48.648438 39.601563 47.617188 40.695313 C 46.375 42.023438 44.394531 42.613281 42.769531 42.613281 C 42.507813 42.613281 42.269531 42.613281 42.003906 42.585938 L 42.003906 50 L 38.003906 50 L 38.003906 30.382813 Z M 42 39.453125 C 42.207031 39.484375 42.414063 39.484375 42.648438 39.484375 C 44.601563 39.484375 45.457031 38.09375 45.457031 36.234375 C 45.457031 34.488281 44.746094 33.132813 42.945313 33.132813 C 42.59375 33.132813 42.238281 33.191406 42 33.28125 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:#FFFFFF;fill-opacity:1;" d="M 52 30 L 56 30 L 56 50 L 52 50 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:#FFFFFF;fill-opacity:1;" d="M 31.902344 50 L 36 50 L 31.773438 30 L 26.710938 30 L 22 50 L 26.097656 50 L 26.96875 46 L 31.0625 46 Z M 29.0625 33.679688 L 29.160156 33.679688 C 29.355469 34.984375 29.644531 37.003906 29.871094 38.21875 L 30.511719 42 L 27.5625 42 L 28.292969 38.21875 C 28.515625 37.0625 28.839844 35.015625 29.0625 33.679688 Z "/>
</g>
</svg>
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="80pt" height="80pt" viewBox="0 0 80 80" version="1.1">
<g id="surface1">
<path style=" stroke:none;fill-rule:nonzero;fill:#FFFFFF;fill-opacity:1;" d="M 5 7 L 75 7 L 75 73 L 5 73 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:#4788C7;fill-opacity:1;" d="M 74 8 L 74 72 L 6 72 L 6 8 L 74 8 M 76 6 L 4 6 L 4 74 L 76 74 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:#98CCFD;fill-opacity:1;" d="M 6 8 L 74 8 L 74 24 L 6 24 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:#FFFFFF;fill-opacity:1;" d="M 12 14 L 16 14 L 16 18 L 12 18 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:#FFFFFF;fill-opacity:1;" d="M 20 14 L 24 14 L 24 18 L 20 18 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:#FFFFFF;fill-opacity:1;" d="M 28 14 L 32 14 L 32 18 L 28 18 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:#98CCFD;fill-opacity:1;" d="M 12 32 L 38 32 L 38 66 L 12 66 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:#4788C7;fill-opacity:1;" d="M 67 34 L 45 34 C 44.449219 34 44 33.550781 44 33 C 44 32.449219 44.449219 32 45 32 L 67 32 C 67.550781 32 68 32.449219 68 33 C 68 33.550781 67.550781 34 67 34 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:#4788C7;fill-opacity:1;" d="M 67 42 L 45 42 C 44.449219 42 44 41.550781 44 41 C 44 40.449219 44.449219 40 45 40 L 67 40 C 67.550781 40 68 40.449219 68 41 C 68 41.550781 67.550781 42 67 42 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:#4788C7;fill-opacity:1;" d="M 67 50 L 45 50 C 44.449219 50 44 49.550781 44 49 C 44 48.449219 44.449219 48 45 48 L 67 48 C 67.550781 48 68 48.449219 68 49 C 68 49.550781 67.550781 50 67 50 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:#4788C7;fill-opacity:1;" d="M 67 58 L 45 58 C 44.449219 58 44 57.550781 44 57 C 44 56.449219 44.449219 56 45 56 L 67 56 C 67.550781 56 68 56.449219 68 57 C 68 57.550781 67.550781 58 67 58 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:#4788C7;fill-opacity:1;" d="M 67 66 L 45 66 C 44.449219 66 44 65.550781 44 65 C 44 64.449219 44.449219 64 45 64 L 67 64 C 67.550781 64 68 64.449219 68 65 C 68 65.550781 67.550781 66 67 66 Z "/>
</g>
</svg>
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="80pt" height="80pt" viewBox="0 0 80 80" version="1.1">
<g id="surface1">
<path style=" stroke:none;fill-rule:nonzero;fill:#FFFFFF;fill-opacity:1;" d="M 5 7 L 75 7 L 75 73 L 5 73 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:#4788C7;fill-opacity:1;" d="M 74 8 L 74 72 L 6 72 L 6 8 L 74 8 M 76 6 L 4 6 L 4 74 L 76 74 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:#98CCFD;fill-opacity:1;" d="M 6 8 L 74 8 L 74 18 L 6 18 Z "/>
<path style="fill:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke:#4788C7;stroke-opacity:1;stroke-miterlimit:4;" d="M 14.5 26.529297 L 8.75 22.029297 L 14.5 17.529297 " transform="matrix(2,0,0,2,0,0)"/>
<path style="fill:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke:#4788C7;stroke-opacity:1;stroke-miterlimit:4;" d="M 22.5 15.5 L 17.5 28.5 " transform="matrix(2,0,0,2,0,0)"/>
<path style="fill:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke:#4788C7;stroke-opacity:1;stroke-miterlimit:4;" d="M 25.5 26.529297 L 31.25 22.029297 L 25.5 17.529297 " transform="matrix(2,0,0,2,0,0)"/>
</g>
</svg>
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="80pt" height="80pt" viewBox="0 0 80 80" version="1.1">
<g id="surface1">
<path style=" stroke:none;fill-rule:nonzero;fill:#DFF0FE;fill-opacity:1;" d="M 8 67 C 6.347656 67 5 65.652344 5 64 L 5 16 C 5 14.347656 6.347656 13 8 13 L 72 13 C 73.652344 13 75 14.347656 75 16 L 75 64 C 75 65.652344 73.652344 67 72 67 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:#4788C7;fill-opacity:1;" d="M 72 14 C 73.101563 14 74 14.898438 74 16 L 74 64 C 74 65.101563 73.101563 66 72 66 L 8 66 C 6.898438 66 6 65.101563 6 64 L 6 16 C 6 14.898438 6.898438 14 8 14 L 72 14 M 72 12 L 8 12 C 5.789063 12 4 13.789063 4 16 L 4 64 C 4 66.210938 5.789063 68 8 68 L 72 68 C 74.210938 68 76 66.210938 76 64 L 76 16 C 76 13.789063 74.210938 12 72 12 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:#4788C7;fill-opacity:1;" d="M 19.839844 31.601563 L 19.839844 38.621094 L 23.402344 38.621094 L 23.402344 31.601563 L 26.808594 31.601563 L 26.808594 49.125 L 23.402344 49.125 L 23.402344 41.792969 L 19.839844 41.792969 L 19.839844 49.125 L 16.433594 49.125 L 16.433594 31.601563 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:#4788C7;fill-opacity:1;" d="M 32.375 34.746094 L 29.28125 34.746094 L 29.28125 31.601563 L 38.902344 31.601563 L 38.902344 34.746094 L 35.78125 34.746094 L 35.78125 49.125 L 32.375 49.125 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:#4788C7;fill-opacity:1;" d="M 52.054688 42.988281 C 51.953125 41.324219 51.847656 39.0625 51.875 37.191406 L 51.820313 37.191406 C 51.511719 39.0625 51.042969 41.222656 50.703125 42.570313 L 49.171875 48.839844 L 46.777344 48.839844 L 45.320313 42.675781 C 44.984375 41.273438 44.515625 39.089844 44.230469 37.191406 L 44.179688 37.191406 C 44.125 39.089844 43.996094 41.300781 43.917969 43.042969 L 43.605469 49.125 L 40.695313 49.125 L 41.941406 31.601563 L 45.554688 31.601563 L 46.960938 37.945313 C 47.429688 40.152344 47.871094 42.105469 48.183594 44.078125 L 48.261719 44.078125 C 48.519531 42.128906 48.910156 40.152344 49.351563 37.945313 L 50.757813 31.601563 L 54.34375 31.601563 L 55.410156 49.125 L 52.367188 49.125 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:#4788C7;fill-opacity:1;" d="M 58.554688 31.601563 L 61.960938 31.601563 L 61.960938 46.238281 L 66.433594 46.238281 L 66.433594 49.125 L 58.554688 49.125 Z "/>
</g>
</svg>
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="80pt" height="80pt" viewBox="0 0 80 80" version="1.1">
<g id="surface1">
<path style=" stroke:none;fill-rule:nonzero;fill:#98CCFD;fill-opacity:1;" d="M 5.265625 65 C 2.914063 65 1 63.085938 1 60.734375 L 1 19.265625 C 1 16.914063 2.914063 15 5.265625 15 L 74.730469 15 C 77.085938 15 78.996094 16.914063 78.996094 19.265625 L 78.996094 60.730469 C 78.996094 63.085938 77.085938 64.996094 74.730469 64.996094 L 5.265625 64.996094 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:#4788C7;fill-opacity:1;" d="M 74.734375 16 C 76.535156 16 78 17.464844 78 19.265625 L 78 60.734375 C 78 62.535156 76.535156 64 74.734375 64 L 5.265625 64 C 3.464844 64 2 62.535156 2 60.734375 L 2 19.265625 C 2 17.464844 3.464844 16 5.265625 16 L 74.734375 16 M 74.734375 14 L 5.265625 14 C 2.371094 14 0 16.371094 0 19.265625 L 0 60.734375 C 0 63.628906 2.371094 66 5.265625 66 L 74.734375 66 C 77.628906 66 80 63.628906 80 60.734375 L 80 19.265625 C 80 16.371094 77.628906 14 74.734375 14 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:#FFFFFF;fill-opacity:1;" d="M 34 26 L 26 37.199219 L 18 26 L 10 26 L 10 54 L 18 54 L 18 36.222656 L 26 47.335938 L 34 35.886719 L 34 54 L 42 54 L 42 26 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:#FFFFFF;fill-opacity:1;" d="M 64 40 L 64 26 L 56 26 L 56 40 L 48.5 40 L 60 54 L 72 40 Z "/>
</g>
</svg>
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="80pt" height="80pt" viewBox="0 0 80 80" version="1.1">
<g id="surface1">
<path style=" stroke:none;fill-rule:nonzero;fill:#FFFFFF;fill-opacity:1;" d="M 5 5 L 75 5 L 75 75 L 5 75 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:#4788C7;fill-opacity:1;" d="M 74 6 L 74 74 L 6 74 L 6 6 L 74 6 M 76 4 L 4 4 L 4 76 L 76 76 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:#98CCFD;fill-opacity:1;" d="M 62 8 L 62 74 L 60 74 L 60 8 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:#98CCFD;fill-opacity:1;" d="M 48 8 L 48 74 L 46 74 L 46 8 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:#98CCFD;fill-opacity:1;" d="M 34 8 L 34 74 L 32 74 L 32 8 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:#98CCFD;fill-opacity:1;" d="M 8 32 L 74 32 L 74 34 L 8 34 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:#98CCFD;fill-opacity:1;" d="M 8 46 L 74 46 L 74 48 L 8 48 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:#98CCFD;fill-opacity:1;" d="M 8 60 L 74 60 L 74 62 L 8 62 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:#B6DCFE;fill-opacity:1;" d="M 61 5 L 75 5 L 75 19 L 61 19 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:#4788C7;fill-opacity:1;" d="M 74 6 L 74 18 L 62 18 L 62 6 L 74 6 M 76 4 L 60 4 L 60 20 L 76 20 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:#B6DCFE;fill-opacity:1;" d="M 47 5 L 61 5 L 61 19 L 47 19 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:#4788C7;fill-opacity:1;" d="M 60 6 L 60 18 L 48 18 L 48 6 L 60 6 M 62 4 L 46 4 L 46 20 L 62 20 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:#B6DCFE;fill-opacity:1;" d="M 33 5 L 47 5 L 47 19 L 33 19 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:#4788C7;fill-opacity:1;" d="M 46 6 L 46 18 L 34 18 L 34 6 L 46 6 M 48 4 L 32 4 L 32 20 L 48 20 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:#B6DCFE;fill-opacity:1;" d="M 19 5 L 33 5 L 33 19 L 19 19 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:#4788C7;fill-opacity:1;" d="M 32 6 L 32 18 L 20 18 L 20 6 L 32 6 M 34 4 L 18 4 L 18 20 L 34 20 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:#B6DCFE;fill-opacity:1;" d="M 5 5 L 19 5 L 19 19 L 5 19 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:#4788C7;fill-opacity:1;" d="M 18 6 L 18 18 L 6 18 L 6 6 L 18 6 M 20 4 L 4 4 L 4 20 L 20 20 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:#B6DCFE;fill-opacity:1;" d="M 5 19 L 19 19 L 19 33 L 5 33 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:#4788C7;fill-opacity:1;" d="M 18 20 L 18 32 L 6 32 L 6 20 L 18 20 M 20 18 L 4 18 L 4 34 L 20 34 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:#B6DCFE;fill-opacity:1;" d="M 5 33 L 19 33 L 19 47 L 5 47 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:#4788C7;fill-opacity:1;" d="M 18 34 L 18 46 L 6 46 L 6 34 L 18 34 M 20 32 L 4 32 L 4 48 L 20 48 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:#B6DCFE;fill-opacity:1;" d="M 5 47 L 19 47 L 19 61 L 5 61 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:#4788C7;fill-opacity:1;" d="M 18 48 L 18 60 L 6 60 L 6 48 L 18 48 M 20 46 L 4 46 L 4 62 L 20 62 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:#B6DCFE;fill-opacity:1;" d="M 5 61 L 19 61 L 19 75 L 5 75 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:#4788C7;fill-opacity:1;" d="M 18 62 L 18 74 L 6 74 L 6 62 L 18 62 M 20 60 L 4 60 L 4 76 L 20 76 Z "/>
</g>
</svg>
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="80pt" height="80pt" viewBox="0 0 80 80" version="1.1">
<g id="surface1">
<path style=" stroke:none;fill-rule:nonzero;fill:#B6DCFE;fill-opacity:1;" d="M 44.316406 75 C 47.148438 73.007813 49 69.714844 49 66 L 49 11 L 75 11 L 75 66 C 75 70.960938 70.960938 75 66 75 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:#4788C7;fill-opacity:1;" d="M 74 12 L 74 66 C 74 70.410156 70.410156 74 66 74 L 46.9375 74 C 48.839844 71.875 50 69.070313 50 66 L 50 12 L 74 12 M 76 10 L 48 10 L 48 66 C 48 71.523438 43.523438 76 38 76 L 66 76 C 71.523438 76 76 71.523438 76 66 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:#DFF0FE;fill-opacity:1;" d="M 14 75 C 9.039063 75 5 70.960938 5 66 L 5 3 L 57 3 L 57 66 C 57 70.625 60.507813 74.445313 65 74.945313 L 65 75 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:#4788C7;fill-opacity:1;" d="M 56 4 L 56 66 C 56 69.269531 57.574219 72.175781 60.007813 74 L 14 74 C 9.589844 74 6 70.410156 6 66 L 6 4 L 56 4 M 58 2 L 4 2 L 4 66 C 4 71.523438 8.476563 76 14 76 L 66 76 L 66 74 C 61.582031 74 58 70.417969 58 66 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:#4788C7;fill-opacity:1;" d="M 67 22 L 57 22 C 56.449219 22 56 21.550781 56 21 C 56 20.449219 56.449219 20 57 20 L 67 20 C 67.550781 20 68 20.449219 68 21 C 68 21.550781 67.550781 22 67 22 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:#4788C7;fill-opacity:1;" d="M 67 28 L 57 28 C 56.449219 28 56 27.550781 56 27 C 56 26.449219 56.449219 26 57 26 L 67 26 C 67.550781 26 68 26.449219 68 27 C 68 27.550781 67.550781 28 67 28 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:#4788C7;fill-opacity:1;" d="M 67 34 L 57 34 C 56.449219 34 56 33.550781 56 33 C 56 32.449219 56.449219 32 57 32 L 67 32 C 67.550781 32 68 32.449219 68 33 C 68 33.550781 67.550781 34 67 34 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:#4788C7;fill-opacity:1;" d="M 67 40 L 57 40 C 56.449219 40 56 39.550781 56 39 C 56 38.449219 56.449219 38 57 38 L 67 38 C 67.550781 38 68 38.449219 68 39 C 68 39.550781 67.550781 40 67 40 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:#4788C7;fill-opacity:1;" d="M 67 46 L 57 46 C 56.449219 46 56 45.550781 56 45 C 56 44.449219 56.449219 44 57 44 L 67 44 C 67.550781 44 68 44.449219 68 45 C 68 45.550781 67.550781 46 67 46 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:#4788C7;fill-opacity:1;" d="M 67 52 L 57 52 C 56.449219 52 56 51.550781 56 51 C 56 50.449219 56.449219 50 57 50 L 67 50 C 67.550781 50 68 50.449219 68 51 C 68 51.550781 67.550781 52 67 52 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:#4788C7;fill-opacity:1;" d="M 67 58 L 57 58 C 56.449219 58 56 57.550781 56 57 C 56 56.449219 56.449219 56 57 56 L 67 56 C 67.550781 56 68 56.449219 68 57 C 68 57.550781 67.550781 58 67 58 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:#4788C7;fill-opacity:1;" d="M 67 64 L 57 64 C 56.449219 64 56 63.550781 56 63 C 56 62.449219 56.449219 62 57 62 L 67 62 C 67.550781 62 68 62.449219 68 63 C 68 63.550781 67.550781 64 67 64 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:#4788C7;fill-opacity:1;" d="M 47 24 L 35 24 C 34.449219 24 34 23.550781 34 23 C 34 22.449219 34.449219 22 35 22 L 47 22 C 47.550781 22 48 22.449219 48 23 C 48 23.550781 47.550781 24 47 24 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:#4788C7;fill-opacity:1;" d="M 47 30 L 35 30 C 34.449219 30 34 29.550781 34 29 C 34 28.449219 34.449219 28 35 28 L 47 28 C 47.550781 28 48 28.449219 48 29 C 48 29.550781 47.550781 30 47 30 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:#4788C7;fill-opacity:1;" d="M 47 36 L 35 36 C 34.449219 36 34 35.550781 34 35 C 34 34.449219 34.449219 34 35 34 L 47 34 C 47.550781 34 48 34.449219 48 35 C 48 35.550781 47.550781 36 47 36 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:#4788C7;fill-opacity:1;" d="M 47 42 L 35 42 C 34.449219 42 34 41.550781 34 41 C 34 40.449219 34.449219 40 35 40 L 47 40 C 47.550781 40 48 40.449219 48 41 C 48 41.550781 47.550781 42 47 42 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:#4788C7;fill-opacity:1;" d="M 47 48 L 35 48 C 34.449219 48 34 47.550781 34 47 C 34 46.449219 34.449219 46 35 46 L 47 46 C 47.550781 46 48 46.449219 48 47 C 48 47.550781 47.550781 48 47 48 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:#4788C7;fill-opacity:1;" d="M 47 54 L 35 54 C 34.449219 54 34 53.550781 34 53 C 34 52.449219 34.449219 52 35 52 L 47 52 C 47.550781 52 48 52.449219 48 53 C 48 53.550781 47.550781 54 47 54 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:#4788C7;fill-opacity:1;" d="M 47 60 L 35 60 C 34.449219 60 34 59.550781 34 59 C 34 58.449219 34.449219 58 35 58 L 47 58 C 47.550781 58 48 58.449219 48 59 C 48 59.550781 47.550781 60 47 60 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:#4788C7;fill-opacity:1;" d="M 47 66 L 35 66 C 34.449219 66 34 65.550781 34 65 C 34 64.449219 34.449219 64 35 64 L 47 64 C 47.550781 64 48 64.449219 48 65 C 48 65.550781 47.550781 66 47 66 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:#4788C7;fill-opacity:1;" d="M 27 24 L 15 24 C 14.449219 24 14 23.550781 14 23 C 14 22.449219 14.449219 22 15 22 L 27 22 C 27.550781 22 28 22.449219 28 23 C 28 23.550781 27.550781 24 27 24 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:#4788C7;fill-opacity:1;" d="M 27 30 L 15 30 C 14.449219 30 14 29.550781 14 29 C 14 28.449219 14.449219 28 15 28 L 27 28 C 27.550781 28 28 28.449219 28 29 C 28 29.550781 27.550781 30 27 30 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:#4788C7;fill-opacity:1;" d="M 27 36 L 15 36 C 14.449219 36 14 35.550781 14 35 C 14 34.449219 14.449219 34 15 34 L 27 34 C 27.550781 34 28 34.449219 28 35 C 28 35.550781 27.550781 36 27 36 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:#4788C7;fill-opacity:1;" d="M 27 42 L 15 42 C 14.449219 42 14 41.550781 14 41 C 14 40.449219 14.449219 40 15 40 L 27 40 C 27.550781 40 28 40.449219 28 41 C 28 41.550781 27.550781 42 27 42 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:#4788C7;fill-opacity:1;" d="M 27 48 L 15 48 C 14.449219 48 14 47.550781 14 47 C 14 46.449219 14.449219 46 15 46 L 27 46 C 27.550781 46 28 46.449219 28 47 C 28 47.550781 27.550781 48 27 48 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:#4788C7;fill-opacity:1;" d="M 27 54 L 15 54 C 14.449219 54 14 53.550781 14 53 C 14 52.449219 14.449219 52 15 52 L 27 52 C 27.550781 52 28 52.449219 28 53 C 28 53.550781 27.550781 54 27 54 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:#4788C7;fill-opacity:1;" d="M 27 60 L 15 60 C 14.449219 60 14 59.550781 14 59 C 14 58.449219 14.449219 58 15 58 L 27 58 C 27.550781 58 28 58.449219 28 59 C 28 59.550781 27.550781 60 27 60 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:#4788C7;fill-opacity:1;" d="M 27 66 L 15 66 C 14.449219 66 14 65.550781 14 65 C 14 64.449219 14.449219 64 15 64 L 27 64 C 27.550781 64 28 64.449219 28 65 C 28 65.550781 27.550781 66 27 66 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:#4788C7;fill-opacity:1;" d="M 46 16 L 16 16 C 14.898438 16 14 15.101563 14 14 C 14 12.898438 14.898438 12 16 12 L 46 12 C 47.101563 12 48 12.898438 48 14 C 48 15.101563 47.101563 16 46 16 Z "/>
</g>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" fill-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="1.41" clip-rule="evenodd" viewBox="0 0 246 259">
<path fill="#930e0b" fill-rule="nonzero" d="M154.02 78.3a6.24 6.24 0 0 1 6.01 6.11c-.05 2.74-3.06 5.44-6 5.4-3-.05-5.98-2.91-5.94-5.7a5.76 5.76 0 0 1 5.93-5.81m-.16-7.12c1.24-.86 3.12-1.49 4.53-1.21 1.1.21 2.65 1.65 1.53 3.56-.1.15.04.44.05.66.02.73.1 1.48-.04 2.18-.03.13-1.29.3-1.45.07-.42-.6-.54-1.4-.87-2.4-.68-.02-1.6.02-2.48-.12-1.47-.25-2.34-1.98-1.27-2.74m7.08 17.3c2.21-2.92 3.04-6.28 3.02-9.9-.02-4.08-1.15-7.78-4-10.8a8.17 8.17 0 0 0-11.87-.25c-5.2 5.3-5.38 16.06-.37 21.56 3.97 4.36 9.67 4.1 13.22-.6M96.3 79.11c3.48-.03 6.22 2.48 6.26 5.75.05 2.96-3.05 6.04-6.12 6.1-3.01.05-6.27-3-6.31-5.92-.05-3.18 2.77-5.89 6.17-5.93m3.65-7.79c1.37.01 2.37.38 2.39 1.97.03 1.98-.98 2.8-3.5 2.76-1.34-.18-3.14.03-3.3-2.17-.13-1.57 1.73-2.57 4.4-2.56m4.37 6.63c-.78.65-1.27 1.36-1.73 1.34-.49-.02-.96-.71-1.44-1.11.45-.51.81-1.26 1.36-1.44.35-.12.98.62 1.81 1.21m-3.44 13.88c4.08-2.9 5.37-7.2 5.49-11.96.1-4.03-1-7.65-3.61-10.76a8.1 8.1 0 0 0-11.18-1.14c-6.45 5.18-6.85 17.49-.75 23.1 2.95 2.71 6.76 3.1 10.05.76M124.91 101.86c-.58.36-1.65.58-2.16.29-2.7-1.61-2.9-1.64-4.84.73-.17.2-.32.43-.5.68-.72-1.7-.26-2.98 1.52-3.83a14.61 14.61 0 0 1 10.22-.88c-1.37 1-2.74 2.1-4.24 3.01m.2-6.52c-2.6.79-5.3 1.32-7.74 2.44-3.18 1.45-4.87 6.82-.09 9.23 2.26 1.14 4.57 2.15 6.88 3.18.36.16.89.25 1.22.1 3.08-1.34 6.32-2.45 9.15-4.22 2.67-1.67 2.53-4.62.17-6.81-2.66-2.48-5.85-3.55-9.6-3.92M46.2 156.83l-4.18 1.04 4.18-1.04M38.69 158.87l.66-.37-.63-.11-2.78.34 2.78-.34-.03.48"/>
<path fill="#930e0b" fill-rule="nonzero" d="M183.15 76.66l-.5-.63c.47-.38.89-.88 1.43-1.13 3.38-1.55 6.94-2.78 10.15-4.62 7.61-4.36 13.21-10.89 18.21-17.93a98.74 98.74 0 0 0 12.1-22.42c2.64-7 6.9-13.06 11.2-19.06.93-1.28 1.3-2.43.8-3.89-7.78 3.18-15.73 6.03-23.32 9.62-11.6 5.47-22.4 12.36-32.66 20.09-.55.42-1.19 1.22-1.13 1.78.05.52.92 1.05 1.52 1.41.78.46 1.68.72 2.49 1.14.55.28 1.02.7 1.54 1.06-2.98 3.58-8.58 3.74-11.5.41l-9.46-10.72c-1.96-2.22-2-3.1.01-5.19.72-.75 1.58-1.4 2.45-1.96 15-9.55 31.71-14.34 49.01-17.34 6.09-1.06 12.28-1.48 18.43-2.2l1.39-.06 2.01-.12.45-.04.84-.05 2.55-.2 1.08-.1c-3.1 5.2-6.1 9.92-8.8 14.8-4.46 8.07-8.61 16.3-13.1 24.35a86.44 86.44 0 0 1-19.83 24.21c-5.09 4.28-11.18 6.66-17.36 8.8m4.66-35.48c-1.2-1.17-2.6-2.12-4.16-3.38 1.02-.82 1.97-1.67 3.01-2.4 1.35-.95 2.7-1.88 4.06-2.79l.68-.45.78-.52a207.77 207.77 0 0 1 8-5l.08-.06 1.08-.64c.91-.54 1.84-1.07 2.76-1.6l.23-.13.54-.3a217.95 217.95 0 0 1 26.01-12.47c.26-.1.55-.1.83-.13l.41-.06-.23.23c-1.01 1.6-2.15 3.13-3 4.8-3.03 5.95-6 11.91-8.9 17.92-5.27 11-11.7 21.14-20.8 29.35L197.55 65c-3.9 3.29-10.8 6.7-15.1 7.52-1.75-7.76-3.5-15.53-5.18-23.07 3.16-1.51 6.65-3.1 10.07-4.84 1.87-.95 2-1.94.47-3.42m-1.39 51c-.67 1.15-1.98 2.39-1.88 3.5.1 1.16 1.57 2.2 2.53 3.4-4.13 1.1-8.16 2.15-12.18 3.24-3.25.9-6.49 1.83-9.73 2.75l-2.67 1.43-33.24 14.68-1.53.45-.58.17c-.55.1-1.18.37-1.7.39a1 1 0 0 1-.46-.08c-5.58-2.64-11.03-5.58-16.67-8.09a223.96 223.96 0 0 0-43-14.2c-.18-.04-.35-.14-.74-.3 1.1-.84 2.1-1.57 3.07-2.36 1.94-1.57 1.85-2.31-.37-3.44-.37-.18-.73-.39-1.24-.66 5.32-6.87 4.47-15.33 6.44-23.3 2.08.56 3 2.24 3.6 4.1.86 2.68 1.42 5.46 2.32 8.11a18.64 18.64 0 0 0 2.18 4.47 14.61 14.61 0 0 0 6.25 5.23 15.7 15.7 0 0 1-1.93-2.71 12.33 12.33 0 0 1-1.56-5.22c-.28-4.22-1.02-8.54 1.54-12.46 5.18-7.95 17.6-8.13 22.31-1.08.15.23.56.29.84.43-1.7-11.1-13.04-13.15-20.66-9.1-3.04 1.62-5.96 3.48-9.06 4.96-1.63.78-3.54 1-5.77 1.58.48-3.2.9-6.23 1.57-9.12a34.03 34.03 0 0 1 1.66-5.22c.42-1 .92-2 1.5-2.96.5-1.5 1.1-2.96 1.85-4.35a25.19 25.19 0 0 1 5.01-6.54c0 2.07-.03 3.75.02 5.44.02.62.27 1.23.41 1.85l2.28-.27c.73-2 1.82-3.64 3.2-5a17.05 17.05 0 0 1 4.9-3.28l2.79 11.75c2.98 5.1 6.67 9.52 12.04 12.26 1.49.76 3.08 1.33 4.65 1.93 1.52.58 2.39.07 2.62-1.62.22-1.67.62-3.28 1.17-4.83a29.15 29.15 0 0 1 3.89-7.25l.38-.43.03-.02.4-.43c.1-.05.17-.12.24-.21l3.4-4.98c6.81-7.08 15.2-11.42 24.47-14.3 3.03-.93 5.81-.63 8.36 1.35 1.76 1.38 3.55 2.72 5.32 4.08l1.78 2.2.29.36.3.25.43.36c.24.2.48.41.66.66 5.9 7.84 8.96 16.78 10.21 27.12-2.25-.52-4.35-.7-6.17-1.5a68.7 68.7 0 0 1-7.93-4.38c-5.32-3.25-12.48-3.34-16.91 0a13.23 13.23 0 0 0-3.53 4.06c-1.07 1.88-1.7 4-2 6.3a15.17 15.17 0 0 1 2.48-3.53 12.4 12.4 0 0 1 6.83-3.59c1.34-.23 2.76-.3 4.26-.19 5.24.36 11.89 5.02 11.94 11.83.03 4.3.3 8.61-2.16 12.48-.49.78-.86 1.63-1.29 2.44 5.7-3.36 8.36-8.67 9.63-14.9.27-1.3.67-2.6 1.14-3.84.68-1.77 1.8-3.15 3.93-3.68 2.35 8.11 1.27 17.32 7.84 23.82m17.14 6.92c1.7-.21 3.5.16 5.23.41.53.08 1.25.56 1.44 1.04 1.6 4.04 3.08 8.12 4.72 12.5-1.47 0-2.51.02-3.56-.01-22.47-.74-44.56 1.57-66.01 8.59-5.48 1.79-10.84 3.96-16.2 6.08a6.99 6.99 0 0 1-5.27.12c-12.2-4.33-24.37-8.7-37.14-11.18-16.28-3.15-32.66-4.06-49.17-3.32-.7.03-1.4 0-2.56 0 2.17-4.46 4.15-8.7 6.31-12.85.26-.49 1.47-.75 2.2-.68 5.02.5 10.04 1.15 15.06 1.68 11.3 1.2 21.97 4.8 32.59 8.52 11.09 3.88 21.94 8.37 32.22 14.12 2.03 1.14 3.78 1.04 5.76.03a344.42 344.42 0 0 1 38.27-16.69c11.7-4.28 23.78-6.86 36.1-8.36m18.42 17.18c1.42.1 2.3.72 2.5 2.28.27 2.23.79 4.43 1.03 6.66.08.77-.13 1.74-.56 2.38-1.95 2.91-3.91 5.83-6.09 8.57-1.78 2.25-4.3 3.28-7.21 3.37-2.74.07-5.48.26-8.22.38-4.6.2-7.58 4.8-5.69 9.09.56 1.27.42 2.13-.09 3.27a8.32 8.32 0 0 0 .05 7.33c.29.6-.02 1.74-.43 2.4-.64 1-1.21 2-1.57 3-.59 1.7-.58 3.44.75 5.33l1.6 1.57 4.54 1.5-12.23 26.81a64.5 64.5 0 0 0-5.72-5.84 53.55 53.55 0 0 0-10.79-7.54l-1.21-1-1.26-1.05c-1.2-.39-2.4-.72-3.56-1.18a73.15 73.15 0 0 0-32.35-5.12c-.32-18.4.16-45.64.3-50.45 4.83-1.82 9.67-3.62 14.59-5.13 10.63-3.27 21.5-5.63 32.63-6.25 10.73-.6 21.5-.63 32.26-.83 2.24-.04 4.48.29 6.73.45m1.62 27.04a9.26 9.26 0 0 1-1.12 2.61 12.23 12.23 0 0 1-2.01 2.49l-1.3 1.2c-.78.25-1.59.79-2.34.73-5-.43-10-.95-14.99-1.5-1.77-.2-2.05-1.43-1.73-2.92.06-.27.1-.55.15-.83a10.58 10.58 0 0 1 .24-1.08 2.01 2.01 0 0 1 .37-.65c.33-.37.87-.56 1.77-.44l1.26-.36.15-.04 4.2-.13c1.4-.04 2.8-.08 4.2-.1 3.93-.07 7.33-1.58 10.41-3.87a6.1 6.1 0 0 1 .74 4.89m-6.21 11.53c-.12 1.7-.51 3.3-1.88 4.61l-.57.1-.8-.02c-1.39.12-2.78.34-4.17.41-.46.03-.92.04-1.38.03-1.81-.05-3.62-.46-5.42-.76-3.55-.6-4.63-2.52-3.12-5.8.48-1.04.96-3.53 2.73-.78.02.03.5-.24.77-.37 1.44.08 2.89.15 4.33.24l9.57.61c0 .59-.02 1.17-.06 1.73m-5.49 12.88c-.18.38-.43.73-.78 1.05-.23.22-.5.42-.82.6l-.67.38c-.51.3-1.03.58-1.54.87-.54-.02-1.08-.02-1.63-.03-1.63 0-3.26.02-4.85-.25-3.42-.6-4.44-3.09-2.55-6 .28-.44.49-1 .75-1.5.15-.29.32-.56.54-.78a1.83 1.83 0 0 1 .69-.45c.3-.1.68-.14 1.15-.07l1.34.75 2.08-.1.48.04c2.07.25 4.15.5 6.46.76-.21 1.65.03 3.35-.65 4.73m-16.85 49.26c-1-1.05-1.71-1.98-2.6-2.7a10.33 10.33 0 0 0-2.9-1.57c6.21 7.81 10.46 16.4 11.82 26.54-.61-.16-1.03-.2-1.37-.38-8.18-4.39-16.97-4.18-25.78-3.16-17.09 1.99-33.41 6.96-49.61 12.59-14.91 5.17-30.27 8.25-46.21 7.42-8.3-.43-16.48-1.25-23.64-6.01-7.85-5.22-13.53-12.03-15.3-21.59l-.68-3.66.18-3.61c-.88-5.32.38-10.38 2.18-15.29 1.94-5.3 5.28-9.75 9.38-13.61.75-.71 1.63-1.29 2.7-2.12l5.52 12.16c-2.57-.5-4.45-1.28-5.51-3.81.12 3.68 3.76 7.06 7.74 6.78 3.66-.27 7.5-.83 10.85-2.24 9.35-3.93 18.27-8.74 26.22-15.13.27-.22.55-.4 1.21-.89-.2 1.11-.42 1.82-.43 2.53-.02 1.04.11 2.1.18 3.14 1.02-.24 2.12-.32 3.04-.76 3.17-1.53 6.18-3.4 9.42-4.75a74.11 74.11 0 0 1 24.33-5.73 72.09 72.09 0 0 1 11.1.2c2.79.27 5.6.69 8.42 1.27l2.99.9 2.56.77c8.12 1.95 16.44 6.8 22.84 12.84a51.33 51.33 0 0 1 5.38 5.94 36.74 36.74 0 0 1 3.23 5.04 22.7 22.7 0 0 1 2.74 8.9m-63.24-38.2c-3.64.4-7.23 1.02-10.75 1.9.22-20.67-.1-46.65-.4-51.19l3.37 1.22c2.06.73 3.81.24 5.7-.44l2.47-.92c-.28 5.34-.57 29.54-.4 49.44m-83.66-6.4l1.66-1.06 1.59-1.02 2.06-1.68c.32-1.51.24-2.95-.02-4.4-.16-.86-.39-1.73-.64-2.6-.5-1.8.02-3.87-.16-5.79-.16-1.82-.16-7.11.21-8.97.19-.9.25-1.8.36-2.71.27-2.24-.61-3.27-2.89-3.4-3.92-.25-7.85-.51-11.77-.73-3.78-.2-6.6-2.12-9-4.87-2.13-2.43-4.36-4.77-6.42-7.26a3.15 3.15 0 0 1-.54-2.38c.44-1.98 1.2-3.9 1.73-5.86.55-2.03 1.75-3.07 3.9-3.1 10.96-.13 21.95-.86 32.87-.3 9.57.5 19.11 2.14 28.57 3.8 9.45 1.67 18.47 4.87 27.46 8.14.13 3.87.68 34.66.25 53.45h.21a65.28 65.28 0 0 0-13.87 6.05c-.53.31-1.12.51-1.77.8-.08-1.38-.03-2.63-.26-3.82-.13-.68-.58-1.57-1.12-1.8-.47-.2-1.41.27-1.9.71-5.96 5.48-13.08 9.15-20.05 13.06-.54.3-1.2.38-1.8.56l-1.7.97-.05.03c-.9.7-1.85 1.28-2.83 1.76-2.94 1.47-6.16 2.08-9.48 2.34-.55.05-1.43-.93-1.75-1.62-2.76-5.99-5.42-12.02-8.14-18.04-1.55-3.43-3.14-6.85-4.7-10.26m-1.36-2.5l-.22.05c-1.66.27-3.45.03-4.62-.8l-1.12-1.8-.54-3.82h6.44l.19-.03 2.32-.4 1.05-.14c.09 1.54.71 3.32.15 4.57-.15.32-.35.61-.6.87a4.3 4.3 0 0 1-1.4.98c-.5.24-1.07.41-1.65.53m-9.16-9.76c-.6-.07-1.12-.95-1.67-1.45-1.98-1.2-1.58-3.18-1.84-4.94l13.9-1.21c2.21 1.61 2.44 4.04 2.02 6.34-.15.82-1.86 1.9-2.87 1.92a74.6 74.6 0 0 1-9.54-.66m-7.03-9.73c-.2 0-.38-.08-.57-.17-.19-.09-.38-.2-.57-.28l-1.78-1.57a25 25 0 0 1-1.11-2.46c-.69-1.82-.96-3.7-.08-5.75.13-.32.26-.66.44-.95.1-.17.3-.27.51-.45 6.43 4.7 13.94 4.36 21.34 4.54.67-.08 1.32-.13 1.58.24.05.07.08.16.1.27.02.11.02.24 0 .4-.03.15-.07.32-.14.52-.04.52-.08.98-.13 1.39-.04.4-.1.76-.17 1.07-.44 1.87-1.42 2.19-4.38 2.86-5.02 1.15-10.03.49-15.04.34M62.2 44.97c3.04 2.38 6.14 4.69 9.34 6.83 1.19.8 1.55 1.3 1.19 2.8-1.4 5.77-2.55 11.6-3.9 17.93-2.35-1.18-5.08-2.24-7.46-3.82a72.04 72.04 0 0 1-2.7-1.9l-.3-.2-.32-.24-.98-.75-.5-.4-1.04-.83-.7-.58-.16-.14-.59-.5-1.25-1.1-.43-.4-.73-.68A82.25 82.25 0 0 1 39.6 46.6c-5.36-8.09-10.3-16.44-15.52-24.62-2.41-3.78-5.05-7.42-7.59-11.11l.2-.71c4.36 1.68 8.99 2.87 13 5.15 5.7 3.23 11.01 7.15 16.43 10.87l.6.42 2.64 1.82.02.01c4.84 3.34 9.66 6.7 14.5 10.05l2.38 1.63c-1.43.62-2.51 1.06-3.57 1.55-1.87.87-2.12 2.04-.49 3.32m-4.38 26.37C43 60.93 32.14 47.16 23.5 31.4A110.6 110.6 0 0 0 4.73 6.59C3.96 5.82 3.5 4.75 2.9 3.82 2.88 2.18 4.17 2.6 4.97 2.67c3.42.31 6.83.8 10.25 1.14C27.9 5.02 40.5 6.77 52.77 10.23c8.96 2.51 17.62 5.84 25.6 10.66 2.35 1.42 4.27 3.55 6.39 5.35l.29 2.6c-.33 3.56-1.85 6.61-4.02 9.36a101.66 101.66 0 0 1-4.77 5.63c-3.52 3.84-7 3.8-11.3-.22 1.49-.61 2.91-1.12 4.26-1.78.57-.28 1.33-.85 1.37-1.34.05-.5-.58-1.24-1.1-1.59-1.6-1.07-3.21-2.12-4.83-3.17l-4.86-3.12-1.65-.91 2.35-5.62-2.35 5.62-7.55-5.53a784.6 784.6 0 0 1-7.52-5.56c-7.89-5.92-16.38-10.57-26.1-12.67a9.87 9.87 0 0 0-1.95-.18c-.67-.01-1.33 0-2-.02-.71.43-.97.88-.97 1.34 0 .2.05.39.13.59.16.4.46.8.76 1.2 2.48 3.31 5.16 6.5 7.39 9.99 5.27 8.22 10.2 16.66 15.51 24.86 6.36 9.83 14.09 18.44 23.89 24.98 2.43 1.62 5.26 2.63 7.86 4 .54.29.89.92 1.09 1.66-4.14-.77-7.59-2.72-10.87-5.02m29.08-31.6l.9-3.72.6-3.8.01-.07.57-.45h-.05l.53-2.18c.17-.73.36-1.45.57-2.17 1.56-5.19 3.99-9.92 7.76-13.85 1.23-1.28 1.55-2.42.72-4.12-.81-1.66-1.17-3.55-1.86-5.77 1.66.26 2.86.49 4.07.62 7.33.8 14.68 1.53 22 2.39 6.25.73 11.6 3.76 16.86 6.9 4.22 2.52 4.2 2.56 5.03-2.3.04-.2.13-.4.29-.88.87 1 1.66 2.05 2.4 3.1 2.2 3.19 3.94 6.58 5.79 9.9l1 2.88c-.55.42-1.05 1.06-1.68 1.23-12.05 3.22-22.56 8.94-30.55 18.75a35.4 35.4 0 0 0-7.36 15.71 21.88 21.88 0 0 1-8.01-4.68c-5.44-4.93-8.02-11.22-8.6-18.44-.38-4.6-.6-4.74-4.56-2.31-2.18 1.34-4.23 2.9-6.77 4.67l.34-1.4m102.09 39.3c3.49-2.6 7.37-4.68 10.81-7.34a86.55 86.55 0 0 0 22.37-26.12c7.53-13.27 14.03-27.13 22.47-39.89 1.56-2.35.65-3.82-2.22-3.58-9.04.76-18.14 1.24-27.08 2.63-14.08 2.2-27.78 5.95-40.65 12.31-3.03 1.5-6.03 3.12-9.2 4.21-5.22 1.8-10.08 1.48-13.2-4.56-1.89-3.66-4.55-6.92-6.95-10.31-.38-.55-1.18-.8-1.8-1.2-.38.68-.97 1.31-1.12 2.04-.3 1.4-.36 2.84-.54 4.5-.79-.4-1.3-.63-1.75-.92a50.24 50.24 0 0 0-23.23-7.6c-6.78-.53-13.52-1.63-20.28-2.56-1.81-.25-2.44.73-2.25 2.15.32 2.35.98 4.65 1.44 6.98.12.62.28 1.43-.01 1.89-2.7 4.24-5.48 8.43-8.32 12.76.33.13.09.1-.05-.03-8.02-7.25-17.78-11.22-27.78-14.7C41.86 3.48 23.2 2.13 4.68.02 2.6-.2 1.16.8.33 2.67c-.82 1.85 0 3.22 1.31 4.5A112.2 112.2 0 0 1 22.22 34.3c6.53 11.97 14.63 22.75 24.9 31.7 5.16 4.5 11.06 8.18 16.67 12.17 1.69 1.2 2.95 2.55 3.22 4.7.39 3.18-.75 5.82-2.87 8.05-2.2 2.33-2.25 2.38.32 4.2.22.15.41.36.62.55-2.76 2.73-4.13 3.22-7.65 2.87-4.69-.46-9.38-.87-14.07-1.35-2.27-.23-3.75.66-4.7 2.73-1.29 2.81-3.02 5.47-3.96 8.38-1.31 4.03-3.5 6.17-7.93 5.83-2.17-.16-3.73 1.15-4.43 3.25-.93 2.8-1.93 5.6-2.6 8.46a5.35 5.35 0 0 0 .67 3.53c1.23 2.12 2.85 4 4.17 6.08.34.53.5 1.53.23 2.04-2.07 3.91-1.6 7.64.2 11.53 1 2.13 2.2 3.62 4.59 3.74 1.66.1 1.94.92 2.08 2.41.26 2.94 1.02 5.93 4.12 7.07 1.8.66 2.08 1.65 2.15 3.23.14 2.88.95 5.8 3.88 6.7 3.38 1.05 4.73 3.33 5.74 6.32 3.12 9.22 3.97 6.98-2.27 15.02-4.77 6.15-8.09 12.86-8.93 20.64-.96 8.79-.24 17.35 4.53 25.07 7.85 12.71 19.74 18.12 34.3 19.01 17.45 1.07 34.27-1.86 50.62-7.58 13.23-4.64 26.6-8.67 40.4-11.19 8.13-1.48 16.36-2.59 24.54-.95 3.91.79 7.56 2.9 11.35 4.37.6.23 1.4.4 1.93.19.37-.15.67-1.08.59-1.59-.75-4.5-1.24-9.1-2.5-13.46-2.28-7.98-5.1-15.8-7.53-23.73-.4-1.29-.36-3 .17-4.22 3.2-7.28 6.64-14.44 9.9-21.68a9.26 9.26 0 0 1 4.51-4.82c4.12-1.94 5.86-5.23 5.93-9.64 0-.53.32-1.35.72-1.52 3.04-1.37 3.85-4.16 4-6.95.12-2.42 1.07-3.87 2.76-5.44 3.82-3.55 4.97-9.34 2.7-12.87-.74-1.17-.68-2-.06-3.05 2.43-4.1 3.56-8.25 2.43-13.2-1.52-6.6-1.19-6.68-7.87-7.43-.14-.02-.28-.06-.41-.05-1.26.12-1.84-.48-2.25-1.67-1.33-3.85-2.87-7.63-4.2-11.49-.67-1.96-1.9-2.91-3.9-3.33-5.21-1.11-10.26.03-15.26 1.1-2.95.64-4.65-.48-6.33-2.61l1.72-1.92c1.4-1.61 1.33-2.07-.48-3.16-3.04-1.81-3.96-4.03-2.6-7.31a9.73 9.73 0 0 1 2.9-4"/>
<path fill="#c7616c" fill-rule="nonzero" d="M150.35 122.93a256.84 256.84 0 0 0-14.6 5.13c-.13 4.81-.61 32.05-.29 50.45 11.1-.72 21.94.94 32.34 5.12 1.16.46 2.38.8 3.57 1.19l17.1-.08c4.01-.02 4.59-.3 5.67-4.15.94-3.36 1.54-6.82 2.3-10.23a5.48 5.48 0 0 1-.75-5.32c.36-1.02.93-2.02 1.57-3.02.4-.65.72-1.8.43-2.4a8.31 8.31 0 0 1-.05-7.32c.5-1.14.65-2 .1-3.27a6.43 6.43 0 0 1 5.68-9.1c2.74-.11 5.48-.3 8.22-.37 2.9-.09 5.43-1.12 7.21-3.37a130.1 130.1 0 0 0 6.09-8.57c.43-.64.64-1.6.56-2.38-.24-2.23-.76-4.43-1.03-6.65-.2-1.57-1.08-2.18-2.5-2.29-2.25-.16-4.5-.49-6.73-.45-10.76.2-21.53.23-32.27.83-11.11.62-22 2.98-32.62 6.25M129.71 130.3c-1.88.7-3.63 1.18-5.7.45-1.11-.4-2.23-.8-3.35-1.22.28 4.54.6 30.52.4 51.2a78.8 78.8 0 0 1 10.74-1.9c-.18-19.9.11-44.1.39-49.44l-2.48.92M55.63 174.8a55.14 55.14 0 0 0 2.48 5.97 83.8 83.8 0 0 0 7.3 11.75c2.35 3.23 6.26 3.76 9.94 4.45l1.44.28c.6-.18 1.26-.26 1.8-.56 6.97-3.91 14.1-7.58 20.05-13.05.48-.45 1.43-.91 1.9-.72.54.23 1 1.12 1.12 1.8.23 1.2.18 2.44.26 3.82.64-.29 1.24-.49 1.77-.8a65.27 65.27 0 0 1 13.87-6.04l-.21-.01c.43-18.8-.12-49.58-.25-53.45-8.99-3.27-18-6.47-27.46-8.14-9.46-1.66-19-3.3-28.57-3.8-10.92-.56-21.91.16-32.87.3-2.15.03-3.35 1.07-3.9 3.1-.54 1.97-1.3 3.88-1.73 5.86-.16.73.07 1.8.54 2.38 2.06 2.48 4.29 4.83 6.41 7.26 2.4 2.75 5.23 4.66 9 4.87 3.93.21 7.86.48 11.78.72 2.28.14 3.16 1.17 2.89 3.4-.11.91-.18 1.83-.36 2.72-.37 1.86-.37 7.15-.2 8.97.17 1.92-.35 3.99.15 5.78.25.88.48 1.75.64 2.62.26 1.44.34 2.88.02 4.38.77 2.03 1.45 4.1 2.19 6.13"/>
<path fill="#fffab6" fill-rule="nonzero" d="M189.07 203.08a41.96 41.96 0 0 0-3.07-3.63 52.4 52.4 0 0 0-2.3-2.31c-6.41-6.03-14.73-10.9-22.86-12.84l-2.13.2-2.14.17c-.95.08-1.9.16-2.85.27a46.44 46.44 0 0 0-4.21.65c-5.7 1.23-11.3 2.95-16.92 4.8 3.98 1.76 8.03 2.94 11.4 6-12.16 2.87-22.45 8.32-29.5 18.95 4.03.23 8.06.34 12.07.71 3.96.37 7.72 1.4 11.07 4.7-2.45.78-4.47 1.3-6.4 2.06-7.46 2.88-14.9 5.8-22.32 8.78-5.73 2.3-11.3 5.05-17.14 7.03a53.22 53.22 0 0 1-28.03 1.62c-9.01-1.8-16.26-6.28-22.34-12.96-.86-.94-1.75-1.86-2.63-2.79l.68 3.66c1.77 9.56 7.45 16.37 15.3 21.59 7.16 4.75 15.35 5.58 23.64 6 15.94.84 31.3-2.24 46.2-7.42 16.2-5.62 32.53-10.6 49.61-12.58 8.81-1.02 17.6-1.23 25.8 3.16.33.18.75.21 1.36.38-1.36-10.14-5.61-18.73-11.81-26.54 1.06.4 2.06.88 2.89 1.56.88.73 1.6 1.66 2.6 2.71a22.7 22.7 0 0 0-2.74-8.9c-.89-1.7-1.98-3.38-3.23-5.03"/>
<path fill="#fde98e" fill-rule="nonzero" d="M134.53 106.07c-2.83 1.77-6.07 2.88-9.14 4.22-.34.15-.87.06-1.23-.1-2.3-1.03-4.62-2.04-6.87-3.18-4.8-2.42-3.1-7.78.08-9.23 2.44-1.12 5.15-1.65 7.74-2.45 3.74.38 6.93 1.45 9.6 3.93 2.35 2.2 2.5 5.13-.18 6.81m40.12-34a24.71 24.71 0 0 0-1.14 3.83c-1.27 6.23-3.93 11.54-9.63 14.9-2.4 1.18-4.7 2.7-7.23 3.45-4.58 1.35-10.6-1.34-13.1-5.45-2.2-3.6-3.6-7.44-2.96-11.73.3-1.92.81-3.81 1.23-5.71.3-2.3.93-4.42 2-6.3a13.03 13.03 0 0 1 3.53-4.05c4.43-3.35 11.6-3.26 16.91 0a68.7 68.7 0 0 0 7.93 4.37c1.82.8 3.92.98 6.17 1.5-1.25-10.34-4.3-19.28-10.2-27.12a4.08 4.08 0 0 0-.67-.66l-.44-.36-.3-.25a7.97 7.97 0 0 0-.4-.06c-.42-.05-.84-.09-1.23-.23-7.36-2.73-14.64-1.47-21.84.6-7.5 2.17-14.03 6.23-20.14 10.98a.66.66 0 0 1-.24.21l-.4.43-.03.02-.38.43a29.18 29.18 0 0 0-3.89 7.25 23.86 23.86 0 0 0-1.17 4.83c-.23 1.69-1.1 2.2-2.62 1.62-1.57-.6-3.16-1.17-4.65-1.93-5.37-2.74-9.06-7.16-12.04-12.26-.57-.67-1.18-1.31-1.69-2.02-1.94-2.67-3.98-3.32-7.07-2.19-.7.26-1.42.5-2.13.74l-2.28.27c-3.22-.4-4.93 2.27-7.3 3.6a23.85 23.85 0 0 0-1.9 3.98 34.03 34.03 0 0 0-1.25 4.2c-.68 2.89-1.09 5.93-1.57 9.12 2.23-.59 4.14-.8 5.77-1.58 3.1-1.48 6.02-3.34 9.06-4.96 7.62-4.05 18.97-2 20.66 9.1 2.31 7.3 2.37 14.43-2.82 20.57-3.07 3.64-7.32 5.19-12.15 4.01-2.36-.57-4.79-1.24-6.23-3.54-2.7-1.2-4.73-3-6.25-5.23a18.66 18.66 0 0 1-2.18-4.47c-.9-2.65-1.46-5.43-2.32-8.1-.6-1.87-1.52-3.55-3.6-4.1-1.97 7.96-1.12 16.42-6.44 23.3.51.26.87.47 1.24.65 2.22 1.13 2.3 1.87.37 3.44-.96.79-1.97 1.52-3.07 2.36.39.16.56.26.74.3a223.95 223.95 0 0 1 43 14.2c5.64 2.5 11.09 5.45 16.67 8.1.13.06.3.08.46.07.46-.02 3.34-.84 3.84-.95.05 0 30.06-13.3 33.17-14.64a109.5 109.5 0 0 1 12.44-4.28c4.02-1.1 8.05-2.14 12.18-3.24-.96-1.2-2.42-2.24-2.53-3.4-.1-1.11 1.21-2.35 1.88-3.5-6.57-6.5-5.5-15.7-7.84-23.8-2.13.52-3.25 1.9-3.93 3.68M80.02 217.76a20.95 20.95 0 0 0 8.63-8.92c2.75-5.48 7.43-8.03 13.52-8 2.13 0 4.26.13 6.4.2l.3.75c-1.7 1.9-3.27 3.94-5.14 5.66-3.95 3.67-7.85 7.44-12.15 10.65-3.09 2.3-6.93 3-10.86 2.1-.48-.12-.96-.24-1.42-.4-.25-.08-.47-.24-1.2-.63.85-.63 1.35-1.08 1.92-1.41M50.09 233c5.06 3.62 10.8 5.23 16.81 6.3 11.4 2 22.09-.52 32.43-5.04 11.21-4.9 22.25-10.2 34.03-13.67.25-.07.48-.23 1.26-.62-7.6-3.66-15.33-2.94-23.56-3.16 4.02-5.3 7.88-10.14 12.95-13.42 5.01-3.23 10.74-5.37 16.24-8.04-1.81-.76-3.93-1.69-6.09-2.53-1.24-.48-2.56-.77-3.8-1.25-.52-.2-.93-.65-1.4-1 .48-.35.91-.88 1.44-1.03 6.54-1.93 13.09-3.82 19.64-5.67 1.73-.49 3.5-.83 5.26-1.24a77.85 77.85 0 0 0-11.21-1.47 72.09 72.09 0 0 0-8.3 0 74.11 74.11 0 0 0-24.34 5.73c-3.24 1.35-6.25 3.22-9.42 4.75-.92.44-2.02.52-3.04.76-.07-1.05-.2-2.1-.19-3.15.02-.7.24-1.4.44-2.52-.66.48-.94.67-1.2.89-7.97 6.4-16.88 11.2-26.23 15.13-3.35 1.41-7.19 1.97-10.85 2.24-3.98.28-7.62-3.1-7.74-6.78 1.06 2.53 2.94 3.32 5.51 3.81l-5.52-12.16c-1.07.83-1.95 1.4-2.7 2.12-4.1 3.87-7.44 8.3-9.38 13.61-1.8 4.91-3.06 9.97-2.18 15.29 2.67 5 6.55 8.85 11.14 12.12"/>
<path fill="#dfd5dc" fill-rule="nonzero" d="M129.18 124.17c-1.98 1.01-3.73 1.1-5.76-.03-10.28-5.74-21.13-10.24-32.23-14.12-10.61-3.72-21.29-7.31-32.58-8.51-5.02-.54-10.04-1.19-15.07-1.68-.72-.08-1.93.19-2.19.67-2.16 4.15-4.15 8.39-6.3 12.85 1.15 0 1.85.03 2.54 0 16.52-.74 32.9.17 49.18 3.33 12.77 2.47 24.94 6.84 37.14 11.17 1.85.66 3.45.6 5.27-.12 5.36-2.12 10.72-4.29 16.2-6.08 21.45-7.02 43.54-9.33 66.01-8.6 1.05.04 2.09.01 3.56.01-1.64-4.37-3.13-8.45-4.72-12.5-.19-.47-.91-.95-1.44-1.03-1.73-.25-3.53-.62-5.23-.41-12.33 1.5-24.42 4.08-36.11 8.36a344.23 344.23 0 0 0-38.27 16.7"/>
<path fill="#fcb9c4" fill-rule="nonzero" d="M204.87 23.92l-.54.3.47-.25.07-.05"/>
<path fill="#ffe9a5" fill-rule="nonzero" d="M213.54 24.45l-10.48 9.68s3.72-1.91 9.57-1.91c0 0-4.61 6.64-10.02 8.9l3.72 2.13-2.93 2.03 3.83 1.58-11.15 5.06s3.72 1.7 8.9.68c0 0-1.92 5.18-6.64 8-3.3 1.95.06 1.79 2.4 1.5-.5.5-1.02.98-1.55 1.46 9.1-8.2 15.53-18.35 20.81-29.35 2.88-6 5.87-11.97 8.88-17.91.86-1.68 2-3.21 3-4.8l.24-.24-.41.06c-.28.04-.57.03-.82.13-7.1 2.84-14 6.04-20.72 9.58l-5.2 6.23 8.57-2.81z"/>
<path fill="#fcb9c4" fill-rule="nonzero" d="M210.17 21.03a220.47 220.47 0 0 1 0 0M192.18 31.65l-.78.52.05-.03.73-.5M196.2 29.07l1.83-1.13-1.82 1.13"/>
<path fill="#fde98d" fill-rule="nonzero" d="M100.16 25.34c1.36-.37 2.7-.78 4.08-1.05 1.79-.36 2.16.08 1.7 1.86-1.83 7.06.27 13.3 3.98 19.2.1.16.3.26.74.6 8.57-12.33 19.97-20.3 35.11-22.18-.46-3.83-.45-3.85 3.15-2.36 1.4.59 2.78 1.28 4.17 1.92-1.85-3.31-3.58-6.7-5.8-9.88a38.03 38.03 0 0 0-2.39-3.1c-.16.48-.25.67-.29.87-.84 4.86-.81 4.82-5.03 2.3-5.27-3.14-10.61-6.17-16.85-6.9-7.33-.86-14.68-1.59-22.02-2.4-1.2-.12-2.4-.35-4.06-.6.7 2.2 1.05 4.1 1.86 5.76.83 1.7.51 2.84-.72 4.12-3.77 3.94-6.2 8.66-7.76 13.85-.21.72-.4 1.44-.57 2.17l-.53 2.18a45.72 45.72 0 0 1 6.7-4.55 21.72 21.72 0 0 1 4.53-1.81"/>
<path fill="#fde98d" d="M88.93 31.7z"/>
<path fill="#fcb9c4" fill-rule="nonzero" d="M52.38 61.65l-.71-.66.73.69-.02-.03zM55.53 64.39l-.7-.59.7.59"/>
<path fill="#ffe9a5" fill-rule="nonzero" d="M44.67 49.1h5.86c-6.6-3.3-8.41-7.95-8.41-7.95l4.05-.15-3.6-3.15 4.35-.9a24.37 24.37 0 0 1-7.65-7.06l8.4.6-7.8-5.85 6.25 1.53c-5.42-3.72-10.73-7.64-16.43-10.87-4.01-2.28-8.64-3.47-13-5.15l-.2.7c2.54 3.7 5.18 7.34 7.59 11.12C29.3 30.14 34.24 38.5 39.6 46.59a82.35 82.35 0 0 0 9.26 11.61c-3.07-4.72-4.19-9.1-4.19-9.1"/>
<path fill="#fcb9c4" fill-rule="nonzero" d="M58.38 66.6l-.33-.23.33.23"/>
<path fill="#fce88d" fill-rule="nonzero" d="M238.6 4.8l-.83.06-.45.04-2.01.12-1.4.06c-6.14.72-12.33 1.14-18.42 2.2-17.3 3-34 7.78-49 17.34-.89.56-1.74 1.21-2.46 1.96-2 2.1-1.97 2.97 0 5.2l9.45 10.71c2.92 3.33 8.52 3.17 11.5-.41-.52-.36-1-.78-1.54-1.06-.8-.42-1.7-.68-2.49-1.14-.6-.36-1.48-.89-1.52-1.4-.06-.57.58-1.38 1.13-1.8 10.25-7.72 21.06-14.6 32.66-20.08 7.6-3.59 15.54-6.44 23.32-9.62l3.65-1.73-1.58-.45"/>
<path fill="#fffab6" fill-rule="nonzero" d="M97.88 38.8c.59 7.21 3.17 13.5 8.6 18.43a21.9 21.9 0 0 0 8.02 4.68 35.38 35.38 0 0 1 7.36-15.71c7.99-9.8 18.5-15.53 30.55-18.75.63-.17 1.13-.8 1.69-1.23l-7-4.39c1.28 3.59-.59 3.43-2.46 3.6-6.07.57-11.48 3.04-16.74 5.96-6.75 3.75-11.7 9.34-16.1 15.51-1.24 1.75-1.63 1.66-2.81-.12a30.14 30.14 0 0 1-5.18-16.65c-.02-1.36.28-2.72.47-4.43-6.15 1.54-11.56 3.57-15.19 8.75-.38.56-.85 1.05-1.28 1.57l-.91 3.73-.34 1.4c2.54-1.77 4.59-3.33 6.77-4.67 3.96-2.43 4.18-2.3 4.55 2.31"/>
<path fill="#e8be74" fill-rule="nonzero" d="M63.74 240.24c9.55 1.91 18.9 1.47 28.03-1.62 5.84-1.98 11.4-4.73 17.14-7.03 7.42-2.98 14.86-5.9 22.32-8.78 1.93-.75 3.95-1.28 6.4-2.06-3.35-3.3-7.11-4.33-11.07-4.7-4.01-.37-8.04-.48-12.08-.7 7.06-10.64 17.35-16.09 29.5-18.96-3.36-3.06-7.4-4.24-11.39-6 5.61-1.85 11.21-3.57 16.92-4.8.46-.1.92-.2 1.4-.27.93-.16 1.87-.28 2.81-.38l2.85-.27 2.14-.17 2.14-.2-2.56-.77-3-.9c-1.74.41-3.52.75-5.25 1.24-6.55 1.85-13.1 3.74-19.63 5.67-.54.15-.97.68-1.44 1.04.46.34.87.8 1.39.99 1.24.48 2.56.77 3.8 1.25 2.16.84 4.28 1.77 6.09 2.53-5.5 2.67-11.23 4.8-16.24 8.05-5.07 3.27-8.93 8.1-12.95 13.42 8.23.21 15.97-.5 23.56 3.15-.78.39-1 .55-1.26.62-11.78 3.48-22.82 8.77-34.03 13.67C89 238.8 78.31 241.3 66.9 239.3c-6.01-1.06-11.75-2.67-16.81-6.29-4.59-3.27-8.47-7.13-11.14-12.12l-.18 3.61c.88.93 1.77 1.85 2.63 2.8 6.08 6.67 13.33 11.14 22.34 12.95"/>
<path fill="#e5a86e" fill-rule="nonzero" d="M67.6 74.7c-2.6-1.37-5.43-2.38-7.86-4-9.8-6.54-17.53-15.16-23.89-24.98-5.3-8.2-10.24-16.64-15.51-24.86-2.23-3.48-4.91-6.68-7.4-10-.3-.4-.59-.8-.75-1.2-.08-.2-.13-.39-.13-.58 0-.46.26-.9.98-1.35L2.9 3.82c.6.93 1.06 2 1.83 2.77a110.57 110.57 0 0 1 18.76 24.8C32.14 47.17 43 60.93 57.82 71.34c3.28 2.3 6.72 4.26 10.87 5.03-.2-.74-.55-1.37-1.09-1.66"/>
<path fill="#f8f1ed" fill-rule="nonzero" d="M148.1 67.53a8.17 8.17 0 0 1 11.86.25c2.85 3.02 3.98 6.72 4 10.8.02 3.62-.8 6.98-3.02 9.9-3.55 4.71-9.25 4.97-13.22.61-5.01-5.5-4.83-16.25.37-21.56m-4.55 21.27c2.52 4.1 8.53 6.8 13.1 5.45 2.54-.74 4.84-2.27 7.24-3.45.43-.81.8-1.66 1.3-2.44 2.44-3.87 2.18-8.17 2.15-12.48-.05-6.81-6.7-11.47-11.94-11.83-1.5-.1-2.92-.04-4.26.2a13.18 13.18 0 0 0-3.95 1.37 11.7 11.7 0 0 0-2.88 2.21c-.93.98-1.77 2.15-2.48 3.53-.42 1.9-.94 3.79-1.22 5.7-.65 4.3.74 8.13 2.94 11.74M91.57 67.97a8.1 8.1 0 0 1 11.18 1.14 15.52 15.52 0 0 1 3.6 10.76c-.11 4.77-1.4 9.06-5.48 11.96-3.3 2.34-7.1 1.96-10.05-.76-6.1-5.61-5.7-17.92.75-23.1m1.48 27.25c4.83 1.18 9.08-.37 12.15-4 5.19-6.15 5.13-13.28 2.83-20.58-.3-.14-.7-.2-.85-.43-4.7-7.04-17.13-6.87-22.31 1.08-2.56 3.92-1.82 8.24-1.54 12.46.12 1.88.67 3.62 1.56 5.22a15.7 15.7 0 0 0 1.93 2.72c1.44 2.29 3.87 2.96 6.23 3.53"/>
<path fill="#955996" fill-rule="nonzero" d="M190.86 186.02c-4.98 0-9.96-.03-14.95.05-.69 0-1.38.51-2.07.8a53.56 53.56 0 0 1 10.8 7.53 64.52 64.52 0 0 1 5.71 5.85l12.23-26.82-4.54-1.5c-1.13 3.8-2.28 7.6-3.4 11.4-.57 1.9-1.86 2.7-3.78 2.7"/>
<path fill="#e5a86e" fill-rule="nonzero" d="M220.34 43.66c4.49-8.04 8.64-16.28 13.1-24.35 2.7-4.88 5.7-9.6 8.8-14.8l-1.08.1-2.55.2 1.58.44-3.65 1.73c.5 1.46.13 2.6-.8 3.9-4.3 6-8.56 12.05-11.2 19.05a98.75 98.75 0 0 1-12.1 22.42c-5 7.04-10.6 13.57-18.2 17.93-3.22 1.83-6.78 3.06-10.16 4.62-.54.25-.96.75-1.44 1.13l.5.63c6.19-2.13 12.28-4.5 17.37-8.79a86.45 86.45 0 0 0 19.83-24.2"/>
<path fill="#955996" fill-rule="nonzero" d="M60.98 200.73c.32.69 1.2 1.67 1.75 1.62 3.32-.26 6.54-.87 9.48-2.34.98-.48 1.93-1.07 2.83-1.76-5.94-.42-10.38-3.22-13.54-8.28-3.61-5.78-6.82-11.73-8.57-18.38a.6.6 0 0 0-.08-.19 1.33 1.33 0 0 0-.33-.32c-.27-.2-.63-.38-.93-.58l-.21-.15-1.59 1.02-1.66 1.06c1.57 3.4 3.16 6.83 4.71 10.26 2.72 6.02 5.38 12.05 8.14 18.04"/>
<path fill="#e8be74" fill-rule="nonzero" d="M104.28 25.7c-.2 1.7-.49 3.07-.47 4.44A30.14 30.14 0 0 0 109 46.78c1.18 1.78 1.57 1.87 2.81.12 4.4-6.17 9.35-11.75 16.1-15.5 5.26-2.93 10.67-5.4 16.74-5.96 1.87-.18 3.74-.02 2.47-3.61l6.99 4.4-1.01-2.9c-1.4-.64-2.76-1.33-4.17-1.92-3.6-1.5-3.61-1.47-3.15 2.36-15.14 1.88-26.54 9.85-35.1 22.19-.44-.35-.65-.45-.75-.61-3.71-5.9-5.81-12.14-3.98-19.2.46-1.78.09-2.23-1.7-1.87-1.37.28-2.72.7-4.08 1.06a21.87 21.87 0 0 0-4.53 1.81 45.8 45.8 0 0 0-6.7 4.55h.05l-.57.45v.07l-.6 3.8c.43-.52.9-1.01 1.29-1.56 3.62-5.19 9.03-7.22 15.18-8.76"/>
<path fill="#e7af72" fill-rule="nonzero" d="M147.45 36.3c5.42-.89 10.9-1.93 16.38-.1.23.07.57-.17.87-.27-1.78-1.35-3.56-2.7-5.33-4.08-2.54-1.98-5.33-2.28-8.36-1.34-9.26 2.87-17.66 7.21-24.46 14.29.45-.06 1 .03 1.33-.19 6.03-3.95 12.41-7.12 19.57-8.3"/>
<path fill="#fbe68c" fill-rule="nonzero" d="M30.65 148.16c1-.09 2-.16 3-.26a44.7 44.7 0 0 0 5.88-.86c3.2-.74 6.17-2.42 9.24-3.68-7.4-.18-14.9.17-21.34-4.54-.2.18-.4.28-.51.45-.18.3-.3.63-.44.95-.88 2.05-.6 3.93.08 5.75.3.83.7 1.64 1.11 2.46 1-.1 1.99-.2 2.98-.27M212.44 142.31l-4.2.1-4.2.14a5.56 5.56 0 0 0 .75 2.1c.64.92 1.65 1.47 3.07 1.66 3.53.47 7.06 1.02 10.58 1.57.68.1 1.34.37 2.02.56a12.72 12.72 0 0 0 2.01-2.49c.53-.86.9-1.74 1.11-2.61.43-1.74.21-3.45-.73-4.9-3.08 2.3-6.48 3.8-10.4 3.87M203.54 152.29c1.31 4.77 5.09 6.07 9.38 6.68.42.06.8.38 1.21.58l.8.03.57-.1c1.37-1.32 1.76-2.9 1.88-4.6.04-.57.05-1.15.06-1.74l-9.57-.61c-1.44-.1-2.89-.16-4.33-.24"/>
<path fill="#e8be74" fill-rule="nonzero" d="M165.12 38.2c.39.14.8.18 1.22.23l.42.06-.29-.36-1.78-2.2c-.29.1-.63.35-.87.27-5.47-1.83-10.95-.79-16.37.1-7.16 1.2-13.54 4.36-19.57 8.31-.34.22-.88.13-1.33.19l-3.41 4.98c6.11-4.75 12.64-8.81 20.14-10.98 7.2-2.07 14.48-3.33 21.84-.6"/>
<path fill="#fbe68c" fill-rule="nonzero" d="M39.35 158.5l2.67-.63 4.18-1.04 1.35-1.48-.3-.94.76-1.83-13.9 1.21c.26 1.76-.15 3.75 1.84 4.94l2.77-.34.63.11"/>
<path fill="#801a3c" fill-rule="nonzero" d="M52.84 171.4a.6.6 0 0 1 .09.19c1.75 6.65 4.95 12.6 8.57 18.38 3.16 5.06 7.6 7.85 13.54 8.28.02 0 .03-.02.05-.03l1.7-.97c-.48-.1-.96-.2-1.44-.28-3.67-.7-7.59-1.22-9.94-4.45a83.9 83.9 0 0 1-7.3-11.75 55.04 55.04 0 0 1-2.48-5.98c-.74-2.04-1.42-4.1-2.19-6.12l-2.06 1.68.21.15c.3.2.66.38.93.58.14.1.25.2.33.32"/>
<path fill="#fbe68c" fill-rule="nonzero" d="M205.6 162.22l-2.08.1a39.55 39.55 0 0 0-.62 2.54 5.47 5.47 0 0 0-.13 1.67c.04.3.13.54.27.75.57.83 2.03 1.1 4.85 1.48.82.12 1.6.43 2.4.64.32-.18.6-.38.82-.6.35-.32.6-.67.78-1.05.67-1.38.44-3.08.65-4.73l-6.46-.76-.48-.04M58.15 31.7l-7.55-5.53c-2.52-1.84-5.03-3.69-7.53-5.56-7.88-5.92-16.37-10.57-26.1-12.67a9.95 9.95 0 0 0-1.94-.18c-.67-.01-1.33 0-2-.02L2.9 3.82C2.88 2.18 4.17 2.6 4.97 2.67c3.42.31 6.83.8 10.25 1.14C27.9 5.02 40.5 6.77 52.77 10.23c8.96 2.51 17.62 5.84 25.6 10.66 2.35 1.42 4.27 3.55 6.39 5.35-.04-.01-.04-.01 0 0l.29 2.6c-.33 3.56-1.85 6.61-4.02 9.36a100.87 100.87 0 0 1-4.77 5.63c-3.52 3.85-7 3.8-11.3-.22 1.49-.6 2.91-1.12 4.26-1.78.57-.28 1.33-.85 1.37-1.34.04-.5-.58-1.24-1.1-1.59a345.96 345.96 0 0 0-7.87-5.12c-.6-.4-3.47-2.08-3.47-2.08z"/>
<path fill="#e5a86e" fill-rule="nonzero" d="M203.54 152.29c-.27.13-.75.4-.77.37-1.77-2.75-2.25-.26-2.73.79-1.51 3.27-.43 5.2 3.12 5.79 1.8.3 3.6.7 5.42.76.46.01.92 0 1.38-.03 1.4-.08 2.78-.3 4.17-.42-.4-.2-.79-.52-1.21-.58-4.3-.6-8.07-1.91-9.38-6.68"/>
<path fill="#801a3c" fill-rule="nonzero" d="M188.47 184.74l-17.1.07 1.26 1.05 1.21 1c.7-.28 1.38-.78 2.08-.8 4.98-.07 9.96-.05 14.94-.04 1.92 0 3.21-.8 3.77-2.68l3.41-11.41-1.6-1.57c-.76 3.41-1.36 6.87-2.3 10.23-1.08 3.85-1.66 4.13-5.67 4.15"/>
<path fill="#e7af72" fill-rule="nonzero" d="M207.3 147.6c-2.69-.4-4.25-1.97-4.67-4.65-.9-.12-1.44.07-1.77.44l-.15.19c-.1.14-.17.3-.22.46-.06.16-.1.34-.14.52l-.1.56c-.05.28-.09.56-.15.83-.32 1.49-.05 2.73 1.73 2.92 5 .55 9.99 1.07 14.99 1.5.75.06 1.55-.48 2.33-.73-1.87-.42-3.74-.92-5.64-1.25-2.05-.35-4.15-.5-6.22-.8M45.63 150.11c2.96-.67 3.94-1 4.37-2.86.08-.31.13-.67.18-1.08.05-.4.1-.86.13-1.38-.8.24-1.7.32-2.4.74-5.24 3.24-11.12 3.46-17 3.75-.25.02-.5.13-.73.28-.24.15-.48.32-.73.44.2.08.38.2.57.28.19.1.38.17.57.17 5.01.15 10.02.8 15.04-.34"/>
<path fill="#e5a86e" fill-rule="nonzero" d="M96.03 48.36c.52.7 1.12 1.35 1.69 2.02l-2.8-11.75a17.03 17.03 0 0 0-4.9 3.28c-1.37 1.36-2.46 3-3.2 5 .72-.24 1.44-.48 2.14-.74 3.1-1.13 5.14-.48 7.07 2.19M50.03 158.92c.42-2.3.2-4.73-2.02-6.34l-.76 1.83.3.94-1.34 1.48-4.2 1.04c-.88.22-1.77.42-2.66.63l-.66.37.03-.48-2.77.34c.55.5 1.07 1.38 1.67 1.45 3.17.36 6.36.7 9.54.66 1.01-.02 2.72-1.1 2.87-1.92"/>
<path fill="#e8be74" fill-rule="nonzero" d="M30.9 149.28c5.9-.29 11.77-.5 17.01-3.75.7-.42 1.6-.5 2.4-.74.07-.2.11-.38.13-.53a1.3 1.3 0 0 0 .01-.39.64.64 0 0 0-.1-.27c-.26-.37-.9-.32-1.58-.24-3.07 1.26-6.04 2.94-9.24 3.68-1.93.44-3.9.68-5.89.86-1 .1-1.99.17-2.99.25-1 .09-1.99.17-2.98.28l1.78 1.57c.25-.12.49-.3.73-.44.24-.15.48-.26.73-.28"/>
<path fill="#e5a86e" fill-rule="nonzero" d="M84.55 47.18c-.14-.62-.39-1.23-.4-1.85-.06-1.68-.03-3.37-.03-5.44a25.18 25.18 0 0 0-5.01 6.54 28.36 28.36 0 0 0-1.86 4.36c2.37-1.34 4.08-4.01 7.3-3.61M201.84 163.4l.34-1.83a2.31 2.31 0 0 0-1.39.17c-.17.1-.32.21-.45.35-.22.22-.4.5-.54.78-.26.5-.47 1.06-.75 1.5-1.89 2.91-.87 5.4 2.55 6 1.59.27 3.22.25 4.85.25.55 0 1.09.01 1.63.03-.42-.23-.83-.63-1.28-.67-4.87-.48-5.88-1.8-4.97-6.58"/>
<path fill="#e8be74" fill-rule="nonzero" d="M207.86 146.31c-1.42-.19-2.44-.74-3.07-1.67a5.61 5.61 0 0 1-.75-2.1 598.49 598.49 0 0 0-1.41.4c.43 2.69 1.98 4.26 4.66 4.65 2.07.3 4.17.45 6.23.8 1.89.33 3.76.83 5.64 1.25l1.3-1.2c-.68-.2-1.34-.46-2.02-.56-3.52-.55-7.05-1.1-10.58-1.57"/>
<path fill="#e5a86e" fill-rule="nonzero" d="M48.95 169.13c.33-.2.63-.43.88-.7.25-.26.45-.55.6-.87.56-1.25-.06-3.03-.15-4.57l-1.05.14c.06 1.68-.25 2.86-1.02 3.66a3.26 3.26 0 0 1-1.07.76 8.6 8.6 0 0 1-2.75.7c-.84.09-1.64.6-2.45.94 1.17.82 2.96 1.06 4.62.79l.22-.04a7.08 7.08 0 0 0 2.17-.8"/>
<path fill="#fbe68c" fill-rule="nonzero" d="M47.63 165.05c.79-1.05.22-1.5-.91-1.49h-6.44l.54 3.83c1.66-.27 3.35-.43 4.96-.87.7-.2 1.39-.85 1.85-1.47"/>
<path fill="#e8be74" fill-rule="nonzero" d="M203.04 167.28a1.7 1.7 0 0 1-.27-.75c-.05-.44 0-.98.13-1.67.13-.7.35-1.53.62-2.54l-1.34-.75-.35 1.83c-.91 4.78.1 6.1 4.97 6.58.45.04.86.44 1.28.67l1.54-.87.67-.38c-.8-.21-1.59-.52-2.4-.64-2.82-.39-4.28-.64-4.85-1.48M47.14 167.55a3.88 3.88 0 0 0 1.07-.76c.77-.8 1.08-1.98 1.02-3.66l-2.32.4-.2.03c1.14 0 1.7.44.92 1.49a3.94 3.94 0 0 1-1.85 1.47c-1.61.44-3.3.6-4.96.87l1.12 1.8c.81-.33 1.6-.85 2.45-.95a8.6 8.6 0 0 0 2.75-.69M87.48 213.42c.9-.94 1.5-2.19 2.1-3.36 2.43-4.63 6.04-7.43 11.42-7.66 1.66-.07 3.32-.27 4.98-.4l.3.56c-1.82 2-3.54 4.09-5.47 5.96-2.5 2.44-5.06 4.84-7.8 7-3.26 2.57-7 3.91-11.34 3.36 2.02-1.88 4.01-3.57 5.8-5.46m-6.75 6.77c3.93.91 7.78.2 10.86-2.1 4.3-3.2 8.2-6.97 12.16-10.64 1.86-1.72 3.43-3.76 5.13-5.66l-.3-.75c-2.14-.07-4.27-.2-6.4-.2-6.09-.03-10.77 2.52-13.52 8a20.95 20.95 0 0 1-8.63 8.92c-.57.33-1.07.78-1.92 1.41.73.4.95.55 1.2.64.46.15.94.27 1.42.38"/>
<path fill="#f8f1ed" fill-rule="nonzero" d="M118.94 99.73c-1.8.85-2.25 2.13-1.53 3.83.18-.25.33-.48.5-.68 1.94-2.37 2.13-2.34 4.85-.73.5.3 1.57.07 2.15-.29 1.5-.9 2.87-2.02 4.24-3.01-3.2-.86-6.77-.77-10.21.88"/>
<path fill="#fffab6" fill-rule="nonzero" d="M93.01 215.52a100.7 100.7 0 0 0 7.8-7c1.93-1.87 3.65-3.97 5.47-5.96l-.3-.57c-1.66.14-3.32.34-4.98.41-5.38.23-8.99 3.03-11.41 7.66-.62 1.17-1.22 2.42-2.11 3.36-1.8 1.88-3.79 3.58-5.8 5.46 4.32.55 8.07-.8 11.33-3.36"/>
<path fill="#fff" fill-rule="nonzero" d="M154.04 89.8c2.93.05 5.94-2.65 5.99-5.39a6.24 6.24 0 0 0-6-6.11 5.76 5.76 0 0 0-5.94 5.8c-.04 2.8 2.94 5.66 5.95 5.7"/>
<path fill="#dfd5dc" fill-rule="nonzero" d="M155.13 73.92c.88.14 1.8.1 2.48.13.33.98.45 1.79.87 2.39.16.22 1.43.06 1.45-.07.15-.7.06-1.45.04-2.18 0-.22-.15-.5-.05-.66 1.12-1.91-.42-3.35-1.53-3.57-1.4-.27-3.3.36-4.53 1.22-1.07.76-.2 2.49 1.27 2.74"/>
<path fill="#fff" fill-rule="nonzero" d="M96.44 90.96c3.07-.05 6.17-3.14 6.12-6.1-.04-3.27-2.78-5.78-6.26-5.74-3.4.03-6.22 2.74-6.17 5.92.04 2.92 3.3 5.97 6.31 5.92"/>
<path fill="#dfd5dc" fill-rule="nonzero" d="M98.85 76.05c2.5.04 3.52-.79 3.49-2.76-.02-1.59-1.02-1.96-2.4-1.97-2.66-.01-4.53 1-4.4 2.56.16 2.2 1.96 1.99 3.3 2.17M101.14 78.18c.48.4.95 1.1 1.44 1.1.46.03.95-.68 1.73-1.32-.83-.6-1.46-1.34-1.8-1.22-.56.18-.92.93-1.37 1.44"/>
<path fill="#e8be74" fill-rule="nonzero" d="M201.04 29.52l5.63-1.58-6.3 7.66s4.72-1.47 9-1.47c0 0-7.1 5.86-10.7 7.2l3.6 1.7-2.25 2.93 2.6.78-9.8 5.18s2.59 2.82 8.67 2.7c0 0-4.84 6.88-6.76 7.66-1.43.6 1.95 1.5 3.73 1.92l-.91.8a65.46 65.46 0 0 0 3.2-2.9c-2.35.29-5.7.45-2.42-1.5 4.73-2.82 6.65-8 6.65-8a15.84 15.84 0 0 1-8.9-.68l11.15-5.06-3.83-1.58 2.93-2.03-3.72-2.14c5.4-2.25 10.02-8.9 10.02-8.9-5.85 0-9.57 1.92-9.57 1.92l10.48-9.68-8.56 2.81 5.2-6.23c-1.79.94-3.55 1.9-5.3 2.9l-3.84 5.59zM204.8 23.96a10.34 10.34 0 0 0-.7.39c-.92.53-1.85 1.06-2.76 1.6l-1.08.64c1.5-.9 3.02-1.77 4.54-2.63M200.18 26.64a235.29 235.29 0 0 0-3.97 2.43c-1.35.84-2.7 1.7-4.03 2.58l-.73.49c2.87-1.9 5.78-3.74 8.73-5.5"/>
<path fill="#fffab6" fill-rule="nonzero" d="M187.34 44.6c-3.42 1.74-6.9 3.34-10.07 4.85l5.17 23.07c4.3-.82 11.22-4.23 15.1-7.52.32-.26.61-.53.92-.8-1.78-.42-5.17-1.32-3.73-1.92 1.92-.78 6.76-7.65 6.76-7.65-6.08.1-8.67-2.7-8.67-2.7l9.8-5.19-2.6-.78 2.26-2.93-3.6-1.69c3.6-1.35 10.69-7.2 10.69-7.2-4.28 0-9 1.46-9 1.46l6.3-7.66-5.63 1.58 3.83-5.6-.07.05c-1.52.85-3.04 1.73-4.54 2.62l-.08.05a214.05 214.05 0 0 0-8.73 5.5c-.02 0-.04.02-.05.03l-.68.45c-1.36.91-2.71 1.84-4.06 2.78-1.04.74-2 1.6-3.01 2.41 1.56 1.26 2.96 2.21 4.16 3.38 1.52 1.48 1.4 2.47-.47 3.42"/>
<path fill="#e8be74" fill-rule="nonzero" d="M54.66 63.67l.16.13.71.59 1.04.84a72 72 0 0 1-1.9-1.56M47.45 51.25L53.87 50l-9.35-7.66 4.84-.56-2.92-3.38 3.6-.79-7.2-6.3h8.32l-3.94-3.27 2.14.36-2.64-1.82-.6-.42-6.25-1.53 7.8 5.85-8.4-.6s2.7 4.2 7.65 7.06l-4.35.9 3.6 3.15-4.05.15s1.8 4.66 8.4 7.96h-5.85s1.12 4.37 4.18 9.1a79.3 79.3 0 0 0 2.82 2.78l.7.66-4.92-10.4zM49.38 28.42c4.84 3.34 9.66 6.7 14.5 10.05-4.84-3.35-9.66-6.71-14.5-10.05M57.07 65.62l.98.75.33.23.29.22-1.6-1.2"/>
<path fill="#fffab6" fill-rule="nonzero" d="M62.69 41.66c1.06-.5 2.14-.94 3.57-1.56l-2.39-1.63c-4.83-3.35-9.65-6.71-14.5-10.05l-.01-.01-2.14-.36 3.95 3.27h-8.34l7.2 6.3-3.6.8 2.93 3.37-4.84.56 9.35 7.66-6.42 1.24 4.93 10.4.01.02.44.4 1.25 1.1.59.5c.62.53 1.26 1.05 1.9 1.56l.5.39 1.6 1.2.58.42c.7.5 1.4 1 2.12 1.47 2.38 1.58 5.1 2.64 7.46 3.82 1.35-6.33 2.5-12.16 3.9-17.93.36-1.5 0-2-1.19-2.8a152.4 152.4 0 0 1-9.34-6.83c-1.63-1.28-1.38-2.45.49-3.32"/>
</svg>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="100%" height="100%" viewBox="0 0 305 415" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;">
<path d="M294.071,253.036C283.079,230.708 265.666,216.243 239.645,214.576C217.44,213.154 199.977,221.13 188.688,240.764C183.28,250.17 179.734,260.376 177.471,270.996C176.686,274.684 176.072,278.408 175.38,282.115C173.136,275.175 171.412,268.267 169.986,261.299C168.107,252.118 165.923,242.935 167.39,233.436C168.472,226.43 168.716,219.236 171.947,212.7C170.692,203.821 177.688,197.297 178.697,189.042C179.283,184.244 180.186,179.485 181.015,174.277C197.968,170.933 213.153,162.58 227.303,152.078C230.068,150.026 229.986,148.815 226.983,147.292C226.248,146.919 225.552,146.47 225.102,146.209C228.141,143.832 231.225,141.577 234.119,139.102C236.226,137.3 235.987,135.948 233.505,134.941C227.818,132.633 224.313,128.354 222.126,122.79C219.399,115.851 219.339,108.682 220.293,101.441C220.383,100.759 220.957,99.87 221.556,99.564C236.213,92.073 247.296,80.598 257.115,67.726C265.513,56.716 270.836,44.069 276.056,31.407C279.415,23.257 282.433,14.964 285.461,6.683C286.184,4.704 287.087,2.001 284.983,0.701C283.436,-0.255 280.938,-0.035 278.932,0.213C276.633,0.496 274.423,1.439 272.153,2.01C255.851,6.112 239.823,11.074 224.534,18.102C218.098,21.061 212.022,24.801 205.718,28.221C204.897,27.061 204.124,25.772 203.153,24.655C202.176,23.532 201.076,22.484 199.9,21.571C196.344,18.813 195.235,19.291 194.491,23.649C193.706,28.243 192.756,32.797 190.067,36.851C189.667,36.599 189.367,36.511 189.233,36.312C184.429,29.156 179.659,21.978 174.825,14.843C174.25,13.995 173.335,13.376 172.579,12.651C171.808,13.466 170.772,14.157 170.321,15.121C169.304,17.291 168.578,19.597 167.674,22.003C165.947,21.342 164.469,20.769 162.986,20.21C146.61,14.043 129.772,11.813 112.714,16.228C99.449,19.662 87.497,25.689 81.331,39.143C80.433,41.102 79.523,41.467 77.502,40.893C67.649,38.094 57.651,36.083 47.399,35.32C39.266,34.714 31.132,33.958 23.05,32.881C16.645,32.028 10.325,30.554 3.955,29.419C0.607,28.822 -0.697,30.329 0.357,33.547C0.88,35.145 1.533,36.709 2.237,38.238C7.808,50.33 14.836,61.552 23.618,71.52C34.748,84.152 48.364,93.23 64.624,98.078C65.81,98.431 67.026,98.682 68.228,98.98C68.239,99.239 68.251,99.499 68.262,99.758C65.896,100.226 63.53,100.695 61.163,101.163C61.11,101.325 61.056,101.487 61.003,101.649C63.539,102.265 66.075,102.882 68.812,103.547C68.899,108.99 67.301,114.438 65.613,119.909C64.296,124.181 62.063,127.284 57.5,128.339C55.676,128.761 55.076,129.979 55.766,131.747C56.509,133.652 57.281,135.545 58.252,137.973C56.451,138.5 54.743,139.097 52.989,139.49C50.043,140.149 49.563,140.862 50.459,143.79C52.616,150.84 56.828,156.459 62.519,161.044C63.127,161.534 63.696,162.074 64.184,162.504C58.232,166.91 52.47,171.105 46.789,175.405C42.432,178.704 39.443,182.988 38.79,188.502C37.469,199.653 33.033,209.547 27.298,219.052C22.794,226.517 18.505,234.134 14.61,241.928C13.27,244.608 12.652,248.125 13.032,251.09C13.826,257.291 15.335,263.421 16.862,269.501C18.538,276.173 22.317,278.083 28.894,275.976C30.529,275.453 32.143,274.865 34.022,274.219C34.13,276.395 34.142,278.176 34.319,279.94C34.972,286.467 35.011,293.145 36.49,299.485C41.388,320.48 46.777,341.362 52.051,362.268C54.365,371.441 57.436,380.441 57.199,390.106C57.083,394.807 56.548,399.102 53.146,402.851C50.341,405.942 51.919,409.35 56.044,409.904C57.153,410.053 58.302,410.057 59.418,409.961C64.932,409.488 70.455,409.076 75.949,408.416C81.87,407.705 82.758,406.917 82.701,400.999C82.523,382.608 85.223,364.514 88.009,346.426C88.749,341.621 89.591,336.785 90.979,332.14C92.275,327.797 95.775,326.865 99.347,329.558C101.125,330.899 102.881,332.448 104.152,334.252C116.397,351.636 125.216,370.755 132.456,390.662C133.432,393.348 133.061,395.808 131.527,398.16C130.195,400.202 128.769,402.193 127.59,404.321C125.365,408.334 126.822,411.973 131.055,413.606C136.912,415.864 142.686,414.907 148.452,413.297C153.762,411.813 155.773,409.792 156.083,404.227C156.579,395.333 156.744,386.415 156.826,377.505C156.942,364.835 156.856,352.163 156.856,339.782C161.713,341.165 166.289,342.941 171.029,343.725C183.748,345.829 195.655,343.967 206.081,335.601C210.169,332.32 214.573,329.417 218.942,326.507C222.93,323.851 227.436,323.609 231.946,324.658C239.004,326.299 245.392,334.266 246.251,342.173C247.176,350.68 244.205,355.721 236.019,359.979C234.885,360.57 233.353,361.998 233.411,362.952C233.541,365.079 235.663,364.728 237.216,364.698C241.44,364.619 245.666,364.294 249.885,364.381C272.38,364.846 295.002,345.353 300.393,325.96C307.347,300.946 305.513,276.276 294.071,253.036" style="fill:#910a07;fill-rule:nonzero;"/>
<path d="M66.509,303.488C66.504,303.485 66.498,303.481 66.493,303.478C66.498,303.481 66.504,303.485 66.509,303.488" style="fill:#920c09;fill-rule:nonzero;"/>
<path d="M196.38,76.803L196.379,76.803L196.38,76.804L196.38,76.803Z" style="fill:#fdea8e;"/>
<path d="M152.341,330.192C150.612,326.071 149.123,321.828 147.093,317.861C144.629,313.045 142.095,308.169 138.852,303.878C136.56,300.846 133.376,298.086 130,296.355C121.348,291.92 112.361,288.138 103.521,284.067C102.362,283.533 101.279,282.831 100.161,282.207C99.469,281.968 98.776,281.729 98.084,281.49C97.946,281.449 97.809,281.409 97.672,281.369C93.068,279.566 88.44,277.825 83.866,275.95C72.764,271.401 61.697,266.765 50.576,262.262C49.841,261.965 48.443,262.175 47.91,262.706C45.742,264.87 43.766,267.228 41.779,269.566C41.276,270.158 40.664,270.94 40.665,271.633C40.681,278.76 40.264,285.945 41.016,293.002C43.105,312.608 47.487,331.779 52.792,350.765C55.689,361.134 58.63,371.558 60.407,382.149C61.736,390.071 62.497,398.547 56.073,405.329C55.994,405.412 56.093,405.664 56.164,406.457C59.563,406.053 62.948,405.65 66.334,405.247C69.501,403.454 71.007,400.932 71.748,398.138C71.841,397.788 71.921,397.435 71.992,397.078C72.133,396.364 72.233,395.637 72.307,394.904C72.491,393.071 72.509,391.198 72.579,389.398C73.033,377.711 73.079,365.977 72.584,354.293C72.186,344.897 68.722,336.176 64.066,328.049C62.846,325.92 60.771,324.238 58.936,322.514C55.289,319.088 54.204,315.133 56.403,310.58C57.742,307.807 59.27,305.1 60.968,302.533C63.037,299.407 64.47,299.412 67.119,302.215C67.487,302.603 67.723,303.116 68.02,303.572C70.004,304.8 71.913,306.21 73.897,307.435C75.088,308.17 76.306,308.838 77.584,309.36C83.11,311.617 88.856,313.402 94.62,314.987C98.899,316.164 102.031,318.442 104.067,322.311C110,333.585 116.232,344.716 121.757,356.188C126.751,366.557 130.942,377.312 135.537,387.876C137.589,392.592 137.166,396.974 134.161,401.149C133.067,402.668 132.011,404.228 131.09,405.856C129.873,408.005 130.423,409.302 132.741,410.146C137.083,411.727 141.39,411.145 145.729,410.044C151.408,408.603 152.035,407.964 152.657,402.185C152.727,401.533 152.765,400.874 152.768,400.219C152.864,382.586 153.016,364.954 153.007,347.321C153.006,345.894 152.979,344.466 152.935,343.039C152.802,338.756 152.517,334.474 152.341,330.192" style="fill:#fde98e;fill-rule:nonzero;"/>
<path d="M294.78,264.455C294.091,262.419 293.338,260.433 292.519,258.498C291.701,256.563 290.816,254.679 289.863,252.849C289.197,251.571 288.486,250.329 287.753,249.103C282.188,239.795 274.671,232.004 264.837,226.02C264.838,226.021 264.838,226.022 264.839,226.022C265.532,227.087 266.146,228.215 266.933,229.206C271.965,235.536 274.34,242.984 276.05,250.713C276.418,252.375 275.641,252.932 274.017,252.645C269.339,251.816 264.677,250.819 259.964,250.278C252.26,249.394 244.887,250.796 237.954,254.331C237.737,254.441 237.596,254.7 237.256,255.066C250.293,262.011 252.919,273.993 253.089,287.197C253.112,288.957 252.489,289.538 250.789,289.395C247.436,289.115 244.075,288.752 240.717,288.757C230.835,288.771 222.423,292.372 216.86,300.638C209.567,311.475 198.695,317.056 187.376,322.134C179.059,325.864 170.367,326.176 161.55,324.244C160.381,323.988 159.301,323.32 158.132,323.072C157.686,322.977 157.104,323.526 156.583,323.781C156.677,324.854 156.725,325.938 156.802,327.015C156.879,328.092 156.985,329.163 157.196,330.213C157.699,332.716 157.802,335.545 160.815,336.743C175.266,342.488 189.278,342.804 202.521,333.431C207.34,330.021 212.065,326.47 216.975,323.198C221.505,320.18 226.69,319.657 231.865,320.731C242.162,322.868 247.049,330.392 249.616,339.763C251.143,345.334 250.238,350.797 247.21,355.74C246.119,357.52 244.494,358.973 243.388,360.257C247.411,360.257 251.675,360.735 255.798,360.174C274.328,357.652 292.976,340.879 297.439,322.649C302.24,303.035 301.257,283.593 294.78,264.455" style="fill:#fffab6;fill-rule:nonzero;"/>
<path d="M176.067,322.844C191.437,319.831 205.006,313.051 214.527,300.009C222.737,288.762 233.939,285.426 247.157,286.848C247.903,286.929 248.644,287.053 249.391,287.105C249.752,287.13 250.12,287.034 250.734,286.965C251.255,281.345 250.099,276.037 248.356,270.772C246.115,264.003 241.355,259.625 235.246,256.414C234.466,256.004 233.85,255.286 233.158,254.711C233.898,254.099 234.554,253.32 235.391,252.899C246.635,247.244 258.414,246.912 270.468,249.483C271.373,249.676 272.272,249.896 274.026,250.3C272.693,246.269 271.778,242.693 270.342,239.341C268.032,233.95 264.711,229.184 260.338,225.202C259.652,224.578 259.062,223.849 258.427,223.169C256.088,222.258 253.801,221.02 251.441,220.244C250.654,219.985 249.86,219.778 249.053,219.652C243.431,218.771 237.669,218.192 231.993,218.361C215.594,218.849 202.544,225.914 193.724,239.853C185.413,252.986 181.27,267.65 179.247,282.956C178.701,287.089 177.635,291.198 179.626,295.356C180.092,296.329 179.42,298.141 178.775,299.288C177.539,301.483 175.939,303.472 174.504,305.556C171.769,309.526 168.071,312.01 163.335,313.013C160.787,313.553 158.279,314.278 155.591,314.96C155.772,316.484 155.935,317.861 156.098,319.238C162.171,323.645 169.324,324.166 176.067,322.844" style="fill:#fdea8e;fill-rule:nonzero;"/>
<path d="M68.146,247.439C67.763,247.692 67.691,249.182 68.054,249.652C69.224,251.167 70.411,253.026 72.041,253.773C86.191,260.259 100.548,266.157 116.125,268.432C121.609,269.233 126.206,268.441 129.132,263.199C132.913,256.425 136.908,249.757 140.394,242.834C143.928,235.815 146.964,228.545 150.201,221.377C154.029,212.901 153.596,204.668 148.771,196.683C148.442,196.139 148.307,195.478 148.082,194.872C148.081,194.872 148.05,194.836 148.05,194.836C147.866,194.671 147.682,194.507 147.498,194.343C137.8,193.349 128.102,192.354 118.404,191.36C118.175,191.376 117.946,191.393 117.717,191.41C116.985,191.515 116.254,191.621 115.522,191.727C112.403,192.931 109.205,193.971 106.206,195.422C105.027,195.993 104.283,197.475 103.36,198.559C102.3,199.803 101.477,201.387 100.174,202.26C96.332,204.836 92.304,207.133 88.059,209.715C89.704,210.562 91.419,210.907 91.664,211.705C91.988,212.755 91.217,214.181 90.812,215.411C89.26,220.124 87.802,224.874 86.038,229.508C84.989,232.264 85.863,234.166 88.349,234.785C91.181,235.49 94.223,235.73 97.15,235.605C105.351,235.254 112.667,232.411 118.958,227.057C119.295,226.77 119.763,226.636 120.169,226.431L120.256,226.345C120.403,226.184 120.549,226.023 120.696,225.863C122.899,223.327 125.102,220.791 127.305,218.255C129.863,215.1 132.421,211.944 134.979,208.788C135.215,208.967 135.451,209.145 135.687,209.324C133.246,212.602 130.805,215.88 128.364,219.158C128.189,219.368 127.999,219.568 127.817,219.773C127.636,219.978 127.463,220.189 127.323,220.42C121.79,229.549 116.292,238.699 110.74,247.816C109.2,250.345 108.276,250.29 105.773,248.693C103.93,247.517 101.83,246.449 99.71,246.053C92.069,244.623 84.371,243.498 76.695,242.258L76.694,242.258L76.695,242.258C73.829,243.961 70.922,245.602 68.146,247.439" style="fill:#fdea8e;fill-rule:nonzero;"/>
<path d="M274.449,11.043C271.854,16.58 269.965,23.829 267.401,29.38C266.546,31.23 265.703,33.086 264.878,34.949C258.809,48.661 251.712,61.73 241.674,72.996C235.098,80.374 227.144,85.99 218.368,90.434C214.545,92.37 212.602,91.969 209.552,88.873C206.657,85.933 203.911,82.845 201.1,79.822C201.072,80.09 200.985,80.39 200.931,80.672C200.878,80.953 200.859,81.216 200.966,81.408C204.822,88.301 205.967,95.867 206.252,103.567C206.497,110.191 206.323,116.831 206.301,123.463C206.284,128.59 204.851,133.064 199.969,135.985C201.71,138.214 203.223,140.328 204.927,142.276C206.296,143.84 205.825,144.91 204.703,146.407C198.508,154.677 190.186,159.689 180.559,163.004C167.194,167.606 153.656,170.943 139.372,170.497C133.405,170.311 127.659,169.334 122.156,167.014C117.938,165.236 113.582,164.375 108.997,164.98C108.743,166.57 108.035,167.707 106.944,168.476C106.29,168.938 105.498,169.266 104.584,169.48C103.399,169.758 102.155,169.963 101.084,170.494C100.165,170.95 99.454,171.825 98.651,172.514C99.495,173.165 100.249,174.179 101.196,174.411C115.586,177.942 130.182,177.917 144.84,176.788C162.242,175.448 179.13,171.696 195.568,165.916C205.828,162.309 214.742,156.28 223.697,149.987C222.465,149.114 221.348,148.53 220.514,147.672C219.733,146.868 218.792,145.771 218.799,144.81C218.804,144.167 220.279,143.413 221.208,142.921C224.121,141.377 227.087,139.933 230.783,138.072C221.79,133.103 217.965,125.685 216.681,117.071C215.903,111.852 216.508,106.434 216.397,101.107C216.341,98.418 217.231,96.687 220.044,95.964C221.449,95.602 222.7,94.598 223.987,93.828C237.556,85.712 247.951,74.324 256.815,61.474C264.216,50.746 269.023,38.676 273.851,26.66C275.684,22.097 277.353,17.467 279.036,12.844C279.597,11.302 281.786,5.077 282.357,3.54" style="fill:#fffab6;fill-rule:nonzero;"/>
<path d="M21.08,265.865C21.129,265.388 21.166,264.91 21.16,264.433C21.135,262.282 20.822,260.116 20.994,257.986C21.339,253.728 23.08,251.729 27.287,250.938C30.387,250.355 32.482,248.598 34.353,246.259C40.84,238.152 43.748,228.671 45.131,218.587C45.169,218.308 45.197,218.028 45.221,217.747C45.789,211.083 48.885,206.62 55.695,204.901C59.951,203.827 64.056,202.161 68.24,200.793C74.193,198.849 79.154,195.39 83.199,190.687C83.953,189.811 84.04,188.232 84.143,186.953C84.304,184.952 83.661,182.709 84.358,180.969C85.486,178.153 85.26,176.423 82.295,175.396C81.741,175.303 81.187,175.21 80.634,175.116C80.233,175.199 79.833,175.282 79.432,175.364C79.083,175.399 78.733,175.434 78.383,175.469C78.231,175.44 78.079,175.41 77.926,175.381C78.06,175.241 78.195,175.101 78.329,174.961C78.569,174.791 78.809,174.622 79.05,174.452C79.562,173.534 93.389,169.912 96.41,168.948C100.793,167.55 103.457,166.681 105.237,165.581C106.425,164.847 106.137,162.574 104.161,162.081C102.542,161.436 100.921,160.919 99.294,160.539C94.415,159.396 89.483,159.479 84.368,161.031C81.401,161.93 78.074,161.632 74.915,161.917C73.82,162.016 72.495,161.889 71.686,162.454C63.845,167.924 56.034,173.441 48.339,179.113C44.787,181.731 42.791,185.505 42.326,189.879C41.157,200.869 36.727,210.581 31.176,219.956C26.593,227.697 22.246,235.585 18.006,243.521C17.037,245.336 16.218,247.756 16.58,249.66C17.426,254.115 18.609,258.507 19.778,262.9C20.168,264.365 20.556,265.83 20.93,267.297C20.971,266.82 21.031,266.342 21.08,265.865" style="fill:#fce98d;fill-rule:nonzero;"/>
<path d="M94.527,43.014C93.674,45.64 93.101,48.28 92.949,51.008C92.797,53.737 93.065,56.554 93.895,59.534C105.152,50.775 117.613,45.378 131.56,42.934C145.386,40.51 158.933,41.346 172.527,44.519C173.434,41.213 174.231,38.307 175.029,35.4C175.405,35.31 175.781,35.22 176.157,35.129C178.304,38.757 180.45,42.386 182.597,46.014C184.256,44.307 185.916,42.6 187.637,40.83C182.614,33.598 177.807,26.678 172.765,19.418C172.298,20.687 172.02,21.38 171.788,22.089C171.527,22.89 171.294,23.701 171.074,24.515C170.611,26.224 169.526,26.782 167.878,26.226C166.991,25.927 166.124,25.563 165.26,25.199C151.349,19.344 136.931,16.696 121.836,18.32C110.416,19.549 100.221,23.781 91.537,31.269C89.063,33.403 87.337,36.403 85.268,39.006C87.881,39.213 89.803,38.717 91.741,38.647C93.015,38.601 94.311,39.168 95.598,39.46C95.241,40.645 94.884,41.829 94.527,43.014Z" style="fill:#fde98d;fill-rule:nonzero;"/>
<path d="M163.839,198.142C163.324,197.782 162.641,197.621 162.012,197.472C158.199,196.566 154.379,195.691 150.562,194.805C151.945,199.124 153.804,203.363 154.55,207.789C155.088,210.978 155.005,214.803 153.716,217.681C147.18,232.275 140.246,246.695 133.229,261.067C131.945,263.697 129.752,265.932 127.764,268.157C124.989,271.262 121.211,271.061 117.543,270.646C104.869,269.213 92.945,265.154 81.303,260.131C78.466,258.907 75.428,258.05 72.785,256.506C70.433,255.132 68.092,253.346 66.481,251.192C64.253,248.212 65.055,246.495 68.352,244.737C69.71,244.013 71.898,243.952 71.567,241.495C66.747,240.801 61.919,240.16 57.113,239.38C55.73,239.156 55.056,239.427 54.677,240.839C53.707,244.456 52.664,248.056 51.532,251.626C51.001,253.3 51.487,254.098 53.055,254.869C64.745,260.618 76.524,266.207 88.002,272.357C99.793,278.674 112.254,280.847 125.445,280.354C129.619,280.197 132.65,278.84 134.619,275.134C145.701,254.28 156.831,233.452 167.863,212.572C169.577,209.329 166.905,200.289 163.839,198.142" style="fill:#fffab6;fill-rule:nonzero;"/>
<path d="M65.211,58.909C53.505,54.386 41.617,50.325 29.754,46.221C25.901,44.889 21.897,43.996 17.817,42.861C17.817,43.537 17.746,43.821 17.83,44.046C18.092,44.746 18.358,45.455 18.72,46.106C28.486,63.682 41.822,77.625 60.162,86.324C63.911,88.102 67.988,89.188 72.14,90.675C73.164,87.63 73.786,85.472 74.609,83.394C76.295,79.133 78.106,74.922 79.832,70.676C80.635,68.698 80.386,67.14 78.247,66.01C73.869,63.696 69.787,60.677 65.211,58.909" style="fill:#ffe9a5;fill-rule:nonzero;"/>
<path d="M180.284,45.346C179.836,44.765 179.394,44.179 178.972,43.58C178.125,42.377 177.359,41.118 176.171,39.29C175.667,41.129 175.126,42.385 175.008,43.679C174.743,46.605 173.041,46.821 170.702,46.355C166.862,45.591 163.021,44.498 159.144,44.32C151.981,43.992 144.745,43.708 137.624,44.348C127.352,45.272 117.279,47.572 108.178,52.742C103.721,55.273 99.534,58.284 95.26,61.13C92.618,62.889 91.998,62.745 91.542,59.597C90.791,54.42 90.201,49.213 91.889,44.076C91.303,44.792 90.61,45.476 89.937,46.166C89.924,46.179 89.912,46.193 89.899,46.206C89.235,46.888 88.592,47.576 88.092,48.31C87.753,48.806 87.481,49.322 87.311,49.871C84.034,60.479 84.513,71.044 88.984,81.844C90.24,80.487 91.282,79.32 92.369,78.196C97.346,73.051 102.681,68.382 109.064,64.983C128.29,54.745 148.448,52.259 169.592,57.435C170.688,57.703 172.445,57.947 172.987,57.361C173.745,56.541 174.487,55.704 175.217,54.857C177.406,52.315 179.491,49.677 181.63,47.088C181.185,46.505 180.732,45.927 180.284,45.346" style="fill:#fffab6;fill-rule:nonzero;"/>
<path d="M86.656,180.61C86.021,182.326 85.88,184.501 86.318,186.274C86.973,188.919 86.255,190.839 84.533,192.648C79.305,198.137 73.004,201.726 65.706,203.808C61.215,205.09 56.842,206.819 52.479,208.513C49.556,209.647 48.538,212.234 47.879,215.12C46.28,222.124 45.089,229.295 42.654,236.008C40.939,240.735 37.744,245.045 34.622,249.087C33.237,250.881 30.519,251.944 28.197,252.644C24.623,253.721 23.248,254.917 23.124,258.629C23.058,260.597 23.106,262.571 23.185,264.54C23.279,266.881 24.132,268.731 26.664,269.331C33.526,267.407 39.567,264.369 43.422,258.919C44.707,257.102 45.75,255.017 46.498,252.616C50.419,240.036 53.836,227.3 57.558,214.657C57.794,213.857 58.694,212.866 59.465,212.671C70.174,209.949 78.825,203.421 87.866,197.582C91.593,195.175 92.246,191.765 91.653,187.812C91.46,186.523 91.007,185.274 90.744,183.992C90.316,181.901 90.652,180.015 92.644,178.849C95.387,177.245 95.58,175.031 94.321,172.15C91.633,172.927 88.964,173.699 86.295,174.47C87.491,176.457 87.488,178.363 86.656,180.61" style="fill:#fffab6;fill-rule:nonzero;"/>
<path d="M66.493,303.478C65.87,303.096 65.246,302.714 64.623,302.332C63.787,303.014 62.757,303.56 62.156,304.409C61.08,305.93 60.189,307.597 59.35,309.268C56.307,315.324 56.597,317.166 61.483,321.828C68.918,328.923 71.718,338.281 73.739,347.82C76.081,358.874 75.732,370.177 75.4,381.408C75.257,386.245 74.727,391.115 73.846,395.873C73.254,399.07 71.739,402.095 70.637,405.197C71.964,405.05 73.288,404.849 74.615,404.727C75.057,404.687 75.5,404.655 75.943,404.637C78.184,404.548 78.883,403.543 78.944,401.293C79.171,393.049 79.285,384.779 80.081,376.581C81.503,361.951 82.978,347.303 85.252,332.791C86.442,325.192 83.918,319.881 78.605,315.175C74.963,311.948 71.321,308.72 67.728,305.439C67.312,305.059 67.042,304.517 66.759,303.991C66.664,303.815 66.568,303.642 66.464,303.476L66.465,303.476L66.509,303.488L66.465,303.476C66.474,303.477 66.484,303.477 66.493,303.478" style="fill:#fffab6;fill-rule:nonzero;"/>
<path d="M171.908,302.343C166.197,286.784 161.528,270.942 159.101,254.507C158.461,250.176 157.996,245.82 157.451,241.475C155.218,245.998 152.872,250.473 150.694,255.022C149.968,256.538 149.261,258.063 148.582,259.6C146.566,264.168 146.612,268.922 148.072,273.859C149.843,279.848 151.094,286.009 152.274,292.152C153.452,298.286 154.265,304.49 155.28,310.933C161.775,309.608 168.277,308.832 171.908,302.343" style="fill:#5aa0c1;fill-rule:nonzero;"/>
<path d="M136.547,298.451C140.287,301.124 142.803,305.739 145.333,309.813C147.971,314.063 149.964,318.712 152.24,323.186C151.547,315.219 150.8,307.262 149.678,299.35C149.197,295.96 148.647,292.577 148.003,289.206C146.715,282.465 145.05,275.768 142.807,269.139C140.793,272.368 138.894,275.456 136.952,278.515C134.867,281.798 132.015,283.958 127.983,283.897C121.627,283.801 115.274,283.548 108.92,283.362C111.32,284.597 113.741,285.794 116.116,287.074C122.987,290.777 130.245,293.947 136.547,298.451" style="fill:#fffab6;fill-rule:nonzero;"/>
<path d="M158.132,323.072C159.301,323.32 160.381,323.988 161.55,324.244C170.367,326.176 179.059,325.864 187.376,322.134C198.695,317.056 209.567,311.475 216.86,300.638C222.423,292.372 230.835,288.771 240.717,288.757C244.075,288.752 247.436,289.115 250.789,289.395C252.489,289.538 253.112,288.957 253.089,287.197C252.919,273.993 250.293,262.011 237.256,255.066C237.596,254.7 237.737,254.441 237.954,254.331C244.887,250.796 252.26,249.394 259.964,250.278C264.677,250.819 269.339,251.816 274.017,252.645C275.641,252.932 276.418,252.375 276.05,250.713C274.34,242.984 271.965,235.536 266.933,229.206C266.145,228.215 265.532,227.086 264.838,226.022L264.838,226.021C262.701,225.071 260.564,224.12 258.427,223.169C259.062,223.849 259.652,224.577 260.338,225.201C264.711,229.183 268.032,233.949 270.342,239.341C271.778,242.693 272.693,246.268 274.026,250.3C272.272,249.896 271.373,249.675 270.468,249.482C258.414,246.911 246.635,247.244 235.391,252.899C234.554,253.319 233.898,254.098 233.158,254.71C233.85,255.286 234.466,256.004 235.246,256.413C241.355,259.624 246.115,264.002 248.356,270.771C250.099,276.036 251.255,281.345 250.734,286.965C250.12,287.034 249.752,287.129 249.391,287.104C248.644,287.052 247.903,286.928 247.157,286.848C233.939,285.425 222.737,288.761 214.527,300.008C205.006,313.051 191.437,319.83 176.067,322.843C169.323,324.166 162.171,323.645 156.098,319.237C156.26,320.752 156.421,322.266 156.583,323.781C157.103,323.526 157.686,322.977 158.132,323.072" style="fill:#e8be74;fill-rule:nonzero;"/>
<path d="M114.562,232.678C108.898,236.23 102.613,237.217 96.078,237.64C92.136,237.895 88.506,237.947 85.236,235.251C83.533,233.846 82.982,232.348 83.648,230.339C85.325,225.276 87.031,220.224 88.707,215.161C88.906,214.557 88.986,213.914 89.146,213.176C88.537,212.922 88.029,212.728 87.536,212.503C85.241,211.456 84.9,210.212 86.895,208.546C89.249,206.581 91.898,204.962 94.473,203.275C95.96,202.301 97.58,201.532 99.086,200.585C99.785,200.147 100.81,199.578 100.911,198.944C101.612,194.531 105.181,193.418 108.523,191.984C108.685,191.915 108.827,191.8 108.964,191.673C109.102,191.547 109.234,191.408 109.375,191.29C107.499,191.291 105.623,191.31 103.747,191.315C101.871,191.321 99.996,191.314 98.121,191.264C96.341,191.216 95.403,191.605 95.182,193.623C94.897,196.236 93.524,198.337 91.234,199.81C88.318,201.686 85.381,203.545 82.596,205.605C79.135,208.164 78.161,212.178 76.454,216.065C81.167,215.655 81.448,216.07 80.657,220.277C79.949,224.042 79.202,227.834 78.956,231.645C78.491,238.836 78.67,238.644 85.693,239.846C92.585,241.026 99.388,242.72 106.257,244.046C106.977,244.185 108.167,243.582 108.654,242.95C111.281,239.542 113.754,236.016 116.281,232.531C115.701,232.57 114.995,232.406 114.562,232.678" style="fill:#fffab6;fill-rule:nonzero;"/>
<path d="M16.454,38.212C24.497,40.6 32.339,43.11 40.284,45.81C45.346,47.53 62.149,54.084 62.246,54.108C64.992,54.801 81.501,63.705 81.501,63.705C81.501,63.705 80.711,60.087 82.206,53.156C82.886,50.889 83.567,48.622 84.239,46.384C78.202,44.888 72.457,43.113 66.58,42.095C58.572,40.707 50.465,39.894 42.401,38.837C31.835,37.452 21.268,36.07 10.702,34.686C12.619,35.861 14.537,37.037 16.454,38.212" style="fill:#fbe68c;fill-rule:nonzero;"/>
<path d="M163.838,182.3C166.49,181.837 169.083,180.929 171.631,180.022C173.282,179.434 175.016,178.659 174.81,176.345C174.162,176.396 173.508,176.415 172.864,176.503C162.291,177.947 151.752,179.722 141.141,180.766C128.971,181.965 116.763,181.622 104.754,179.009C101.229,178.242 98.09,177.616 95.778,181.192C95.682,181.341 95.484,181.422 95.337,181.538C93.44,183.026 94.857,184.669 95.322,186.109C95.521,186.726 96.785,187.345 97.582,187.368C108.08,187.675 118.58,187.875 129.08,188.101C129.081,188.101 129.082,188.101 129.082,188.101C129.081,188.101 129.08,188.101 129.079,188.1C140.669,186.182 152.267,184.321 163.838,182.3" style="fill:#5aa0c1;fill-rule:nonzero;"/>
<path d="M122.156,167.015C127.66,169.335 133.405,170.312 139.372,170.498C153.656,170.944 167.195,167.607 180.56,163.005C190.186,159.69 198.508,154.678 204.703,146.408C205.825,144.911 206.297,143.841 204.927,142.277C203.223,140.329 201.71,138.215 199.969,135.986C204.851,133.065 206.285,128.591 206.301,123.464C206.323,116.832 206.498,110.192 206.252,103.568C205.967,95.868 204.822,88.302 200.966,81.409C200.859,81.217 200.878,80.954 200.932,80.673C200.985,80.391 201.072,80.091 201.1,79.823C199.526,78.817 197.952,77.811 196.379,76.804C196.839,77.814 197.314,78.817 197.758,79.834C199.29,83.343 201.264,86.735 202.251,90.393C205.094,100.927 204.828,111.755 204.431,122.542C204.258,127.233 203.374,131.696 198.785,134.391C197.271,135.28 197.619,136.484 198.607,137.703C200.312,139.806 201.932,141.976 203.733,144.307C199.47,148.915 195.705,153.939 189.968,156.663C177.432,162.614 164.289,166.776 150.45,168.033C141.791,168.819 132.965,169.188 124.633,165.691C119.536,163.552 114.288,162.442 108.768,162.591C108.845,163.387 108.921,164.184 108.998,164.981C113.582,164.376 117.938,165.237 122.156,167.015" style="fill:#e8be74;fill-rule:nonzero;"/>
<path d="M74.08,211.112C71.29,212.287 68.75,213.806 66.01,214.402C62.248,215.221 60.707,217.27 60.019,220.92C59.109,225.74 57.583,230.443 56.26,235.428C62.568,236.343 68.54,237.21 74.515,238.077C75.102,232.141 75.667,226.432 76.233,220.718C72.11,221.216 71.432,220.447 72.465,216.287C72.884,214.603 73.495,212.966 74.08,211.112" style="fill:#fbe68c;fill-rule:nonzero;"/>
<path d="M68.352,244.737C65.054,246.495 64.253,248.212 66.481,251.192C68.091,253.346 70.433,255.132 72.785,256.506C75.428,258.05 78.466,258.907 81.303,260.131C92.945,265.154 104.869,269.213 117.542,270.646C121.211,271.061 124.989,271.262 127.763,268.157C129.752,265.932 131.945,263.697 133.229,261.067C140.246,246.695 147.179,232.275 153.716,217.681C155.005,214.803 155.088,210.978 154.55,207.789C153.803,203.363 151.944,199.124 150.562,194.805C149.735,194.828 148.908,194.85 148.081,194.872C148.306,195.478 148.441,196.139 148.77,196.683C153.595,204.668 154.028,212.901 150.2,221.377C146.963,228.544 143.927,235.815 140.393,242.833C136.907,249.757 132.912,256.425 129.131,263.199C126.205,268.44 121.609,269.233 116.124,268.432C100.547,266.157 86.19,260.259 72.04,253.773C70.411,253.026 69.223,251.167 68.053,249.652C67.69,249.182 67.763,247.692 68.145,247.439C70.922,245.601 73.828,243.961 76.694,242.258L76.693,242.258C74.984,242.004 73.276,241.75 71.567,241.495C71.898,243.952 69.709,244.013 68.352,244.737" style="fill:#e8be74;fill-rule:nonzero;"/>
<path d="M26.664,269.331C24.132,268.73 23.279,266.881 23.185,264.539C23.106,262.571 23.058,260.596 23.124,258.629C23.248,254.917 24.623,253.721 28.197,252.644C30.519,251.944 33.237,250.88 34.622,249.087C37.744,245.045 40.939,240.735 42.654,236.007C45.089,229.295 46.28,222.124 47.879,215.12C48.538,212.234 49.556,209.647 52.479,208.512C56.842,206.819 61.215,205.089 65.706,203.808C73.004,201.726 79.305,198.137 84.533,192.647C86.255,190.839 86.973,188.919 86.318,186.274C85.879,184.501 86.021,182.326 86.656,180.61C87.488,178.363 87.491,176.457 86.295,174.47C84.962,174.779 83.628,175.087 82.294,175.396C85.26,176.423 85.486,178.154 84.358,180.969C83.661,182.709 84.304,184.952 84.143,186.954C84.04,188.232 83.953,189.811 83.199,190.688C79.153,195.39 74.193,198.849 68.24,200.794C64.056,202.161 59.951,203.827 55.694,204.902C48.885,206.62 45.789,211.083 45.221,217.748C45.197,218.028 45.169,218.309 45.131,218.587C43.748,228.671 40.839,238.152 34.353,246.259C32.481,248.599 30.387,250.355 27.287,250.938C23.08,251.729 21.339,253.729 20.994,257.986C20.822,260.116 21.135,262.283 21.16,264.433C21.166,264.91 21.128,265.388 21.08,265.865C21.031,266.343 20.971,266.82 20.93,267.298C21.598,268.733 22.158,269.681 22.751,270.191C23.74,271.041 24.824,270.676 26.664,269.331" style="fill:#e8be74;fill-rule:nonzero;"/>
<path d="M71.436,94.891C71.417,94.644 71.399,94.396 71.38,94.148C68.891,93.466 66.304,93.025 63.927,92.063C40.665,82.648 24.183,66.112 13.483,43.614C12.892,42.372 12.656,41.384 12.782,40.604C12.991,39.304 14.205,38.58 16.454,38.211C14.537,37.036 12.62,35.86 10.702,34.685C8.815,34.394 6.927,34.103 4.656,33.752C5.224,35.265 5.555,36.522 6.142,37.644C8.314,41.792 10.439,45.973 12.82,50C21.825,65.235 32.963,78.395 48.757,87.12C55.275,90.722 61.778,94.191 69.29,95.152C69.983,95.241 70.719,94.986 71.436,94.891" style="fill:#fffab6;fill-rule:nonzero;"/>
<path d="M137.983,188.96C138.499,189.13 139.006,189.369 139.537,189.459C145.995,190.552 152.481,191.503 158.911,192.74C163.539,193.631 168.317,194.565 169.634,200.421C173.235,196.484 175.695,188.758 176.387,179.831C169.569,184.267 161.648,184.842 153.959,186.212C148.64,187.16 143.31,188.046 137.983,188.96" style="fill:#7ec7e6;fill-rule:nonzero;"/>
<path d="M176.157,35.129C175.781,35.219 175.405,35.31 175.029,35.4C174.231,38.307 173.434,41.213 172.526,44.518C158.932,41.346 145.386,40.51 131.559,42.933C117.613,45.377 105.152,50.775 93.895,59.534C93.065,56.553 92.797,53.736 92.949,51.008C93.101,48.28 93.674,45.64 94.527,43.014C94.292,43.108 94.058,43.203 93.823,43.297C93.179,43.557 92.534,43.816 91.889,44.075C90.202,49.213 90.791,54.42 91.542,59.597C91.999,62.745 92.619,62.889 95.26,61.13C99.534,58.284 103.721,55.273 108.178,52.742C117.279,47.572 127.352,45.272 137.624,44.348C144.745,43.708 151.981,43.992 159.145,44.32C163.021,44.498 166.862,45.591 170.702,46.355C173.042,46.821 174.743,46.605 175.009,43.679C175.126,42.385 175.668,41.129 176.172,39.29C177.359,41.118 178.126,42.377 178.972,43.58C179.394,44.179 179.836,44.764 180.284,45.346C180.732,45.927 181.185,46.505 181.63,47.088C181.952,46.73 182.275,46.372 182.597,46.014C180.45,42.385 178.304,38.757 176.157,35.129" style="fill:#e8be74;fill-rule:nonzero;"/>
<path d="M73.846,395.873C74.727,391.115 75.257,386.246 75.4,381.408C75.732,370.178 76.081,358.874 73.739,347.821C71.718,338.281 68.918,328.923 61.483,321.828C56.597,317.166 56.307,315.324 59.35,309.268C60.189,307.597 61.08,305.93 62.156,304.409C62.757,303.56 63.787,303.015 64.623,302.332C65.247,302.714 65.87,303.096 66.493,303.478C65.87,303.096 65.247,302.714 64.623,302.332C65.247,302.714 65.87,303.096 66.493,303.478C67.002,303.509 67.512,303.54 68.021,303.571C67.724,303.116 67.487,302.603 67.12,302.214C64.47,299.411 63.037,299.407 60.969,302.533C59.27,305.1 57.743,307.807 56.404,310.58C54.205,315.133 55.289,319.088 58.937,322.514C60.772,324.238 62.847,325.92 64.067,328.049C68.723,336.175 72.186,344.897 72.584,354.292C73.079,365.977 73.033,377.71 72.579,389.398C72.509,391.198 72.492,393.07 72.307,394.904C72.234,395.637 72.133,396.364 71.992,397.078C71.922,397.435 71.841,397.788 71.748,398.137C71.007,400.931 69.502,403.454 66.335,405.247C66.561,405.244 66.786,405.242 67.012,405.239C68.221,405.225 69.429,405.211 70.637,405.197C71.739,402.095 73.254,399.07 73.846,395.873" style="fill:#e8be74;fill-rule:nonzero;"/>
<path d="M66.493,303.478C66.483,303.477 66.474,303.477 66.464,303.476L66.509,303.488C66.504,303.485 66.498,303.481 66.493,303.478" style="fill:#e8be74;fill-rule:nonzero;"/>
<path d="M172.832,297.246C173.219,298.089 173.399,299.027 173.675,299.921C174.8,298.795 175.844,297.644 175.835,296.147C175.832,295.648 175.712,295.111 175.44,294.523C171.22,285.433 169.196,275.692 167.129,265.985C164.983,255.909 162.414,245.862 163.383,235.396C163.541,233.683 163.701,231.971 163.86,230.258C163.677,230.198 163.495,230.138 163.312,230.078C162.018,232.72 160.724,235.363 159.431,238.005C160.458,245.895 161.162,253.843 162.588,261.66C164.81,273.84 167.619,285.901 172.832,297.246" style="fill:#7ec7e6;fill-rule:nonzero;"/>
<path d="M118.958,227.056C112.667,232.41 105.35,235.253 97.149,235.604C94.223,235.729 91.181,235.489 88.349,234.784C85.862,234.165 84.989,232.263 86.038,229.507C87.801,224.874 89.26,220.123 90.811,215.41C91.216,214.18 91.987,212.755 91.664,211.704C91.418,210.907 89.704,210.561 88.059,209.714C92.303,207.132 96.332,204.835 100.174,202.259C101.477,201.386 102.3,199.803 103.36,198.558C104.282,197.474 105.026,195.992 106.205,195.421C109.204,193.97 112.403,192.93 115.521,191.726L113.565,191.587C112.169,191.488 110.772,191.389 109.375,191.289C109.234,191.407 109.102,191.546 108.964,191.673C108.827,191.799 108.685,191.914 108.523,191.983C105.181,193.417 101.612,194.53 100.911,198.944C100.81,199.577 99.784,200.146 99.086,200.584C97.58,201.531 95.96,202.3 94.473,203.274C91.898,204.961 89.249,206.58 86.895,208.545C84.9,210.211 85.241,211.455 87.536,212.502C88.029,212.727 88.537,212.921 89.146,213.175C88.986,213.913 88.906,214.557 88.707,215.16C87.031,220.223 85.325,225.276 83.647,230.338C82.981,232.347 83.533,233.845 85.236,235.25C88.505,237.946 92.136,237.894 96.078,237.639C102.613,237.216 108.898,236.229 114.562,232.677C114.995,232.405 115.701,232.569 116.28,232.53C117.577,230.497 118.873,228.464 120.169,226.43C119.762,226.635 119.295,226.769 118.958,227.056" style="fill:#e8be74;fill-rule:nonzero;"/>
<path d="M103.521,284.066C112.361,288.138 121.348,291.92 130.001,296.355C133.377,298.085 136.56,300.846 138.852,303.878C142.096,308.169 144.629,313.044 147.094,317.86C149.124,321.827 150.612,326.071 152.342,330.191C152.309,327.856 152.274,325.521 152.24,323.186C149.964,318.712 147.97,314.063 145.332,309.813C142.803,305.739 140.287,301.124 136.547,298.451C130.245,293.947 122.987,290.777 116.116,287.074C113.741,285.794 111.32,284.597 108.92,283.362C106.001,282.977 103.081,282.592 100.162,282.206C101.28,282.83 102.362,283.532 103.521,284.066" style="fill:#e8be74;fill-rule:nonzero;"/>
<path d="M159.101,254.507C161.528,270.942 166.197,286.784 171.908,302.343C172.497,301.536 173.087,300.728 173.675,299.921C173.399,299.027 173.219,298.088 172.832,297.245C167.619,285.9 164.81,273.839 162.588,261.659C161.162,253.843 160.458,245.894 159.431,238.005C158.771,239.161 158.112,240.318 157.451,241.475C157.996,245.821 158.462,250.177 159.101,254.507" style="fill:#23509c;fill-rule:nonzero;"/>
<path d="M175.376,176.352C175.206,176.341 175.018,176.338 174.81,176.345C175.016,178.658 173.282,179.434 171.631,180.022C169.083,180.929 166.49,181.836 163.838,182.3C152.267,184.321 140.669,186.182 129.079,188.1C129.08,188.1 129.081,188.1 129.083,188.1C132.048,188.386 135.015,188.673 137.983,188.96C143.31,188.046 148.64,187.16 153.959,186.212C161.648,184.842 169.569,184.267 176.388,179.831C176.364,179.492 176.461,179.098 176.569,178.7C176.864,177.604 177.237,176.473 175.376,176.352" style="fill:#23509c;fill-rule:nonzero;"/>
<path d="M74.894,124.765C76.511,124.35 76.855,123.206 76.239,121.493C73.885,114.949 74.077,108.436 77.469,102.244C78.708,99.983 80.425,98.111 83.422,98.407C83.703,98.341 83.985,98.274 84.266,98.208C78.559,97.571 77.569,98.116 75.291,103.21C74.649,104.648 74.013,106.186 73.856,107.727C73.711,109.155 73.583,110.585 73.463,112.015C73.143,115.853 72.824,119.871 72.531,123.713" style="fill:#fff;fill-rule:nonzero;"/>
<path d="M88.473,121.999C89.061,121.561 90.895,122.251 91.196,121.666C93.484,117.228 93.537,114.409 93.304,109.585C93.294,109.396 93.248,106.21 93.179,106.024C92.971,105.467 91.552,104.921 91.287,104.367L91.286,104.366C90.646,103.291 90.125,102.112 89.315,101.185C88.927,100.74 87.99,100.774 87.302,100.592C88.251,102.55 89.548,104.419 90.08,106.484C91.448,111.795 90.451,116.975 88.473,121.999" style="fill:#f8f1ed;fill-rule:nonzero;"/>
<path d="M84.955,83.037C84.933,82.716 84.912,82.396 84.89,82.075C84.792,81.85 84.695,81.625 84.597,81.399C83.951,79.253 83.304,77.107 82.658,74.96C82.425,74.945 82.192,74.931 81.958,74.916C80.644,78.371 79.329,81.827 78.014,85.283C78.871,85.01 79.729,84.741 80.585,84.464C82.042,83.991 83.499,83.513 84.955,83.037" style="fill:#e5a86e;fill-rule:nonzero;"/>
<path d="M77.719,91.861C78.053,89.3 79.294,87.42 81.314,86.328C82.526,85.673 84.018,85.301 85.762,85.236C85.493,84.503 85.224,83.77 84.955,83.037C83.499,83.513 82.043,83.991 80.585,84.464C79.73,84.741 78.872,85.01 78.015,85.283C77.407,87.086 76.709,88.866 76.225,90.702C76.067,91.299 76.118,91.748 76.369,91.968C76.62,92.189 77.072,92.18 77.719,91.861" style="fill:#e8be74;fill-rule:nonzero;"/>
<path d="M85.118,156.358C85.934,156.261 86.892,150.04 84.046,149.506C84.259,150.868 84.259,150.868 84.046,149.506C83.635,149.014 83.223,148.522 82.812,148.03C82.441,148.653 82.069,149.275 81.698,149.899C82.088,152.294 82.477,154.687 82.866,157.08C83.617,156.84 84.367,156.599 85.118,156.358C85.031,155.8 85.031,155.8 85.118,156.358ZM69.967,158.649C71.317,158.34 72.667,158.03 74.017,157.721L74.018,157.721C74.232,157.733 74.446,157.745 74.66,157.758L74.874,157.77C75,157.781 75.127,157.791 75.253,157.802L75.634,157.833C76.889,157.852 78.144,157.872 79.399,157.892C80.234,157.671 81.068,157.45 81.904,157.229C82.225,157.18 82.545,157.13 82.866,157.08C82.477,154.686 82.088,152.293 81.698,149.898C79.003,151.043 76.257,151.478 73.38,151.147C72.969,151.099 72.555,151.036 72.139,150.957C70.3,150.609 69.188,149.922 69.268,147.924C69.175,147.157 69.175,147.157 69.268,147.925C70.473,147.696 71.677,147.468 72.882,147.24L72.883,147.24C73.794,147.279 74.758,147.488 75.646,147.447C75.942,147.434 76.229,147.393 76.503,147.309C77.586,146.975 79.204,146.022 79.292,145.202C79.764,140.797 79.743,136.365 76.393,132.805C73.347,129.568 73.054,128.746 74.894,124.754C74.23,124.449 72.568,123.652 72.568,123.652C72.568,123.652 73.143,116.418 73.429,112.823C74.003,105.594 75.411,102.957 75.411,102.957C75.411,102.957 72.218,107.502 70.841,111.542C69.257,116.19 67.903,123.472 67.349,124.501C65.346,128.216 64.211,128.997 60.066,131.85C59.58,134.578 64.841,136.181 61.556,139.234C59.591,141.061 57.099,142.32 54.505,144.062C56.698,150.041 60.731,155.116 66.279,159.113C66.858,159.53 67.374,159.797 67.848,159.882C68.265,159.957 68.647,159.875 69.013,159.648C69.342,159.445 69.657,159.128 69.967,158.65C69.521,158.198 69.521,158.197 69.967,158.649Z" style="fill:#fdea8e;fill-rule:nonzero;"/>
<path d="M135.687,209.323C135.451,209.144 135.215,208.966 134.979,208.788C132.421,211.943 129.863,215.099 127.305,218.255C127.658,218.556 128.011,218.857 128.364,219.158C130.805,215.879 133.246,212.601 135.687,209.323" style="fill:#e8be74;fill-rule:nonzero;"/>
<path d="M84.891,82.075C84.793,81.85 84.696,81.624 84.598,81.399" style="fill:none;stroke:#c76238;stroke-width:0.1px;"/>
<path d="M120.695,225.862C120.548,226.023 120.402,226.183 120.256,226.344" style="fill:none;stroke:#c76238;stroke-width:0.1px;"/>
<path d="M148.049,194.835C147.865,194.671 147.682,194.506 147.498,194.342" style="fill:none;stroke:#c76238;stroke-width:0.1px;"/>
<path d="M118.403,191.359C118.174,191.376 117.945,191.392 117.716,191.409" style="fill:none;stroke:#c76238;stroke-width:0.1px;"/>
<path d="M98.084,281.49C98.031,281.419 97.97,281.373 97.901,281.353C97.833,281.332 97.756,281.338 97.672,281.369C97.809,281.409 97.947,281.45 98.084,281.49" style="fill:#e8be74;fill-rule:nonzero;"/>
<path d="M144.414,126.224C143.409,128.663 141.432,130.622 138.363,130.475C135.321,130.329 133.653,128.276 132.666,125.737C130.088,119.102 130.427,112.512 133.711,106.207C134.894,103.936 136.706,102.117 139.672,102.216C142.538,102.311 144.17,104.177 145.055,106.475C146.148,109.313 146.723,112.35 147.62,115.659C146.592,119.156 145.817,122.819 144.414,126.224M147.788,127.673C150.444,123.095 151.542,118.126 151.621,112.891C151.634,112.052 151.627,111.185 151.438,110.374C150.456,106.149 149.692,101.503 144.574,100.388C138.323,99.025 132.446,99.921 127.907,105.086C125.472,107.856 125.537,108.948 125.537,108.948L124.88,121.134C124.88,121.134 127.487,127.01 129.103,129.875C131.053,133.332 136.392,135.528 140.54,135.295C144.499,135.073 146.327,133.097 148.208,128.905C148.055,128.487 147.645,127.92 147.788,127.673" style="fill:#f8f1ed;fill-rule:nonzero;"/>
<path d="M195.672,76.297C195.856,76.411 196.04,76.525 196.225,76.639" style="fill:none;stroke:#c76238;stroke-width:0.1px;"/>
<path d="M66.493,303.478L66.493,303.478" style="fill:none;stroke:#920c09;stroke-width:0.1px;"/>
<path d="M66.493,303.478C66.498,303.481 66.504,303.485 66.509,303.488" style="fill:none;stroke:#920c09;stroke-width:0.1px;"/>
<path d="M66.493,303.478C65.87,303.096 65.246,302.714 64.623,302.332" style="fill:none;stroke:#920c09;stroke-width:0.1px;"/>
<path d="M81.85,114.229C79.876,114.171 78.378,115.378 78.388,117.017C78.405,119.699 80.41,122.932 82.114,123.023C83.683,123.108 85.993,120.342 86.123,118.223C86.238,116.348 84.039,114.293 81.85,114.229" style="fill:#fff;fill-rule:nonzero;"/>
<path d="M85.325,108.908C85.94,108.748 86.7,107.707 86.738,107.03C86.861,104.808 84.875,101.879 83.733,102.397C82.838,102.803 82.298,103.99 81.949,104.41C82.042,107.034 83.899,109.28 85.325,108.908" style="fill:#fff;fill-rule:nonzero;"/>
<path d="M217.991,86.438C230.321,79.789 240.098,70.519 247.793,58.835C256.411,45.747 262.171,31.267 268.694,17.152C268.854,16.805 268.714,16.319 268.714,15.677C244.203,23.722 221.526,34.049 205.848,55.794C207.747,56.084 209.351,56.163 210.85,56.603C212.454,57.074 213.959,57.885 215.507,58.547C214.578,59.963 213.931,61.739 212.669,62.731C208.155,66.28 203.431,69.563 199.116,72.707C202.975,76.677 207.296,80.936 211.386,85.408C213.462,87.677 215.284,87.898 217.991,86.438" style="fill:#ffe9a5;fill-rule:nonzero;"/>
<path d="M141.933,113.609C139.619,113.579 138.918,111.779 139.099,109.916C139.188,109.005 140.014,108.165 140.642,107.306C140.732,107.184 140.817,107.06 140.896,106.937C141.614,108.046 142.332,109.155 143.128,110.384C143.393,110.794 143.667,111.217 143.952,111.658C143.046,112.571 142.483,113.616 141.933,113.609M138.704,127.047C136.93,127.148 134.807,123.774 134.721,121.236C134.557,118.449 136.09,118.1 137.779,118.022C140.185,117.912 142.644,119.512 142.716,121.164C142.805,123.236 140.268,126.957 138.704,127.047M139.672,102.216C136.705,102.117 134.894,103.936 133.711,106.207C130.427,112.512 130.087,119.102 132.666,125.737C133.653,128.276 135.321,130.329 138.363,130.475C141.431,130.622 143.409,128.663 144.414,126.224C145.817,122.819 146.592,119.156 147.619,115.659C146.723,112.35 146.148,109.313 145.055,106.475C144.169,104.177 142.538,102.311 139.672,102.216" style="fill:#930e0b;fill-rule:nonzero;"/>
<path d="M137.779,118.022C136.09,118.099 134.557,118.448 134.721,121.235C134.807,123.774 136.93,127.148 138.704,127.046C140.268,126.957 142.805,123.235 142.715,121.164C142.644,119.512 140.185,117.912 137.779,118.022" style="fill:#fff;fill-rule:nonzero;"/>
<path d="M140.896,106.936C140.817,107.06 140.732,107.183 140.642,107.306C140.014,108.165 139.188,109.004 139.099,109.916C138.918,111.779 139.619,113.578 141.933,113.608C142.483,113.616 143.046,112.57 143.952,111.657C143.667,111.216 143.393,110.793 143.128,110.384C142.332,109.155 141.614,108.045 140.896,106.936" style="fill:#dfd5dc;fill-rule:nonzero;"/>
<path d="M205.848,55.794C207.747,56.084 209.352,56.163 210.85,56.603C212.455,57.074 213.959,57.885 215.507,58.547C214.578,59.964 213.932,61.739 212.669,62.731C208.155,66.28 203.432,69.563 199.117,72.707C202.975,76.677 207.297,80.936 211.386,85.408C213.462,87.677 215.284,87.898 217.991,86.438C222.078,84.234 225.859,81.716 229.401,78.944L233.494,72.903L231.467,72.677L235.295,70.951L233.719,69.675L237.472,69.75L238.373,67.723L232.293,64.495L239.199,64.045L235.821,59.616L240.625,54.811L232.518,53.31L244.454,40.173L232.518,44.152L234.094,42.35L246.781,29.664L231.392,37.921L232.368,34.994L229.425,33.445C220.557,39.285 212.558,46.488 205.848,55.794" style="fill:#e8be74;fill-rule:nonzero;"/>
<path d="M205.848,55.794C207.747,56.084 209.352,56.163 210.85,56.603C212.455,57.074 213.959,57.885 215.507,58.547C214.578,59.964 213.932,61.739 212.669,62.731C208.155,66.28 203.432,69.563 199.117,72.707C202.975,76.677 207.297,80.936 211.386,85.408C213.462,87.677 215.284,87.898 217.991,86.438C220.146,85.276 222.195,84.006 224.196,82.685L230.191,74.104L225.837,74.104L231.842,71.101L223.435,68.849L236.046,68.098L224.936,62.994L236.496,63.144L233.494,59.991L237.697,56.087L229.29,54.736L240.1,43.326L229.29,46.779L231.692,42.575L242.652,33.117L227.188,41.825L229.89,36.12L227.257,34.923C219.254,40.494 212.005,47.254 205.848,55.794" style="fill:#fffab6;fill-rule:nonzero;"/>
<path d="M72.14,90.675C73.163,87.63 73.785,85.472 74.608,83.394C76.295,79.133 78.106,74.922 79.831,70.676C80.635,68.698 80.385,67.14 78.247,66.01C73.868,63.696 69.786,60.677 65.211,58.909C59.846,56.837 54.441,54.868 49.021,52.941L40.069,51.984L51.38,57.389L41.271,56.388L48.277,58.69L51.98,62.593L48.377,63.194L51.78,64.895L49.078,65.996L53.782,68.398C53.782,68.398 47.376,68.599 45.674,68.999C45.674,68.999 53.381,72.502 57.485,72.702C57.485,72.702 52.981,74.003 48.577,73.503C48.577,73.503 51.079,76.806 56.084,77.106L51.38,78.708L56.822,84.652C57.916,85.229 59.029,85.787 60.162,86.324C63.91,88.102 67.987,89.188 72.14,90.675" style="fill:#e8be74;fill-rule:nonzero;"/>
<path d="M74.608,83.394C76.295,79.133 78.106,74.922 79.831,70.676C80.635,68.699 80.385,67.14 78.247,66.01C73.868,63.696 69.786,60.677 65.21,58.909C61.247,57.378 57.258,55.911 53.26,54.466L48.877,54.186L55.383,58.089L47.876,57.789L54.582,62.893L53.381,63.194L55.984,64.895L50.078,66.397L57.485,68.999L50.078,69.6L60.688,72.002C60.688,72.002 55.883,74.504 52.48,74.804L59.987,76.806L54.883,79.709L60.069,86.278C60.1,86.293 60.13,86.309 60.162,86.324C63.91,88.102 67.987,89.188 72.14,90.675C73.163,87.63 73.785,85.472 74.608,83.394" style="fill:#fffab6;fill-rule:nonzero;"/>
<path d="M125.571,107.184C127.074,96.567 132.873,92.852 144.224,94.15C146.918,94.458 149.981,95.845 151.902,97.727C156.221,101.961 161.153,104.603 167.118,105.814C160.58,107.775 158.399,113.317 156.136,118.655C154.372,122.817 152.084,126.441 148.207,128.905C146.326,133.097 142.498,134.074 138.539,134.295C134.391,134.528 131.052,132.332 129.103,128.875C127.486,126.01 126.407,123.092 125.879,120.135C125.704,119.149 125.589,118.159 125.536,117.165C125.484,116.19 125.494,115.212 125.561,114.23C125.566,114.159 125.574,114.089 125.58,114.018C125.809,111.065 126.577,108.083 127.906,105.086C127.814,105.169 127.718,105.255 127.626,105.338C126.992,105.907 126.347,106.487 125.571,107.184M91.287,104.367C91.552,104.921 91.971,105.468 92.179,106.025C92.248,106.21 92.294,106.397 92.303,106.585C92.536,111.41 92.484,116.229 90.196,120.667C89.894,121.252 89.06,121.562 88.473,122C87.275,123.475 88.74,123.31 89.461,123.604C91.271,124.341 93.242,124.829 94.855,125.871C97.499,127.577 97.568,130.567 94.997,132.385C93.351,133.549 91.375,134.301 89.468,135.029C85.749,136.45 84.623,138.386 84.999,143.311C85.241,146.477 87.787,147.259 90.156,147.497C94.982,147.983 99.878,147.793 104.698,148.318C108.925,148.778 113.108,149.749 117.258,150.716C117.9,150.866 118.264,152.207 118.756,152.998C117.911,153.387 116.825,154.329 116.26,154.082C110.263,151.454 103.935,152.407 97.716,151.966C95.994,151.843 94.282,151.587 92.574,151.269C89.727,150.74 86.892,150.04 84.046,149.506C84.403,151.79 84.76,154.074 85.118,156.358C85.934,156.261 86.749,156.177 87.563,156.109C89.189,155.973 90.81,155.899 92.422,155.914C95.648,155.942 98.844,156.322 102.003,157.249C102.793,157.48 103.58,157.746 104.365,158.049C106.636,158.926 108.282,160.121 108.767,162.591C114.287,162.442 119.535,163.552 124.632,165.691C132.964,169.188 141.79,168.819 150.45,168.033C164.288,166.775 177.431,162.613 189.967,156.662C195.704,153.939 199.469,148.915 203.733,144.307C201.932,141.976 200.311,139.806 198.607,137.703C197.618,136.484 197.27,135.28 198.784,134.391C203.373,131.696 204.257,127.233 204.43,122.542C204.827,111.754 205.093,100.927 202.25,90.393C201.263,86.735 199.29,83.343 197.758,79.833C197.314,78.817 196.839,77.814 196.378,76.804L196.224,76.639C196.04,76.526 195.856,76.411 195.671,76.297C194.699,75.579 193.621,74.963 192.786,74.109C192.12,73.427 191.277,72.391 191.382,71.632C191.482,70.905 192.604,69.996 193.447,69.748C199.026,68.102 204.088,65.576 208.352,61.568C208.67,61.269 208.93,60.909 209.839,59.859C207.222,59.859 205.305,59.976 203.412,59.814C202.31,59.72 200.634,59.456 200.324,58.768C199.966,57.975 200.564,56.442 201.2,55.555C211.695,40.916 224.963,29.529 241.531,22.336C251.064,18.198 260.849,14.634 270.573,10.951C271.693,10.526 273.152,10.995 274.453,11.049C278.172,9.185 280.307,5.988 282.357,3.54C280.213,4.117 276.322,4.877 274.174,5.433C250.613,11.533 227.429,18.573 206.936,32.333C204.897,33.702 203.649,33.305 202.552,31.02C201.567,28.967 200.063,27.163 198.787,25.25C198.473,25.348 198.159,25.446 197.844,25.544C197.12,34.524 192.193,41.332 186.669,47.809C183.322,51.734 179.753,55.475 176.518,59.487C174.656,61.796 172.749,62.296 169.926,61.533C159.69,58.766 149.235,57.737 138.719,59.228C119.411,61.967 103.091,70.331 90.619,85.65C89.638,86.855 88.894,87.499 88.232,87.593C88.043,87.619 87.86,87.601 87.681,87.538C87.591,87.506 87.503,87.463 87.414,87.409C86.883,87.085 86.365,86.359 85.762,85.236L85.761,85.236L85.762,85.237C84.017,85.302 82.525,85.673 81.314,86.328C79.294,87.42 78.053,89.3 77.719,91.861C78.084,91.782 78.446,91.684 78.815,91.626C86.596,90.401 92.326,92.356 91.719,102.273C91.671,102.557 91.624,102.841 91.576,103.123C91.479,103.536 91.383,103.952 91.287,104.367" style="fill:#fdea8e;fill-rule:nonzero;"/>
</svg>
<?xml version="1.0"?>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24px" height="24px">
<path style="fill:#ffffff;" d="M 16.125 1 C 14.972 1.067 13.648328 1.7093438 12.861328 2.5273438 C 12.150328 3.2713438 11.589359 4.3763125 11.818359 5.4453125 C 13.071359 5.4783125 14.329031 4.8193281 15.082031 3.9863281 C 15.785031 3.2073281 16.318 2.12 16.125 1 z M 16.193359 5.4433594 C 14.384359 5.4433594 13.628 6.5546875 12.375 6.5546875 C 11.086 6.5546875 9.9076562 5.5136719 8.3476562 5.5136719 C 6.2256562 5.5146719 3 7.4803281 3 12.111328 C 3 16.324328 6.8176563 21 8.9726562 21 C 10.281656 21.013 10.599 20.176969 12.375 20.167969 C 14.153 20.154969 14.536656 21.011 15.847656 21 C 17.323656 20.989 18.476359 19.367031 19.318359 18.082031 C 19.922359 17.162031 20.170672 16.692344 20.638672 15.652344 C 17.165672 14.772344 16.474672 9.1716719 20.638672 8.0136719 C 19.852672 6.6726719 17.558359 5.4433594 16.193359 5.4433594 z"/>
</svg>
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="80pt" height="80pt" viewBox="0 0 80 80" version="1.1">
<defs>
<linearGradient id="linear0" gradientUnits="userSpaceOnUse" x1="32" y1="18.6667" x2="32" y2="47.3047" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#6DC7FF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#E6ABFF;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linear1" gradientUnits="userSpaceOnUse" x1="41" y1="25" x2="41" y2="31.5765" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#6DC7FF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#E6ABFF;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linear2" gradientUnits="userSpaceOnUse" x1="32" y1="8.3333" x2="32" y2="55.5027" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#1A6DFF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#C822FF;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linear3" gradientUnits="userSpaceOnUse" x1="32" y1="8.3333" x2="32" y2="55.5027" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#1A6DFF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#C822FF;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linear4" gradientUnits="userSpaceOnUse" x1="23" y1="8.3333" x2="23" y2="55.5027" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#1A6DFF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#C822FF;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linear5" gradientUnits="userSpaceOnUse" x1="23" y1="8.3333" x2="23" y2="55.5027" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#1A6DFF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#C822FF;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linear6" gradientUnits="userSpaceOnUse" x1="23" y1="8.3333" x2="23" y2="55.5027" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#1A6DFF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#C822FF;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linear7" gradientUnits="userSpaceOnUse" x1="21" y1="8.3333" x2="21" y2="55.5027" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#1A6DFF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#C822FF;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linear8" gradientUnits="userSpaceOnUse" x1="41" y1="8.3333" x2="41" y2="55.5027" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#1A6DFF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#C822FF;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linear9" gradientUnits="userSpaceOnUse" x1="39" y1="8.3333" x2="39" y2="55.5027" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#1A6DFF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#C822FF;stop-opacity:1;"/>
</linearGradient>
</defs>
<g id="surface1">
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear0);" d="M 65 58.75 L 15 58.75 C 13.621094 58.75 12.5 57.628906 12.5 56.25 L 12.5 26.25 C 12.5 24.871094 13.621094 23.75 15 23.75 L 65 23.75 C 66.378906 23.75 67.5 24.871094 67.5 26.25 L 67.5 56.25 C 67.5 57.628906 66.378906 58.75 65 58.75 Z M 15 26.25 L 15 56.25 L 65.003906 56.25 L 65 26.25 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear1);" d="M 58.75 38.75 L 43.75 38.75 C 43.058594 38.75 42.5 38.191406 42.5 37.5 L 42.5 32.5 C 42.5 31.808594 43.058594 31.25 43.75 31.25 L 58.75 31.25 C 59.441406 31.25 60 31.808594 60 32.5 L 60 37.5 C 60 38.191406 59.441406 38.75 58.75 38.75 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear2);" d="M 68.75 11.25 L 11.25 11.25 C 9.183594 11.25 7.5 12.933594 7.5 15 L 7.5 60 C 7.5 62.066406 9.183594 63.75 11.25 63.75 L 68.75 63.75 C 70.816406 63.75 72.5 62.066406 72.5 60 L 72.5 15 C 72.5 12.933594 70.816406 11.25 68.75 11.25 Z M 70 15 L 70 18.75 L 44.046875 18.75 C 43.570313 18.75 43.140625 18.484375 42.925781 18.054688 L 40.773438 13.75 L 68.75 13.75 C 69.441406 13.75 70 14.308594 70 15 Z M 37.207031 13.75 C 37.683594 13.75 38.109375 14.015625 38.324219 14.4375 L 40.476563 18.75 L 31.546875 18.75 C 31.066406 18.75 30.640625 18.484375 30.425781 18.058594 L 28.273438 13.75 Z M 68.75 61.25 L 11.25 61.25 C 10.558594 61.25 10 60.691406 10 60 L 10 15 C 10 14.308594 10.558594 13.75 11.25 13.75 L 24.707031 13.75 C 25.183594 13.75 25.609375 14.015625 25.824219 14.441406 L 28.191406 19.175781 C 28.828125 20.453125 30.117188 21.25 31.546875 21.25 L 70 21.25 L 70 60 C 70 60.691406 69.441406 61.25 68.75 61.25 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear3);" d="M 12.5 66.25 L 67.5 66.25 L 67.5 68.75 L 12.5 68.75 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear4);" d="M 20 31.25 L 37.5 31.25 L 37.5 33.75 L 20 33.75 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear5);" d="M 20 36.25 L 37.5 36.25 L 37.5 38.75 L 20 38.75 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear6);" d="M 20 41.25 L 37.5 41.25 L 37.5 43.75 L 20 43.75 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear7);" d="M 20 46.25 L 32.5 46.25 L 32.5 48.75 L 20 48.75 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear8);" d="M 42.5 41.25 L 60 41.25 L 60 43.75 L 42.5 43.75 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear9);" d="M 42.5 46.25 L 55 46.25 L 55 48.75 L 42.5 48.75 Z "/>
</g>
</svg>
<svg fill="#000000" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 80 80" width="80px" height="80px"><path d="M 40 7 C 21.785156 7 7 21.785156 7 40 C 7 58.214844 21.785156 73 40 73 C 58.214844 73 73 58.214844 73 40 C 73 21.785156 58.214844 7 40 7 Z M 40 9 C 57.132813 9 71 22.867188 71 40 C 71 57.132813 57.132813 71 40 71 C 22.867188 71 9 57.132813 9 40 C 9 22.867188 22.867188 9 40 9 Z M 40 12 C 39.449219 12 39 12.449219 39 13 C 39 13.550781 39.449219 14 40 14 C 40.550781 14 41 13.550781 41 13 C 41 12.449219 40.550781 12 40 12 Z M 45.292969 12.515625 C 44.804688 12.503906 44.382813 12.84375 44.285156 13.324219 C 44.179688 13.863281 44.53125 14.390625 45.074219 14.5 C 45.613281 14.605469 46.140625 14.253906 46.25 13.714844 C 46.355469 13.171875 46.003906 12.644531 45.464844 12.535156 C 45.40625 12.527344 45.351563 12.519531 45.292969 12.515625 Z M 34.738281 12.519531 C 34.671875 12.519531 34.605469 12.523438 34.539063 12.535156 C 33.996094 12.644531 33.644531 13.171875 33.753906 13.714844 C 33.804688 13.972656 33.957031 14.203125 34.179688 14.351563 C 34.398438 14.496094 34.667969 14.550781 34.929688 14.5 C 35.472656 14.390625 35.824219 13.867188 35.714844 13.324219 C 35.621094 12.859375 35.214844 12.523438 34.738281 12.519531 Z M 29.675781 14.054688 C 29.542969 14.054688 29.410156 14.078125 29.285156 14.128906 C 28.773438 14.34375 28.53125 14.925781 28.746094 15.4375 C 28.957031 15.949219 29.539063 16.191406 30.050781 15.980469 C 30.5625 15.765625 30.804688 15.183594 30.59375 14.671875 C 30.4375 14.300781 30.078125 14.058594 29.675781 14.054688 Z M 50.355469 14.054688 C 49.941406 14.046875 49.566406 14.289063 49.40625 14.671875 C 49.195313 15.183594 49.4375 15.765625 49.949219 15.980469 C 50.460938 16.191406 51.042969 15.949219 51.253906 15.4375 C 51.46875 14.925781 51.226563 14.34375 50.714844 14.128906 C 50.601563 14.082031 50.476563 14.058594 50.355469 14.054688 Z M 25.011719 16.546875 C 24.808594 16.546875 24.609375 16.605469 24.441406 16.71875 C 23.984375 17.023438 23.859375 17.644531 24.167969 18.105469 C 24.472656 18.5625 25.09375 18.6875 25.554688 18.378906 C 26.015625 18.074219 26.136719 17.453125 25.832031 16.996094 C 25.648438 16.71875 25.339844 16.550781 25.011719 16.546875 Z M 55.015625 16.546875 C 54.675781 16.542969 54.355469 16.710938 54.167969 16.996094 C 53.859375 17.453125 53.984375 18.074219 54.441406 18.378906 C 54.902344 18.6875 55.523438 18.5625 55.828125 18.105469 C 55.976563 17.886719 56.03125 17.613281 55.980469 17.355469 C 55.929688 17.09375 55.777344 16.863281 55.554688 16.71875 C 55.394531 16.609375 55.210938 16.550781 55.015625 16.546875 Z M 20.921875 19.90625 C 20.652344 19.90625 20.390625 20.011719 20.203125 20.203125 C 19.8125 20.589844 19.8125 21.226563 20.203125 21.613281 C 20.589844 22.003906 21.226563 22.003906 21.613281 21.613281 C 22.003906 21.226563 22.003906 20.589844 21.613281 20.203125 C 21.429688 20.015625 21.183594 19.910156 20.921875 19.90625 Z M 59.105469 19.90625 C 58.835938 19.90625 58.574219 20.011719 58.386719 20.203125 C 57.996094 20.589844 57.996094 21.226563 58.386719 21.613281 C 58.773438 22.003906 59.410156 22.003906 59.796875 21.613281 C 60.1875 21.226563 60.1875 20.589844 59.796875 20.203125 C 59.613281 20.015625 59.367188 19.910156 59.105469 19.90625 Z M 62.460938 24 C 62.257813 23.996094 62.0625 24.054688 61.894531 24.167969 C 61.4375 24.472656 61.3125 25.09375 61.621094 25.550781 C 61.925781 26.011719 62.546875 26.136719 63.003906 25.828125 C 63.464844 25.519531 63.589844 24.902344 63.28125 24.441406 C 63.097656 24.167969 62.789063 24 62.460938 24 Z M 17.566406 24 C 17.226563 23.992188 16.90625 24.160156 16.71875 24.441406 C 16.414063 24.902344 16.535156 25.523438 16.996094 25.828125 C 17.457031 26.136719 18.074219 26.011719 18.382813 25.554688 C 18.6875 25.09375 18.566406 24.472656 18.105469 24.167969 C 17.945313 24.0625 17.761719 24.003906 17.566406 24 Z M 31.515625 25.859375 L 25.859375 31.515625 L 34.34375 40 L 25.859375 48.484375 L 31.515625 54.140625 L 40 45.65625 L 48.484375 54.140625 L 54.140625 48.484375 L 45.65625 40 L 54.140625 31.515625 L 53.4375 30.808594 L 48.484375 25.859375 L 40 34.34375 Z M 64.953125 28.667969 C 64.820313 28.664063 64.6875 28.691406 64.5625 28.742188 C 64.050781 28.953125 63.808594 29.539063 64.019531 30.046875 C 64.234375 30.558594 64.816406 30.800781 65.328125 30.589844 C 65.839844 30.378906 66.082031 29.792969 65.871094 29.28125 C 65.714844 28.914063 65.355469 28.667969 64.953125 28.667969 Z M 15.078125 28.667969 C 14.664063 28.660156 14.289063 28.902344 14.132813 29.285156 C 13.921875 29.796875 14.164063 30.378906 14.671875 30.59375 C 15.183594 30.804688 15.769531 30.5625 15.980469 30.050781 C 16.191406 29.539063 15.949219 28.957031 15.4375 28.746094 C 15.324219 28.695313 15.203125 28.671875 15.078125 28.667969 Z M 31.515625 28.6875 L 40 37.171875 L 48.484375 28.6875 L 51.3125 31.515625 L 42.828125 40 L 51.3125 48.484375 L 48.484375 51.3125 L 40 42.828125 L 31.515625 51.3125 L 28.6875 48.484375 L 37.171875 40 L 28.6875 31.515625 Z M 66.484375 33.734375 C 66.417969 33.730469 66.351563 33.738281 66.285156 33.75 C 65.746094 33.859375 65.394531 34.386719 65.5 34.925781 C 65.609375 35.46875 66.136719 35.820313 66.675781 35.714844 C 67.21875 35.605469 67.570313 35.078125 67.464844 34.535156 C 67.371094 34.070313 66.960938 33.734375 66.484375 33.734375 Z M 13.546875 33.734375 C 13.058594 33.722656 12.636719 34.058594 12.539063 34.535156 C 12.488281 34.796875 12.539063 35.070313 12.6875 35.289063 C 12.835938 35.511719 13.066406 35.664063 13.328125 35.714844 C 13.585938 35.765625 13.855469 35.710938 14.078125 35.566406 C 14.296875 35.417969 14.449219 35.1875 14.5 34.925781 C 14.609375 34.386719 14.257813 33.859375 13.71875 33.75 C 13.660156 33.742188 13.605469 33.734375 13.546875 33.734375 Z M 13 39 C 12.449219 39 12 39.449219 12 40 C 12 40.550781 12.449219 41 13 41 C 13.550781 41 14 40.550781 14 40 C 14 39.449219 13.550781 39 13 39 Z M 67 39 C 66.449219 39 66 39.449219 66 40 C 66 40.550781 66.449219 41 67 41 C 67.550781 41 68 40.550781 68 40 C 68 39.449219 67.550781 39 67 39 Z M 13.523438 44.265625 C 13.457031 44.265625 13.390625 44.273438 13.324219 44.285156 C 12.78125 44.394531 12.429688 44.921875 12.539063 45.464844 C 12.648438 46.003906 13.171875 46.355469 13.714844 46.25 C 14.257813 46.140625 14.609375 45.613281 14.5 45.074219 C 14.40625 44.605469 14 44.269531 13.523438 44.265625 Z M 66.507813 44.265625 C 66.019531 44.253906 65.597656 44.59375 65.5 45.074219 C 65.394531 45.613281 65.746094 46.140625 66.285156 46.25 C 66.828125 46.355469 67.355469 46.003906 67.464844 45.464844 C 67.570313 44.921875 67.21875 44.394531 66.675781 44.285156 C 66.621094 44.277344 66.566406 44.269531 66.507813 44.265625 Z M 64.96875 49.328125 C 64.554688 49.320313 64.179688 49.566406 64.019531 49.949219 C 63.808594 50.457031 64.050781 51.042969 64.5625 51.253906 C 65.074219 51.464844 65.65625 51.222656 65.871094 50.714844 C 66.082031 50.203125 65.839844 49.617188 65.328125 49.40625 C 65.214844 49.359375 65.089844 49.332031 64.96875 49.328125 Z M 15.0625 49.332031 C 14.929688 49.332031 14.796875 49.355469 14.671875 49.40625 C 14.429688 49.507813 14.234375 49.703125 14.132813 49.949219 C 14.03125 50.195313 14.03125 50.46875 14.128906 50.714844 C 14.34375 51.226563 14.925781 51.46875 15.4375 51.253906 C 15.683594 51.15625 15.878906 50.960938 15.980469 50.714844 C 16.082031 50.46875 16.082031 50.195313 15.980469 49.949219 C 15.828125 49.578125 15.464844 49.335938 15.0625 49.332031 Z M 62.46875 54 C 62.128906 53.992188 61.808594 54.160156 61.621094 54.441406 C 61.3125 54.902344 61.4375 55.519531 61.894531 55.828125 C 62.113281 55.976563 62.386719 56.03125 62.644531 55.976563 C 62.90625 55.925781 63.136719 55.773438 63.28125 55.550781 C 63.589844 55.09375 63.464844 54.472656 63.003906 54.167969 C 62.847656 54.058594 62.660156 54 62.46875 54 Z M 17.5625 54 C 17.359375 53.996094 17.164063 54.054688 16.996094 54.167969 C 16.539063 54.476563 16.414063 55.09375 16.71875 55.554688 C 17.027344 56.011719 17.648438 56.136719 18.109375 55.828125 C 18.566406 55.523438 18.691406 54.902344 18.382813 54.441406 C 18.199219 54.167969 17.890625 54.003906 17.5625 54 Z M 20.921875 58.09375 C 20.652344 58.089844 20.390625 58.195313 20.203125 58.386719 C 19.8125 58.773438 19.8125 59.410156 20.203125 59.796875 C 20.589844 60.1875 21.226563 60.1875 21.613281 59.796875 C 22.003906 59.410156 22.003906 58.773438 21.613281 58.386719 C 21.429688 58.199219 21.183594 58.09375 20.921875 58.09375 Z M 59.105469 58.09375 C 58.835938 58.089844 58.574219 58.195313 58.386719 58.386719 C 57.996094 58.773438 57.996094 59.410156 58.386719 59.796875 C 58.773438 60.1875 59.410156 60.1875 59.796875 59.796875 C 60.1875 59.410156 60.1875 58.773438 59.796875 58.386719 C 59.613281 58.199219 59.367188 58.09375 59.105469 58.09375 Z M 25.019531 61.449219 C 24.679688 61.441406 24.359375 61.609375 24.171875 61.890625 C 23.863281 62.351563 23.988281 62.972656 24.449219 63.28125 C 24.90625 63.585938 25.527344 63.460938 25.832031 63.003906 C 26.140625 62.542969 26.015625 61.925781 25.558594 61.617188 C 25.398438 61.511719 25.210938 61.449219 25.019531 61.449219 Z M 55.011719 61.449219 C 54.808594 61.445313 54.613281 61.503906 54.445313 61.613281 C 54.222656 61.761719 54.070313 61.992188 54.019531 62.253906 C 53.96875 62.511719 54.023438 62.785156 54.171875 63.003906 C 54.476563 63.460938 55.097656 63.585938 55.558594 63.28125 C 56.015625 62.972656 56.140625 62.351563 55.832031 61.890625 C 55.652344 61.617188 55.34375 61.449219 55.011719 61.449219 Z M 29.691406 63.941406 C 29.277344 63.933594 28.902344 64.179688 28.746094 64.5625 C 28.535156 65.070313 28.777344 65.65625 29.285156 65.867188 C 29.796875 66.078125 30.382813 65.835938 30.59375 65.328125 C 30.804688 64.816406 30.5625 64.230469 30.050781 64.019531 C 29.9375 63.972656 29.816406 63.945313 29.691406 63.941406 Z M 50.339844 63.941406 C 50.207031 63.941406 50.074219 63.96875 49.953125 64.019531 C 49.707031 64.121094 49.511719 64.316406 49.410156 64.558594 C 49.308594 64.804688 49.308594 65.082031 49.40625 65.328125 C 49.621094 65.835938 50.203125 66.078125 50.714844 65.867188 C 50.960938 65.765625 51.15625 65.570313 51.257813 65.328125 C 51.359375 65.082031 51.359375 64.804688 51.257813 64.5625 C 51.105469 64.1875 50.742188 63.945313 50.339844 63.941406 Z M 34.761719 65.480469 C 34.273438 65.46875 33.847656 65.808594 33.753906 66.285156 C 33.644531 66.828125 33.996094 67.351563 34.539063 67.460938 C 35.082031 67.570313 35.605469 67.21875 35.714844 66.675781 C 35.824219 66.132813 35.472656 65.609375 34.929688 65.5 C 34.875 65.488281 34.816406 65.480469 34.761719 65.480469 Z M 45.269531 65.484375 C 45.203125 65.480469 45.136719 65.488281 45.074219 65.5 C 44.53125 65.609375 44.179688 66.132813 44.285156 66.675781 C 44.339844 66.9375 44.492188 67.164063 44.710938 67.3125 C 44.933594 67.460938 45.203125 67.515625 45.464844 67.464844 C 45.722656 67.410156 45.953125 67.257813 46.101563 67.039063 C 46.246094 66.816406 46.300781 66.546875 46.25 66.285156 C 46.15625 65.820313 45.746094 65.484375 45.269531 65.484375 Z M 40 66 C 39.449219 66 39 66.449219 39 67 C 39 67.550781 39.449219 68 40 68 C 40.550781 68 41 67.550781 41 67 C 41 66.449219 40.550781 66 40 66 Z"/></svg>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="80pt" height="80pt" viewBox="0 0 80 80" version="1.1">
<defs>
<linearGradient id="linear0" gradientUnits="userSpaceOnUse" x1="19" y1="41.625" x2="19" y2="48.5182" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#6DC7FF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#E6ABFF;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linear1" gradientUnits="userSpaceOnUse" x1="45" y1="15.625" x2="45" y2="22.6261" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#6DC7FF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#E6ABFF;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linear2" gradientUnits="userSpaceOnUse" x1="19" y1="8" x2="19" y2="57.2906" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#1A6DFF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#C822FF;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linear3" gradientUnits="userSpaceOnUse" x1="19" y1="8" x2="19" y2="57.2906" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#1A6DFF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#C822FF;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linear4" gradientUnits="userSpaceOnUse" x1="45" y1="8" x2="45" y2="57.2906" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#1A6DFF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#C822FF;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linear5" gradientUnits="userSpaceOnUse" x1="45" y1="8" x2="45" y2="57.2906" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#1A6DFF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#C822FF;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linear6" gradientUnits="userSpaceOnUse" x1="45" y1="8" x2="45" y2="57.2906" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#1A6DFF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#C822FF;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linear7" gradientUnits="userSpaceOnUse" x1="45" y1="8" x2="45" y2="57.2906" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#1A6DFF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#C822FF;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linear8" gradientUnits="userSpaceOnUse" x1="19" y1="8" x2="19" y2="57.2906" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#1A6DFF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#C822FF;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linear9" gradientUnits="userSpaceOnUse" x1="19" y1="8" x2="19" y2="57.2906" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#1A6DFF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#C822FF;stop-opacity:1;"/>
</linearGradient>
</defs>
<g id="surface1">
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear0);" d="M 27.5 56.25 C 27.5 58.320313 25.820313 60 23.75 60 C 21.679688 60 20 58.320313 20 56.25 C 20 54.179688 21.679688 52.5 23.75 52.5 C 25.820313 52.5 27.5 54.179688 27.5 56.25 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear1);" d="M 60 26.25 C 60 26.941406 59.441406 27.5 58.75 27.5 L 53.75 27.5 C 53.058594 27.5 52.5 26.941406 52.5 26.25 L 52.5 21.25 C 52.5 20.558594 53.058594 20 53.75 20 L 58.75 20 C 59.441406 20 60 20.558594 60 21.25 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear2);" d="M 33.75 10 L 13.75 10 C 11.683594 10 10 11.683594 10 13.75 L 10 33.75 C 10 35.816406 11.683594 37.5 13.75 37.5 L 33.75 37.5 C 35.816406 37.5 37.5 35.816406 37.5 33.75 L 37.5 13.75 C 37.5 11.683594 35.816406 10 33.75 10 Z M 35 33.75 C 35 34.441406 34.4375 35 33.75 35 L 13.75 35 C 13.0625 35 12.5 34.441406 12.5 33.75 L 12.5 13.75 C 12.5 13.058594 13.0625 12.5 13.75 12.5 L 33.75 12.5 C 34.4375 12.5 35 13.058594 35 13.75 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear3);" d="M 33.75 42.5 L 13.75 42.5 C 11.683594 42.5 10 44.183594 10 46.25 L 10 66.25 C 10 68.316406 11.683594 70 13.75 70 L 33.75 70 C 35.816406 70 37.5 68.316406 37.5 66.25 L 37.5 46.25 C 37.5 44.183594 35.816406 42.5 33.75 42.5 Z M 35 66.25 C 35 66.941406 34.4375 67.5 33.75 67.5 L 13.75 67.5 C 13.0625 67.5 12.5 66.941406 12.5 66.25 L 12.5 46.25 C 12.5 45.558594 13.0625 45 13.75 45 L 33.75 45 C 34.4375 45 35 45.558594 35 46.25 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear4);" d="M 66.25 10 L 46.25 10 C 44.183594 10 42.5 11.683594 42.5 13.75 L 42.5 33.75 C 42.5 35.816406 44.183594 37.5 46.25 37.5 L 66.25 37.5 C 68.316406 37.5 70 35.816406 70 33.75 L 70 13.75 C 70 11.683594 68.316406 10 66.25 10 Z M 67.5 33.75 C 67.5 34.441406 66.9375 35 66.25 35 L 46.25 35 C 45.5625 35 45 34.441406 45 33.75 L 45 13.75 C 45 13.058594 45.5625 12.5 46.25 12.5 L 66.25 12.5 C 66.9375 12.5 67.5 13.058594 67.5 13.75 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear5);" d="M 66.25 42.5 L 46.25 42.5 C 44.183594 42.5 42.5 44.183594 42.5 46.25 L 42.5 66.25 C 42.5 68.316406 44.183594 70 46.25 70 L 66.25 70 C 68.316406 70 70 68.316406 70 66.25 L 70 46.25 C 70 44.183594 68.316406 42.5 66.25 42.5 Z M 67.5 66.25 C 67.5 66.941406 66.9375 67.5 66.25 67.5 L 46.25 67.5 C 45.5625 67.5 45 66.941406 45 66.25 L 45 46.25 C 45 45.558594 45.5625 45 46.25 45 L 66.25 45 C 66.9375 45 67.5 45.558594 67.5 46.25 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear6);" d="M 62.5 15 L 50 15 C 48.621094 15 47.5 16.121094 47.5 17.5 L 47.5 30 C 47.5 31.378906 48.621094 32.5 50 32.5 L 62.5 32.5 C 63.878906 32.5 65 31.378906 65 30 L 65 17.5 C 65 16.121094 63.878906 15 62.5 15 Z M 62.5 30 L 50 30 L 50 17.5 L 62.5 17.5 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear7);" d="M 62.5 47.5 L 50 47.5 C 48.621094 47.5 47.5 48.621094 47.5 50 L 47.5 62.5 C 47.5 63.878906 48.621094 65 50 65 L 62.5 65 C 63.878906 65 65 63.878906 65 62.5 L 65 50 C 65 48.621094 63.878906 47.5 62.5 47.5 Z M 62.5 50 L 62.5 52.5 L 50 52.5 L 50 50 Z M 50 62.5 L 50 55 L 62.5 55 L 62.5 62.5 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear8);" d="M 30 47.5 L 17.5 47.5 C 16.121094 47.5 15 48.621094 15 50 L 15 62.5 C 15 63.878906 16.121094 65 17.5 65 L 30 65 C 31.378906 65 32.5 63.878906 32.5 62.5 L 32.5 50 C 32.5 48.621094 31.378906 47.5 30 47.5 Z M 30 62.5 L 17.5 62.5 L 17.5 50 L 30 50 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear9);" d="M 30 15 L 17.5 15 C 16.121094 15 15 16.121094 15 17.5 L 15 30 C 15 31.378906 16.121094 32.5 17.5 32.5 L 30 32.5 C 31.378906 32.5 32.5 31.378906 32.5 30 L 32.5 17.5 C 32.5 16.121094 31.378906 15 30 15 Z M 30 17.5 L 30 20 L 17.5 20 L 17.5 17.5 Z M 30 22.5 L 30 25 L 17.5 25 L 17.5 22.5 Z M 17.5 30 L 17.5 27.5 L 30 27.5 L 30 30 Z "/>
</g>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" width="96px" height="96px"><linearGradient id="r6aF76sThYJjByxe12PMJa" x1="26.5" x2="26.5" y1="16.5" y2="26.237" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#6dc7ff"/><stop offset="1" stop-color="#e6abff"/></linearGradient><path fill="url(#r6aF76sThYJjByxe12PMJa)" d="M32.832,25H20.168C19.523,25,19,24.477,19,23.832v-5.665C19,17.523,19.523,17,20.168,17 h12.665C33.477,17,34,17.523,34,18.168v5.665C34,24.477,33.477,25,32.832,25z"/><linearGradient id="r6aF76sThYJjByxe12PMJb" x1="32" x2="32" y1="9.553" y2="54.562" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#1a6dff"/><stop offset="1" stop-color="#c822ff"/></linearGradient><path fill="url(#r6aF76sThYJjByxe12PMJb)" d="M49,9H15c-2.758,0-5,2.242-5,4.996v28C10,44.754,12.242,47,15,47h15c0.551,0,1,0.445,1,0.996 v4.102c0,1.133,0.656,2.137,1.719,2.617c0.422,0.191,0.863,0.289,1.301,0.289c0.719,0,1.426-0.258,1.996-0.754l8.074-7.008 C44.273,47.086,44.508,47,44.746,47H49c2.758,0,5-2.246,5-5.004v-28C54,11.242,51.758,9,49,9z M52,41.996 C52,43.652,50.652,45,49,45h-4.254c-0.723,0-1.422,0.262-1.969,0.734l-8.074,7.008c-0.383,0.328-0.848,0.293-1.156,0.152 C33.383,52.82,33,52.594,33,52.098v-4.102C33,46.344,31.652,45,30,45H15c-1.652,0-3-1.348-3-3.004v-28C12,12.344,13.348,11,15,11 h34c1.652,0,3,1.344,3,2.996V41.996z"/><linearGradient id="r6aF76sThYJjByxe12PMJc" x1="32" x2="32" y1="9.553" y2="54.562" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#1a6dff"/><stop offset="1" stop-color="#c822ff"/></linearGradient><rect width="26" height="2" x="19" y="29" fill="url(#r6aF76sThYJjByxe12PMJc)"/><linearGradient id="r6aF76sThYJjByxe12PMJd" x1="28.5" x2="28.5" y1="9.553" y2="54.562" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#1a6dff"/><stop offset="1" stop-color="#c822ff"/></linearGradient><rect width="19" height="2" x="19" y="33" fill="url(#r6aF76sThYJjByxe12PMJd)"/><linearGradient id="r6aF76sThYJjByxe12PMJe" x1="32" x2="32" y1="9.553" y2="54.562" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#1a6dff"/><stop offset="1" stop-color="#c822ff"/></linearGradient><rect width="26" height="2" x="19" y="37" fill="url(#r6aF76sThYJjByxe12PMJe)"/></svg>
\ No newline at end of file
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- Generator: Adobe Illustrator 20.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="&#1057;&#1083;&#1086;&#1081;_1" x="0px" y="0px" viewBox="0 0 64 64" style="enable-background:new 0 0 64 64;" xml:space="preserve" width="64px" height="64px">
<linearGradient id="SVGID_1__48003" gradientUnits="userSpaceOnUse" x1="32" y1="12.6636" x2="32" y2="52.4219" spreadMethod="reflect">
<stop offset="0" style="stop-color:#1A6DFF"/>
<stop offset="1" style="stop-color:#C822FF"/>
</linearGradient>
<path style="fill:url(#SVGID_1__48003);" d="M24.982,51c-1.273,0-2.547-0.475-3.524-1.429L6.888,35.364C6.315,34.806,6,34.061,6,33.268 s0.315-1.538,0.889-2.097l2.82-2.75c1.166-1.137,3.063-1.137,4.228,0.001l10.259,10.003c0.395,0.385,1.058,0.38,1.446-0.012 l24.341-24.526c1.147-1.156,3.044-1.186,4.228-0.068l2.867,2.705c0.582,0.55,0.91,1.29,0.923,2.083 c0.013,0.793-0.291,1.542-0.854,2.109L28.565,49.514C27.584,50.504,26.283,51,24.982,51z M11.822,29.564 c-0.26,0-0.52,0.097-0.717,0.29l-2.82,2.75C8.101,32.783,8,33.018,8,33.268s0.102,0.485,0.285,0.664l14.569,14.208 c1.19,1.163,3.116,1.148,4.291-0.034l28.581-28.798c0.181-0.182,0.277-0.418,0.273-0.668c-0.004-0.25-0.109-0.485-0.296-0.661 l-2.867-2.705c-0.401-0.381-1.047-0.369-1.435,0.022L27.061,39.823c-1.166,1.173-3.079,1.189-4.263,0.034L12.54,29.853 C12.343,29.66,12.083,29.564,11.822,29.564z"/>
<linearGradient id="SVGID_2__48003" gradientUnits="userSpaceOnUse" x1="32.0125" y1="16.8302" x2="32.0125" y2="47.5263" spreadMethod="reflect">
<stop offset="0" style="stop-color:#6DC7FF"/>
<stop offset="1" style="stop-color:#E6ABFF"/>
</linearGradient>
<path style="fill:url(#SVGID_2__48003);" d="M24.977,46.609c-0.489,0-0.98-0.181-1.368-0.544L10.318,33.603l1.367-1.459l13.292,12.461 L52.293,17.29l1.414,1.414L26.391,46.019C26,46.411,25.489,46.609,24.977,46.609z"/>
</svg>
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="80pt" height="80pt" viewBox="0 0 80 80" version="1.1">
<defs>
<linearGradient id="linear0" gradientUnits="userSpaceOnUse" x1="17" y1="28" x2="17" y2="36.4861" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#6DC7FF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#E6ABFF;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linear1" gradientUnits="userSpaceOnUse" x1="32" y1="7.5" x2="32" y2="57.5" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#1A6DFF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#C822FF;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linear2" gradientUnits="userSpaceOnUse" x1="48" y1="7.5" x2="48" y2="57.5336" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#1A6DFF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#C822FF;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linear3" gradientUnits="userSpaceOnUse" x1="16" y1="7.5" x2="16" y2="57.5336" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#1A6DFF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#C822FF;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linear4" gradientUnits="userSpaceOnUse" x1="29" y1="7.5" x2="29" y2="57.5336" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#1A6DFF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#C822FF;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linear5" gradientUnits="userSpaceOnUse" x1="37" y1="7.5" x2="37" y2="57.5336" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#1A6DFF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#C822FF;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linear6" gradientUnits="userSpaceOnUse" x1="35" y1="7.5" x2="35" y2="57.5336" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#1A6DFF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#C822FF;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linear7" gradientUnits="userSpaceOnUse" x1="32" y1="7.5" x2="32" y2="57.5336" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#1A6DFF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#C822FF;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linear8" gradientUnits="userSpaceOnUse" x1="14" y1="7.5" x2="14" y2="57.5336" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#1A6DFF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#C822FF;stop-opacity:1;"/>
</linearGradient>
</defs>
<g id="surface1">
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear0);" d="M 17.5 35 L 25 35 L 25 45 L 17.5 45 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear1);" d="M 66.25 8.75 L 53.75 8.75 C 50.304688 8.75 47.5 11.554688 47.5 15 L 47.5 20 L 38.917969 20 C 38.480469 20 38.066406 19.765625 37.84375 19.390625 L 35.550781 15.574219 C 34.878906 14.449219 33.644531 13.75 32.332031 13.75 L 11.257813 13.75 C 9.183594 13.75 7.5 15.433594 7.5 17.507813 L 7.5 62.5 C 7.5 64.566406 9.183594 66.25 11.25 66.25 L 11.25 68.75 C 11.25 70.128906 12.371094 71.25 13.75 71.25 L 61.25 71.25 C 62.628906 71.25 63.75 70.128906 63.75 68.75 L 63.75 66.25 C 65.816406 66.25 67.5 64.566406 67.5 62.5 L 67.5 33.625 C 70.347656 33.042969 72.5 30.519531 72.5 27.5 L 72.5 15 C 72.5 11.554688 69.695313 8.75 66.25 8.75 Z M 33.410156 16.859375 L 35.292969 20 L 28.917969 20 C 28.480469 20 28.066406 19.765625 27.839844 19.390625 L 25.957031 16.25 L 32.332031 16.25 C 32.769531 16.25 33.183594 16.484375 33.410156 16.859375 Z M 10 17.507813 C 10 16.8125 10.5625 16.25 11.257813 16.25 L 22.332031 16.25 C 22.769531 16.25 23.183594 16.484375 23.40625 16.859375 L 25.699219 20.675781 C 26.371094 21.800781 27.605469 22.5 28.917969 22.5 L 47.5 22.5 L 47.5 27.5 L 10 27.5 Z M 61.25 68.75 L 13.75 68.75 L 13.75 66.25 L 61.25 66.25 Z M 63.75 63.75 L 58.75 63.75 L 58.75 61.25 L 56.25 61.25 L 56.25 63.75 L 48.75 63.75 L 48.75 61.25 L 46.25 61.25 L 46.25 63.75 L 38.75 63.75 L 38.75 61.25 L 36.25 61.25 L 36.25 63.75 L 28.75 63.75 L 28.75 61.25 L 26.25 61.25 L 26.25 63.75 L 18.75 63.75 L 18.75 61.25 L 16.25 61.25 L 16.25 63.75 L 11.25 63.75 C 10.558594 63.75 10 63.191406 10 62.5 L 10 30 L 48.03125 30 C 48.996094 32.203125 51.195313 33.75 53.75 33.75 L 65 33.75 L 65 62.5 C 65 63.191406 64.441406 63.75 63.75 63.75 Z M 70 27.5 C 70 29.566406 68.316406 31.25 66.25 31.25 L 53.75 31.25 C 51.683594 31.25 50 29.566406 50 27.5 L 50 15 C 50 12.933594 51.683594 11.25 53.75 11.25 L 66.25 11.25 C 68.316406 11.25 70 12.933594 70 15 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear2);" d="M 64.417969 15.0625 L 60 19.484375 L 55.582031 15.0625 L 53.8125 16.832031 L 58.234375 21.25 L 53.8125 25.667969 L 55.582031 27.4375 L 60 23.015625 L 64.417969 27.4375 L 66.1875 25.667969 L 61.765625 21.25 L 66.1875 16.832031 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear3);" d="M 12.5 50 L 27.5 50 L 27.5 32.5 L 12.5 32.5 Z M 15 35 L 25 35 L 25 47.5 L 15 47.5 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear4);" d="M 30 32.5 L 42.5 32.5 L 42.5 35 L 30 35 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear5);" d="M 30 37.5 L 62.5 37.5 L 62.5 40 L 30 40 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear6);" d="M 30 42.5 L 57.5 42.5 L 57.5 45 L 30 45 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear7);" d="M 30 47.5 L 50 47.5 L 50 50 L 30 50 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear8);" d="M 13.75 20 L 21.25 20 L 21.25 22.5 L 13.75 22.5 Z "/>
</g>
</svg>
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- Generator: Adobe Illustrator 20.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="&#1057;&#1083;&#1086;&#1081;_1" x="0px" y="0px" viewBox="0 0 64 64" style="enable-background:new 0 0 64 64;" xml:space="preserve" width="80px" height="80px">
<linearGradient id="SVGID_1__44790" gradientUnits="userSpaceOnUse" x1="42" y1="46.5" x2="42" y2="51.6387" spreadMethod="reflect">
<stop offset="0" style="stop-color:#6DC7FF"/>
<stop offset="1" style="stop-color:#E6ABFF"/>
</linearGradient>
<path style="fill:url(#SVGID_1__44790);" d="M46,50c0,0.552-0.448,1-1,1h-6c-0.552,0-1-0.448-1-1v-2c0-0.552,0.448-1,1-1h6 c0.552,0,1,0.448,1,1V50z"/>
<linearGradient id="SVGID_2__44790" gradientUnits="userSpaceOnUse" x1="32.4541" y1="7.869" x2="31.7041" y2="55.369" spreadMethod="reflect">
<stop offset="0" style="stop-color:#1A6DFF"/>
<stop offset="1" style="stop-color:#C822FF"/>
</linearGradient>
<path style="fill:url(#SVGID_2__44790);" d="M55.363,23.621C55.771,22.804,56,21.919,56,21c0-3.309-2.691-6-6-6 c-0.746,0-1.47,0.156-2.157,0.427C47.11,11.767,43.873,9,40,9c-3.719,0-6.845,2.555-7.737,6H16.236 c-2.344,0-4.401,1.664-4.892,3.955L6.022,43.79l-0.015,2.136C6.007,45.951,6,45.975,6,46v6c0,1.654,1.346,3,3,3h38 c1.654,0,3-1.346,3-3v-4v-2v-2l-2.515-11H53c2.757,0,5-2.243,5-5C58,26.102,56.925,24.468,55.363,23.621z M48,52 c0,0.552-0.448,1-1,1H9c-0.552,0-1-0.448-1-1v-5v-1c0-0.552,0.448-1,1-1h38c0.552,0,1,0.448,1,1v2V52z M47.769,43.112 C47.522,43.046,47.267,43,47,43H9c-0.275,0-0.535,0.049-0.788,0.118L8.666,41H26v-2H9.094l0.429-2H21v-2H9.951l0.428-2H19v-2h-8.191 l0.428-2H17v-2h-5.334l1.634-7.626C13.595,17.999,14.83,17,16.236,17H32v2.08c-3.386,0.488-6,3.401-6,6.92c0,3.859,3.141,7,7,7 h12.435L47.769,43.112z M53,31H33c-2.757,0-5-2.243-5-5s2.243-5,5.001-5H36v-2h-2v-2c0-3.309,2.691-6,6-6s6,2.691,6,6v2h2v-1.434 C48.615,17.201,49.296,17,50,17c2.206,0,4,1.794,4,4c0,0.721-0.21,1.416-0.594,2.041C53.27,23.03,53.139,23,53,23h-2v2h2 c1.654,0,3,1.346,3,3S54.654,31,53,31z"/>
<linearGradient id="SVGID_3__44790" gradientUnits="userSpaceOnUse" x1="12.6544" y1="7.5564" x2="11.9044" y2="55.0564" spreadMethod="reflect">
<stop offset="0" style="stop-color:#1A6DFF"/>
<stop offset="1" style="stop-color:#C822FF"/>
</linearGradient>
<circle style="fill:url(#SVGID_3__44790);" cx="12" cy="49" r="2"/>
<linearGradient id="SVGID_4__44790" gradientUnits="userSpaceOnUse" x1="18.6529" y1="7.6511" x2="17.9029" y2="55.1511" spreadMethod="reflect">
<stop offset="0" style="stop-color:#1A6DFF"/>
<stop offset="1" style="stop-color:#C822FF"/>
</linearGradient>
<circle style="fill:url(#SVGID_4__44790);" cx="18" cy="49" r="2"/>
<linearGradient id="SVGID_5__44790" gradientUnits="userSpaceOnUse" x1="24.6514" y1="7.7458" x2="23.9014" y2="55.2458" spreadMethod="reflect">
<stop offset="0" style="stop-color:#1A6DFF"/>
<stop offset="1" style="stop-color:#C822FF"/>
</linearGradient>
<circle style="fill:url(#SVGID_5__44790);" cx="24" cy="49" r="2"/>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" width="96px" height="96px"><path fill="#d7dfe2" d="M6,43V33h37c0.552,0,1,0.448,1,1v8c0,0.552-0.448,1-1,1H6z"/><path fill="#b0bec5" d="M33.162 33L29.228 33 12.289 43 16.223 43z"/><path fill="#8c9eff" d="M36,43V33h7c0.552,0,1,0.448,1,1v8c0,0.552-0.448,1-1,1H36z"/><path fill="#5c6bc0" d="M25 34H35V42H25z" transform="rotate(90 30 38)"/><path fill="#3f51b5" d="M26 37.228L33.162 33 29.228 33 26 34.906z"/><path fill="#303f9f" d="M15 34H25V42H15z" transform="rotate(90 20 38)"/><path fill="#283593" d="M24 36.086L16 40.809 16 43 16.223 43 24 38.409z"/><path fill="#d7dfe2" d="M41.861,24.381l-4.067-6.889c-0.281-0.476-0.894-0.633-1.37-0.353L6,35.1v3.284L8.725,43h3.564 l29.219-17.25C41.984,25.47,42.142,24.856,41.861,24.381z"/><path fill="#b0bec5" d="M28.875 21.596L25.325 23.691 14.892 41.464 18.441 39.368z"/><path fill="#81c784" d="M35.48,29.309l-5.084-8.611l6.028-3.559c0.476-0.281,1.089-0.123,1.37,0.353l4.067,6.889 c0.281,0.476,0.123,1.089-0.353,1.37L35.48,29.309z"/><path fill="#43a047" d="M22.772 24.054H32.772V32.054H22.772z" transform="rotate(59.443 27.773 28.055)"/><path fill="#2e7d32" d="M14.16 29.137H24.16V37.137H14.16z" transform="rotate(59.443 19.161 33.139)"/><path fill="#2e7d32" d="M14.16 29.137H24.16V37.137H14.16z" transform="rotate(59.443 19.161 33.139)"/><path fill="#d7dfe2" d="M31.506,11.188l-6.899-4.05c-0.476-0.28-1.089-0.12-1.369,0.356L6,36.858v3.421L10.636,43h3.354 l17.872-30.443C32.142,12.08,31.982,11.468,31.506,11.188z"/><path fill="#1b5e20" d="M21.787 29.719L17.155 37.609 18.258 39.477 18.441 39.368 22.95 31.688z"/><path fill="#388e3c" d="M28.74 21.826L28.674 21.714 25.325 23.691 22.945 27.746 24.108 29.716z"/><path fill="#ffd740" d="M28.318,18.593l-8.624-5.063l3.544-6.037c0.28-0.476,0.892-0.636,1.369-0.356l6.899,4.05 c0.476,0.28,0.636,0.892,0.356,1.369L28.318,18.593z"/><path fill="#ffc400" d="M15.969 17.236H25.969V25.236H15.969z" transform="rotate(30.416 20.968 21.235)"/><path fill="#ff9800" d="M10.906 25.86H20.906V33.86H10.906z" transform="rotate(30.416 15.905 29.858)"/><path fill="#d7dfe2" d="M16,43H6V6c0-0.552,0.448-1,1-1h8c0.552,0,1,0.448,1,1V43z"/><path fill="#ff8a80" d="M16,13H6V6c0-0.552,0.448-1,1-1h8c0.552,0,1,0.448,1,1V13z"/><path fill="#ff5252" d="M6 15H16V23H6z"/><path fill="#d50000" d="M6 25H16V33H6z"/><path fill="#455a64" d="M11 37A1 1 0 1 0 11 39A1 1 0 1 0 11 37Z"/><path fill="#90a4ae" d="M16 35.652L16 40.809 18.258 39.477z"/><path fill="#b0bec5" d="M16 34.553L16 39.576 18.193 35.841zM16 22.957L16 25.277 18 26.451 18 24.132z"/><path fill="#ffab00" d="M16 22.957L18 24.132 18 16.417 16 19.824z"/><path fill="#f57c00" d="M16 34.553L18 35.727 18 26.451 16 25.277z"/></svg>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="80pt" height="80pt" viewBox="0 0 80 80" version="1.1">
<defs>
<linearGradient id="linear0" gradientUnits="userSpaceOnUse" x1="32" y1="21.125" x2="32" y2="47.125" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#6DC7FF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#E6ABFF;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linear1" gradientUnits="userSpaceOnUse" x1="12" y1="12.8333" x2="12" y2="15.3753" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#6DC7FF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#E6ABFF;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linear2" gradientUnits="userSpaceOnUse" x1="18" y1="12.8333" x2="18" y2="15.3753" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#6DC7FF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#E6ABFF;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linear3" gradientUnits="userSpaceOnUse" x1="24" y1="12.8333" x2="24" y2="15.3753" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#6DC7FF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#E6ABFF;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linear4" gradientUnits="userSpaceOnUse" x1="32" y1="8.75" x2="32" y2="55.5002" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#1A6DFF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#C822FF;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linear5" gradientUnits="userSpaceOnUse" x1="32" y1="8.75" x2="32" y2="55.5002" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#1A6DFF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#C822FF;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linear6" gradientUnits="userSpaceOnUse" x1="24.9392" y1="8.75" x2="24.9392" y2="55.5002" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#1A6DFF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#C822FF;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linear7" gradientUnits="userSpaceOnUse" x1="37" y1="8.75" x2="37" y2="55.5002" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#1A6DFF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#C822FF;stop-opacity:1;"/>
</linearGradient>
</defs>
<g id="surface1">
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear0);" d="M 65 58.75 L 15 58.75 C 13.621094 58.75 12.5 57.628906 12.5 56.25 L 12.5 28.75 C 12.5 27.371094 13.621094 26.25 15 26.25 L 65 26.25 C 66.378906 26.25 67.5 27.371094 67.5 28.75 L 67.5 56.25 C 67.5 57.628906 66.378906 58.75 65 58.75 Z M 15 28.75 L 15 56.25 L 65 56.25 L 65 28.75 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear1);" d="M 12.5 16.25 L 17.5 16.25 L 17.5 18.75 L 12.5 18.75 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear2);" d="M 20 16.25 L 25 16.25 L 25 18.75 L 20 18.75 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear3);" d="M 27.5 16.25 L 32.5 16.25 L 32.5 18.75 L 27.5 18.75 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear4);" d="M 68.75 11.25 L 11.25 11.25 C 9.183594 11.25 7.5 12.933594 7.5 15 L 7.5 60 C 7.5 62.066406 9.183594 63.75 11.25 63.75 L 68.75 63.75 C 70.816406 63.75 72.5 62.066406 72.5 60 L 72.5 15 C 72.5 12.933594 70.816406 11.25 68.75 11.25 Z M 70 15 L 70 21.25 L 62.5 21.25 L 62.5 13.75 L 68.75 13.75 C 69.441406 13.75 70 14.308594 70 15 Z M 11.25 13.75 L 60 13.75 L 60 21.25 L 10 21.25 L 10 15 C 10 14.308594 10.558594 13.75 11.25 13.75 Z M 68.75 61.25 L 11.25 61.25 C 10.558594 61.25 10 60.691406 10 60 L 10 23.75 L 70 23.75 L 70 60 C 70 60.691406 69.441406 61.25 68.75 61.25 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear5);" d="M 10 66.25 L 70 66.25 L 70 68.75 L 10 68.75 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear6);" d="M 28.382813 34.117188 L 26.617188 35.882813 L 33.234375 42.5 L 26.617188 49.117188 L 28.382813 50.882813 L 35 44.265625 C 35.976563 43.292969 35.976563 41.707031 35 40.734375 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear7);" d="M 40 47.5 L 52.5 47.5 L 52.5 50 L 40 50 Z "/>
</g>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 128 128" width="64" height="64"><path fill="#fff" d="M19 39L19 109 89 109 109 89 39 19z"/><path fill="#d3d8dd" d="M109,19H39v67c0,1.7,1.3,3,3,3h67V19z"/><path fill="#444b54" d="M101.1,26.9c-1.2-1.2-3.1-1.2-4.2,0L87.8,36H34c-1.7,0-3,1.3-3,3s1.3,3,3,3h52v52c0,1.7,1.3,3,3,3s3-1.3,3-3V40.2l9.1-9.1C102.3,29.9,102.3,28.1,101.1,26.9z"/><path fill="#444b54" d="M109,16H39c-0.2,0-0.4,0-0.6,0.1c-0.1,0-0.2,0.1-0.3,0.1c-0.1,0-0.2,0.1-0.3,0.1c-0.1,0-0.2,0.1-0.3,0.2c-0.1,0-0.2,0.1-0.2,0.1c-0.2,0.1-0.3,0.2-0.5,0.4l-20,20c-0.1,0.1-0.3,0.3-0.4,0.5c0,0.1-0.1,0.1-0.1,0.2c-0.1,0.1-0.1,0.2-0.2,0.3c0,0.1-0.1,0.2-0.1,0.3c0,0.1-0.1,0.2-0.1,0.3c0,0.2-0.1,0.4-0.1,0.6v70c0,1.7,1.3,3,3,3h70c0.2,0,0.4,0,0.6-0.1c0.1,0,0.2-0.1,0.3-0.1c0.1,0,0.2-0.1,0.3-0.1c0.1,0,0.2-0.1,0.3-0.2c0.1,0,0.2-0.1,0.2-0.1c0.2-0.1,0.3-0.2,0.5-0.4l20-20c0.6-0.6,0.9-1.3,0.9-2.1V19C112,17.3,110.7,16,109,16z M106,87.8L87.8,106H22V40.2L40.2,22H106V87.8z"/></svg>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="80pt" height="80pt" viewBox="0 0 80 80" version="1.1">
<defs>
<linearGradient id="linear0" gradientUnits="userSpaceOnUse" x1="37" y1="22.5" x2="37" y2="29.7519" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#6DC7FF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#E6ABFF;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linear1" gradientUnits="userSpaceOnUse" x1="27" y1="22.5" x2="27" y2="29.7519" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#6DC7FF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#E6ABFF;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linear2" gradientUnits="userSpaceOnUse" x1="32" y1="6" x2="32" y2="58.5856" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#1A6DFF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#C822FF;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linear3" gradientUnits="userSpaceOnUse" x1="27.05" y1="6" x2="27.05" y2="58.5856" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#1A6DFF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#C822FF;stop-opacity:1;"/>
</linearGradient>
</defs>
<g id="surface1">
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear0);" d="M 50 32.5 C 50 34.570313 48.320313 36.25 46.25 36.25 C 44.179688 36.25 42.5 34.570313 42.5 32.5 C 42.5 30.429688 44.179688 28.75 46.25 28.75 C 48.320313 28.75 50 30.429688 50 32.5 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear1);" d="M 37.5 32.5 C 37.5 34.570313 35.820313 36.25 33.75 36.25 C 31.679688 36.25 30 34.570313 30 32.5 C 30 30.429688 31.679688 28.75 33.75 28.75 C 35.820313 28.75 37.5 30.429688 37.5 32.5 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear2);" d="M 56.347656 42.902344 C 57.871094 40.191406 58.75 37.074219 58.75 33.75 L 58.75 26.25 C 58.75 15.910156 50.339844 7.5 40 7.5 C 29.660156 7.5 21.25 15.910156 21.25 26.25 L 21.25 33.75 C 21.25 37.074219 22.128906 40.191406 23.652344 42.902344 C 16.660156 48.082031 12.5 56.277344 12.5 65 L 12.5 72.5 L 67.5 72.5 L 67.5 65 C 67.5 56.277344 63.339844 48.082031 56.347656 42.902344 Z M 23.75 26.25 C 23.75 17.289063 31.039063 10 40 10 C 48.960938 10 56.25 17.289063 56.25 26.25 L 56.25 33.75 C 56.25 42.710938 48.960938 50 40 50 C 31.039063 50 23.75 42.710938 23.75 33.75 Z M 40 52.5 C 46.121094 52.5 51.546875 49.539063 54.972656 44.992188 C 55.648438 45.5 56.300781 46.039063 56.917969 46.605469 C 52.859375 51.941406 46.703125 55 40 55 C 33.324219 55 27.09375 51.886719 23.078125 46.609375 C 23.699219 46.039063 24.351563 45.5 25.027344 44.992188 C 28.453125 49.539063 33.882813 52.5 40 52.5 Z M 65 70 L 58.75 70 L 58.75 67.5 L 56.25 67.5 L 56.25 70 L 23.75 70 L 23.75 67.5 L 21.25 67.5 L 21.25 70 L 15 70 L 15 65 C 15 58.820313 17.296875 52.929688 21.316406 48.398438 C 25.804688 54.125 32.660156 57.5 40 57.5 C 47.371094 57.5 54.148438 54.183594 58.683594 48.398438 C 62.703125 52.929688 65 58.820313 65 65 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear3);" d="M 40 15 L 40 12.5 C 34.769531 12.5 29.910156 15.542969 27.625 20.25 L 29.875 21.339844 C 31.773438 17.429688 35.652344 15 40 15 Z "/>
</g>
</svg>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="100%" height="100%" viewBox="0 0 64 64" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:1.41421;">
<g>
<path d="M3.929,43.929c3.902,-3.903 10.239,-3.903 14.142,0c3.902,3.902 3.902,10.239 0,14.142c-3.903,3.902 -10.24,3.902 -14.142,0c-3.903,-3.903 -3.903,-10.24 0,-14.142Z" style="fill:#ff5576;"/>
<path d="M7.5,56c-0.4,0 -0.75,-0.15 -1.05,-0.45c-0.6,-0.6 -0.6,-1.55 0,-2.1l7,-7c0.6,-0.6 1.55,-0.6 2.1,0c0.6,0.6 0.6,1.55 0,2.1l-7,7c-0.3,0.3 -0.65,0.45 -1.05,0.45Z" style="fill:#fff;fill-rule:nonzero;"/>
<path d="M14.5,56c-0.4,0 -0.75,-0.15 -1.05,-0.45l-7,-7c-0.6,-0.6 -0.6,-1.55 0,-2.1c0.6,-0.6 1.55,-0.6 2.1,0l7,7c0.6,0.6 0.6,1.55 0,2.1c-0.3,0.3 -0.65,0.45 -1.05,0.45Z" style="fill:#fff;fill-rule:nonzero;"/>
</g>
<g>
<path d="M53,19.5c-0.85,0 -1.5,0.65 -1.5,1.5l-0.05,33.5c0,1.95 -1.55,3.5 -3.5,3.5l-21.95,0c-0.85,0 -1.5,0.65 -1.5,1.5c0,0.85 0.65,1.5 1.5,1.5l21.95,0c3.6,0 6.5,-2.9 6.5,-6.5l0.05,-33.5c0,-0.85 -0.7,-1.5 -1.5,-1.5Z" style="fill:#fff;fill-rule:nonzero;"/>
<path d="M51.15,6.4c-2.2,-2.2 -5.05,-3.4 -8.15,-3.4l-27,0c-3.6,0 -6.5,2.9 -6.5,6.5l0,24c0,0.85 0.65,1.5 1.5,1.5c0.85,0 1.5,-0.65 1.5,-1.5l0,-24c0,-1.95 1.55,-3.5 3.5,-3.5l25.5,0l0,3.5c0,3.6 2.9,6.5 6.5,6.5l5,0c0.6,0 1.15,-0.4 1.4,-0.9c0.1,-0.2 0.15,-0.4 0.15,-0.6c0,-0.05 0,-0.1 0,-0.2c-0.1,-3 -1.3,-5.8 -3.4,-7.9Zm-6.65,3.1l0,-3.35c1.7,0.3 3.25,1.1 4.5,2.35c1.25,1.25 2.05,2.8 2.35,4.5l-3.35,0c-1.95,0 -3.5,-1.55 -3.5,-3.5Z" style="fill:#fff;fill-rule:nonzero;"/>
</g>
</svg>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="100%" height="100%" viewBox="0 0 128 128" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:1.41421;">
<g>
<g>
<path d="M64,116c-0.5,0 -1,-0.1 -1.5,-0.4c-26,-15.4 -41.5,-42.6 -41.5,-72.7l0,-15.1c0,-1.3 0.8,-2.4 2,-2.8l40,-14.8c0.7,-0.2 1.4,-0.2 2.1,0l39.9,14.8c1.2,0.4 2,1.6 2,2.8l0,15.1c0,7.8 -1.1,15.6 -3.2,23.1c-0.4,1.6 -2.1,2.5 -3.7,2.1c-1.6,-0.4 -2.5,-2.1 -2.1,-3.7c2,-6.9 2.9,-14.1 2.9,-21.4l0,-13l-36.9,-13.8l-37,13.7l0,13c0,28 14.4,53.2 38.5,67.5c1.4,0.8 1.9,2.7 1.1,4.1c-0.6,1 -1.6,1.5 -2.6,1.5Z" style="fill:#fff;fill-rule:nonzero;"/>
<path d="M64,116c-1,0 -2,-0.5 -2.6,-1.5c-0.8,-1.4 -0.4,-3.3 1.1,-4.1c3.2,-1.9 6.3,-4 9.2,-6.3c1.3,-1 3.2,-0.8 4.2,0.5c1,1.3 0.8,3.2 -0.5,4.2c-3.1,2.5 -6.4,4.8 -9.9,6.8c-0.5,0.3 -1,0.4 -1.5,0.4Z" style="fill:#fff;fill-rule:nonzero;"/>
<path d="M64,101.6c-0.6,0 -1.3,-0.2 -1.8,-0.6c-15.9,-11.7 -26,-29 -28.6,-48.5c-0.2,-1.6 0.9,-3.1 2.6,-3.4c1.6,-0.2 3.1,0.9 3.4,2.6c2.3,17.1 10.9,32.3 24.4,43c15.9,-12.6 25,-31.4 25,-51.9l0,-4.6l-25,-9.2l-27,10c-1.6,0.6 -3.3,-0.2 -3.9,-1.8c-0.6,-1.6 0.2,-3.3 1.8,-3.9l28.1,-10.3c0.7,-0.2 1.4,-0.2 2.1,0l28,10.4c1.2,0.4 2,1.6 2,2.8l0,6.7c0,23.2 -10.6,44.4 -29.2,58.1c-0.6,0.4 -1.3,0.6 -1.9,0.6Z" style="fill:#d0d4d8;fill-rule:nonzero;"/>
</g>
<path d="M64,25.8l0,72.8c17.7,-13.1 28,-33.4 28,-55.7l0,-6.7l-28,-10.4Z" style="fill:#d0d4d8;fill-rule:nonzero;"/>
<path d="M89.857,82.858c7.805,-7.805 20.478,-7.805 28.284,0c7.805,7.805 7.805,20.479 0,28.284c-7.806,7.805 -20.479,7.805 -28.284,0c-7.806,-7.805 -7.806,-20.479 0,-28.284Z" style="fill:#ff5576;"/>
<path d="M110.9,100l-14,0c-1.7,0 -3,-1.3 -3,-3c0,-1.7 1.3,-3 3,-3l14,0c1.7,0 3,1.3 3,3c0,1.7 -1.3,3 -3,3Z" style="fill:#fff;fill-rule:nonzero;"/>
</g>
</svg>
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 24 24" version="1.1" width="24px" height="24px">
<path style="fill:#ffffff;" d="M 13 1 L 13 4 L 16 4 L 16 1 Z M 5 5 L 5 8 L 8 8 L 8 5 Z M 9 5 L 9 8 L 12 8 L 12 5 Z M 13 5 L 13 8 L 16 8 L 16 5 Z M 18.3125 7.84375 C 17.9375 7.878906 17.289063 8.507813 17 9.03125 C 16.269531 10.339844 16.828125 11.988281 16.96875 12.34375 C 16.644531 12.761719 15 13 15 13 L 0.96875 13 C 0.148438 13.027344 0 14.246094 0 14.53125 C -0.0351563 19.5 3.710938 21.988281 7.96875 22 C 14.132813 22.019531 17.871094 19.5625 20.03125 16 L 23 16 C 22.492188 15.871094 21.820313 15.660156 22 15 C 21.800781 15.292969 21.09375 15.582031 20.25 15.625 C 20.335938 15.476563 20.421875 15.339844 20.5 15.1875 C 21.824219 15.109375 22.585938 14.488281 23.15625 13.9375 C 23.808594 13.308594 23.960938 12.953125 24 12.59375 C 24.0625 12.050781 22.617188 11.113281 20.84375 10.90625 C 20.675781 9.261719 18.871094 7.789063 18.3125 7.84375 Z M 1 9 L 1 12 L 4 12 L 4 9 Z M 5 9 L 5 12 L 8 12 L 8 9 Z M 9 9 L 9 12 L 12 12 L 12 9 Z M 13 9 L 13 12 L 16 12 L 16 9 Z M 18.4375 9.9375 C 18.726563 10.261719 19.3125 10.992188 19.4375 11.65625 C 19.519531 12.089844 20.121094 12.429688 20.5625 12.46875 C 21.25 12.53125 21.671875 12.664063 22.0625 12.78125 C 21.933594 13.027344 21.054688 13.550781 19.78125 13.5 C 19.441406 13.484375 19.128906 13.6875 19 14 C 18.921875 14.199219 18.632813 14.632813 18.21875 15.15625 C 18.132813 15.105469 18.050781 15.058594 17.96875 15 C 17.515625 15.425781 15.355469 16.308594 13.96875 15 C 13.1875 15.917969 10.75 15.917969 9.96875 15 C 9.714844 15.703125 6.59375 15.902344 5.96875 15 C 5.792969 15.8125 2.992188 16.199219 1.96875 15 L 1.96875 15.5 C 1.949219 15.328125 1.945313 15.15625 1.96875 15 C 1.96875 15 4.289063 15 5.96875 15 C 7.648438 15 8.082031 15 9.96875 15 C 11.855469 15 13.339844 15.003906 13.96875 15 C 14.132813 15 14.984375 15 15 15 C 17.03125 14.875 18.011719 13.761719 18.34375 13.5 C 18.597656 13.300781 18.851563 12.785156 18.625 12.40625 C 18.609375 12.378906 18.003906 10.660156 18.4375 9.9375 Z M 2.0625 16 L 17.46875 16 C 15.738281 17.8125 12.570313 20.101563 7.96875 20 C 6.574219 19.96875 5.101563 19.753906 4.09375 18.96875 C 5.792969 18.910156 7.28125 18.59375 7.28125 18.59375 C 7.714844 18.511719 7.988281 18.089844 7.90625 17.65625 C 7.824219 17.222656 7.402344 16.917969 6.96875 17 C 6.933594 17.007813 4.667969 17.5625 2.59375 17.3125 C 2.476563 17.097656 2.21875 16.570313 2.0625 16 Z M 8.4375 17 C 8.179688 17 7.96875 17.210938 7.96875 17.46875 C 7.96875 17.726563 8.179688 17.9375 8.4375 17.9375 C 8.695313 17.9375 8.90625 17.726563 8.90625 17.46875 C 8.90625 17.40625 8.898438 17.367188 8.875 17.3125 C 8.84375 17.371094 8.757813 17.40625 8.6875 17.40625 C 8.582031 17.40625 8.53125 17.292969 8.53125 17.1875 C 8.53125 17.117188 8.535156 17.09375 8.59375 17.0625 C 8.542969 17.042969 8.496094 17 8.4375 17 Z "/>
</svg>
<?xml version="1.0"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" viewBox="0 0 192 192" width="48px" height="48px"><g fill="none" fill-rule="nonzero" stroke="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="10" stroke-dasharray="" stroke-dashoffset="0" font-family="none" font-weight="none" font-size="none" text-anchor="none" style="mix-blend-mode: normal"><path d="M0,192v-192h192v192z" fill="none"/><g fill="#ffffff"><g id="surface1"><path d="M44,96l56,-88l56,88l-56,32z"/><path d="M100,8l56,88l-56,32z"/><path d="M44,108l56,32l56,-32l-56,76z"/><path d="M100,140l56,-32l-56,76z"/><path d="M44,96l56,-24l56,24l-56,32z"/><path d="M100,72l56,24l-56,32z"/></g></g></g></svg>
<svg fill="#000000" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 80 80" width="80px" height="80px"><path d="M 13 13 C 12.460108 13 11.963805 13.322162 11.744141 13.816406 L 10.433594 16.755859 L 7.2304688 17.09375 L 7.2285156 17.095703 C 6.6960795 17.153653 6.2354672 17.522935 6.0683594 18.035156 C 5.9014302 18.546831 6.0536344 19.121122 6.4550781 19.482422 L 8.8476562 21.638672 L 8.1796875 24.789062 C 8.0670258 25.319762 8.2839696 25.872284 8.71875 26.1875 C 9.153641 26.502796 9.7453702 26.536952 10.216797 26.261719 L 10.21875 26.261719 L 13 24.658203 L 15.792969 26.267578 L 15.794922 26.267578 C 16.003736 26.386386 16.23548 26.449219 16.476562 26.449219 C 16.757652 26.449219 17.045726 26.358629 17.285156 26.183594 C 17.720013 25.866008 17.930405 25.315643 17.822266 24.792969 L 17.822266 24.791016 L 17.154297 21.638672 L 19.544922 19.482422 C 19.948855 19.118882 20.098545 18.552245 19.933594 18.039062 L 19.933594 18.037109 L 19.933594 18.035156 C 19.766486 17.522935 19.305874 17.153655 18.773438 17.095703 L 18.771484 17.09375 L 15.568359 16.755859 L 14.255859 13.810547 L 14.251953 13.804688 C 14.029882 13.321388 13.539892 13 13 13 z M 13 15.910156 L 14.210938 18.623047 L 17.164062 18.935547 L 14.958984 20.925781 L 15.574219 23.833984 L 13 22.349609 L 10.427734 23.832031 L 11.042969 20.925781 L 8.8378906 18.935547 L 11.791016 18.623047 L 13 15.910156 z M 24 17 L 24 19 L 74 19 L 74 17 L 24 17 z M 25 21 A 1 1 0 0 0 24 22 A 1 1 0 0 0 25 23 A 1 1 0 0 0 26 22 A 1 1 0 0 0 25 21 z M 29 21 A 1 1 0 0 0 28 22 A 1 1 0 0 0 29 23 A 1 1 0 0 0 30 22 A 1 1 0 0 0 29 21 z M 33 21 A 1 1 0 0 0 32 22 A 1 1 0 0 0 33 23 A 1 1 0 0 0 34 22 A 1 1 0 0 0 33 21 z M 37 21 A 1 1 0 0 0 36 22 A 1 1 0 0 0 37 23 A 1 1 0 0 0 38 22 A 1 1 0 0 0 37 21 z M 41 21 A 1 1 0 0 0 40 22 A 1 1 0 0 0 41 23 A 1 1 0 0 0 42 22 A 1 1 0 0 0 41 21 z M 45 21 A 1 1 0 0 0 44 22 A 1 1 0 0 0 45 23 A 1 1 0 0 0 46 22 A 1 1 0 0 0 45 21 z M 49 21 A 1 1 0 0 0 48 22 A 1 1 0 0 0 49 23 A 1 1 0 0 0 50 22 A 1 1 0 0 0 49 21 z M 53 21 A 1 1 0 0 0 52 22 A 1 1 0 0 0 53 23 A 1 1 0 0 0 54 22 A 1 1 0 0 0 53 21 z M 57 21 A 1 1 0 0 0 56 22 A 1 1 0 0 0 57 23 A 1 1 0 0 0 58 22 A 1 1 0 0 0 57 21 z M 61 21 A 1 1 0 0 0 60 22 A 1 1 0 0 0 61 23 A 1 1 0 0 0 62 22 A 1 1 0 0 0 61 21 z M 65 21 A 1 1 0 0 0 64 22 A 1 1 0 0 0 65 23 A 1 1 0 0 0 66 22 A 1 1 0 0 0 65 21 z M 69 21 A 1 1 0 0 0 68 22 A 1 1 0 0 0 69 23 A 1 1 0 0 0 70 22 A 1 1 0 0 0 69 21 z M 13 33 C 12.460108 33 11.963805 33.322162 11.744141 33.816406 L 10.433594 36.755859 L 7.2304688 37.09375 L 7.2285156 37.095703 C 6.6960795 37.153653 6.2354672 37.522935 6.0683594 38.035156 C 5.9014302 38.546831 6.0536344 39.121122 6.4550781 39.482422 L 8.8476562 41.638672 L 8.1796875 44.789062 C 8.0670258 45.319761 8.2839696 45.872284 8.71875 46.1875 C 9.153641 46.502796 9.7453702 46.536952 10.216797 46.261719 L 10.21875 46.261719 L 13 44.658203 L 15.792969 46.267578 L 15.794922 46.267578 C 16.003736 46.386386 16.23548 46.449219 16.476562 46.449219 C 16.757652 46.449219 17.045726 46.358629 17.285156 46.183594 C 17.720013 45.866008 17.930405 45.315643 17.822266 44.792969 L 17.822266 44.791016 L 17.154297 41.638672 L 19.544922 39.482422 C 19.948855 39.118882 20.098545 38.552245 19.933594 38.039062 L 19.933594 38.037109 L 19.933594 38.035156 C 19.766871 37.524401 19.307114 37.149004 18.765625 37.09375 L 15.568359 36.755859 L 14.255859 33.810547 L 14.251953 33.804688 C 14.029883 33.321201 13.539892 33 13 33 z M 13 35.910156 L 14.210938 38.623047 L 17.164062 38.935547 L 14.958984 40.925781 L 15.574219 43.833984 L 13 42.349609 L 10.427734 43.832031 L 11.042969 40.925781 L 8.8378906 38.935547 L 11.791016 38.623047 L 13 35.910156 z M 24 37 L 24 39 L 74 39 L 74 37 L 24 37 z M 25 41 A 1 1 0 0 0 24 42 A 1 1 0 0 0 25 43 A 1 1 0 0 0 26 42 A 1 1 0 0 0 25 41 z M 29 41 A 1 1 0 0 0 28 42 A 1 1 0 0 0 29 43 A 1 1 0 0 0 30 42 A 1 1 0 0 0 29 41 z M 33 41 A 1 1 0 0 0 32 42 A 1 1 0 0 0 33 43 A 1 1 0 0 0 34 42 A 1 1 0 0 0 33 41 z M 37 41 A 1 1 0 0 0 36 42 A 1 1 0 0 0 37 43 A 1 1 0 0 0 38 42 A 1 1 0 0 0 37 41 z M 41 41 A 1 1 0 0 0 40 42 A 1 1 0 0 0 41 43 A 1 1 0 0 0 42 42 A 1 1 0 0 0 41 41 z M 45 41 A 1 1 0 0 0 44 42 A 1 1 0 0 0 45 43 A 1 1 0 0 0 46 42 A 1 1 0 0 0 45 41 z M 49 41 A 1 1 0 0 0 48 42 A 1 1 0 0 0 49 43 A 1 1 0 0 0 50 42 A 1 1 0 0 0 49 41 z M 53 41 A 1 1 0 0 0 52 42 A 1 1 0 0 0 53 43 A 1 1 0 0 0 54 42 A 1 1 0 0 0 53 41 z M 57 41 A 1 1 0 0 0 56 42 A 1 1 0 0 0 57 43 A 1 1 0 0 0 58 42 A 1 1 0 0 0 57 41 z M 61 41 A 1 1 0 0 0 60 42 A 1 1 0 0 0 61 43 A 1 1 0 0 0 62 42 A 1 1 0 0 0 61 41 z M 65 41 A 1 1 0 0 0 64 42 A 1 1 0 0 0 65 43 A 1 1 0 0 0 66 42 A 1 1 0 0 0 65 41 z M 69 41 A 1 1 0 0 0 68 42 A 1 1 0 0 0 69 43 A 1 1 0 0 0 70 42 A 1 1 0 0 0 69 41 z M 13 53 C 12.460108 53 11.963805 53.322162 11.744141 53.816406 L 10.433594 56.755859 L 7.2304688 57.09375 L 7.2285156 57.095703 C 6.6960795 57.153653 6.2354672 57.522935 6.0683594 58.035156 C 5.9014302 58.546831 6.0536344 59.121122 6.4550781 59.482422 L 8.8476562 61.638672 L 8.1796875 64.789062 C 8.0670258 65.319761 8.2839696 65.872284 8.71875 66.1875 C 9.153641 66.502796 9.7453702 66.536952 10.216797 66.261719 L 10.21875 66.261719 L 13 64.658203 L 15.792969 66.267578 L 15.794922 66.267578 C 16.003736 66.386386 16.23548 66.449219 16.476562 66.449219 C 16.757652 66.449219 17.045726 66.358629 17.285156 66.183594 C 17.720013 65.866008 17.930405 65.315643 17.822266 64.792969 L 17.822266 64.791016 L 17.154297 61.638672 L 19.544922 59.482422 C 19.948855 59.118882 20.098545 58.552245 19.933594 58.039062 L 19.933594 58.037109 L 19.933594 58.035156 C 19.766871 57.524401 19.307114 57.149004 18.765625 57.09375 L 15.568359 56.755859 L 14.255859 53.810547 L 14.251953 53.804688 C 14.029883 53.321201 13.539892 53 13 53 z M 13 55.910156 L 14.210938 58.623047 L 17.164062 58.935547 L 14.958984 60.925781 L 15.574219 63.833984 L 13 62.349609 L 10.427734 63.832031 L 11.042969 60.925781 L 8.8378906 58.935547 L 11.791016 58.623047 L 13 55.910156 z M 24 57 L 24 59 L 74 59 L 74 57 L 24 57 z M 25 61 A 1 1 0 0 0 24 62 A 1 1 0 0 0 25 63 A 1 1 0 0 0 26 62 A 1 1 0 0 0 25 61 z M 29 61 A 1 1 0 0 0 28 62 A 1 1 0 0 0 29 63 A 1 1 0 0 0 30 62 A 1 1 0 0 0 29 61 z M 33 61 A 1 1 0 0 0 32 62 A 1 1 0 0 0 33 63 A 1 1 0 0 0 34 62 A 1 1 0 0 0 33 61 z M 37 61 A 1 1 0 0 0 36 62 A 1 1 0 0 0 37 63 A 1 1 0 0 0 38 62 A 1 1 0 0 0 37 61 z M 41 61 A 1 1 0 0 0 40 62 A 1 1 0 0 0 41 63 A 1 1 0 0 0 42 62 A 1 1 0 0 0 41 61 z M 45 61 A 1 1 0 0 0 44 62 A 1 1 0 0 0 45 63 A 1 1 0 0 0 46 62 A 1 1 0 0 0 45 61 z M 49 61 A 1 1 0 0 0 48 62 A 1 1 0 0 0 49 63 A 1 1 0 0 0 50 62 A 1 1 0 0 0 49 61 z M 53 61 A 1 1 0 0 0 52 62 A 1 1 0 0 0 53 63 A 1 1 0 0 0 54 62 A 1 1 0 0 0 53 61 z M 57 61 A 1 1 0 0 0 56 62 A 1 1 0 0 0 57 63 A 1 1 0 0 0 58 62 A 1 1 0 0 0 57 61 z M 61 61 A 1 1 0 0 0 60 62 A 1 1 0 0 0 61 63 A 1 1 0 0 0 62 62 A 1 1 0 0 0 61 61 z M 65 61 A 1 1 0 0 0 64 62 A 1 1 0 0 0 65 63 A 1 1 0 0 0 66 62 A 1 1 0 0 0 65 61 z M 69 61 A 1 1 0 0 0 68 62 A 1 1 0 0 0 69 63 A 1 1 0 0 0 70 62 A 1 1 0 0 0 69 61 z"/></svg>
\ No newline at end of file
<svg xmlns="http://www.w3.org/2000/svg" x="0px" y="0px" width="80" height="80" viewBox="0 0 64 64" style="enable-background:new 0 0 64 64;; fill:#000000;"><linearGradient id="SVGID_1__44004" gradientUnits="userSpaceOnUse" x1="41" y1="25.5" x2="41" y2="36.5708" spreadMethod="reflect"> <stop offset="0" style="stop-color:#6DC7FF"></stop> <stop offset="1" style="stop-color:#E6ABFF"></stop></linearGradient><path style="fill:url(#SVGID_1__44004);" d="M38,36h6c0.552,0,1-0.448,1-1v-8c0-0.552-0.448-1-1-1h-6c-0.552,0-1,0.448-1,1v8 C37,35.552,37.448,36,38,36z"></path><linearGradient id="SVGID_2__44004" gradientUnits="userSpaceOnUse" x1="32" y1="5.75" x2="32" y2="57.8677" spreadMethod="reflect"> <stop offset="0" style="stop-color:#1A6DFF"></stop> <stop offset="1" style="stop-color:#C822FF"></stop></linearGradient><path style="fill:url(#SVGID_2__44004);" d="M49,10h-2c0-1.103-0.897-2-2-2h-8c0-1.103-0.897-2-2-2h-6c-1.103,0-2,0.897-2,2h-8 c-1.103,0-2,0.897-2,2h-2c-1.103,0-2,0.897-2,2v44c0,1.103,0.897,2,2,2h34c1.103,0,2-0.897,2-2V12C51,10.897,50.103,10,49,10z M29,8 h6v5c0,1.654-1.346,3-3,3s-3-1.346-3-3V8z M15,12h12v1c0,2.757,2.243,5,5,5s5-2.243,5-5v-1h12v32H39c-1.103,0-2,0.897-2,2v10H15V12z M39,56V46h10v10H39z"></path><linearGradient id="SVGID_3__44004" gradientUnits="userSpaceOnUse" x1="32" y1="5.75" x2="32" y2="57.8677" spreadMethod="reflect"> <stop offset="0" style="stop-color:#1A6DFF"></stop> <stop offset="1" style="stop-color:#C822FF"></stop></linearGradient><rect x="19" y="22" style="fill:url(#SVGID_3__44004);" width="26" height="2"></rect><linearGradient id="SVGID_4__44004" gradientUnits="userSpaceOnUse" x1="26" y1="5.75" x2="26" y2="57.8677" spreadMethod="reflect"> <stop offset="0" style="stop-color:#1A6DFF"></stop> <stop offset="1" style="stop-color:#C822FF"></stop></linearGradient><rect x="19" y="26" style="fill:url(#SVGID_4__44004);" width="14" height="2"></rect><linearGradient id="SVGID_5__44004" gradientUnits="userSpaceOnUse" x1="26" y1="5.75" x2="26" y2="57.8677" spreadMethod="reflect"> <stop offset="0" style="stop-color:#1A6DFF"></stop> <stop offset="1" style="stop-color:#C822FF"></stop></linearGradient><rect x="19" y="30" style="fill:url(#SVGID_5__44004);" width="14" height="2"></rect><linearGradient id="SVGID_6__44004" gradientUnits="userSpaceOnUse" x1="26" y1="5.75" x2="26" y2="57.8677" spreadMethod="reflect"> <stop offset="0" style="stop-color:#1A6DFF"></stop> <stop offset="1" style="stop-color:#C822FF"></stop></linearGradient><rect x="19" y="34" style="fill:url(#SVGID_6__44004);" width="14" height="2"></rect><linearGradient id="SVGID_7__44004" gradientUnits="userSpaceOnUse" x1="41" y1="5.75" x2="41" y2="57.8677" spreadMethod="reflect"> <stop offset="0" style="stop-color:#1A6DFF"></stop> <stop offset="1" style="stop-color:#C822FF"></stop></linearGradient><rect x="37" y="38" style="fill:url(#SVGID_7__44004);" width="8" height="2"></rect><linearGradient id="SVGID_8__44004" gradientUnits="userSpaceOnUse" x1="20" y1="5.75" x2="20" y2="57.8677" spreadMethod="reflect"> <stop offset="0" style="stop-color:#1A6DFF"></stop> <stop offset="1" style="stop-color:#C822FF"></stop></linearGradient><rect x="19" y="48" style="fill:url(#SVGID_8__44004);" width="2" height="4"></rect><linearGradient id="SVGID_9__44004" gradientUnits="userSpaceOnUse" x1="24" y1="5.75" x2="24" y2="57.8677" spreadMethod="reflect"> <stop offset="0" style="stop-color:#1A6DFF"></stop> <stop offset="1" style="stop-color:#C822FF"></stop></linearGradient><rect x="23" y="48" style="fill:url(#SVGID_9__44004);" width="2" height="4"></rect><linearGradient id="SVGID_10__44004" gradientUnits="userSpaceOnUse" x1="28" y1="5.75" x2="28" y2="57.8677" spreadMethod="reflect"> <stop offset="0" style="stop-color:#1A6DFF"></stop> <stop offset="1" style="stop-color:#C822FF"></stop></linearGradient><rect x="27" y="48" style="fill:url(#SVGID_10__44004);" width="2" height="4"></rect><linearGradient id="SVGID_11__44004" gradientUnits="userSpaceOnUse" x1="32" y1="5.75" x2="32" y2="57.8677" spreadMethod="reflect"> <stop offset="0" style="stop-color:#1A6DFF"></stop> <stop offset="1" style="stop-color:#C822FF"></stop></linearGradient><rect x="31" y="48" style="fill:url(#SVGID_11__44004);" width="2" height="4"></rect><linearGradient id="SVGID_12__44004" gradientUnits="userSpaceOnUse" x1="43" y1="5.75" x2="43" y2="57.8677" spreadMethod="reflect"> <stop offset="0" style="stop-color:#1A6DFF"></stop> <stop offset="1" style="stop-color:#C822FF"></stop></linearGradient><path style="fill:url(#SVGID_12__44004);" d="M41,50v2h2v-2h2v-2h-2C41.897,48,41,48.897,41,50z"></path><linearGradient id="SVGID_13__44004" gradientUnits="userSpaceOnUse" x1="26" y1="5.75" x2="26" y2="57.8677" spreadMethod="reflect"> <stop offset="0" style="stop-color:#1A6DFF"></stop> <stop offset="1" style="stop-color:#C822FF"></stop></linearGradient><rect x="19" y="38" style="fill:url(#SVGID_13__44004);" width="14" height="2"></rect></svg>
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="80pt" height="80pt" viewBox="0 0 80 80" version="1.1">
<defs>
<linearGradient id="linear0" gradientUnits="userSpaceOnUse" x1="32" y1="4.3333" x2="32" y2="58.4938" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#1A6DFF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#C822FF;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linear1" gradientUnits="userSpaceOnUse" x1="32" y1="26.4167" x2="32" y2="37.6694" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#6DC7FF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#E6ABFF;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linear2" gradientUnits="userSpaceOnUse" x1="32" y1="4.3333" x2="32" y2="58.4938" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#1A6DFF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#C822FF;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linear3" gradientUnits="userSpaceOnUse" x1="32" y1="4.3333" x2="32" y2="58.4938" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#1A6DFF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#C822FF;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linear4" gradientUnits="userSpaceOnUse" x1="46" y1="4.3333" x2="46" y2="58.4938" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#1A6DFF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#C822FF;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linear5" gradientUnits="userSpaceOnUse" x1="46" y1="4.3333" x2="46" y2="58.4938" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#1A6DFF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#C822FF;stop-opacity:1;"/>
</linearGradient>
</defs>
<g id="surface1">
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear0);" d="M 41.253906 72.5 L 38.746094 72.5 C 35.992188 72.5 33.75 70.257813 33.75 67.503906 L 33.75 66.054688 C 33.75 64.988281 33.035156 64.03125 31.972656 63.667969 C 30.949219 63.320313 29.933594 62.898438 28.953125 62.414063 C 27.945313 61.917969 26.753906 62.085938 26 62.839844 L 24.972656 63.867188 C 23.023438 65.816406 19.855469 65.816406 17.90625 63.867188 L 16.132813 62.09375 C 14.183594 60.144531 14.183594 56.976563 16.132813 55.03125 L 17.160156 54 C 17.917969 53.246094 18.085938 52.058594 17.585938 51.046875 C 17.105469 50.070313 16.679688 49.050781 16.332031 48.027344 C 15.96875 46.964844 15.011719 46.25 13.945313 46.25 L 12.496094 46.25 C 9.742188 46.25 7.5 44.007813 7.5 41.253906 L 7.5 38.746094 C 7.5 35.992188 9.742188 33.75 12.496094 33.75 L 13.945313 33.75 C 15.011719 33.75 15.96875 33.035156 16.332031 31.972656 C 16.679688 30.949219 17.101563 29.933594 17.585938 28.953125 C 18.085938 27.941406 17.914063 26.753906 17.160156 26 L 16.132813 24.972656 C 14.183594 23.023438 14.183594 19.855469 16.132813 17.90625 L 17.90625 16.132813 C 19.855469 14.183594 23.019531 14.183594 24.96875 16.132813 L 26 17.164063 C 26.753906 17.917969 27.945313 18.089844 28.953125 17.589844 C 29.921875 17.109375 30.9375 16.691406 31.96875 16.339844 C 33.035156 15.980469 33.75 15.019531 33.75 13.953125 L 33.75 13.75 C 33.75 10.304688 36.554688 7.5 40 7.5 L 40 10 C 37.933594 10 36.25 11.683594 36.25 13.75 L 36.25 13.953125 C 36.25 16.089844 34.855469 18.003906 32.773438 18.707031 C 31.84375 19.023438 30.929688 19.402344 30.058594 19.828125 C 28.085938 20.800781 25.742188 20.441406 24.234375 18.929688 L 23.203125 17.898438 C 22.230469 16.921875 20.648438 16.925781 19.675781 17.898438 L 17.898438 19.671875 C 16.925781 20.644531 16.925781 22.230469 17.898438 23.203125 L 18.929688 24.230469 C 20.441406 25.742188 20.804688 28.085938 19.828125 30.058594 C 19.390625 30.941406 19.015625 31.855469 18.699219 32.777344 C 17.992188 34.855469 16.082031 36.25 13.945313 36.25 L 12.496094 36.25 C 11.121094 36.25 10 37.371094 10 38.746094 L 10 41.253906 C 10 42.628906 11.121094 43.75 12.496094 43.75 L 13.945313 43.75 C 16.082031 43.75 17.992188 45.144531 18.699219 47.222656 C 19.011719 48.140625 19.390625 49.054688 19.828125 49.9375 C 20.800781 51.910156 20.441406 54.253906 18.925781 55.769531 L 17.898438 56.796875 C 16.925781 57.769531 16.925781 59.351563 17.898438 60.324219 L 19.671875 62.101563 C 20.648438 63.074219 22.230469 63.070313 23.203125 62.101563 L 24.230469 61.070313 C 25.742188 59.558594 28.089844 59.195313 30.058594 60.171875 C 30.941406 60.609375 31.855469 60.984375 32.777344 61.300781 C 34.855469 62.007813 36.25 63.917969 36.25 66.054688 L 36.25 67.503906 C 36.25 68.878906 37.371094 70 38.746094 70 L 41.253906 70 C 42.628906 70 43.75 68.878906 43.75 67.503906 L 43.75 66.054688 C 43.75 63.917969 45.144531 62.007813 47.222656 61.300781 C 48.140625 60.988281 49.054688 60.609375 49.9375 60.171875 C 51.910156 59.195313 54.253906 59.554688 55.769531 61.074219 L 56.796875 62.101563 C 57.769531 63.078125 59.351563 63.074219 60.324219 62.101563 L 62.101563 60.328125 C 63.074219 59.355469 63.074219 57.769531 62.101563 56.796875 L 61.003906 55.703125 C 59.523438 54.21875 59.171875 51.933594 60.136719 50.015625 C 60.585938 49.113281 60.980469 48.171875 61.304688 47.222656 C 62.015625 45.144531 63.925781 43.75 66.0625 43.75 L 66.25 43.75 C 68.316406 43.75 70 42.066406 70 40 L 72.5 40 C 72.5 43.445313 69.699219 46.25 66.25 46.25 L 66.0625 46.25 C 64.996094 46.25 64.035156 46.964844 63.671875 48.03125 C 63.3125 49.085938 62.875 50.132813 62.371094 51.132813 C 61.894531 52.089844 62.054688 53.214844 62.773438 53.933594 L 63.867188 55.027344 C 65.816406 56.976563 65.816406 60.144531 63.867188 62.09375 L 62.09375 63.867188 C 60.144531 65.816406 56.980469 65.816406 55.03125 63.867188 L 54 62.839844 C 53.246094 62.082031 52.0625 61.917969 51.046875 62.414063 C 50.066406 62.894531 49.050781 63.320313 48.027344 63.667969 C 46.964844 64.03125 46.25 64.988281 46.25 66.054688 L 46.25 67.503906 C 46.25 70.257813 44.007813 72.5 41.253906 72.5 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear1);" d="M 46.25 40 C 46.25 43.453125 43.453125 46.25 40 46.25 C 36.546875 46.25 33.75 43.453125 33.75 40 C 33.75 36.546875 36.546875 33.75 40 33.75 C 43.453125 33.75 46.25 36.546875 46.25 40 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear2);" d="M 40 60 C 28.972656 60 20 51.027344 20 40 C 20 28.972656 28.972656 20 40 20 L 40 22.5 C 30.351563 22.5 22.5 30.351563 22.5 40 C 22.5 49.648438 30.351563 57.5 40 57.5 C 49.648438 57.5 57.5 49.648438 57.5 40 L 60 40 C 60 51.027344 51.027344 60 40 60 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear3);" d="M 40 53.75 C 32.417969 53.75 26.25 47.582031 26.25 40 C 26.25 32.417969 32.417969 26.25 40 26.25 L 40 28.75 C 33.796875 28.75 28.75 33.796875 28.75 40 C 28.75 46.203125 33.796875 51.25 40 51.25 C 46.203125 51.25 51.25 46.203125 51.25 40 L 53.75 40 C 53.75 47.582031 47.582031 53.75 40 53.75 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear4);" d="M 57.5 37.5 C 55.433594 37.5 53.75 35.816406 53.75 33.75 L 53.75 33.09375 C 53.359375 32.960938 53.03125 32.820313 52.710938 32.671875 L 52.195313 33.109375 C 50.785156 34.523438 48.3125 34.523438 46.894531 33.109375 C 46.1875 32.398438 45.796875 31.457031 45.796875 30.457031 C 45.796875 29.453125 46.1875 28.511719 46.894531 27.804688 L 47.355469 27.34375 C 47.179688 26.96875 47.042969 26.640625 46.921875 26.300781 L 46.25 26.25 C 44.183594 26.25 42.5 24.566406 42.5 22.5 C 42.5 20.433594 44.183594 18.75 46.25 18.75 L 46.90625 18.75 C 47.039063 18.359375 47.179688 18.03125 47.328125 17.710938 L 46.890625 17.195313 C 46.183594 16.488281 45.792969 15.546875 45.792969 14.546875 C 45.792969 13.542969 46.183594 12.601563 46.890625 11.894531 C 48.308594 10.476563 50.78125 10.480469 52.195313 11.894531 L 52.65625 12.355469 C 53.03125 12.179688 53.359375 12.042969 53.699219 11.921875 L 53.75 11.25 C 53.75 9.183594 55.433594 7.5 57.5 7.5 C 59.566406 7.5 61.25 9.183594 61.25 11.25 L 61.25 11.90625 C 61.640625 12.039063 61.96875 12.179688 62.289063 12.328125 L 62.804688 11.890625 C 64.214844 10.476563 66.691406 10.476563 68.105469 11.890625 C 68.8125 12.601563 69.203125 13.542969 69.203125 14.542969 C 69.203125 15.546875 68.8125 16.488281 68.105469 17.195313 L 67.644531 17.65625 C 67.820313 18.03125 67.957031 18.359375 68.078125 18.699219 L 68.75 18.75 C 70.816406 18.75 72.5 20.433594 72.5 22.5 C 72.5 24.566406 70.816406 26.25 68.75 26.25 L 68.09375 26.25 C 67.960938 26.640625 67.820313 26.96875 67.671875 27.289063 L 68.109375 27.804688 C 68.816406 28.511719 69.207031 29.453125 69.207031 30.453125 C 69.207031 31.457031 68.816406 32.398438 68.109375 33.105469 C 66.691406 34.523438 64.21875 34.519531 62.804688 33.105469 L 62.34375 32.644531 C 61.96875 32.820313 61.640625 32.957031 61.300781 33.078125 L 61.25 33.75 C 61.25 35.816406 59.566406 37.5 57.5 37.5 Z M 52.644531 30.152344 C 53.023438 30.152344 53.40625 30.234375 53.773438 30.40625 C 54.023438 30.527344 54.277344 30.628906 54.535156 30.722656 C 55.578125 31.097656 56.25 32.027344 56.25 33.09375 L 56.25 33.75 C 56.25 34.441406 56.808594 35 57.5 35 C 58.1875 35 58.75 34.441406 58.75 33.75 L 58.75 33.09375 C 58.75 32.027344 59.417969 31.097656 60.457031 30.726563 C 60.722656 30.628906 60.976563 30.527344 61.222656 30.410156 C 62.21875 29.9375 63.355469 30.121094 64.109375 30.875 L 64.570313 31.339844 C 65.042969 31.8125 65.863281 31.8125 66.335938 31.339844 C 66.574219 31.101563 66.703125 30.789063 66.703125 30.453125 C 66.703125 30.121094 66.574219 29.808594 66.335938 29.574219 L 65.875 29.109375 C 65.121094 28.355469 64.9375 27.222656 65.40625 26.222656 C 65.523438 25.976563 65.628906 25.722656 65.722656 25.460938 C 66.097656 24.421875 67.027344 23.75 68.09375 23.75 L 68.75 23.75 C 69.441406 23.75 70 23.191406 70 22.5 C 70 21.808594 69.441406 21.25 68.75 21.25 L 68.09375 21.25 C 67.027344 21.25 66.097656 20.578125 65.726563 19.542969 C 65.628906 19.277344 65.527344 19.023438 65.410156 18.777344 C 64.9375 17.777344 65.121094 16.644531 65.875 15.890625 L 66.339844 15.429688 C 66.574219 15.191406 66.703125 14.878906 66.703125 14.546875 C 66.703125 14.210938 66.574219 13.898438 66.339844 13.660156 C 65.863281 13.1875 65.042969 13.1875 64.574219 13.660156 L 64.109375 14.125 C 63.355469 14.878906 62.222656 15.0625 61.222656 14.59375 C 60.976563 14.472656 60.722656 14.371094 60.460938 14.277344 C 59.421875 13.902344 58.75 12.972656 58.75 11.90625 L 58.75 11.25 C 58.75 10.558594 58.191406 10 57.5 10 C 56.808594 10 56.25 10.558594 56.25 11.25 L 56.25 11.90625 C 56.25 12.972656 55.578125 13.902344 54.542969 14.273438 C 54.277344 14.371094 54.023438 14.472656 53.777344 14.589844 C 52.78125 15.0625 51.644531 14.878906 50.890625 14.125 L 50.429688 13.660156 C 49.957031 13.1875 49.136719 13.191406 48.660156 13.660156 C 48.425781 13.898438 48.296875 14.210938 48.296875 14.546875 C 48.296875 14.878906 48.425781 15.191406 48.660156 15.425781 L 49.125 15.890625 C 49.878906 16.644531 50.0625 17.777344 49.59375 18.777344 C 49.472656 19.023438 49.371094 19.277344 49.277344 19.539063 C 48.902344 20.578125 47.972656 21.25 46.90625 21.25 L 46.25 21.25 C 45.558594 21.25 45 21.808594 45 22.5 C 45 23.191406 45.558594 23.75 46.25 23.75 L 46.90625 23.75 C 47.972656 23.75 48.902344 24.421875 49.273438 25.457031 C 49.371094 25.722656 49.472656 25.976563 49.589844 26.222656 C 50.0625 27.222656 49.878906 28.355469 49.125 29.109375 L 48.660156 29.570313 C 48.425781 29.808594 48.296875 30.121094 48.296875 30.453125 C 48.296875 30.789063 48.425781 31.101563 48.660156 31.339844 C 49.136719 31.808594 49.957031 31.8125 50.425781 31.339844 L 50.890625 30.875 C 51.367188 30.398438 51.996094 30.152344 52.644531 30.152344 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear5);" d="M 57.5 27.5 C 54.742188 27.5 52.5 25.257813 52.5 22.5 C 52.5 19.742188 54.742188 17.5 57.5 17.5 C 60.257813 17.5 62.5 19.742188 62.5 22.5 C 62.5 25.257813 60.257813 27.5 57.5 27.5 Z M 57.5 20 C 56.121094 20 55 21.121094 55 22.5 C 55 23.878906 56.121094 25 57.5 25 C 58.878906 25 60 23.878906 60 22.5 C 60 21.121094 58.878906 20 57.5 20 Z "/>
</g>
</svg>
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="80pt" height="80pt" viewBox="0 0 80 80" version="1.1">
<defs>
<linearGradient id="linear0" gradientUnits="userSpaceOnUse" x1="31.7739" y1="13" x2="31.7739" y2="21.6286" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#6DC7FF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#E6ABFF;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linear1" gradientUnits="userSpaceOnUse" x1="22.5815" y1="21.5" x2="22.5815" y2="31.6443" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#6DC7FF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#E6ABFF;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linear2" gradientUnits="userSpaceOnUse" x1="30.0061" y1="5" x2="30.0061" y2="58.4592" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#1A6DFF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#C822FF;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linear3" gradientUnits="userSpaceOnUse" x1="33.3681" y1="5" x2="33.3681" y2="58.4592" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#1A6DFF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#C822FF;stop-opacity:1;"/>
</linearGradient>
</defs>
<g id="surface1">
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear0);" d="M 45.460938 17.992188 L 37.507813 25.945313 L 33.972656 22.410156 C 33.972656 22.410156 38.390625 17.992188 45.460938 17.992188 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear1);" d="M 24.25 39.203125 L 32.203125 31.25 L 28.667969 27.714844 C 28.667969 27.714844 24.25 32.132813 24.25 39.203125 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear2);" d="M 37.507813 55 C 43.851563 55 49.816406 52.527344 54.300781 48.042969 C 58.789063 43.558594 61.257813 37.59375 61.257813 31.25 C 61.257813 24.90625 58.785156 18.941406 54.300781 14.457031 C 49.816406 9.96875 43.851563 7.5 37.507813 7.5 C 31.164063 7.5 25.199219 9.972656 20.714844 14.457031 C 16.226563 18.941406 13.757813 24.90625 13.757813 31.25 C 13.757813 37.59375 16.230469 43.558594 20.714844 48.042969 C 25.199219 52.53125 31.164063 55 37.507813 55 Z M 28.695313 24.207031 L 35.738281 31.25 L 22.277344 44.714844 C 21.085938 38.21875 23.675781 29.816406 28.695313 24.207031 Z M 46.3125 38.289063 L 39.273438 31.25 L 52.738281 17.785156 C 53.921875 24.28125 51.332031 32.679688 46.3125 38.289063 Z M 44.546875 40.054688 C 38.933594 45.078125 30.539063 47.667969 24.042969 46.480469 L 37.507813 33.015625 Z M 37.507813 29.484375 L 30.464844 22.4375 C 36.074219 17.417969 44.476563 14.824219 50.972656 16.015625 Z M 26.238281 49.25 C 26.613281 49.269531 26.988281 49.289063 27.367188 49.289063 C 33.882813 49.289063 41.128906 46.539063 46.320313 41.832031 L 51.605469 47.113281 C 47.714844 50.582031 42.765625 52.5 37.507813 52.5 C 33.457031 52.5 29.585938 51.355469 26.238281 49.25 Z M 53.375 45.347656 L 48.082031 40.058594 C 53.0625 34.5625 55.851563 26.78125 55.511719 19.988281 C 57.613281 23.332031 58.757813 27.199219 58.757813 31.25 C 58.757813 36.507813 56.839844 41.457031 53.375 45.347656 Z M 48.765625 13.246094 C 41.972656 12.90625 34.191406 15.691406 28.695313 20.671875 L 23.410156 15.382813 C 27.300781 11.917969 32.25 10 37.507813 10 C 41.554688 10 45.421875 11.144531 48.765625 13.246094 Z M 21.640625 17.152344 L 26.925781 22.4375 C 21.949219 27.929688 19.160156 35.714844 19.5 42.507813 C 17.398438 39.164063 16.257813 35.296875 16.257813 31.25 C 16.257813 25.992188 18.171875 21.042969 21.640625 17.152344 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear3);" d="M 41.105469 59.734375 C 47.226563 58.964844 53.148438 56.265625 57.835938 51.578125 C 69.042969 40.371094 69.046875 22.128906 57.835938 10.921875 L 56.070313 12.6875 C 66.304688 22.921875 66.304688 39.578125 56.070313 49.8125 C 45.832031 60.046875 29.179688 60.046875 18.945313 49.8125 L 17.175781 51.578125 C 21.863281 56.265625 27.78125 58.964844 33.902344 59.734375 C 34.226563 60.917969 35 61.859375 36.25 62.269531 L 36.25 66.25 L 33.777344 66.25 C 31.703125 66.25 30.019531 67.929688 30.011719 70 L 23.75 70 L 23.75 72.5 L 51.25 72.5 L 51.25 70 L 45.007813 70 C 44.996094 67.929688 43.3125 66.25 41.238281 66.25 L 38.75 66.25 L 38.75 62.269531 C 40 61.859375 40.78125 60.917969 41.105469 59.734375 Z M 42.503906 70 L 32.511719 70 C 32.523438 69.308594 33.082031 68.75 33.777344 68.75 L 41.238281 68.75 C 41.929688 68.75 42.492188 69.308594 42.503906 70 Z "/>
</g>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" width="96px" height="96px"><path fill="#ff4081" d="M24.5,45.161L7,34.82V14.18L24.5,3.839L42,14.18V34.82L24.5,45.161z M9,33.68l15.5,9.159L40,33.68 V15.32L24.5,6.161L9,15.32V33.68z"/><circle cx="24.5" cy="5.5" r="3.5" fill="#ff4081"/><circle cx="24.5" cy="43.5" r="3.5" fill="#ff4081"/><circle cx="8.5" cy="33.5" r="3.5" fill="#ff4081"/><circle cx="40.5" cy="33.5" r="3.5" fill="#ff4081"/><circle cx="8.5" cy="15.5" r="3.5" fill="#ff4081"/><circle cx="40.5" cy="15.5" r="3.5" fill="#ff4081"/><path fill="#ff4081" d="M42.72,35H6.28L24.5,2.978L42.72,35z M9.72,33H39.28L24.5,7.022L9.72,33z"/></svg>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="80pt" height="80pt" viewBox="0 0 80 80" version="1.1">
<defs>
<linearGradient id="linear0" gradientUnits="userSpaceOnUse" x1="32" y1="9.8333" x2="32" y2="54.7159" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#1A6DFF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#C822FF;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linear1" gradientUnits="userSpaceOnUse" x1="50.5" y1="33.6667" x2="50.5" y2="44.2733" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#6DC7FF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#E6ABFF;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linear2" gradientUnits="userSpaceOnUse" x1="14.5" y1="12.8333" x2="14.5" y2="24.8899" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#6DC7FF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#E6ABFF;stop-opacity:1;"/>
</linearGradient>
</defs>
<g id="surface1">
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear0);" d="M 38.75 67.5 C 32.21875 67.5 7.5 51.015625 7.5 28.75 C 7.5 19.789063 14.789063 12.5 23.75 12.5 C 30.496094 12.5 36.296875 16.632813 38.75 22.5 C 41.203125 16.632813 47.003906 12.5 53.75 12.5 C 62.710938 12.5 70 19.789063 70 28.75 C 70 32.632813 69.234375 36.570313 67.722656 40.453125 L 66.75 42.484375 L 65.550781 41.679688 C 63.90625 40.582031 61.988281 40 60 40 C 54.484375 40 50 44.484375 50 50 C 50 55.515625 54.484375 60 60 60 C 65.515625 60 70 55.515625 70 50 L 72.5 50 C 72.5 56.890625 66.890625 62.5 60 62.5 C 57.300781 62.5 54.796875 61.640625 52.75 60.179688 C 47.378906 64.578125 41.8125 67.5 38.75 67.5 Z M 23.75 15 C 16.167969 15 10 21.167969 10 28.75 C 10 49.148438 32.929688 65 38.75 65 C 40.765625 65 45.605469 62.730469 50.847656 58.503906 C 48.769531 56.273438 47.5 53.28125 47.5 50 C 47.5 43.109375 53.109375 37.5 60 37.5 C 61.984375 37.5 63.914063 37.964844 65.660156 38.851563 C 66.871094 35.535156 67.5 32.113281 67.5 28.75 C 67.5 21.167969 61.332031 15 53.75 15 C 46.167969 15 40 21.167969 40 28.75 L 37.5 28.75 C 37.5 21.167969 31.332031 15 23.75 15 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear1);" d="M 60 54.480469 C 59.359375 54.480469 58.71875 54.234375 58.234375 53.75 L 55.367188 50.882813 L 57.136719 49.117188 L 60 51.980469 L 69.117188 42.867188 L 70.886719 44.632813 L 61.769531 53.75 C 61.28125 54.234375 60.640625 54.480469 60 54.480469 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear2);" d="M 23.75 17.5 C 17.535156 17.5 12.5 22.535156 12.5 28.75 L 23.75 28.75 Z "/>
</g>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" version="1.0" viewBox="0 0 48 48" width="96" height="96"><path fill="#90CAF9" d="M36 13L36 9 22 9 22 22 13 22 13 26 22 26 22 39 36 39 36 35 26 35 26 26 36 26 36 22 26 22 26 13z"/><path fill="#D81B60" d="M6 17H16V31H6z"/><path fill="#2196F3" d="M32 6H42V16H32zM32 32H42V42H32zM32 19H42V29H32z"/></svg>
\ No newline at end of file
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 128 128" width="256" height="256"><path fill="#fff" d="M64,14c27.6,0,50,22.4,50,50c0,27.6-22.4,50-50,50c-27.6,0-50-22.4-50-50C14,36.4,36.4,14,64,14"/><path fill="#e6e7e7" d="M64,14c-0.2,0-0.4,0-0.6,0c-1.5,0-3.1,0.1-4.6,0.3c-0.3,0-0.7,0.1-1,0.1 c24.6,3.1,43.7,24.1,43.7,49.6c0,25.5-19.1,46.5-43.7,49.6c0.5,0.1,1,0.1,1.6,0.2c1.2,0.1,2.5,0.2,3.7,0.2c0.3,0,0.6,0,0.9,0 c27.6,0,50-22.4,50-50C114,36.4,91.6,14,64,14"/><path fill="#454b54" d="M64,117c-29.2,0-53-23.8-53-53s23.8-53,53-53s53,23.8,53,53S93.2,117,64,117z M64,17 c-25.9,0-47,21.1-47,47s21.1,47,47,47s47-21.1,47-47S89.9,17,64,17z"/><path fill="#454b54" d="M64 42.7c-1.7 0-3 1.3-3 3s1.3 3 3 3c1.7 0 3-1.3 3-3S65.7 42.7 64 42.7zM64 93c-1.7 0-3-1.3-3-3V62.3c0-1.7 1.3-3 3-3 1.7 0 3 1.3 3 3V90C67 91.7 65.7 93 64 93z"/></svg>
\ No newline at end of file
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" width="96px" height="96px"><linearGradient id="0chxHQbYOPc8vhUvRKpz3a" x1="32" x2="32" y1="12.745" y2="38.309" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#6dc7ff"/><stop offset="1" stop-color="#e6abff"/></linearGradient><path fill="url(#0chxHQbYOPc8vhUvRKpz3a)" d="M34,28V17c0-0.552-0.448-1-1-1h-2c-0.552,0-1,0.448-1,1v11c0,0.552-0.448,1-1,1h-2.178 c-0.789,0-1.267,0.871-0.844,1.537l4.335,6.812c0.786,1.235,2.589,1.235,3.375,0l4.335-6.812C38.446,29.871,37.967,29,37.178,29H35 C34.448,29,34,28.552,34,28z"/><g><linearGradient id="0chxHQbYOPc8vhUvRKpz3b" x1="32" x2="32" y1="2.277" y2="56.295" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#1a6dff"/><stop offset="1" stop-color="#c822ff"/></linearGradient><path fill="url(#0chxHQbYOPc8vhUvRKpz3b)" d="M54,27h-1.896c-0.436,0-0.824-0.283-0.944-0.689c-0.394-1.328-0.928-2.617-1.587-3.832 c-0.204-0.374-0.131-0.851,0.177-1.158l1.341-1.341c1.559-1.56,1.559-4.098,0-5.657l-1.414-1.414c-1.511-1.512-4.146-1.512-5.657,0 l-1.342,1.342c-0.309,0.309-0.785,0.38-1.16,0.177c-1.228-0.669-2.517-1.205-3.831-1.596C37.283,12.71,37,12.321,37,11.887V10 c0-2.206-1.794-4-4-4h-2c-2.206,0-4,1.794-4,4v1.887c0,0.435-0.283,0.823-0.687,0.943c-1.314,0.392-2.604,0.928-3.832,1.597 c-0.375,0.203-0.852,0.132-1.16-0.177l-1.342-1.342c-1.511-1.512-4.146-1.512-5.657,0l-1.414,1.414 c-1.559,1.56-1.559,4.098,0,5.657l1.341,1.34c0.308,0.309,0.381,0.785,0.177,1.16c-0.662,1.217-1.198,2.506-1.593,3.832 C12.712,26.717,12.324,27,11.89,27H10c-2.206,0-4,1.794-4,4v2c0,2.206,1.794,4,4,4h1.896c0.436,0,0.824,0.283,0.944,0.689 c0.394,1.328,0.928,2.617,1.587,3.832c0.203,0.374,0.13,0.851-0.177,1.158l-1.341,1.341c-1.559,1.56-1.559,4.098,0,5.657 l1.414,1.414c1.511,1.512,4.146,1.512,5.657,0l1.342-1.342c0.308-0.31,0.785-0.38,1.16-0.177c1.228,0.669,2.517,1.205,3.831,1.596 C26.717,51.29,27,51.679,27,52.113V54c0,2.206,1.794,4,4,4h2c2.206,0,4-1.794,4-4v-1.887c0-0.435,0.283-0.823,0.687-0.943 c1.314-0.392,2.604-0.928,3.832-1.597c0.374-0.203,0.851-0.133,1.16,0.177l1.342,1.342c1.511,1.512,4.146,1.512,5.657,0 l1.414-1.414c1.559-1.56,1.559-4.098,0-5.657l-1.341-1.34c-0.308-0.309-0.381-0.785-0.177-1.16 c0.662-1.217,1.198-2.506,1.593-3.832C51.288,37.283,51.676,37,52.11,37H54c2.206,0,4-1.794,4-4v-2C58,28.794,56.206,27,54,27z M56,33c0,1.103-0.897,2-2,2h-1.89c-1.313,0-2.489,0.87-2.86,2.116c-0.355,1.194-0.838,2.354-1.433,3.449 c-0.624,1.147-0.41,2.599,0.52,3.529l1.341,1.34c0.779,0.78,0.779,2.049,0,2.829l-1.414,1.414c-0.756,0.756-2.073,0.756-2.829,0 l-1.341-1.342c-0.931-0.931-2.383-1.146-3.531-0.519c-1.105,0.601-2.265,1.084-3.447,1.436C35.87,49.625,35,50.802,35,52.113V54 c0,1.103-0.897,2-2,2h-2c-1.103,0-2-0.897-2-2v-1.887c0-1.312-0.87-2.488-2.117-2.861c-1.181-0.351-2.341-0.834-3.445-1.435 c-0.44-0.24-0.926-0.356-1.409-0.356c-0.777,0-1.548,0.301-2.122,0.875l-1.342,1.342c-0.756,0.756-2.073,0.756-2.829,0 l-1.414-1.414c-0.779-0.78-0.779-2.049,0-2.829l1.342-1.341c0.929-0.93,1.143-2.381,0.521-3.527 c-0.593-1.092-1.073-2.251-1.428-3.445C14.387,35.872,13.21,35,11.896,35H10c-1.103,0-2-0.897-2-2v-2c0-1.103,0.897-2,2-2h1.89 c1.313,0,2.489-0.87,2.86-2.116c0.355-1.194,0.838-2.354,1.433-3.449c0.624-1.147,0.41-2.599-0.52-3.529l-1.341-1.34 c-0.779-0.78-0.779-2.049,0-2.829l1.414-1.414c0.756-0.756,2.073-0.756,2.829,0l1.341,1.342c0.931,0.931,2.382,1.146,3.531,0.519 c1.105-0.601,2.265-1.084,3.447-1.436C28.13,14.375,29,13.198,29,11.887V10c0-1.103,0.897-2,2-2h2c1.103,0,2,0.897,2,2v1.887 c0,1.312,0.87,2.488,2.117,2.861c1.181,0.351,2.341,0.834,3.445,1.435c1.149,0.627,2.601,0.413,3.531-0.519l1.342-1.342 c0.756-0.756,2.073-0.756,2.829,0l1.414,1.414c0.779,0.78,0.779,2.049,0,2.829l-1.341,1.341c-0.93,0.929-1.144,2.38-0.521,3.527 c0.593,1.092,1.073,2.251,1.428,3.445C49.613,28.128,50.79,29,52.104,29H54c1.103,0,2,0.897,2,2V33z"/><linearGradient id="0chxHQbYOPc8vhUvRKpz3c" x1="32" x2="32" y1="2.277" y2="56.295" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#1a6dff"/><stop offset="1" stop-color="#c822ff"/></linearGradient><path fill="url(#0chxHQbYOPc8vhUvRKpz3c)" d="M22,32c0-4.091,2.473-7.613,6-9.159V20.7c-4.653,1.653-8,6.087-8,11.3 c0,6.617,5.383,12,12,12s12-5.383,12-12c0-5.213-3.347-9.647-8-11.3v2.141c3.527,1.547,6,5.068,6,9.159c0,5.514-4.486,10-10,10 S22,37.514,22,32z"/><linearGradient id="0chxHQbYOPc8vhUvRKpz3d" x1="32" x2="32" y1="2.277" y2="56.295" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#1a6dff"/><stop offset="1" stop-color="#c822ff"/></linearGradient><path fill="url(#0chxHQbYOPc8vhUvRKpz3d)" d="M36,16.527v2.063c5.775,1.726,10,7.081,10,13.41c0,7.72-6.28,14-14,14s-14-6.28-14-14 c0-6.329,4.225-11.684,10-13.41v-2.063C21.111,18.31,16,24.561,16,32c0,8.822,7.178,16,16,16s16-7.178,16-16 C48,24.561,42.889,18.31,36,16.527z"/></g></svg>
\ No newline at end of file
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- Generator: Adobe Illustrator 20.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="&#1057;&#1083;&#1086;&#1081;_1" x="0px" y="0px" viewBox="0 0 64 64" style="enable-background:new 0 0 64 64;" xml:space="preserve" width="96px" height="96px">
<linearGradient id="SVGID_1__43631" gradientUnits="userSpaceOnUse" x1="31.7157" y1="11.1698" x2="32.2157" y2="53.0448" spreadMethod="reflect">
<stop offset="0" style="stop-color:#1A6DFF"/>
<stop offset="1" style="stop-color:#C822FF"/>
</linearGradient>
<path style="fill:url(#SVGID_1__43631);" d="M56,39h-2v11H43V39.899c2.279-0.465,4-2.484,4-4.899c0-1.328-0.529-2.53-1.378-3.427 l6.606-8.257c0.547,0.286,1.143,0.487,1.772,0.594V35h2V23.91c2.833-0.478,5-2.942,5-5.91c0-3.309-2.691-6-6-6s-6,2.691-6,6 c0,1.588,0.625,3.03,1.635,4.104l-6.649,8.312C43.376,30.151,42.706,30,42,30c-1.017,0-1.962,0.309-2.753,0.833l-9.362-9.362 C30.584,20.49,31,19.294,31,18c0-3.309-2.691-6-6-6s-6,2.691-6,6c0,1.294,0.416,2.49,1.115,3.471l-9.362,9.362 C9.962,30.309,9.017,30,8,30c-2.757,0-5,2.243-5,5c0,2.414,1.721,4.434,4,4.899V50H3v2h58v-2h-5V39z M55,14c2.206,0,4,1.794,4,4 s-1.794,4-4,4s-4-1.794-4-4S52.794,14,55,14z M42,32c1.654,0,3,1.346,3,3s-1.346,3-3,3s-3-1.346-3-3S40.346,32,42,32z M25,14 c2.206,0,4,1.794,4,4s-1.794,4-4,4s-4-1.794-4-4S22.794,14,25,14z M5,35c0-1.654,1.346-3,3-3s3,1.346,3,3s-1.346,3-3,3 S5,36.654,5,35z M9,39.899c2.279-0.465,4-2.484,4-4.899c0-1.017-0.309-1.962-0.833-2.753l9.362-9.362 C22.251,23.4,23.091,23.756,24,23.91V35h2V23.91c0.909-0.154,1.749-0.51,2.471-1.025l9.362,9.362C37.309,33.038,37,33.983,37,35 c0,2.414,1.721,4.434,4,4.899V50H26V39h-2v11H9V39.899z"/>
<linearGradient id="SVGID_2__43631" gradientUnits="userSpaceOnUse" x1="25" y1="15.6667" x2="25" y2="20.6916" spreadMethod="reflect">
<stop offset="0" style="stop-color:#6DC7FF"/>
<stop offset="1" style="stop-color:#E6ABFF"/>
</linearGradient>
<circle style="fill:url(#SVGID_2__43631);" cx="25" cy="18" r="2"/>
<linearGradient id="SVGID_3__43631" gradientUnits="userSpaceOnUse" x1="55" y1="15.6667" x2="55" y2="20.6916" spreadMethod="reflect">
<stop offset="0" style="stop-color:#6DC7FF"/>
<stop offset="1" style="stop-color:#E6ABFF"/>
</linearGradient>
<circle style="fill:url(#SVGID_3__43631);" cx="55" cy="18" r="2"/>
<linearGradient id="SVGID_4__43631" gradientUnits="userSpaceOnUse" x1="42" y1="31.8333" x2="42" y2="38.3419" spreadMethod="reflect">
<stop offset="0" style="stop-color:#6DC7FF"/>
<stop offset="1" style="stop-color:#E6ABFF"/>
</linearGradient>
<circle style="fill:url(#SVGID_4__43631);" cx="42" cy="35" r="3"/>
<linearGradient id="SVGID_5__43631" gradientUnits="userSpaceOnUse" x1="8" y1="31.8333" x2="8" y2="38.3419" spreadMethod="reflect">
<stop offset="0" style="stop-color:#6DC7FF"/>
<stop offset="1" style="stop-color:#E6ABFF"/>
</linearGradient>
<circle style="fill:url(#SVGID_5__43631);" cx="8" cy="35" r="3"/>
</svg>
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 24 24" version="1.1" width="24px" height="24px">
<path style="fill:#ffffff;" d="M 10.4375 2 C 6.140625 2 3 4.824219 3 11 C 3 14.410156 4.773438 20.515625 2 22 L 4.3125 22 C 5.203125 20.640625 5.09375 18.6875 5.09375 18.6875 C 5.09375 18.6875 4.03125 17.234375 4.03125 16.46875 C 4.03125 15.0625 5.15625 14.3125 5.15625 14.3125 C 5.15625 14.3125 4.09375 13.304688 4.09375 11.5625 C 4.09375 10.054688 5.296875 9.375 5.90625 9.375 C 8.144531 9.375 8.25 12 8.25 12 L 10.375 12 C 10.375 12 10.238281 9.125 12.96875 9.125 C 13.890625 9.125 15.46875 9.933594 15.46875 12.0625 C 15.46875 13.261719 15.09375 14 15.09375 14 C 15.09375 14 16.46875 14.734375 16.46875 16.03125 C 16.46875 17.285156 15.53125 18.34375 15.53125 18.34375 L 17.09375 22 L 22 22 C 22 22 19 20.789063 19 11 C 19 10.253906 19.222656 2 10.4375 2 Z M 13.75 4.03125 C 14.003906 4.027344 14.289063 4.109375 14.5625 4.28125 C 15.109375 4.628906 15.386719 5.203125 15.15625 5.5625 C 14.925781 5.921875 14.296875 5.941406 13.75 5.59375 C 13.203125 5.246094 12.925781 4.671875 13.15625 4.3125 C 13.269531 4.132813 13.496094 4.035156 13.75 4.03125 Z M 6.125 11 C 5.617188 11 5.03125 11.367188 5.03125 12.46875 C 5.03125 13.453125 6.3125 14.34375 6.3125 14.34375 C 6.3125 14.34375 4.5625 15.175781 4.5625 16.5 C 4.5625 17.226563 5.316406 17.96875 6.0625 18.5625 C 6.800781 19.167969 7.738281 20.21875 9 20.21875 C 10.796875 20.21875 12.292969 18.859375 13.09375 18.375 C 13.894531 17.890625 15.5 17.109375 15.5 16 C 15.5 14.671875 13.03125 14.28125 13.03125 14.28125 C 13.03125 14.28125 14.25 13.890625 14.25 12.59375 C 14.25 11.679688 13.65625 11 12.90625 11 C 11.820313 11 11.53125 12.046875 11.53125 12.59375 C 11.53125 13.210938 11.78125 13.8125 11.78125 13.8125 C 11.78125 13.8125 10.46875 13.03125 9 13.03125 C 8.214844 13.03125 7.34375 13.5625 7.34375 13.5625 C 7.34375 13.5625 7.4375 13.128906 7.4375 12.65625 C 7.4375 12.175781 7.15625 11 6.125 11 Z M 8.28125 13.75 C 8.546875 13.703125 8.25 14.203125 7.9375 14.53125 C 7.816406 14.65625 7.40625 14.277344 7.4375 14.1875 C 7.480469 14.09375 7.878906 13.835938 8.28125 13.75 Z M 9.71875 13.75 C 9.917969 13.75 10.339844 13.851563 10.5625 13.96875 C 10.730469 14.058594 10.699219 14.539063 10.53125 14.625 C 10.3125 14.734375 9.625 13.96875 9.625 13.78125 C 9.625 13.75 9.652344 13.75 9.71875 13.75 Z M 14.5 16 C 14.5 16 11.46875 19 9 19 C 6.890625 19 5.0625 16.71875 5.0625 16.71875 C 5.0625 16.71875 7.140625 18 9 18 C 11.125 18 14.5 16 14.5 16 Z "/>
</svg>
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="80pt" height="80pt" viewBox="0 0 80 80" version="1.1">
<defs>
<linearGradient id="linear0" gradientUnits="userSpaceOnUse" x1="41" y1="47.875" x2="41" y2="54.0115" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#6DC7FF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#E6ABFF;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linear1" gradientUnits="userSpaceOnUse" x1="16" y1="4.6667" x2="16" y2="58.9749" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#1A6DFF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#C822FF;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linear2" gradientUnits="userSpaceOnUse" x1="41.003" y1="4.6667" x2="41.003" y2="58.9749" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#1A6DFF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#C822FF;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linear3" gradientUnits="userSpaceOnUse" x1="41" y1="4.6667" x2="41" y2="58.9749" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#1A6DFF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#C822FF;stop-opacity:1;"/>
</linearGradient>
</defs>
<g id="surface1">
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear0);" d="M 55 63.75 C 55 65.820313 53.320313 67.5 51.25 67.5 C 49.179688 67.5 47.5 65.820313 47.5 63.75 C 47.5 61.679688 49.179688 60 51.25 60 C 53.320313 60 55 61.679688 55 63.75 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear1);" d="M 25 40 L 23.75 40 L 23.75 17.152344 C 24.492188 16.71875 25 15.921875 25 15 L 25 10 C 25 8.621094 23.878906 7.5 22.5 7.5 L 17.5 7.5 C 16.121094 7.5 15 8.621094 15 10 L 15 15 C 15 15.921875 15.507813 16.71875 16.25 17.152344 L 16.25 40 L 15 40 C 12.933594 40 11.25 41.683594 11.25 43.75 L 11.25 63.75 C 11.25 68.574219 15.175781 72.5 20 72.5 C 24.824219 72.5 28.75 68.574219 28.75 63.75 L 28.75 43.75 C 28.75 41.683594 27.066406 40 25 40 Z M 17.5 10 L 22.5 10 L 22.5 15 L 17.5 15 Z M 18.75 17.5 L 21.25 17.5 L 21.25 40 L 18.75 40 Z M 15 42.5 L 25 42.5 C 25.691406 42.5 26.25 43.058594 26.25 43.75 L 26.25 47.5 L 13.75 47.5 L 13.75 43.75 C 13.75 43.058594 14.308594 42.5 15 42.5 Z M 23.75 62.5 L 23.75 50 L 26.25 50 L 26.25 62.5 Z M 13.75 62.5 L 13.75 50 L 16.25 50 L 16.25 62.5 Z M 18.75 50 L 21.25 50 L 21.25 62.5 L 18.75 62.5 Z M 20 70 C 16.980469 70 14.457031 67.847656 13.875 65 L 26.125 65 C 25.542969 67.847656 23.019531 70 20 70 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear2);" d="M 68.75 21.25 C 68.75 13.28125 63.492188 7.5 56.25 7.5 L 55 7.5 L 55 18.75 C 55 19.441406 54.441406 20 53.75 20 L 48.75 20 C 48.058594 20 47.5 19.441406 47.5 18.75 L 47.5 7.5 L 46.25 7.5 C 42.398438 7.5 39.011719 9.113281 36.71875 12.046875 C 33.957031 15.574219 33.058594 20.710938 34.3125 25.78125 C 35.550781 30.78125 39.8125 34.390625 44.917969 34.929688 L 43 63.683594 C 42.851563 65.957031 43.65625 68.214844 45.214844 69.882813 C 46.769531 71.546875 48.972656 72.5 51.25 72.5 C 53.53125 72.5 55.734375 71.546875 57.292969 69.882813 C 58.867188 68.195313 59.652344 65.996094 59.5 63.691406 L 57.582031 34.933594 C 64.128906 34.269531 68.75 28.722656 68.75 21.25 Z M 56.25 32.5 L 54.914063 32.5 L 57.003906 63.859375 C 57.113281 65.464844 56.566406 66.996094 55.464844 68.171875 C 54.363281 69.351563 52.867188 70 51.25 70 C 49.636719 70 48.140625 69.351563 47.039063 68.171875 C 45.9375 66.996094 45.390625 65.460938 45.496094 63.851563 L 47.582031 32.5 L 46.25 32.5 C 41.71875 32.5 37.808594 29.488281 36.742188 25.179688 C 35.667969 20.847656 36.398438 16.515625 38.6875 13.589844 C 40.273438 11.5625 42.4375 10.359375 45 10.070313 L 45 18.75 C 45 20.816406 46.683594 22.5 48.75 22.5 L 53.75 22.5 C 55.820313 22.5 57.5 20.816406 57.5 18.75 L 57.5 10.074219 C 62.714844 10.679688 66.25 15.105469 66.25 21.25 C 66.25 27.875 62.140625 32.5 56.25 32.5 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear3);" d="M 50 38.75 L 52.5 38.75 L 52.5 56.25 L 50 56.25 Z "/>
</g>
</svg>
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="80pt" height="80pt" viewBox="0 0 80 80" version="1.1">
<defs>
<linearGradient id="linear0" gradientUnits="userSpaceOnUse" x1="36.5" y1="29.1667" x2="36.5" y2="34.6692" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#6DC7FF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#E6ABFF;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linear1" gradientUnits="userSpaceOnUse" x1="27.5" y1="29.1667" x2="27.5" y2="34.6692" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#6DC7FF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#E6ABFF;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linear2" gradientUnits="userSpaceOnUse" x1="32" y1="36.8333" x2="32" y2="41.3341" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#6DC7FF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#E6ABFF;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linear3" gradientUnits="userSpaceOnUse" x1="32" y1="4.5" x2="32" y2="59.0464" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#1A6DFF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#C822FF;stop-opacity:1;"/>
</linearGradient>
</defs>
<g id="surface1">
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear0);" d="M 48.75 40 C 48.75 41.726563 47.351563 43.125 45.625 43.125 C 43.898438 43.125 42.5 41.726563 42.5 40 C 42.5 38.273438 43.898438 36.875 45.625 36.875 C 47.351563 36.875 48.75 38.273438 48.75 40 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear1);" d="M 37.5 40 C 37.5 41.726563 36.101563 43.125 34.375 43.125 C 32.648438 43.125 31.25 41.726563 31.25 40 C 31.25 38.273438 32.648438 36.875 34.375 36.875 C 36.101563 36.875 37.5 38.273438 37.5 40 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear2);" d="M 35 46.25 C 35 49.011719 37.238281 51.25 40 51.25 C 42.761719 51.25 45 49.011719 45 46.25 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear3);" d="M 40 7.5 C 22.078125 7.5 7.5 22.078125 7.5 40 C 7.5 57.921875 22.078125 72.5 40 72.5 C 57.921875 72.5 72.5 57.921875 72.5 40 C 72.5 22.078125 57.921875 7.5 40 7.5 Z M 40 10 C 56.542969 10 70 23.457031 70 40 C 70 47.265625 67.402344 53.933594 63.089844 59.132813 C 60.46875 55.597656 57.089844 52.726563 53.183594 50.710938 C 54.402344 49.019531 55.296875 47.089844 55.796875 45 L 56.25 45 C 59.695313 45 62.5 42.195313 62.5 38.75 C 62.5 35.304688 59.695313 32.5 56.25 32.5 L 56.1875 32.5 C 55.542969 24.125 48.539063 17.5 40 17.5 C 31.460938 17.5 24.457031 24.125 23.8125 32.5 L 23.75 32.5 C 20.304688 32.5 17.5 35.304688 17.5 38.75 C 17.5 42.195313 20.304688 45 23.75 45 L 24.203125 45 C 24.699219 47.089844 25.597656 49.019531 26.816406 50.710938 C 22.914063 52.730469 19.53125 55.597656 16.910156 59.128906 C 12.597656 53.933594 10 47.265625 10 40 C 10 23.457031 23.457031 10 40 10 Z M 28.503906 26.230469 C 28.585938 26.234375 28.667969 26.25 28.75 26.25 C 31.410156 26.25 33.574219 24.15625 33.722656 21.53125 C 34.507813 21.125 35.335938 20.796875 36.199219 20.546875 C 36.222656 20.78125 36.25 21.015625 36.25 21.25 C 36.25 25.386719 32.886719 28.75 28.75 28.75 C 28.242188 28.75 27.746094 28.695313 27.261719 28.597656 C 27.601563 27.765625 28.015625 26.972656 28.503906 26.230469 Z M 50.359375 24.734375 C 49.84375 24.910156 49.304688 25 48.75 25 C 46.179688 25 44.082031 23.046875 43.804688 20.546875 C 46.378906 21.292969 48.640625 22.765625 50.359375 24.734375 Z M 41.253906 20.0625 C 41.289063 24.171875 44.636719 27.5 48.75 27.5 C 49.835938 27.5 50.882813 27.25 51.847656 26.808594 C 52.273438 27.527344 52.628906 28.289063 52.917969 29.085938 C 51.617188 29.679688 50.203125 30 48.75 30 C 43.257813 30 38.789063 25.546875 38.753906 20.0625 C 39.164063 20.027344 39.578125 20 40 20 C 40.421875 20 40.839844 20.027344 41.253906 20.0625 Z M 26.25 33.75 C 26.25 32.808594 26.347656 31.890625 26.527344 31 C 27.25 31.167969 27.992188 31.25 28.75 31.25 C 32.640625 31.25 36.015625 29.011719 37.664063 25.753906 C 39.753906 29.757813 43.933594 32.5 48.75 32.5 C 50.417969 32.5 52.039063 32.144531 53.550781 31.511719 C 53.671875 32.242188 53.75 32.984375 53.75 33.75 L 53.75 41.25 C 53.75 48.832031 47.582031 55 40 55 C 32.417969 55 26.25 48.832031 26.25 41.25 Z M 40 57.5 C 44.507813 57.5 48.585938 55.652344 51.535156 52.679688 C 52.425781 53.117188 53.296875 53.59375 54.128906 54.125 C 50.390625 57.863281 45.332031 60 40 60 C 34.667969 60 29.613281 57.867188 25.871094 54.125 C 26.703125 53.59375 27.574219 53.117188 28.464844 52.679688 C 31.410156 55.652344 35.492188 57.5 40 57.5 Z M 56.25 35 C 58.316406 35 60 36.683594 60 38.75 C 60 40.816406 58.316406 42.5 56.25 42.5 Z M 23.75 41.25 L 23.75 42.5 C 21.683594 42.5 20 40.816406 20 38.75 C 20 36.683594 21.683594 35 23.75 35 Z M 40 70 C 31.640625 70 24.074219 66.5625 18.628906 61.027344 C 20.101563 58.964844 21.847656 57.140625 23.824219 55.589844 C 28.054688 59.984375 33.859375 62.5 40 62.5 C 46.140625 62.5 51.945313 59.984375 56.175781 55.589844 C 58.152344 57.140625 59.898438 58.964844 61.371094 61.027344 C 55.921875 66.5625 48.359375 70 40 70 Z "/>
</g>
</svg>
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="80pt" height="80pt" viewBox="0 0 80 80" version="1.1">
<defs>
<linearGradient id="linear0" gradientUnits="userSpaceOnUse" x1="31.8738" y1="12.7607" x2="32.1238" y2="50.8857" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#1A6DFF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#C822FF;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linear1" gradientUnits="userSpaceOnUse" x1="31.8738" y1="12.7607" x2="32.1238" y2="50.8857" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#1A6DFF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#C822FF;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linear2" gradientUnits="userSpaceOnUse" x1="23" y1="23" x2="23" y2="42.0497" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#6DC7FF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#E6ABFF;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linear3" gradientUnits="userSpaceOnUse" x1="44" y1="23" x2="44" y2="42.0497" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#6DC7FF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#E6ABFF;stop-opacity:1;"/>
</linearGradient>
</defs>
<g id="surface1">
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear0);" d="M 72.5 63.75 L 7.5 63.75 C 5.433594 63.75 3.75 62.066406 3.75 60 L 3.75 20 C 3.75 17.933594 5.433594 16.25 7.5 16.25 L 72.5 16.25 C 74.566406 16.25 76.25 17.933594 76.25 20 L 76.25 60 C 76.25 62.066406 74.566406 63.75 72.5 63.75 Z M 7.5 18.75 C 6.8125 18.75 6.25 19.3125 6.25 20 L 6.25 60 C 6.25 60.6875 6.8125 61.25 7.5 61.25 L 72.5 61.25 C 73.1875 61.25 73.75 60.6875 73.75 60 L 73.75 20 C 73.75 19.3125 73.1875 18.75 72.5 18.75 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear1);" d="M 68.75 58.75 L 11.25 58.75 C 9.871094 58.75 8.75 57.628906 8.75 56.25 L 8.75 23.75 C 8.75 22.371094 9.871094 21.25 11.25 21.25 L 68.75 21.25 C 70.128906 21.25 71.25 22.371094 71.25 23.75 L 71.25 56.25 C 71.25 57.628906 70.128906 58.75 68.75 58.75 Z M 68.75 23.75 L 11.25 23.75 L 11.25 56.25 L 68.75 56.25 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear2);" d="M 35 28.75 L 28.75 38.75 L 22.5 28.75 L 16.25 28.75 L 16.25 51.25 L 22.5 51.25 L 22.5 38.75 L 28.75 47.5 L 35 38.75 L 35 51.25 L 41.25 51.25 L 41.25 28.75 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear3);" d="M 57.5 40 L 57.5 28.75 L 52.5 28.75 L 52.5 40 L 45 40 L 55 51.25 L 65 40 Z "/>
</g>
</svg>
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- Generator: Adobe Illustrator 20.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="&#1057;&#1083;&#1086;&#1081;_1" x="0px" y="0px" viewBox="0 0 64 64" style="enable-background:new 0 0 64 64;" xml:space="preserve" width="100px" height="100px">
<linearGradient id="SVGID_1__44829" gradientUnits="userSpaceOnUse" x1="32" y1="11" x2="32" y2="53.6696" spreadMethod="reflect">
<stop offset="0" style="stop-color:#1A6DFF"/>
<stop offset="1" style="stop-color:#C822FF"/>
</linearGradient>
<path style="fill:url(#SVGID_1__44829);" d="M56,15.184v-1.183C56,12.347,54.654,11,53,11H11c-1.654,0-3,1.347-3,3.001v1.183 C6.837,15.597,6,16.696,6,18v32c0,1.657,1.343,3,3,3h46c1.657,0,3-1.343,3-3V18C58,16.696,57.163,15.597,56,15.184z M9,17h46 c0.395,0,0.729,0.234,0.892,0.567l-22.138,15.94c-1.049,0.754-2.459,0.754-3.508,0L8.108,17.567C8.271,17.234,8.605,17,9,17z M11,13 h42c0.552,0,1,0.449,1,1.001V15H10v-0.999C10,13.449,10.448,13,11,13z M55,51H9c-0.552,0-1-0.448-1-1V19.953L29.078,35.13 c0.874,0.629,1.897,0.943,2.922,0.943s2.048-0.314,2.922-0.943L56,19.953V50C56,50.552,55.552,51,55,51z"/>
<linearGradient id="SVGID_2__44829" gradientUnits="userSpaceOnUse" x1="49" y1="11" x2="49" y2="53.6696" spreadMethod="reflect">
<stop offset="0" style="stop-color:#1A6DFF"/>
<stop offset="1" style="stop-color:#C822FF"/>
</linearGradient>
<rect x="44" y="47" style="fill:url(#SVGID_2__44829);" width="10" height="2"/>
<linearGradient id="SVGID_3__44829" gradientUnits="userSpaceOnUse" x1="50" y1="11" x2="50" y2="53.6696" spreadMethod="reflect">
<stop offset="0" style="stop-color:#1A6DFF"/>
<stop offset="1" style="stop-color:#C822FF"/>
</linearGradient>
<rect x="46" y="43" style="fill:url(#SVGID_3__44829);" width="8" height="2"/>
<linearGradient id="SVGID_4__44829" gradientUnits="userSpaceOnUse" x1="19" y1="11" x2="19" y2="53.6696" spreadMethod="reflect">
<stop offset="0" style="stop-color:#1A6DFF"/>
<stop offset="1" style="stop-color:#C822FF"/>
</linearGradient>
<rect x="18" y="45" style="fill:url(#SVGID_4__44829);" width="2" height="4"/>
<linearGradient id="SVGID_5__44829" gradientUnits="userSpaceOnUse" x1="15" y1="11" x2="15" y2="53.6696" spreadMethod="reflect">
<stop offset="0" style="stop-color:#1A6DFF"/>
<stop offset="1" style="stop-color:#C822FF"/>
</linearGradient>
<rect x="14" y="45" style="fill:url(#SVGID_5__44829);" width="2" height="4"/>
<linearGradient id="SVGID_6__44829" gradientUnits="userSpaceOnUse" x1="11" y1="11" x2="11" y2="53.6696" spreadMethod="reflect">
<stop offset="0" style="stop-color:#1A6DFF"/>
<stop offset="1" style="stop-color:#C822FF"/>
</linearGradient>
<rect x="10" y="45" style="fill:url(#SVGID_6__44829);" width="2" height="4"/>
<linearGradient id="SVGID_7__44829" gradientUnits="userSpaceOnUse" x1="32" y1="20.1667" x2="32" y2="31.2199" spreadMethod="reflect">
<stop offset="0" style="stop-color:#6DC7FF"/>
<stop offset="1" style="stop-color:#E6ABFF"/>
</linearGradient>
<path style="fill:url(#SVGID_7__44829);" d="M20.062,20h23.876c0.969,0,1.374,1.238,0.593,1.811l-11.347,8.321 c-0.705,0.517-1.663,0.517-2.368,0l-11.347-8.322C18.688,21.238,19.093,20,20.062,20z"/>
</svg>
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- Generator: Adobe Illustrator 20.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="&#1057;&#1083;&#1086;&#1081;_1" x="0px" y="0px" viewBox="0 0 64 64" style="enable-background:new 0 0 64 64;" xml:space="preserve" width="96px" height="96px">
<linearGradient id="SVGID_1__44030" gradientUnits="userSpaceOnUse" x1="31" y1="28.6667" x2="31" y2="43.5458" spreadMethod="reflect">
<stop offset="0" style="stop-color:#6DC7FF"/>
<stop offset="1" style="stop-color:#E6ABFF"/>
</linearGradient>
<path style="fill:url(#SVGID_1__44030);" d="M34,43h-6c-0.552,0-1-0.448-1-1V30c0-0.552,0.448-1,1-1h6c0.552,0,1,0.448,1,1v12 C35,42.552,34.552,43,34,43z"/>
<linearGradient id="SVGID_2__44030" gradientUnits="userSpaceOnUse" x1="32" y1="9.75" x2="32" y2="54.5844" spreadMethod="reflect">
<stop offset="0" style="stop-color:#1A6DFF"/>
<stop offset="1" style="stop-color:#C822FF"/>
</linearGradient>
<path style="fill:url(#SVGID_2__44030);" d="M53.489,19.023c-0.164-0.015-0.326,0.005-0.489,0.005V19H42v-6c0-1.654-1.346-3-3-3H9 c-1.654,0-3,1.346-3,3v36c0,2.757,2.243,5,5,5h34l0,0c0.004,0,0.007,0,0.011,0c0.158,0,0.317-0.008,0.477-0.023 C48.018,53.736,50,51.474,50,48.828V46h6c1.103,0,2-0.897,2-2V24.172C58,21.527,56.019,19.265,53.489,19.023z M42,31h2v10h-2V31z M8,49V13c0-0.551,0.448-1,1-1h30c0.552,0,1,0.449,1,1v36c0,1.09,0.367,2.14,1.013,3H11C9.346,52,8,50.654,8,49z M48,23.997v24.832 c0,1.626-1.188,3.013-2.702,3.158c-0.856,0.085-1.683-0.189-2.315-0.766C42.358,50.653,42,49.843,42,49v-6h2c1.103,0,2-0.897,2-2V31 c0-1.103-0.897-2-2-2h-2v-2h4v-2h-4v-4h7.012C48.367,21.86,48,22.908,48,23.997z M56,44h-6v-5h2v-2h-2v-2h2v-2h-2v-2h2v-2h-2v-2h2 v-2h-2v-1.003c0-0.842,0.357-1.649,0.981-2.217c0.634-0.576,1.448-0.848,2.318-0.765c1.514,0.145,2.7,1.531,2.7,3.157V44z"/>
<linearGradient id="SVGID_3__44030" gradientUnits="userSpaceOnUse" x1="23" y1="9.75" x2="23" y2="54.5844" spreadMethod="reflect">
<stop offset="0" style="stop-color:#1A6DFF"/>
<stop offset="1" style="stop-color:#C822FF"/>
</linearGradient>
<rect x="11" y="21" style="fill:url(#SVGID_3__44030);" width="24" height="2"/>
<linearGradient id="SVGID_4__44030" gradientUnits="userSpaceOnUse" x1="23" y1="9.75" x2="23" y2="54.5844" spreadMethod="reflect">
<stop offset="0" style="stop-color:#1A6DFF"/>
<stop offset="1" style="stop-color:#C822FF"/>
</linearGradient>
<rect x="11" y="25" style="fill:url(#SVGID_4__44030);" width="24" height="2"/>
<linearGradient id="SVGID_5__44030" gradientUnits="userSpaceOnUse" x1="17.5" y1="9.75" x2="17.5" y2="54.5844" spreadMethod="reflect">
<stop offset="0" style="stop-color:#1A6DFF"/>
<stop offset="1" style="stop-color:#C822FF"/>
</linearGradient>
<rect x="11" y="29" style="fill:url(#SVGID_5__44030);" width="13" height="2"/>
<linearGradient id="SVGID_6__44030" gradientUnits="userSpaceOnUse" x1="17.5" y1="9.75" x2="17.5" y2="54.5844" spreadMethod="reflect">
<stop offset="0" style="stop-color:#1A6DFF"/>
<stop offset="1" style="stop-color:#C822FF"/>
</linearGradient>
<rect x="11" y="33" style="fill:url(#SVGID_6__44030);" width="13" height="2"/>
<linearGradient id="SVGID_7__44030" gradientUnits="userSpaceOnUse" x1="17.5" y1="9.75" x2="17.5" y2="54.5844" spreadMethod="reflect">
<stop offset="0" style="stop-color:#1A6DFF"/>
<stop offset="1" style="stop-color:#C822FF"/>
</linearGradient>
<rect x="11" y="37" style="fill:url(#SVGID_7__44030);" width="13" height="2"/>
<linearGradient id="SVGID_8__44030" gradientUnits="userSpaceOnUse" x1="17.5" y1="9.75" x2="17.5" y2="54.5844" spreadMethod="reflect">
<stop offset="0" style="stop-color:#1A6DFF"/>
<stop offset="1" style="stop-color:#C822FF"/>
</linearGradient>
<rect x="11" y="41" style="fill:url(#SVGID_8__44030);" width="13" height="2"/>
</svg>
<?xml version="1.0"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" viewBox="0 0 192 192" width="64px" height="64px">
<g fill="none" fill-rule="nonzero" stroke="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="10" stroke-dasharray="" stroke-dashoffset="0" font-family="none" font-weight="none" font-size="none" text-anchor="none" style="mix-blend-mode: normal">
<path fill="#ffffff" d="M150.3,156.6h-108.6c-5.55,0 -10.65,-2.85 -13.35,-7.8c-2.7,-4.8 -2.7,-10.65 0.15,-15.45l54.3,-90.45c2.85,-4.65 7.65,-7.5 13.2,-7.5c5.55,0 10.35,2.85 13.2,7.5l54.15,90.45c2.85,4.8 3,10.65 0.15,15.45c-2.7,4.8 -7.65,7.8 -13.2,7.8zM96,44.4c-2.25,0 -4.2,1.05 -5.4,3.15l-54.3,90.45c-1.2,1.95 -1.2,4.35 -0.15,6.45c1.05,2.1 3.15,3.15 5.55,3.15h108.45c2.25,0 4.35,-1.2 5.55,-3.15c1.2,-1.95 1.05,-4.35 -0.15,-6.45l-54.15,-90.45c-1.2,-1.95 -3.15,-3.15 -5.4,-3.15z"/>
<path fill="#ffffff" d="M91.5,109.95c0,2.55 1.95,4.5 4.5,4.5v0c2.55,0 4.5,-1.95 4.5,-4.5v-31.5c0,-2.55 -1.95,-4.5 -4.5,-4.5v0c-2.55,0 -4.5,1.95 -4.5,4.5"/>
<circle fill="#ffffff" cx="64" cy="83.5" transform="scale(1.5,1.5)" r="3"/>
</g>
</svg>
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="80pt" height="80pt" viewBox="0 0 80 80" version="1.1">
<defs>
<linearGradient id="linear0" gradientUnits="userSpaceOnUse" x1="32" y1="7.625" x2="32" y2="15.0011" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#6DC7FF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#E6ABFF;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linear1" gradientUnits="userSpaceOnUse" x1="32" y1="5.6667" x2="32" y2="59.3592" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#1A6DFF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#C822FF;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linear2" gradientUnits="userSpaceOnUse" x1="32" y1="5.6667" x2="32" y2="59.3592" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#1A6DFF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#C822FF;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linear3" gradientUnits="userSpaceOnUse" x1="25.0004" y1="5.6667" x2="25.0004" y2="59.3592" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#1A6DFF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#C822FF;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linear4" gradientUnits="userSpaceOnUse" x1="18" y1="5.6667" x2="18" y2="59.3592" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#1A6DFF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#C822FF;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linear5" gradientUnits="userSpaceOnUse" x1="18" y1="5.6667" x2="18" y2="59.3592" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#1A6DFF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#C822FF;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linear6" gradientUnits="userSpaceOnUse" x1="17" y1="5.6667" x2="17" y2="59.3592" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#1A6DFF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#C822FF;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linear7" gradientUnits="userSpaceOnUse" x1="46" y1="5.6667" x2="46" y2="59.3592" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#1A6DFF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#C822FF;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linear8" gradientUnits="userSpaceOnUse" x1="46" y1="5.6667" x2="46" y2="59.3592" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#1A6DFF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#C822FF;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linear9" gradientUnits="userSpaceOnUse" x1="47" y1="5.6667" x2="47" y2="59.3592" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#1A6DFF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#C822FF;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linear10" gradientUnits="userSpaceOnUse" x1="15" y1="5.6667" x2="15" y2="59.3592" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#1A6DFF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#C822FF;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linear11" gradientUnits="userSpaceOnUse" x1="22" y1="5.6667" x2="22" y2="59.3592" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#1A6DFF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#C822FF;stop-opacity:1;"/>
</linearGradient>
</defs>
<g id="surface1">
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear0);" d="M 10 10 L 70 10 L 70 17.5 L 10 17.5 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear1);" d="M 66.25 7.5 L 13.75 7.5 C 10.304688 7.5 7.5 10.304688 7.5 13.75 L 7.5 63.75 C 7.5 65.816406 9.183594 67.5 11.25 67.5 L 36.25 67.5 L 36.25 65 L 11.25 65 C 10.558594 65 10 64.441406 10 63.75 L 10 62.269531 C 10.390625 62.410156 10.808594 62.5 11.25 62.5 L 36.25 62.5 L 36.25 60 L 11.25 60 C 10.558594 60 10 59.441406 10 58.75 L 10 20 L 70 20 L 70 58.75 C 70 59.441406 69.441406 60 68.75 60 L 43.75 60 L 43.75 62.5 L 68.75 62.5 C 69.191406 62.5 69.609375 62.410156 70 62.269531 L 70 63.75 C 70 64.441406 69.441406 65 68.75 65 L 43.75 65 L 43.75 67.5 L 68.75 67.5 C 70.816406 67.5 72.5 65.816406 72.5 63.75 L 72.5 13.75 C 72.5 10.304688 69.695313 7.5 66.25 7.5 Z M 10 17.5 L 10 13.75 C 10 11.683594 11.683594 10 13.75 10 L 66.25 10 C 68.316406 10 70 11.683594 70 13.75 L 70 17.5 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear2);" d="M 65 35 L 65 25 C 65 23.621094 63.878906 22.5 62.5 22.5 L 17.5 22.5 C 16.121094 22.5 15 23.621094 15 25 L 15 35 C 15 36.378906 16.121094 37.5 17.5 37.5 L 62.5 37.5 C 63.878906 37.5 65 36.378906 65 35 Z M 62.503906 35 L 52.5 35 L 52.5 25 L 62.5 25 Z M 50 35 L 30 35 L 30 25 L 50 25 Z M 17.5 25 L 27.5 25 L 27.5 35 L 17.5 35 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear3);" d="M 45.589844 55 C 46.289063 55 46.929688 54.636719 47.265625 54.054688 C 47.582031 53.503906 47.578125 52.847656 47.257813 52.300781 L 42.269531 43.75 C 41.820313 42.980469 40.949219 42.5 40 42.5 C 39.050781 42.5 38.179688 42.980469 37.730469 43.75 L 32.742188 52.300781 C 32.421875 52.847656 32.417969 53.503906 32.734375 54.054688 C 33.070313 54.636719 33.710938 55 34.410156 55 L 38.75 55 L 38.75 68.75 C 38.75 69.441406 38.191406 70 37.5 70 L 15 70 L 15 72.5 L 37.5 72.5 C 39.566406 72.5 41.25 70.816406 41.25 68.75 L 41.25 55 Z M 39.875 45.027344 C 39.921875 44.988281 40.074219 44.988281 40.109375 45.007813 L 44.480469 52.5 L 35.519531 52.5 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear4);" d="M 15 42.5 L 30 42.5 L 30 45 L 15 45 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear5);" d="M 15 47.5 L 30 47.5 L 30 50 L 15 50 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear6);" d="M 15 52.5 L 27.5 52.5 L 27.5 55 L 15 55 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear7);" d="M 50 42.5 L 65 42.5 L 65 45 L 50 45 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear8);" d="M 50 47.5 L 65 47.5 L 65 50 L 50 50 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear9);" d="M 52.5 52.5 L 65 52.5 L 65 55 L 52.5 55 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear10);" d="M 15 12.5 L 22.5 12.5 L 22.5 15 L 15 15 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear11);" d="M 25 12.5 L 30 12.5 L 30 15 L 25 15 Z "/>
</g>
</svg>
<?xml version="1.0" encoding="UTF-8"?>
<svg width="288px" height="288px" viewBox="0 0 288 288" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: sketchtool 50.2 (55047) - http://www.bohemiancoding.com/sketch -->
<title>51D3DEA8-C839-4EC1-832A-7EFA54D4C72F</title>
<desc>Created with sketchtool.</desc>
<defs>
<path d="M188,21.3513568 L156.970455,52.4353616 C145.945446,46.3308604 133.267763,42.8562859 119.78051,42.8562859 C77.2541056,42.8562859 42.7778981,77.3956688 42.7778981,120 C42.7778981,162.604331 77.2541056,197.143714 119.78051,197.143714 C133.267763,197.143714 145.945446,193.66914 156.970455,187.564638 L188,218.648643 C168.639768,232.11022 145.131085,240 119.78051,240 C53.6280593,240 0,186.273671 0,120 C0,53.7263293 53.6280593,0 119.78051,0 C145.131085,0 168.639768,7.88977984 188,21.3513568 Z M218.82592,51 C232.175728,70.2979426 240,93.730988 240,119 C240,144.269012 232.175728,167.704445 218.82592,187 L188,156.072677 C194.053817,145.08314 197.499542,132.443859 197.499542,119 C197.499542,105.556141 194.053817,92.9192472 188,81.92971 L218.82592,51 Z" id="path-1"></path>
<filter x="-15.0%" y="-15.0%" width="130.0%" height="130.0%" filterUnits="objectBoundingBox" id="filter-2">
<feOffset dx="0" dy="0" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
<feGaussianBlur stdDeviation="12" in="shadowOffsetOuter1" result="shadowBlurOuter1"></feGaussianBlur>
<feComposite in="shadowBlurOuter1" in2="SourceAlpha" operator="out" result="shadowBlurOuter1"></feComposite>
<feColorMatrix values="0 0 0 0 0.639215686 0 0 0 0 0.705882353 0 0 0 0 0.8 0 0 0 0.12 0" type="matrix" in="shadowBlurOuter1"></feColorMatrix>
</filter>
</defs>
<g id="Homepage" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" opacity="0.766415308">
<g id="Homepage---XL,-L,-M-(hd-desktop,-desktop,-hd-laptop,-laptop)" transform="translate(-1567.000000, -5467.000000)">
<g id="JOIN-MOVEMENT" transform="translate(0.000000, 1964.000000)">
<g id="::-stats" transform="translate(0.000000, 3447.000000)">
<g id="::-stat-(chapters)" transform="translate(1591.000000, 80.000000)">
<g id="symbol">
<use fill="black" fill-opacity="1" filter="url(#filter-2)" xlink:href="#path-1"></use>
<use fill="#FFFFFF" fill-rule="evenodd" xlink:href="#path-1"></use>
</g>
</g>
</g>
</g>
</g>
</g>
</svg>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="80pt" height="80pt" viewBox="0 0 80 80" version="1.1">
<defs>
<linearGradient id="linear0" gradientUnits="userSpaceOnUse" x1="49" y1="21.9609" x2="49" y2="29.6619" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#6DC7FF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#E6ABFF;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linear1" gradientUnits="userSpaceOnUse" x1="40" y1="12" x2="40" y2="19.8003" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#6DC7FF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#E6ABFF;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linear2" gradientUnits="userSpaceOnUse" x1="26" y1="11.0438" x2="26" y2="18.9416" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#6DC7FF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#E6ABFF;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linear3" gradientUnits="userSpaceOnUse" x1="16" y1="21.1089" x2="16" y2="28.9559" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#6DC7FF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#E6ABFF;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linear4" gradientUnits="userSpaceOnUse" x1="16" y1="33.9501" x2="16" y2="41.8509" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#6DC7FF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#E6ABFF;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linear5" gradientUnits="userSpaceOnUse" x1="31.9997" y1="4.625" x2="31.9997" y2="59.3701" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#1A6DFF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#C822FF;stop-opacity:1;"/>
</linearGradient>
</defs>
<g id="surface1">
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear0);" d="M 66.25 32.5 C 66.25 35.265625 64.015625 37.5 61.25 37.5 C 58.488281 37.5 56.25 35.265625 56.25 32.5 C 56.25 29.738281 58.488281 27.5 61.25 27.5 C 64.015625 27.5 66.25 29.738281 66.25 32.5 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear1);" d="M 55 20 C 55 22.765625 52.765625 25 50 25 C 47.238281 25 45 22.765625 45 20 C 45 17.238281 47.238281 15 50 15 C 52.765625 15 55 17.238281 55 20 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear2);" d="M 37.5 18.75 C 37.5 21.515625 35.265625 23.75 32.5 23.75 C 29.738281 23.75 27.5 21.515625 27.5 18.75 C 27.5 15.988281 29.738281 13.75 32.5 13.75 C 35.265625 13.75 37.5 15.988281 37.5 18.75 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear3);" d="M 25 31.25 C 25 34.015625 22.765625 36.25 20 36.25 C 17.238281 36.25 15 34.015625 15 31.25 C 15 28.488281 17.238281 26.25 20 26.25 C 22.765625 26.25 25 28.488281 25 31.25 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear4);" d="M 25 47.5 C 25 50.265625 22.765625 52.5 20 52.5 C 17.238281 52.5 15 50.265625 15 47.5 C 15 44.738281 17.238281 42.5 20 42.5 C 22.765625 42.5 25 44.738281 25 47.5 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear5);" d="M 37.5 51.25 C 33.363281 51.25 30 54.613281 30 58.75 C 30 62.886719 33.363281 66.25 37.5 66.25 C 41.636719 66.25 45 62.886719 45 58.75 C 45 54.613281 41.636719 51.25 37.5 51.25 Z M 37.5 63.75 C 34.742188 63.75 32.5 61.507813 32.5 58.75 C 32.5 55.992188 34.742188 53.75 37.5 53.75 C 40.257813 53.75 42.5 55.992188 42.5 58.75 C 42.5 61.507813 40.257813 63.75 37.5 63.75 Z M 63.109375 15.402344 C 56.25 8.957031 47.28125 5.726563 37.847656 6.320313 C 20.921875 7.367188 7.367188 20.921875 6.320313 37.847656 C 5.734375 47.28125 8.957031 56.25 15.402344 63.109375 C 21.757813 69.875 30.722656 73.75 40 73.75 C 46.894531 73.75 52.5 68.144531 52.5 61.25 L 52.5 58.75 C 52.5 53.238281 56.988281 48.75 62.5 48.75 L 65 48.75 C 69.824219 48.75 73.75 44.824219 73.75 40 C 73.75 30.722656 69.875 21.757813 63.109375 15.402344 Z M 65 46.25 L 62.5 46.25 C 55.605469 46.25 50 51.855469 50 58.75 L 50 61.25 C 50 66.761719 45.511719 71.25 40 71.25 C 31.285156 71.25 23.199219 67.75 17.222656 61.398438 C 11.261719 55.050781 8.273438 46.738281 8.8125 38.003906 C 9.785156 22.335938 22.335938 9.785156 38.003906 8.8125 C 38.675781 8.769531 39.351563 8.75 40.023438 8.75 C 48.011719 8.75 55.539063 11.71875 61.398438 17.222656 C 67.75 23.199219 71.25 31.285156 71.25 40 C 71.25 43.449219 68.449219 46.25 65 46.25 Z "/>
</g>
</svg>
<?xml version="1.0"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" viewBox="0 0 192 192" width="24px" height="24px"><g fill="none" fill-rule="nonzero" stroke="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="10" stroke-dasharray="" stroke-dashoffset="0" font-family="none" font-weight="none" font-size="none" text-anchor="none" style="mix-blend-mode: normal"><path d="M0,192v-192h192v192z" fill="none"/><g fill="#ffffff"><path d="M16,24v144h32v-144zM120,24c-30.872,0 -56,25.128 -56,56c0,30.872 25.128,56 56,56c30.872,0 56,-25.128 56,-56c0,-30.872 -25.128,-56 -56,-56z"/></g></g></svg>
<?xml version="1.0"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" viewBox="0 0 192 192" width="26px" height="26px"><g fill="none" fill-rule="nonzero" stroke="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="10" stroke-dasharray="" stroke-dashoffset="0" font-family="none" font-weight="none" font-size="none" text-anchor="none" style="mix-blend-mode: normal"><path d="M0,192v-192h192v192z" fill="none"/><g fill="#ffffff"><g id="surface1"><path d="M34.84615,0.46154l-33.46154,153.23077h44.30769l10.84615,-50.76923h31.61538c30.23077,0 55.32693,-18.63461 62.07692,-50.30769c7.67308,-35.85577 -18.05769,-52.15385 -40.15385,-52.15385zM72.23077,31.61538h21.69231c10.81731,0 18.17308,9.375 15,21c-2.71153,11.65385 -14.10577,21 -25.38462,21h-20.76923zM166.38462,40.61538c-0.02884,4.61538 -0.46154,9.57692 -1.61538,15c-3,14.10577 -9.05769,26.45192 -17.53846,36.23077c-3.57692,10.52884 -14.19231,18.69231 -24.69231,18.69231h-0.46154c-10.18269,4.64423 -21.54808,7.15385 -33.92308,7.15385h-19.61538l-8.30769,39l-2.53846,11.76923h-12.23077l-4.84615,22.15385h44.07692l10.84615,-50.76923h31.61538c30.23077,0 55.52884,-18.63461 62.30769,-50.30769c5.68269,-26.625 -7.125,-42.51923 -23.07692,-48.92308z"/></g></g></g></svg>
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="80pt" height="80pt" viewBox="0 0 80 80" version="1.1">
<defs>
<linearGradient id="linear0" gradientUnits="userSpaceOnUse" x1="36" y1="-126.1334" x2="36" y2="-130.1422" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,-1.25,0,-127.5)">
<stop offset="0" style="stop-color:#6DC7FF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#E6ABFF;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linear1" gradientUnits="userSpaceOnUse" x1="28" y1="-126.1334" x2="28" y2="-130.1422" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,-1.25,0,-127.5)">
<stop offset="0" style="stop-color:#6DC7FF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#E6ABFF;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linear2" gradientUnits="userSpaceOnUse" x1="49.5" y1="-129.625" x2="49.5" y2="-133.502" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,-1.25,0,-127.5)">
<stop offset="0" style="stop-color:#6DC7FF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#E6ABFF;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linear3" gradientUnits="userSpaceOnUse" x1="49.5" y1="-129.625" x2="49.5" y2="-133.502" spreadMethod="reflect" gradientTransform="matrix(-1.25,0,0,-1.25,80,-127.5)">
<stop offset="0" style="stop-color:#6DC7FF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#E6ABFF;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linear4" gradientUnits="userSpaceOnUse" x1="32" y1="11" x2="32" y2="53" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#1A6DFF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#C822FF;stop-opacity:1;"/>
</linearGradient>
</defs>
<g id="surface1">
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear0);" d="M 47.5 32.5 C 47.5 33.878906 46.378906 35 45 35 C 43.621094 35 42.5 33.878906 42.5 32.5 C 42.5 31.121094 43.621094 30 45 30 C 46.378906 30 47.5 31.121094 47.5 32.5 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear1);" d="M 37.5 32.5 C 37.5 33.878906 36.378906 35 35 35 C 33.621094 35 32.5 33.878906 32.5 32.5 C 32.5 31.121094 33.621094 30 35 30 C 36.378906 30 37.5 31.121094 37.5 32.5 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear2);" d="M 63.75 36.875 C 63.75 37.910156 62.910156 38.75 61.875 38.75 C 60.839844 38.75 60 37.910156 60 36.875 C 60 35.839844 60.839844 35 61.875 35 C 62.910156 35 63.75 35.839844 63.75 36.875 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear3);" d="M 20 36.875 C 20 37.910156 19.160156 38.75 18.125 38.75 C 17.089844 38.75 16.25 37.910156 16.25 36.875 C 16.25 35.839844 17.089844 35 18.125 35 C 19.160156 35 20 35.839844 20 36.875 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear4);" d="M 67.5 46.578125 C 68.691406 45.042969 69.507813 43.214844 69.832031 41.214844 C 69.890625 41.222656 69.941406 41.25 70 41.25 C 72.757813 41.25 75 39.007813 75 36.25 C 75 33.492188 72.757813 31.25 70 31.25 C 69.988281 31.25 69.980469 31.257813 69.96875 31.257813 C 69.644531 24.996094 64.464844 20 58.125 20 C 56.09375 20 54.121094 20.539063 52.363281 21.519531 C 50.132813 16.929688 45.4375 13.75 40 13.75 C 34.5625 13.75 29.867188 16.929688 27.636719 21.519531 C 25.878906 20.539063 23.90625 20 21.875 20 C 15.535156 20 10.355469 24.996094 10.03125 31.257813 C 10.019531 31.257813 10.011719 31.25 10 31.25 C 7.242188 31.25 5 33.492188 5 36.25 C 5 39.007813 7.242188 41.25 10 41.25 C 10.058594 41.25 10.109375 41.222656 10.167969 41.214844 C 10.492188 43.214844 11.308594 45.042969 12.5 46.578125 C 7.015625 50.574219 3.75 56.941406 3.75 63.75 L 3.75 66.25 L 76.25 66.25 L 76.25 63.75 C 76.25 56.941406 72.984375 50.574219 67.5 46.578125 Z M 72.5 36.25 C 72.5 37.628906 71.378906 38.75 70 38.75 L 70 33.75 C 71.378906 33.75 72.5 34.871094 72.5 36.25 Z M 58.125 22.5 C 63.296875 22.5 67.5 26.703125 67.5 31.875 L 67.5 39.3125 C 67.5 44.484375 63.296875 48.6875 58.125 48.6875 L 58.125 48.910156 C 56.621094 46.453125 54.609375 44.296875 52.183594 42.597656 C 52.816406 41.390625 53.269531 40.082031 53.519531 38.703125 C 53.597656 38.71875 53.667969 38.75 53.75 38.75 C 56.507813 38.75 58.75 36.507813 58.75 33.75 C 58.75 30.992188 56.507813 28.75 53.75 28.75 L 53.75 27.5 C 53.75 26.242188 53.566406 25.03125 53.25 23.875 C 54.714844 22.980469 56.394531 22.5 58.125 22.5 Z M 53.75 35 C 54.441406 35 55 34.441406 55 33.75 C 55 33.058594 54.441406 32.5 53.75 32.5 L 53.75 31.25 C 55.128906 31.25 56.25 32.371094 56.25 33.75 C 56.25 35.128906 55.128906 36.25 53.75 36.25 Z M 28.75 27.5 C 28.75 21.296875 33.796875 16.25 40 16.25 C 46.203125 16.25 51.25 21.296875 51.25 27.5 L 51.25 36.25 C 51.25 42.453125 46.203125 47.5 40 47.5 C 33.796875 47.5 28.75 42.453125 28.75 36.25 Z M 26.25 32.5 C 25.558594 32.5 25 33.058594 25 33.75 C 25 34.441406 25.558594 35 26.25 35 L 26.25 36.25 C 24.871094 36.25 23.75 35.128906 23.75 33.75 C 23.75 32.371094 24.871094 31.25 26.25 31.25 Z M 7.5 36.25 C 7.5 34.871094 8.621094 33.75 10 33.75 L 10 38.75 C 8.621094 38.75 7.5 37.628906 7.5 36.25 Z M 12.5 31.875 C 12.5 26.703125 16.703125 22.5 21.875 22.5 C 23.605469 22.5 25.285156 22.980469 26.75 23.875 C 26.433594 25.03125 26.25 26.242188 26.25 27.5 L 26.25 28.75 C 23.492188 28.75 21.25 30.992188 21.25 33.75 C 21.25 36.507813 23.492188 38.75 26.25 38.75 C 26.332031 38.75 26.402344 38.71875 26.480469 38.703125 C 26.730469 40.082031 27.183594 41.390625 27.816406 42.597656 C 25.390625 44.296875 23.378906 46.453125 21.875 48.910156 L 21.875 48.6875 C 16.703125 48.6875 12.5 44.484375 12.5 39.3125 Z M 6.25 63.75 C 6.25 57.628906 9.234375 51.914063 14.242188 48.398438 C 16.027344 49.894531 18.25 50.886719 20.695313 51.128906 C 19.429688 53.871094 18.75 56.890625 18.75 60 L 18.75 63.75 Z M 37.5 63.75 C 37.5 62.371094 38.621094 61.25 40 61.25 C 41.378906 61.25 42.5 62.371094 42.5 63.75 Z M 58.75 63.75 L 45 63.75 C 45 60.992188 42.757813 58.75 40 58.75 C 37.242188 58.75 35 60.992188 35 63.75 L 21.25 63.75 L 21.25 60 C 21.25 53.910156 24.207031 48.21875 29.171875 44.699219 C 31.691406 47.917969 35.605469 50 40 50 C 44.394531 50 48.308594 47.917969 50.828125 44.699219 C 55.792969 48.21875 58.75 53.910156 58.75 60 Z M 61.25 63.75 L 61.25 60 C 61.25 56.890625 60.570313 53.871094 59.308594 51.128906 C 61.75 50.886719 63.976563 49.894531 65.757813 48.398438 C 70.765625 51.914063 73.75 57.628906 73.75 63.75 Z M 51.371094 47.859375 L 53.121094 49.640625 C 49.597656 53.097656 44.9375 55 40 55 C 35.0625 55 30.402344 53.097656 26.878906 49.640625 L 28.628906 47.859375 C 31.683594 50.851563 35.722656 52.5 40 52.5 C 44.277344 52.5 48.316406 50.851563 51.371094 47.859375 Z M 34.789063 24.046875 L 32.707031 22.660156 C 34.335938 20.210938 37.0625 18.75 40 18.75 C 43.113281 18.75 46.015625 20.425781 47.578125 23.125 L 45.414063 24.375 C 44.296875 22.449219 42.222656 21.25 40 21.25 C 37.902344 21.25 35.953125 22.296875 34.789063 24.046875 Z "/>
</g>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" width="96px" height="96px"><path fill="#616161" d="M28.667,29H8.333C7.045,29,6,27.955,6,26.667V6.333C6,5.045,7.045,4,8.333,4h20.333C29.955,4,31,5.045,31,6.333v20.333C31,27.955,29.955,29,28.667,29z"/><path fill="#424242" d="M25,29V13c-2.2,0-4,1.8-4,4v12H25z"/><path fill="#e0e0e0" d="M13 12h-3c-.55 0-1-.45-1-1V8c0-.55.45-1 1-1h3c.55 0 1 .45 1 1v3C14 11.55 13.55 12 13 12zM20 12h-3c-.55 0-1-.45-1-1V8c0-.55.45-1 1-1h3c.55 0 1 .45 1 1v3C21 11.55 20.55 12 20 12zM27 12h-3c-.55 0-1-.45-1-1V8c0-.55.45-1 1-1h3c.55 0 1 .45 1 1v3C28 11.55 27.55 12 27 12zM13 19h-3c-.55 0-1-.45-1-1v-3c0-.55.45-1 1-1h3c.55 0 1 .45 1 1v3C14 18.55 13.55 19 13 19zM20 19h-3c-.55 0-1-.45-1-1v-3c0-.55.45-1 1-1h3c.55 0 1 .45 1 1v3C21 18.55 20.55 19 20 19zM13 26h-3c-.55 0-1-.45-1-1v-3c0-.55.45-1 1-1h3c.55 0 1 .45 1 1v3C14 25.55 13.55 26 13 26zM20 26h-3c-.55 0-1-.45-1-1v-3c0-.55.45-1 1-1h3c.55 0 1 .45 1 1v3C21 25.55 20.55 26 20 26z"/><path fill="#ffcc80" d="M37,28v-2H26l-3,2c0,0-2.268,1.422-3.286,2.67c-0.906,1.021-1.021,2.303,0,3.666C19.714,34.336,24,44,29,44h7.128c3.743,0,6.862-3.035,6.862-6.775c0,0,0.01-4.811,0.01-9.225H37z"/><path fill="#ffcc80" d="M23 31.75c0 1.336 1.127 2.43 2.5 2.43 1.378 0 2.5-1.094 2.5-2.43l-.01-16.324c0-1.332-1.112-2.426-2.49-2.426-1.373 0-2.5 1.094-2.5 2.426V31.75zM28 33.93c0 1.336 1.127 2.43 2.5 2.43 1.378 0 2.5-1.094 2.5-2.43v-8.324c0-1.332-1.122-2.426-2.5-2.426-1.373 0-2.5 1.094-2.5 2.426V33.93zM33 33.93c0 1.336 1.127 2.43 2.5 2.43 1.378 0 2.5-1.094 2.5-2.43v-8.324c0-1.332-1.122-2.426-2.5-2.426-1.373 0-2.5 1.094-2.5 2.426V33.93z"/><path fill="#ffcc80" d="M37.99,34.93c0,1.336,1.127,2.43,2.5,2.43c1.378,0,2.5-1.094,2.5-2.43v-8.324c0-1.332-1.122-2.426-2.5-2.426c-1.373,0-2.5,1.094-2.5,2.426V34.93z"/><path fill="#ffebee" d="M24,15.578c0.01-0.781,0.685-1.408,1.516-1.398c0.827,0.008,1.492,0.65,1.484,1.428C26.988,16.391,23.991,16.359,24,15.578"/><path fill="#f2a25a" d="M20.976,29.463C21.963,28.654,23,28,23,28v6.18L20.976,29.463z"/></svg>
\ No newline at end of file
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 128 128" width="256" height="256"><path fill="#f7f7fb" d="M43.5,28L16.9,45.4c-5,2.3-2.3,9.1,0,14.1l17.9,17.9l62.2,23l17-47L43.5,28 M35.3,59.5 c-3.9-1.4-5.9-5.7-4.5-9.6c1.4-3.9,5.7-5.9,9.6-4.5s5.9,5.7,4.5,9.6C43.5,58.9,39.2,61,35.3,59.5"/><path fill="#dfdfe3" d="M30.353,52.448c0-0.846,0.144-1.706,0.446-2.548c1.098-3.057,3.977-4.946,7.048-4.946 c0.847,0,1.709,0.144,2.552,0.446l0,0c3.065,1.1,4.957,3.993,4.946,7.074C45.349,53.317,45.206,54.17,44.9,55l0,0 c-1.091,3.04-3.945,4.986-6.997,4.986c-0.864,0-1.743-0.156-2.603-0.486C32.242,58.402,30.352,55.521,30.353,52.448 M43.5,28 L16.9,45.4c-2.078,0.956-2.826,2.689-2.825,4.746c0,2.894,1.481,6.431,2.825,9.354l17.9,17.9l21.635,8H102.4l11.6-32L43.5,28"/><path fill="#454b54" d="M97,103.5c-0.4,0-0.7-0.1-1-0.2l-62.2-23c-0.4-0.2-0.8-0.4-1.1-0.7L14.8,61.7 c-0.6-0.6-0.9-1.3-0.9-2.1V45.4c0-1,0.5-2,1.4-2.5l26.6-17.5c0.8-0.5,1.8-0.6,2.7-0.3l70.5,25.5c0.7,0.3,1.4,0.8,1.7,1.5 s0.4,1.5,0.1,2.3l-17,47c-0.3,0.8-0.8,1.4-1.6,1.7C97.9,103.4,97.4,103.5,97,103.5z M36.5,74.9l58.7,21.7l15-41.4l-66.3-24L19.9,47 v11.3L36.5,74.9z"/><path fill="#6ec7b0" d="M34.8,27.5L16.9,45.4c-3.9,3.9-3.9,10.2,0,14.1l17.9,17.9h75v-50h-75V27.5z M37.8,60 c-4.1,0-7.5-3.4-7.5-7.5s3.4-7.5,7.5-7.5s7.5,3.4,7.5,7.5S42,60,37.8,60z"/><path fill="#454b54" d="M109.8,80.5h-75c-0.8,0-1.6-0.3-2.1-0.9L14.8,61.7C12.3,59.2,11,56,11,52.5s1.4-6.7,3.8-9.2 l17.9-17.9c0.6-0.6,1.3-0.9,2.1-0.9h75c1.7,0,3,1.3,3,3v50C112.8,79.2,111.5,80.5,109.8,80.5z M36.1,74.5h70.8v-44H36.1L19,47.5 c-1.3,1.3-2,3.1-2,5s0.7,3.6,2,4.9L36.1,74.5z"/><path fill="#fff" d="M89.8 50.5h-25c-1.7 0-3-1.3-3-3s1.3-3 3-3h25c1.7 0 3 1.3 3 3S91.5 50.5 89.8 50.5zM89.8 60.5h-25c-1.7 0-3-1.3-3-3s1.3-3 3-3h25c1.7 0 3 1.3 3 3S91.5 60.5 89.8 60.5z"/><path fill="#454b54" d="M7.8,85.5c-0.8,0-1.5-0.3-2.1-0.9c-1.2-1.2-1.2-3.1,0-4.2l9.1-9.1c1.2-1.2,3.1-1.2,4.2,0 c1.2,1.2,1.2,3.1,0,4.2l-9.1,9.1C9.4,85.2,8.6,85.5,7.8,85.5z"/></svg>
\ No newline at end of file
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" width="96px" height="96px"><linearGradient id="sjY3Z3RjS0RqXT5Ds3orNa" x1="35" x2="35" y1="39.75" y2="46.768" gradientUnits="userSpaceOnUse" spreadMethod="reflect"><stop offset="0" stop-color="#6dc7ff"/><stop offset=".216" stop-color="#87c1ff"/><stop offset="1" stop-color="#e6abff"/></linearGradient><path fill="url(#sjY3Z3RjS0RqXT5Ds3orNa)" d="M34,46h-2v-1c0-2.757,2.243-5,5-5h1v2h-1c-1.654,0-3,1.346-3,3V46z"/><linearGradient id="sjY3Z3RjS0RqXT5Ds3orNb" x1="32" x2="32" y1="4" y2="60.514" gradientUnits="userSpaceOnUse" spreadMethod="reflect"><stop offset="0" stop-color="#1a6dff"/><stop offset="1" stop-color="#c822ff"/></linearGradient><path fill="url(#sjY3Z3RjS0RqXT5Ds3orNb)" d="M58,32C58,17.664,46.336,6,32,6S6,17.664,6,32s11.664,26,26,26c3.539,0,6.915-0.713,9.993-2 H42v-0.003C51.387,52.071,58,42.794,58,32z M23,31v1h2v-1v-5.5v-4c0-0.827,0.673-1.5,1.5-1.5s1.5,0.673,1.5,1.5V27v5h2v-5v-5.5V18 c0-1.103,0.897-2,2-2s2,0.897,2,2v4v9v1h2v-1v-9c0-1.103,0.897-2,2-2s2,0.897,2,2v15.755c0,0.801,0.455,1.499,1.187,1.823 c0.731,0.324,1.555,0.19,2.147-0.348l3.252-2.958c0.78-0.779,2.049-0.779,2.828,0C49.792,36.65,50,37.152,50,37.687 c0,0.534-0.208,1.036-0.586,1.414l-6.262,6.262C41.451,47.063,39.19,48,36.785,48H25c-2.757,0-5-2.243-5-5V25.5 c0-0.827,0.673-1.5,1.5-1.5s1.5,0.673,1.5,1.5V31z M30,52v3.91c-0.675-0.056-1.342-0.139-2-0.25V52h-2v3.24 c-1.387-0.358-2.722-0.843-4-1.432v-4.494C22.911,49.75,23.925,50,25,50h11.785c1.106,0,2.186-0.162,3.215-0.475v5.099 c-1.287,0.456-2.624,0.805-4,1.036V52h-2v3.91C33.34,55.965,32.674,56,32,56v-4H30z M42,53.809V48.69 c0.932-0.503,1.796-1.143,2.566-1.913l6.262-6.262C51.584,39.759,52,38.755,52,37.687c0-1.069-0.416-2.073-1.172-2.829 c-0.755-0.755-1.76-1.171-2.828-1.171s-2.073,0.416-2.794,1.138L42,37.755V22c0-2.206-1.794-4-4-4c-0.732,0-1.409,0.212-2,0.556V18 c0-2.206-1.794-4-4-4s-4,1.794-4,4v0.351C27.544,18.133,27.039,18,26.5,18c-1.93,0-3.5,1.57-3.5,3.5v0.851 C22.544,22.133,22.039,22,21.5,22c-1.93,0-3.5,1.57-3.5,3.5V43c0,1.902,0.765,3.627,2,4.89v4.881C12.834,48.615,8,40.864,8,32 C8,18.767,18.767,8,32,8s24,10.767,24,24C56,41.665,50.253,50.009,42,53.809z"/></svg>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="80pt" height="80pt" viewBox="0 0 80 80" version="1.1">
<defs>
<linearGradient id="linear0" gradientUnits="userSpaceOnUse" x1="24.4999" y1="4.1666" x2="24.4999" y2="59.312" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#1A6DFF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#C822FF;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linear1" gradientUnits="userSpaceOnUse" x1="12.5009" y1="4.1666" x2="12.5009" y2="59.3119" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#1A6DFF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#C822FF;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linear2" gradientUnits="userSpaceOnUse" x1="39.4999" y1="4.1667" x2="39.4999" y2="59.3119" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#1A6DFF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#C822FF;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linear3" gradientUnits="userSpaceOnUse" x1="51.4989" y1="4.1667" x2="51.4989" y2="59.3119" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#1A6DFF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#C822FF;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linear4" gradientUnits="userSpaceOnUse" x1="32" y1="4.1667" x2="32" y2="59.3119" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#1A6DFF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#C822FF;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linear5" gradientUnits="userSpaceOnUse" x1="32" y1="27.8333" x2="32" y2="35.8333" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#6DC7FF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#E6ABFF;stop-opacity:1;"/>
</linearGradient>
</defs>
<g id="surface1">
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear0);" d="M 16.25 20 C 16.25 17.933594 17.929688 16.25 20 16.25 L 32.5 16.25 L 32.5 21.300781 C 32.5 22.171875 32.953125 22.957031 33.714844 23.402344 C 34.109375 23.632813 34.550781 23.746094 34.992188 23.746094 C 35.421875 23.746094 35.847656 23.640625 36.230469 23.425781 L 45.625 18.160156 C 46.796875 17.5 47.5 16.320313 47.5 15 C 47.5 13.679688 46.796875 12.5 45.625 11.839844 L 36.230469 6.574219 C 35.449219 6.136719 34.484375 6.144531 33.714844 6.597656 C 32.953125 7.042969 32.5 7.828125 32.5 8.699219 L 32.5 13.75 L 20 13.75 C 16.554688 13.75 13.75 16.554688 13.75 20 L 13.75 25 L 16.25 25 Z M 35.007813 8.753906 L 44.402344 14.019531 C 44.941406 14.324219 45 14.804688 45 15 C 45 15.195313 44.941406 15.675781 44.402344 15.980469 L 35 21.300781 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear1);" d="M 16.25 60 L 16.25 47.5 L 21.300781 47.5 C 22.171875 47.5 22.957031 47.046875 23.402344 46.285156 C 23.855469 45.511719 23.863281 44.546875 23.425781 43.765625 L 18.160156 34.375 C 17.5 33.203125 16.320313 32.5 15 32.5 C 13.679688 32.5 12.5 33.203125 11.839844 34.375 L 6.574219 43.769531 C 6.136719 44.546875 6.144531 45.515625 6.597656 46.285156 C 7.042969 47.046875 7.828125 47.5 8.695313 47.5 L 13.75 47.5 L 13.75 60 C 13.75 63.445313 16.554688 66.25 20 66.25 L 25 66.25 L 25 63.75 L 20 63.75 C 17.929688 63.75 16.25 62.066406 16.25 60 Z M 14.019531 35.597656 C 14.324219 35.058594 14.804688 35 15 35 C 15.195313 35 15.675781 35.058594 15.980469 35.597656 L 21.300781 45 L 8.753906 44.992188 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear2);" d="M 63.75 60 C 63.75 62.066406 62.066406 63.75 60 63.75 L 47.5 63.75 L 47.5 58.699219 C 47.5 57.828125 47.046875 57.042969 46.285156 56.597656 C 45.511719 56.144531 44.546875 56.136719 43.765625 56.574219 L 34.375 61.839844 C 33.199219 62.5 32.5 63.679688 32.5 65 C 32.5 66.320313 33.203125 67.5 34.375 68.160156 L 43.769531 73.425781 C 44.152344 73.640625 44.578125 73.746094 45.007813 73.746094 C 45.449219 73.746094 45.890625 73.632813 46.285156 73.402344 C 47.046875 72.957031 47.5 72.171875 47.5 71.300781 L 47.5 66.25 L 60 66.25 C 63.445313 66.25 66.25 63.445313 66.25 60 L 66.25 55 L 63.75 55 Z M 44.992188 71.246094 L 35.597656 65.980469 C 35.058594 65.675781 35 65.195313 35 65 C 35 64.804688 35.058594 64.324219 35.597656 64.019531 L 45 58.699219 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear3);" d="M 73.402344 33.714844 C 72.957031 32.953125 72.171875 32.5 71.300781 32.5 L 66.25 32.5 L 66.25 20 C 66.25 16.554688 63.445313 13.75 60 13.75 L 55 13.75 L 55 16.25 L 60 16.25 C 62.066406 16.25 63.75 17.933594 63.75 20 L 63.75 32.5 L 58.695313 32.5 C 57.828125 32.5 57.042969 32.953125 56.597656 33.714844 C 56.144531 34.484375 56.136719 35.453125 56.574219 36.234375 L 61.839844 45.625 C 62.5 46.796875 63.679688 47.5 65 47.5 C 66.320313 47.5 67.5 46.796875 68.160156 45.625 L 73.425781 36.230469 C 73.863281 35.453125 73.855469 34.488281 73.402344 33.714844 Z M 65.980469 44.402344 C 65.675781 44.941406 65.195313 45 65 45 C 64.804688 45 64.324219 44.941406 64.019531 44.402344 L 58.695313 35 L 71.246094 35.007813 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear4);" d="M 48.75 35 C 48.75 32.929688 47.070313 31.25 45 31.25 L 35 31.25 C 32.929688 31.25 31.25 32.929688 31.25 35 L 31.25 45 C 31.25 47.070313 32.929688 48.75 35 48.75 L 45 48.75 C 47.070313 48.75 48.75 47.070313 48.75 45 Z M 46.25 45 C 46.25 45.691406 45.691406 46.25 45 46.25 L 35 46.25 C 34.308594 46.25 33.75 45.691406 33.75 45 L 33.75 35 C 33.75 34.308594 34.308594 33.75 35 33.75 L 45 33.75 C 45.691406 33.75 46.25 34.308594 46.25 35 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear5);" d="M 43.75 42.5 C 43.75 43.191406 43.191406 43.75 42.5 43.75 L 37.5 43.75 C 36.808594 43.75 36.25 43.191406 36.25 42.5 L 36.25 37.5 C 36.25 36.808594 36.808594 36.25 37.5 36.25 L 42.5 36.25 C 43.191406 36.25 43.75 36.808594 43.75 37.5 Z "/>
</g>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" width="96px" height="96px"><linearGradient id="okd7dFeSUq9~c8_MiZYJSa" x1="32" x2="32" y1="7.5" y2="56.707" gradientUnits="userSpaceOnUse" spreadMethod="reflect"><stop offset="0" stop-color="#1a6dff"/><stop offset="1" stop-color="#c822ff"/></linearGradient><path fill="url(#okd7dFeSUq9~c8_MiZYJSa)" d="M57.121,17.707l-8.828-8.828C47.727,8.312,46.973,8,46.172,8H23c-1.654,0-3,1.346-3,3v10.051 c-5.046,0.503-9,4.773-9,9.949c-2.206,0-4,1.794-4,4s1.794,4,4,4h0.461c0.201,0.639,0.467,1.25,0.787,1.827 C8.365,43.628,6,48.163,6,53c0,1.654,1.346,3,3,3h22h5h19c1.654,0,3-1.346,3-3V19.829C58,19.027,57.687,18.273,57.121,17.707z M48,11.414L54.586,18H49c-0.552,0-1-0.449-1-1V11.414z M13,31c0-4.411,3.589-8,8-8s8,3.589,8,8v5c0,4.411-3.589,8-8,8s-8-3.588-8-8 V31z M11,37c-1.103,0-2-0.897-2-2s0.897-2,2-2v3c0,0.337,0.018,0.671,0.051,1H11z M21,46c3.047,0,5.776-1.374,7.612-3.531 c0.542,0.393,1.052,0.821,1.521,1.287C27.845,46.451,24.551,48,21,48s-6.845-1.549-9.133-4.243c0.47-0.466,0.979-0.894,1.521-1.287 C15.224,44.626,17.953,46,21,46z M31,54h-1v-2h-2v2H14v-2h-2v2H9c-0.552,0-1-0.449-1-1c0-2.814,0.926-5.51,2.551-7.715 C13.21,48.281,16.961,50,21,50s7.79-1.719,10.45-4.715C33.074,47.49,34,50.186,34,53v1H31z M55,54H36v-1 c0-4.837-2.364-9.372-6.248-12.173c0.32-0.577,0.585-1.188,0.787-1.827H31c2.206,0,4-1.794,4-4s-1.794-4-4-4 c0-5.177-3.954-9.446-9-9.949V11c0-0.551,0.448-1,1-1h23v7c0,1.654,1.346,3,3,3h7v33C56,53.551,55.552,54,55,54z M31,36v-3 c1.103,0,2,0.897,2,2s-0.897,2-2,2h-0.051C30.982,36.671,31,36.338,31,36z"/><linearGradient id="okd7dFeSUq9~c8_MiZYJSb" x1="41" x2="41" y1="7.5" y2="56.707" gradientUnits="userSpaceOnUse" spreadMethod="reflect"><stop offset="0" stop-color="#1a6dff"/><stop offset="1" stop-color="#c822ff"/></linearGradient><path fill="url(#okd7dFeSUq9~c8_MiZYJSb)" d="M32 24H50V26H32z"/><linearGradient id="okd7dFeSUq9~c8_MiZYJSc" x1="43" x2="43" y1="7.5" y2="56.707" gradientUnits="userSpaceOnUse" spreadMethod="reflect"><stop offset="0" stop-color="#1a6dff"/><stop offset="1" stop-color="#c822ff"/></linearGradient><path fill="url(#okd7dFeSUq9~c8_MiZYJSc)" d="M36 28H50V30H36z"/><linearGradient id="okd7dFeSUq9~c8_MiZYJSd" x1="44" x2="44" y1="7.5" y2="56.707" gradientUnits="userSpaceOnUse" spreadMethod="reflect"><stop offset="0" stop-color="#1a6dff"/><stop offset="1" stop-color="#c822ff"/></linearGradient><path fill="url(#okd7dFeSUq9~c8_MiZYJSd)" d="M38 32H50V34H38z"/><linearGradient id="okd7dFeSUq9~c8_MiZYJSe" x1="44" x2="44" y1="7.5" y2="56.707" gradientUnits="userSpaceOnUse" spreadMethod="reflect"><stop offset="0" stop-color="#1a6dff"/><stop offset="1" stop-color="#c822ff"/></linearGradient><path fill="url(#okd7dFeSUq9~c8_MiZYJSe)" d="M48.021,36H38v2l10-0.021L48.021,44H38v2h10.021C49.112,46,50,45.112,50,44.021v-6.042 C50,36.888,49.112,36,48.021,36z"/><linearGradient id="okd7dFeSUq9~c8_MiZYJSf" x1="21" x2="21" y1="37.063" y2="42.384" gradientUnits="userSpaceOnUse" spreadMethod="reflect"><stop offset="0" stop-color="#6dc7ff"/><stop offset="1" stop-color="#e6abff"/></linearGradient><path fill="url(#okd7dFeSUq9~c8_MiZYJSf)" d="M21,42c2.209,0,4-2,4-4h-8C17,40,18.791,42,21,42z"/><linearGradient id="okd7dFeSUq9~c8_MiZYJSg" x1="26.649" x2="26.649" y1="11.667" y2="17.099" gradientUnits="userSpaceOnUse" spreadMethod="reflect"><stop offset="0" stop-color="#6dc7ff"/><stop offset="1" stop-color="#e6abff"/></linearGradient><path fill="url(#okd7dFeSUq9~c8_MiZYJSg)" d="M24,16.783V13c0-0.552,0.448-1,1-1h3.8c0.443,0,0.664,0.535,0.351,0.848l-4.291,4.291 C24.543,17.457,24,17.232,24,16.783z"/></svg>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="80pt" height="80pt" viewBox="0 0 80 80" version="1.1">
<defs>
<linearGradient id="linear0" gradientUnits="userSpaceOnUse" x1="32" y1="11.875" x2="32" y2="38.7526" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#6DC7FF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#E6ABFF;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linear1" gradientUnits="userSpaceOnUse" x1="48" y1="11.375" x2="48" y2="38.2526" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#6DC7FF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#E6ABFF;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linear2" gradientUnits="userSpaceOnUse" x1="48" y1="11.875" x2="48" y2="38.7526" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#6DC7FF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#E6ABFF;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linear3" gradientUnits="userSpaceOnUse" x1="16" y1="9.75" x2="16" y2="56.2607" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#1A6DFF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#C822FF;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linear4" gradientUnits="userSpaceOnUse" x1="16" y1="9.75" x2="16" y2="56.2607" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#1A6DFF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#C822FF;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linear5" gradientUnits="userSpaceOnUse" x1="32" y1="9.75" x2="32" y2="56.2607" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#1A6DFF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#C822FF;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linear6" gradientUnits="userSpaceOnUse" x1="16" y1="9.75" x2="16" y2="56.2607" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#1A6DFF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#C822FF;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linear7" gradientUnits="userSpaceOnUse" x1="32" y1="9.75" x2="32" y2="56.2607" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#1A6DFF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#C822FF;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linear8" gradientUnits="userSpaceOnUse" x1="48" y1="9.75" x2="48" y2="56.2607" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#1A6DFF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#C822FF;stop-opacity:1;"/>
</linearGradient>
</defs>
<g id="surface1">
<path style=" stroke:none;fill-rule:evenodd;fill:url(#linear0);" d="M 33.75 15 L 46.25 15 L 46.25 27.5 L 33.75 27.5 Z "/>
<path style=" stroke:none;fill-rule:evenodd;fill:url(#linear1);" d="M 53.75 35 L 66.25 35 L 66.25 47.5 L 53.75 47.5 Z "/>
<path style=" stroke:none;fill-rule:evenodd;fill:url(#linear2);" d="M 53.75 15 L 66.25 15 L 66.25 27.5 L 53.75 27.5 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear3);" d="M 25 30 L 15 30 C 12.933594 30 11.25 28.316406 11.25 26.25 L 11.25 16.25 C 11.25 14.183594 12.933594 12.5 15 12.5 L 25 12.5 C 27.066406 12.5 28.75 14.183594 28.75 16.25 L 28.75 26.25 C 28.75 28.316406 27.066406 30 25 30 Z M 15 15 C 14.308594 15 13.75 15.5625 13.75 16.25 L 13.75 26.25 C 13.75 26.9375 14.308594 27.5 15 27.5 L 25 27.5 C 25.691406 27.5 26.25 26.9375 26.25 26.25 L 26.25 16.25 C 26.25 15.5625 25.691406 15 25 15 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear4);" d="M 25 50 L 15 50 C 12.933594 50 11.25 48.316406 11.25 46.25 L 11.25 36.25 C 11.25 34.183594 12.933594 32.5 15 32.5 L 25 32.5 C 27.066406 32.5 28.75 34.183594 28.75 36.25 L 28.75 46.25 C 28.75 48.316406 27.066406 50 25 50 Z M 15 35 C 14.308594 35 13.75 35.5625 13.75 36.25 L 13.75 46.25 C 13.75 46.9375 14.308594 47.5 15 47.5 L 25 47.5 C 25.691406 47.5 26.25 46.9375 26.25 46.25 L 26.25 36.25 C 26.25 35.5625 25.691406 35 25 35 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear5);" d="M 45 50 L 35 50 C 32.933594 50 31.25 48.316406 31.25 46.25 L 31.25 36.25 C 31.25 34.183594 32.933594 32.5 35 32.5 L 45 32.5 C 47.066406 32.5 48.75 34.183594 48.75 36.25 L 48.75 46.25 C 48.75 48.316406 47.066406 50 45 50 Z M 35 35 C 34.308594 35 33.75 35.5625 33.75 36.25 L 33.75 46.25 C 33.75 46.9375 34.308594 47.5 35 47.5 L 45 47.5 C 45.691406 47.5 46.25 46.9375 46.25 46.25 L 46.25 36.25 C 46.25 35.5625 45.691406 35 45 35 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear6);" d="M 25 70 L 15 70 C 12.933594 70 11.25 68.316406 11.25 66.25 L 11.25 56.25 C 11.25 54.183594 12.933594 52.5 15 52.5 L 25 52.5 C 27.066406 52.5 28.75 54.183594 28.75 56.25 L 28.75 66.25 C 28.75 68.316406 27.066406 70 25 70 Z M 15 55 C 14.308594 55 13.75 55.5625 13.75 56.25 L 13.75 66.25 C 13.75 66.9375 14.308594 67.5 15 67.5 L 25 67.5 C 25.691406 67.5 26.25 66.9375 26.25 66.25 L 26.25 56.25 C 26.25 55.5625 25.691406 55 25 55 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear7);" d="M 45 70 L 35 70 C 32.933594 70 31.25 68.316406 31.25 66.25 L 31.25 56.25 C 31.25 54.183594 32.933594 52.5 35 52.5 L 45 52.5 C 47.066406 52.5 48.75 54.183594 48.75 56.25 L 48.75 66.25 C 48.75 68.316406 47.066406 70 45 70 Z M 35 55 C 34.308594 55 33.75 55.5625 33.75 56.25 L 33.75 66.25 C 33.75 66.9375 34.308594 67.5 35 67.5 L 45 67.5 C 45.691406 67.5 46.25 66.9375 46.25 66.25 L 46.25 56.25 C 46.25 55.5625 45.691406 55 45 55 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear8);" d="M 65 70 L 55 70 C 52.933594 70 51.25 68.316406 51.25 66.25 L 51.25 56.25 C 51.25 54.183594 52.933594 52.5 55 52.5 L 65 52.5 C 67.066406 52.5 68.75 54.183594 68.75 56.25 L 68.75 66.25 C 68.75 68.316406 67.066406 70 65 70 Z M 55 55 C 54.308594 55 53.75 55.5625 53.75 56.25 L 53.75 66.25 C 53.75 66.9375 54.308594 67.5 55 67.5 L 65 67.5 C 65.691406 67.5 66.25 66.9375 66.25 66.25 L 66.25 56.25 C 66.25 55.5625 65.691406 55 65 55 Z "/>
</g>
</svg>
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="80pt" height="80pt" viewBox="0 0 80 80" version="1.1">
<defs>
<linearGradient id="linear0" gradientUnits="userSpaceOnUse" x1="32" y1="807.0833" x2="32" y2="772.7422" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,-1.25,0,1027.5)">
<stop offset="0" style="stop-color:#6DC7FF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#E6ABFF;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linear1" gradientUnits="userSpaceOnUse" x1="32" y1="4.75" x2="32" y2="60.5" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#1A6DFF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#C822FF;stop-opacity:1;"/>
</linearGradient>
</defs>
<g id="surface1">
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear0);" d="M 40 61.25 C 28.28125 61.25 18.75 51.71875 18.75 40 C 18.75 28.28125 28.28125 18.75 40 18.75 C 51.71875 18.75 61.25 28.28125 61.25 40 C 61.25 51.71875 51.71875 61.25 40 61.25 Z M 40 21.25 C 29.660156 21.25 21.25 29.660156 21.25 40 C 21.25 50.339844 29.660156 58.75 40 58.75 C 50.339844 58.75 58.75 50.339844 58.75 40 C 58.75 29.660156 50.339844 21.25 40 21.25 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear1);" d="M 32.007813 32.5 L 30.492188 32.5 C 29.21875 32.5 28.148438 33.457031 28.007813 34.71875 L 26.25 47.5 L 28.769531 47.5 L 29.289063 43.75 L 33.214844 43.75 L 33.734375 47.5 L 36.25 47.5 L 34.488281 34.71875 C 34.351563 33.457031 33.28125 32.5 32.007813 32.5 Z M 29.632813 41.25 L 30.492188 35 L 32.007813 35 L 32.867188 41.25 Z M 73.695313 38.027344 C 73.5625 35.980469 72.058594 34.324219 70.042969 34 C 68.898438 33.804688 67.535156 33.582031 66.410156 33.402344 L 66.144531 33.359375 C 65.441406 33.246094 64.871094 32.75 64.65625 32.070313 C 64.242188 30.75 63.703125 29.441406 63.050781 28.164063 C 62.722656 27.535156 62.773438 26.785156 63.199219 26.199219 C 63.878906 25.238281 64.757813 24.019531 65.488281 23.007813 C 66.691406 21.34375 66.582031 19.101563 65.214844 17.546875 C 64.324219 16.558594 63.386719 15.628906 62.433594 14.777344 C 60.890625 13.421875 58.65625 13.316406 57 14.511719 C 55.980469 15.238281 54.753906 16.121094 53.792969 16.816406 C 53.214844 17.234375 52.460938 17.289063 51.828125 16.957031 C 50.601563 16.316406 49.292969 15.769531 47.929688 15.332031 C 47.253906 15.121094 46.761719 14.550781 46.648438 13.839844 C 46.449219 12.675781 46.207031 11.195313 46.011719 9.964844 C 45.679688 7.9375 44.019531 6.425781 41.953125 6.296875 C 40.625 6.226563 39.304688 6.230469 38.027344 6.304688 C 35.984375 6.4375 34.328125 7.941406 34 9.957031 C 33.808594 11.101563 33.585938 12.464844 33.402344 13.589844 L 33.359375 13.851563 C 33.246094 14.558594 32.753906 15.128906 32.074219 15.34375 C 30.753906 15.753906 29.441406 16.296875 28.167969 16.949219 C 27.535156 17.28125 26.789063 17.222656 26.203125 16.800781 C 25.238281 16.121094 24.019531 15.238281 23.011719 14.511719 C 21.34375 13.308594 19.105469 13.417969 17.546875 14.785156 C 16.558594 15.675781 15.632813 16.609375 14.78125 17.566406 C 13.425781 19.105469 13.320313 21.34375 14.515625 22.996094 C 15.242188 24.015625 16.125 25.242188 16.820313 26.203125 C 17.238281 26.785156 17.292969 27.539063 16.960938 28.171875 C 16.320313 29.394531 15.773438 30.703125 15.335938 32.066406 C 15.121094 32.746094 14.554688 33.234375 13.84375 33.351563 C 12.679688 33.550781 11.195313 33.789063 9.964844 33.988281 C 7.9375 34.316406 6.429688 35.976563 6.296875 38.046875 C 6.230469 39.375 6.230469 40.691406 6.304688 41.96875 C 6.4375 44.015625 7.941406 45.671875 9.957031 45.996094 C 11.101563 46.191406 12.464844 46.414063 13.589844 46.59375 L 13.855469 46.636719 C 14.558594 46.75 15.128906 47.246094 15.34375 47.925781 C 15.757813 49.246094 16.296875 50.554688 16.949219 51.832031 C 17.277344 52.460938 17.226563 53.210938 16.800781 53.796875 C 16.121094 54.757813 15.242188 55.976563 14.511719 56.988281 C 13.308594 58.652344 13.417969 60.894531 14.785156 62.449219 C 15.675781 63.4375 16.613281 64.367188 17.566406 65.21875 C 19.109375 66.570313 21.34375 66.675781 23 65.484375 C 24.019531 64.757813 25.246094 63.875 26.207031 63.179688 C 26.785156 62.761719 27.539063 62.707031 28.171875 63.039063 C 29.398438 63.679688 30.707031 64.226563 32.070313 64.664063 C 32.746094 64.875 33.238281 65.445313 33.351563 66.15625 C 33.550781 67.320313 33.792969 68.800781 33.988281 70.03125 C 34.320313 72.0625 35.980469 73.570313 38.046875 73.703125 C 38.675781 73.734375 39.304688 73.75 39.929688 73.75 C 40.617188 73.75 41.300781 73.730469 41.972656 73.691406 C 44.015625 73.558594 45.671875 72.054688 46 70.039063 C 46.191406 68.894531 46.414063 67.53125 46.597656 66.40625 L 46.640625 66.144531 C 46.753906 65.4375 47.246094 64.867188 47.925781 64.652344 C 49.246094 64.242188 50.558594 63.703125 51.832031 63.046875 C 52.464844 62.71875 53.210938 62.773438 53.796875 63.195313 C 54.761719 63.875 55.980469 64.757813 56.988281 65.484375 C 58.65625 66.6875 60.894531 66.578125 62.453125 65.210938 C 63.441406 64.320313 64.367188 63.386719 65.21875 62.429688 C 66.574219 60.890625 66.679688 58.652344 65.484375 57 C 64.757813 55.980469 63.875 54.753906 63.179688 53.792969 C 62.761719 53.210938 62.707031 52.457031 63.039063 51.828125 C 63.679688 50.601563 64.226563 49.292969 64.664063 47.929688 C 64.878906 47.25 65.445313 46.761719 66.15625 46.644531 C 67.320313 46.445313 68.804688 46.207031 70.035156 46.007813 C 72.0625 45.679688 73.570313 44.019531 73.703125 41.953125 C 73.769531 40.621094 73.769531 39.304688 73.695313 38.027344 Z M 71.207031 41.8125 C 71.152344 42.691406 70.503906 43.402344 69.636719 43.542969 C 68.398438 43.742188 66.90625 43.984375 65.75 44.179688 C 64.109375 44.449219 62.78125 45.597656 62.285156 47.175781 C 61.890625 48.394531 61.402344 49.570313 60.828125 50.671875 C 60.054688 52.148438 60.179688 53.90625 61.15625 55.257813 C 61.847656 56.214844 62.726563 57.433594 63.453125 58.457031 C 63.96875 59.167969 63.921875 60.121094 63.347656 60.773438 C 62.5625 61.65625 61.699219 62.527344 60.789063 63.347656 C 60.128906 63.929688 59.167969 63.972656 58.453125 63.460938 C 57.4375 62.726563 56.210938 61.839844 55.253906 61.164063 C 53.902344 60.191406 52.148438 60.066406 50.683594 60.828125 C 49.542969 61.414063 48.363281 61.898438 47.179688 62.269531 C 45.589844 62.769531 44.4375 64.101563 44.171875 65.746094 L 44.128906 66.007813 C 43.949219 67.128906 43.726563 68.484375 43.535156 69.632813 C 43.394531 70.496094 42.683594 71.140625 41.820313 71.195313 C 40.640625 71.265625 39.414063 71.269531 38.191406 71.207031 C 37.3125 71.148438 36.601563 70.503906 36.460938 69.632813 C 36.261719 68.398438 36.019531 66.902344 35.820313 65.746094 C 35.554688 64.105469 34.40625 62.777344 32.828125 62.28125 C 31.609375 61.890625 30.429688 61.398438 29.332031 60.824219 C 28.6875 60.488281 27.992188 60.324219 27.300781 60.324219 C 26.402344 60.324219 25.507813 60.601563 24.746094 61.152344 C 23.789063 61.84375 22.566406 62.722656 21.546875 63.453125 C 20.835938 63.964844 19.878906 63.917969 19.226563 63.34375 C 18.34375 62.558594 17.476563 61.695313 16.65625 60.785156 C 16.074219 60.125 16.027344 59.164063 16.542969 58.453125 C 17.277344 57.433594 18.160156 56.207031 18.839844 55.25 C 19.8125 53.902344 19.9375 52.148438 19.171875 50.683594 C 18.585938 49.542969 18.101563 48.363281 17.734375 47.179688 C 17.234375 45.585938 15.902344 44.433594 14.257813 44.167969 L 13.992188 44.125 C 12.875 43.945313 11.515625 43.726563 10.371094 43.53125 C 9.503906 43.390625 8.859375 42.683594 8.804688 41.816406 C 8.738281 40.636719 8.734375 39.410156 8.796875 38.1875 C 8.851563 37.308594 9.5 36.597656 10.367188 36.457031 C 11.605469 36.257813 13.097656 36.015625 14.257813 35.820313 C 15.898438 35.550781 17.226563 34.402344 17.71875 32.824219 C 18.113281 31.605469 18.605469 30.429688 19.179688 29.328125 C 19.953125 27.851563 19.824219 26.09375 18.851563 24.742188 C 18.160156 23.785156 17.277344 22.566406 16.550781 21.542969 C 16.039063 20.832031 16.082031 19.878906 16.65625 19.226563 C 17.441406 18.34375 18.308594 17.472656 19.214844 16.652344 C 19.878906 16.070313 20.835938 16.023438 21.550781 16.539063 C 22.566406 17.273438 23.792969 18.160156 24.753906 18.835938 C 26.101563 19.808594 27.855469 19.9375 29.320313 19.171875 C 30.460938 18.585938 31.640625 18.101563 32.824219 17.730469 C 34.414063 17.230469 35.566406 15.898438 35.832031 14.253906 L 35.875 13.992188 C 36.058594 12.871094 36.277344 11.515625 36.472656 10.367188 C 36.609375 9.503906 37.320313 8.859375 38.1875 8.804688 C 39.363281 8.734375 40.589844 8.734375 41.816406 8.792969 C 42.691406 8.851563 43.40625 9.496094 43.546875 10.367188 C 43.742188 11.601563 43.984375 13.097656 44.183594 14.253906 C 44.449219 15.894531 45.601563 17.222656 47.175781 17.71875 C 48.398438 18.109375 49.574219 18.601563 50.671875 19.175781 C 52.148438 19.949219 53.90625 19.820313 55.261719 18.847656 C 56.214844 18.15625 57.4375 17.277344 58.460938 16.546875 C 59.171875 16.035156 60.125 16.082031 60.777344 16.65625 C 61.660156 17.441406 62.527344 18.304688 63.351563 19.214844 C 63.929688 19.875 63.976563 20.835938 63.460938 21.546875 C 62.730469 22.566406 61.84375 23.792969 61.167969 24.75 C 60.191406 26.097656 60.066406 27.851563 60.832031 29.316406 C 61.417969 30.457031 61.902344 31.636719 62.273438 32.820313 C 62.769531 34.414063 64.105469 35.566406 65.746094 35.832031 L 66.011719 35.875 C 67.128906 36.054688 68.488281 36.273438 69.636719 36.46875 C 70.5 36.609375 71.144531 37.316406 71.199219 38.183594 C 71.265625 39.363281 71.269531 40.589844 71.207031 41.8125 Z M 45 32.5 L 38.75 32.5 L 38.75 47.5 L 41.25 47.5 L 41.25 42.5 L 45 42.5 C 47.070313 42.5 48.75 40.820313 48.75 38.75 L 48.75 36.25 C 48.75 34.179688 47.070313 32.5 45 32.5 Z M 46.25 38.75 C 46.25 39.4375 45.6875 40 45 40 L 41.25 40 L 41.25 35 L 45 35 C 45.6875 35 46.25 35.5625 46.25 36.25 Z M 51.25 47.5 L 53.75 47.5 L 53.75 32.5 L 51.25 32.5 Z "/>
</g>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 128 128" width="64px" height="64px"><path fill="#FFF" d="M51.8,90.9L51.8,90.9C54.5,87.3,56,82.8,56,78c0-12.2-9.8-22-22-22s-22,9.8-22,22c0,4.8,1.5,9.3,4.2,12.9l0,0h0c0.1,0.2,0.2,0.3,0.3,0.5L34,115l17.5-23.7C51.6,91.2,51.7,91.1,51.8,90.9L51.8,90.9z"/><path fill="#454B54" d="M34,118L34,118c-1,0-1.8-0.5-2.4-1.2L14.1,93.1c-0.1-0.1-0.2-0.3-0.4-0.5C10.6,88.4,9,83.3,9,78c0-13.8,11.2-25,25-25s25,11.2,25,25c0,5.3-1.6,10.3-4.7,14.5c0,0-0.1,0.1-0.1,0.1l-0.3,0.4l-17.5,23.7C35.8,117.5,35,118,34,118z M34,59c-10.5,0-19,8.5-19,19c0,4,1.2,7.9,3.6,11.1c0.1,0.1,0.2,0.3,0.3,0.4L34,110l15.3-20.8c0,0,0,0,0-0.1C51.8,85.9,53,82,53,78C53,67.5,44.5,59,34,59z"/><path fill="#AA8F9D" d="M84.3,35C82.8,33,82,30.5,82,28c0-6.6,5.4-12,12-12s12,5.4,12,12c0,2.5-0.8,5-2.3,7L94,48.2L84.3,35z"/><path fill="#454B54" d="M94 51.2c-1 0-1.8-.5-2.4-1.2l-9.7-13.2C80 34.2 79 31.2 79 28c0-8.3 6.7-15 15-15s15 6.7 15 15c0 3.2-1 6.2-2.8 8.8L96.4 50C95.8 50.7 95 51.2 94 51.2zM94 19c-5 0-9 4-9 9 0 1.9.6 3.7 1.7 5.3l7.3 9.9 7.3-9.9c1.1-1.5 1.7-3.3 1.7-5.2C103 23 99 19 94 19zM108 118h-1c-1.7 0-3-1.3-3-3 0 0 0 0 0-.1-.6-1.2-.4-2.7.6-3.6 1.2-1.1 3.1-1 4.2.2l1.4 1.5c.8.9 1 2.1.5 3.2C110.3 117.3 109.2 118 108 118zM95 118h-3c-1.7 0-3-1.3-3-3s1.3-3 3-3h3c1.7 0 3 1.3 3 3S96.7 118 95 118zM80 118h-3c-1.7 0-3-1.3-3-3s1.3-3 3-3h3c1.7 0 3 1.3 3 3S81.7 118 80 118zM65 118h-3c-1.7 0-3-1.3-3-3s1.3-3 3-3h3c1.7 0 3 1.3 3 3S66.7 118 65 118zM50 118h-3c-1.7 0-3-1.3-3-3s1.3-3 3-3h3c1.7 0 3 1.3 3 3S51.7 118 50 118zM98.5 107.7c-.8 0-1.6-.3-2.2-1l-2-2.2c-1.1-1.2-1-3.1.2-4.2 1.2-1.1 3.1-1 4.2.2l2 2.2c1.1 1.2 1 3.1-.2 4.2C100 107.4 99.2 107.7 98.5 107.7zM88.4 96.7c-.8 0-1.6-.3-2.2-1l-2-2.2c-1.1-1.2-1-3.1.2-4.2 1.2-1.1 3.1-1 4.2.2l2 2.2c1.1 1.2 1 3.1-.2 4.2C89.8 96.4 89.1 96.7 88.4 96.7zM78.2 85.6c-.8 0-1.6-.3-2.2-1l-2-2.2c-1.1-1.2-1-3.1.2-4.2 1.2-1.1 3.1-1 4.2.2l2 2.2c1.1 1.2 1 3.1-.2 4.2C79.7 85.4 78.9 85.6 78.2 85.6zM77.7 74.1c-.6 0-1.3-.2-1.8-.6-1.3-1-1.6-2.9-.6-4.2l1.8-2.4c1-1.3 2.9-1.6 4.2-.6 1.3 1 1.6 2.9.6 4.2l-1.8 2.4C79.5 73.7 78.6 74.1 77.7 74.1zM86.7 62.1c-.6 0-1.3-.2-1.8-.6-1.3-1-1.6-2.9-.6-4.2l1.8-2.4c1-1.3 2.9-1.6 4.2-.6 1.3 1 1.6 2.9.6 4.2l-1.8 2.4C88.5 61.7 87.6 62.1 86.7 62.1z"/><g><path fill="#F48884" d="M34 68A10 10 0 1 0 34 88A10 10 0 1 0 34 68Z"/></g></svg>
\ No newline at end of file
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- Generator: Adobe Illustrator 22.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="Layer_1" x="0px" y="0px" viewBox="0 0 128 128" style="enable-background:new 0 0 128 128;" xml:space="preserve" width="128px" height="128px">
<path style="fill:#FFFFFF;" d="M64,14c-27.6,0-50,22.4-50,50s22.4,50,50,50s50-22.4,50-50S91.6,14,64,14z M64,89 c-13.8,0-25-11.2-25-25s11.2-25,25-25s25,11.2,25,25S77.8,89,64,89z"/>
<g>
<path style="fill:#FF5576;" d="M14,64c0,6.5,1.2,12.7,3.5,18.4l22.7-10.6C39.4,69.3,39,66.7,39,64c0-9,4.7-16.8,11.8-21.2L40.2,20 C24.6,28.5,14,45,14,64z"/>
</g>
<g>
<path style="fill:#FF5576;" d="M64,14c-6.5,0-12.7,1.2-18.4,3.5l10.6,22.7c2.4-0.8,5.1-1.2,7.8-1.2c9,0,16.8,4.7,21.2,11.8 L108,40.2C99.5,24.6,83,14,64,14z"/>
</g>
<path style="fill:#C3DBEA;" d="M55,37.5L52.4,32c-1.9,0.7-3.7,1.6-5.4,2.6l2.5,5.5C51.2,39,53,38.2,55,37.5z"/>
<g>
<path style="fill:#FF5576;" d="M64,89c-9,0-16.8-4.7-21.2-11.8L20,87.8c8.5,15.6,25,26.2,44,26.2c6.5,0,12.7-1.2,18.4-3.5 L71.8,87.8C69.3,88.6,66.7,89,64,89z"/>
</g>
<g>
<path style="fill:#FF5576;" d="M114,64c0-6.5-1.2-12.7-3.5-18.4L87.8,56.2c0.8,2.4,1.2,5.1,1.2,7.8c0,9-4.7,16.8-11.8,21.2 L87.8,108C103.4,99.5,114,83,114,64z"/>
</g>
<path style="fill:#C3DBEA;" d="M81.1,107.8c1.9-0.7,3.7-1.6,5.4-2.5L84,99.8c-1.7,1-3.6,1.8-5.4,2.5L81.1,107.8z"/>
<path style="fill:#FFFFFF;" d="M21.5,55.7c-0.3,0-0.5,0-0.8-0.1c-1.6-0.4-2.6-2.1-2.1-3.7c2.5-9.5,7.9-17.9,15.6-24.2 c1.3-1.1,3.2-0.9,4.2,0.4c1.1,1.3,0.9,3.2-0.4,4.2c-6.7,5.5-11.4,12.8-13.6,21.1C24,54.8,22.8,55.7,21.5,55.7z"/>
<path style="fill:#FFFFFF;" d="M20,67c-0.8,0-1.6-0.3-2.1-0.9c-0.1-0.1-0.3-0.3-0.4-0.4c-0.1-0.2-0.2-0.3-0.3-0.5 c-0.1-0.2-0.1-0.4-0.2-0.6c0-0.2-0.1-0.4-0.1-0.6c0-0.8,0.3-1.6,0.9-2.1c1.1-1.1,3.1-1.1,4.2,0c0.6,0.6,0.9,1.3,0.9,2.1 c0,0.8-0.3,1.6-0.9,2.1C21.6,66.7,20.8,67,20,67z"/>
<path style="fill:#DB3E64;" d="M33,67c-1.7,0-3-1.3-3-3c0-18.7,15.3-34,34-34c1.7,0,3,1.3,3,3s-1.3,3-3,3c-2.7,0-5.3,2.6-7.8,4.2 c0,0-1.4-1.4-2.9-0.7c-0.9,0.4-1.9,2.9-2.5,3.2l-2.9,1.5C39.8,49.1,36,53.9,36,64C36,65.7,34.7,67,33,67z"/>
<path style="fill:#FF5576;" d="M56.2,40.2L52.4,32c-1.9,0.7-3.7,1.5-5.4,2.6l3.8,8.2C52.5,41.7,54.3,40.9,56.2,40.2z"/>
<path style="fill:#DB3E64;" d="M64,111c-1.7,0-3-1.3-3-3s1.3-3,3-3c22.6,0,41-18.4,41-41c0-1.7,1.3-3,3-3s3,1.3,3,3 c0,16.2-8.2,30.5-20.7,39c-1.2,0.8-1.2,4.3-2.4,5c-0.7,0.4-2.7-1.1-3.5-0.8c-1.1,0.5-0.9,2.9-2,3.3c-1.3,0.5-3.8-1.8-5.2-1.4 C73,110.3,68.6,111,64,111z"/>
<path style="fill:#FF5576;" d="M82.4,110.5c1.9-0.7,3.7-1.6,5.4-2.5L84,99.8c-1.7,1-3.6,1.8-5.4,2.5L82.4,110.5z"/>
<path style="fill:#444B54;" d="M111,64c0,16.8-8.9,31.6-22.2,39.9c-1.3,0.8-1.8,2.4-1.1,3.8l0,0c0.8,1.6,2.8,2.2,4.3,1.3 c15-9.4,25-26,25-45c0-5.7-0.9-11.3-2.6-16.4c-0.6-1.7-2.5-2.6-4.1-1.8l0,0c-1.4,0.6-2,2.2-1.6,3.7C110.2,54,111,58.9,111,64z"/>
<path style="fill:#444B54;" d="M64,111c-16.8,0-31.6-8.9-39.9-22.2c-0.8-1.3-2.4-1.8-3.8-1.1l0,0c-1.6,0.8-2.2,2.8-1.3,4.3 c9.4,15,26,25,45,25c5.7,0,11.3-0.9,16.4-2.6c1.7-0.6,2.6-2.5,1.8-4.1l0,0c-0.6-1.4-2.2-2-3.7-1.6C74,110.2,69.1,111,64,111z"/>
<path style="fill:#444B54;" d="M42,64c0-6.9,3.2-13,8.1-17.1c1.1-0.9,1.5-2.4,0.9-3.6l0,0c-0.8-1.8-3.1-2.3-4.6-1.1 C40.1,47.3,36,55.2,36,64c0,1.9,0.2,3.7,0.5,5.5c0.4,1.9,2.5,2.9,4.2,2.1l0,0c1.2-0.6,1.9-1.9,1.7-3.2C42.1,66.9,42,65.5,42,64z"/>
<path style="fill:#444B54;" d="M64,42c6.9,0,13,3.2,17.1,8.1c0.9,1.1,2.4,1.5,3.6,0.9l0,0c1.8-0.8,2.3-3.1,1.1-4.6 C80.7,40.1,72.8,36,64,36c-1.9,0-3.7,0.2-5.5,0.5c-1.9,0.4-2.9,2.5-2.1,4.2l0,0c0.6,1.2,1.9,1.9,3.2,1.7C61.1,42.1,62.5,42,64,42z"/>
<path style="fill:#444B54;" d="M64,86c-6.9,0-13-3.2-17.1-8.1c-0.9-1.1-2.4-1.5-3.6-0.9l0,0c-1.8,0.8-2.3,3.1-1.1,4.6 C47.3,87.9,55.2,92,64,92c1.9,0,3.7-0.2,5.5-0.5c1.9-0.4,2.9-2.5,2.1-4.2l0,0c-0.6-1.2-1.9-1.9-3.2-1.7C66.9,85.9,65.5,86,64,86z"/>
<path style="fill:#444B54;" d="M86,64c0,6.9-3.2,13-8.1,17.1c-1.1,0.9-1.5,2.4-0.9,3.6l0,0c0.8,1.8,3.1,2.3,4.6,1.1 C87.9,80.7,92,72.8,92,64c0-1.9-0.2-3.7-0.5-5.5c-0.4-1.9-2.5-2.9-4.2-2.1l0,0c-1.2,0.6-1.9,1.9-1.7,3.2C85.9,61.1,86,62.5,86,64z"/>
<path style="fill:#444B54;" d="M17,64c0-16.8,8.9-31.6,22.2-39.9c1.3-0.8,1.8-2.4,1.1-3.8l0,0c-0.8-1.6-2.8-2.2-4.3-1.3 c-15,9.4-25,26-25,45c0,5.7,0.9,11.3,2.6,16.4c0.6,1.7,2.5,2.6,4.1,1.8l0,0c1.4-0.6,2-2.2,1.6-3.7C17.8,74,17,69.1,17,64z"/>
<path style="fill:#444B54;" d="M64,17c16.8,0,31.6,8.9,39.9,22.2c0.8,1.3,2.4,1.8,3.8,1.1l0,0c1.6-0.8,2.2-2.8,1.3-4.3 c-9.4-15-26-25-45-25c-5.7,0-11.3,0.9-16.4,2.6c-1.7,0.6-2.6,2.5-1.8,4.1l0,0c0.6,1.4,2.2,2,3.7,1.6C54,17.8,58.9,17,64,17z"/>
</svg>
<?xml version="1.0"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" viewBox="0 0 192 192" width="104px" height="104px"><g fill="none" fill-rule="nonzero" stroke="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="10" stroke-dasharray="" stroke-dashoffset="0" font-family="none" font-weight="none" font-size="none" text-anchor="none" style="mix-blend-mode: normal"><path d="M0,192v-192h192v192z" fill="none"/><g fill="#ffffff"><g id="surface1"><path d="M73.84615,1.38462c-40.03846,0 -72.46154,32.42308 -72.46154,72.46154c0,40.03846 32.42308,72.46154 72.46154,72.46154c16.90385,0 32.45192,-5.97116 44.76923,-15.69231l6.46154,6.46154c-2.71153,5.10577 -1.75961,11.625 2.53846,15.92308l33.92308,34.15385c5.27885,5.27885 13.875,5.27885 19.15385,0l6.46154,-6.46154c5.27885,-5.27885 5.27885,-13.875 0,-19.15385l-34.15385,-33.92308c-4.32692,-4.32692 -10.81731,-5.07692 -15.92308,-2.30769l-6.46154,-6.46154c9.77885,-12.34615 15.69231,-28.00962 15.69231,-45c0,-40.03846 -32.42308,-72.46154 -72.46154,-72.46154zM73.84615,14.76923c32.625,0 59.07692,26.45192 59.07692,59.07692c0,32.625 -26.45192,59.07692 -59.07692,59.07692c-32.625,0 -59.07692,-26.45192 -59.07692,-59.07692c0,-32.625 26.45192,-59.07692 59.07692,-59.07692zM36.46154,55.15385c-3.80769,6.17308 -6,13.44231 -6,21.23077c0,22.35577 18.02884,40.38462 40.38462,40.38462c8.625,0 16.73077,-2.79808 23.30769,-7.38462c-1.75961,0.20192 -3.72115,0.23077 -5.53846,0.23077c-28.90384,0 -52.15385,-23.25 -52.15385,-52.15385c0,-0.77885 -0.02884,-1.52884 0,-2.30769z"/></g></g></g></svg>
<svg xmlns="http://www.w3.org/2000/svg" x="0px" y="0px" width="64" height="64" viewBox="0 0 64 64" style="enable-background:new 0 0 64 64;; fill:#000000;"><linearGradient id="SVGID_1__44045" gradientUnits="userSpaceOnUse" x1="20.4991" y1="13.0011" x2="20.4991" y2="23.5843" spreadMethod="reflect"> <stop offset="0" style="stop-color:#6DC7FF"></stop> <stop offset="1" style="stop-color:#E6ABFF"></stop></linearGradient><path style="fill:url(#SVGID_1__44045);" d="M25,14.001c-5,0-9.002,3.999-9.002,8.999H25V14.001z"></path><linearGradient id="SVGID_2__44045" gradientUnits="userSpaceOnUse" x1="24.5112" y1="5.2702" x2="26.0114" y2="59.7769" spreadMethod="reflect"> <stop offset="0" style="stop-color:#1A6DFF"></stop> <stop offset="1" style="stop-color:#C822FF"></stop></linearGradient><path style="fill:url(#SVGID_2__44045);" d="M24.999,10c-7.169,0-13.002,5.832-13.002,13.002s5.833,13.002,13.002,13.002 s13.002-5.832,13.002-13.002S32.168,10,24.999,10z M24.999,34.003c-6.066,0-11.001-4.935-11.001-11.001s4.935-11.001,11.001-11.001 s11.001,4.935,11.001,11.001S31.065,34.003,24.999,34.003z"></path><linearGradient id="SVGID_3__44045" gradientUnits="userSpaceOnUse" x1="31.1088" y1="5.0886" x2="32.609" y2="59.5953" spreadMethod="reflect"> <stop offset="0" style="stop-color:#1A6DFF"></stop> <stop offset="1" style="stop-color:#C822FF"></stop></linearGradient><path style="fill:url(#SVGID_3__44045);" d="M54.77,48.559l-8.752-9.864c-0.719-0.812-1.995-0.92-2.845-0.243l-2.486,1.973l-4.125-4.994 c3.337-3.106,5.439-7.521,5.439-12.429C42.001,13.627,34.374,6,24.999,6S7.997,13.627,7.997,23.002s7.627,17.002,17.002,17.002 c3.749,0,7.207-1.234,10.021-3.298l4.099,4.963l-2.366,1.877c-0.434,0.344-0.698,0.832-0.746,1.374 c-0.047,0.539,0.127,1.06,0.49,1.469l8.753,9.865C46.272,57.406,47.739,58,49.215,58c1.169,0,2.344-0.373,3.307-1.137l1.607-1.274 c1.08-0.858,1.739-2.068,1.856-3.406C56.1,50.859,55.669,49.572,54.77,48.559z M9.997,23.002C9.997,14.73,16.727,8,24.999,8 s15.002,6.73,15.002,15.002s-6.729,15.002-15.002,15.002S9.997,31.274,9.997,23.002z M48.642,44.666l-6.467,5.133l-1.477-1.656 l6.472-5.136L48.642,44.666z M44.418,40.018c0.013-0.01,0.03-0.014,0.049-0.014c0.022,0,0.045,0.007,0.055,0.018l1.319,1.487 l-6.476,5.139l-1.368-1.534L44.418,40.018z M52.885,54.022l-1.607,1.274c-1.361,1.081-3.394,0.915-4.532-0.369l-3.239-3.632 l6.464-5.13l3.303,3.722c0.53,0.598,0.785,1.351,0.718,2.122C53.924,52.795,53.53,53.51,52.885,54.022z"></path></svg>
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 21.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="Layer_1" x="0px" y="0px" viewBox="0 0 128 128" style="enable-background:new 0 0 128 128;" xml:space="preserve" width="64px" height="64px">
<g>
<g>
</g>
</g>
<g>
<path d="M86,9H32c-5.5,0-10,4.5-10,10v90c0,5.5,4.5,10,10,10h64c5.5,0,10-4.5,10-10V29C106,18,97,9,86,9z" style="fill:#FFFFFF;"/>
</g>
<g>
<path d="M55,62H42c-1.7,0-3-1.3-3-3s1.3-3,3-3h13c1.7,0,3,1.3,3,3S56.7,62,55,62z" style="fill:#E9EEF4;"/>
</g>
<g>
<path d="M65,62c-0.2,0-0.4,0-0.6-0.1c-0.2,0-0.4-0.1-0.6-0.2c-0.2-0.1-0.3-0.2-0.5-0.3c-0.2-0.1-0.3-0.2-0.4-0.4 c-0.1-0.1-0.3-0.3-0.4-0.5c-0.1-0.2-0.2-0.3-0.3-0.5c-0.1-0.2-0.1-0.4-0.2-0.6c0-0.2-0.1-0.4-0.1-0.6c0-0.8,0.3-1.6,0.9-2.1 c0.1-0.1,0.3-0.3,0.4-0.4c0.2-0.1,0.3-0.2,0.5-0.3c0.2-0.1,0.4-0.1,0.6-0.2c1-0.2,2,0.1,2.7,0.8c0.6,0.6,0.9,1.3,0.9,2.1 c0,0.2,0,0.4-0.1,0.6c0,0.2-0.1,0.4-0.2,0.6s-0.2,0.4-0.3,0.5c-0.1,0.2-0.2,0.3-0.4,0.5C66.6,61.7,65.8,62,65,62z" style="fill:#FF5576;"/>
</g>
<g>
<path d="M86,77H65c-1.7,0-3-1.3-3-3s1.3-3,3-3h21c1.7,0,3,1.3,3,3S87.7,77,86,77z" style="fill:#E9EEF4;"/>
</g>
<g>
<path d="M86,62H75c-1.7,0-3-1.3-3-3s1.3-3,3-3h11c1.7,0,3,1.3,3,3S87.7,62,86,62z" style="fill:#E9EEF4;"/>
</g>
<g>
<path d="M45,77h-3c-1.7,0-3-1.3-3-3s1.3-3,3-3h3c1.7,0,3,1.3,3,3S46.7,77,45,77z" style="fill:#E9EEF4;"/>
</g>
<g>
<path d="M76.2,92h-34c-1.7,0-3-1.3-3-3s1.3-3,3-3h34c1.7,0,3,1.3,3,3S77.9,92,76.2,92z" style="fill:#E9EEF4;"/>
</g>
<g>
<path d="M55,77c-0.8,0-1.6-0.3-2.1-0.9c-0.1-0.1-0.3-0.3-0.4-0.4c-0.1-0.2-0.2-0.3-0.3-0.5c-0.1-0.2-0.1-0.4-0.2-0.6 c0-0.2-0.1-0.4-0.1-0.6c0-0.8,0.3-1.6,0.9-2.1c0.7-0.7,1.7-1,2.7-0.8c0.2,0,0.4,0.1,0.6,0.2c0.2,0.1,0.4,0.2,0.5,0.3 c0.2,0.1,0.3,0.2,0.4,0.4c0.6,0.6,0.9,1.3,0.9,2.1s-0.3,1.6-0.9,2.1c-0.1,0.1-0.3,0.3-0.4,0.4c-0.2,0.1-0.3,0.2-0.5,0.3 c-0.2,0.1-0.4,0.1-0.6,0.2C55.4,77,55.2,77,55,77z" style="fill:#FF5576;"/>
</g>
<g>
<path d="M86,92c-0.8,0-1.6-0.3-2.1-0.9c-0.1-0.1-0.3-0.3-0.4-0.5c-0.1-0.2-0.2-0.3-0.3-0.5c-0.1-0.2-0.1-0.4-0.2-0.6 c0-0.2-0.1-0.4-0.1-0.6c0-0.8,0.3-1.6,0.9-2.1c0.7-0.7,1.7-1,2.7-0.8c0.2,0,0.4,0.1,0.6,0.2c0.2,0.1,0.4,0.2,0.5,0.3 c0.2,0.1,0.3,0.2,0.5,0.4c0.6,0.6,0.9,1.3,0.9,2.1c0,0.2,0,0.4-0.1,0.6c0,0.2-0.1,0.4-0.2,0.6s-0.2,0.4-0.3,0.5 c-0.1,0.2-0.2,0.3-0.4,0.5c-0.1,0.1-0.3,0.3-0.5,0.4c-0.2,0.1-0.3,0.2-0.5,0.3c-0.2,0.1-0.4,0.1-0.6,0.2C86.4,92,86.2,92,86,92z" style="fill:#FF5576;"/>
</g>
<g>
<path d="M106,29H96c-5.5,0-10-4.5-10-10V9h0C97,9,106,18,106,29L106,29z" style="fill:#FFFFFF;"/>
</g>
<path d="M96,32h9.6c0.1,0,0.2,0,0.4,0c0,0,0,0,0,0c1.2,0,2.3-0.8,2.8-1.8c0.2-0.4,0.3-0.8,0.3-1.2c0-0.1,0-0.3,0-0.4 c-0.1-6-2.5-11.6-6.7-15.9C97.9,8.4,92.2,6,86,6c0,0,0,0,0,0H32c-7.2,0-13,5.8-13,13v90c0,7.3,5.9,13,11,13h63.8c8.7,0,15-5.5,15-13 l0.1-67c0-1.7-1.3-3-3-3c0,0,0,0,0,0c-1.7,0-3,1.3-3,3l-0.1,67c0,4.2-3.6,7-9,7H30c-1.7,0-5-3-5-7V19c0-3.9,3.1-7,7-7h51v7 C83,26.2,88.8,32,96,32z M102.7,26H96c-3.9,0-7-3.1-7-7v-6.7c3.4,0.6,6.5,2.2,9,4.7C100.5,19.5,102.1,22.6,102.7,26z" style="fill:#444B54;"/>
</svg>
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="80pt" height="80pt" viewBox="0 0 80 80" version="1.1">
<defs>
<linearGradient id="linear0" gradientUnits="userSpaceOnUse" x1="32.3372" y1="16.5001" x2="31.6419" y2="46.3969" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#6DC7FF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#E6ABFF;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linear1" gradientUnits="userSpaceOnUse" x1="32" y1="3.75" x2="32" y2="59.5" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#1A6DFF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#C822FF;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linear2" gradientUnits="userSpaceOnUse" x1="32" y1="13.9167" x2="32" y2="48.2578" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#6DC7FF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#E6ABFF;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linear3" gradientUnits="userSpaceOnUse" x1="32" y1="19.1667" x2="32" y2="43.6197" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#1A6DFF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#C822FF;stop-opacity:1;"/>
</linearGradient>
</defs>
<g id="surface1">
<path style=" stroke:none;fill-rule:evenodd;fill:url(#linear0);" d="M 46.25 38.75 C 46.25 42.203125 43.453125 45 40 45 C 36.546875 45 33.75 42.203125 33.75 38.75 C 33.75 35.296875 36.546875 32.5 40 32.5 C 43.453125 32.5 46.25 35.296875 46.25 38.75 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear1);" d="M 39.929688 72.5 C 39.304688 72.5 38.675781 72.484375 38.046875 72.453125 C 35.980469 72.320313 34.320313 70.8125 33.988281 68.78125 C 33.792969 67.550781 33.550781 66.070313 33.351563 64.90625 C 33.238281 64.195313 32.746094 63.625 32.070313 63.414063 C 30.707031 62.976563 29.398438 62.429688 28.171875 61.789063 C 27.539063 61.457031 26.785156 61.511719 26.207031 61.929688 C 25.246094 62.625 24.019531 63.507813 23 64.234375 C 21.34375 65.425781 19.109375 65.320313 17.566406 63.96875 C 16.613281 63.117188 15.675781 62.1875 14.785156 61.199219 C 13.417969 59.644531 13.308594 57.402344 14.511719 55.738281 C 15.242188 54.726563 16.121094 53.507813 16.800781 52.546875 C 17.226563 51.960938 17.277344 51.210938 16.949219 50.582031 C 16.296875 49.304688 15.757813 47.996094 15.34375 46.675781 C 15.128906 45.996094 14.558594 45.5 13.855469 45.386719 L 13.589844 45.34375 C 12.464844 45.164063 11.101563 44.941406 9.957031 44.746094 C 7.941406 44.421875 6.4375 42.765625 6.304688 40.71875 C 6.230469 39.441406 6.230469 38.125 6.296875 36.796875 C 6.429688 34.726563 7.9375 33.066406 9.964844 32.738281 C 11.195313 32.539063 12.679688 32.300781 13.84375 32.101563 C 14.554688 31.984375 15.121094 31.496094 15.335938 30.816406 C 15.773438 29.453125 16.320313 28.144531 16.960938 26.921875 C 17.292969 26.289063 17.238281 25.535156 16.820313 24.953125 C 16.125 23.992188 15.242188 22.765625 14.515625 21.746094 C 13.320313 20.09375 13.425781 17.855469 14.78125 16.316406 C 15.632813 15.359375 16.558594 14.425781 17.546875 13.535156 C 19.105469 12.167969 21.34375 12.058594 23.011719 13.261719 C 24.019531 13.988281 25.238281 14.871094 26.203125 15.550781 C 26.789063 15.972656 27.535156 16.03125 28.167969 15.699219 C 29.441406 15.046875 30.753906 14.503906 32.074219 14.09375 C 32.753906 13.878906 33.246094 13.308594 33.359375 12.601563 L 33.402344 12.339844 C 33.585938 11.214844 33.808594 9.851563 34 8.707031 C 34.328125 6.691406 35.984375 5.1875 38.027344 5.054688 C 39.304688 4.980469 40.625 4.976563 41.953125 5.046875 C 44.019531 5.175781 45.679688 6.6875 46.011719 8.714844 C 46.207031 9.945313 46.449219 11.425781 46.648438 12.589844 C 46.761719 13.300781 47.253906 13.871094 47.929688 14.082031 C 49.292969 14.519531 50.601563 15.066406 51.828125 15.707031 C 52.460938 16.039063 53.214844 15.984375 53.792969 15.566406 C 54.753906 14.871094 55.980469 13.988281 57 13.261719 C 58.65625 12.066406 60.890625 12.171875 62.433594 13.527344 C 63.386719 14.378906 64.324219 15.308594 65.214844 16.296875 C 66.582031 17.851563 66.691406 20.09375 65.488281 21.757813 C 64.757813 22.769531 63.878906 23.988281 63.199219 24.949219 C 62.773438 25.535156 62.722656 26.285156 63.050781 26.914063 C 63.703125 28.191406 64.242188 29.5 64.65625 30.820313 C 64.871094 31.5 65.441406 31.996094 66.144531 32.109375 L 66.410156 32.152344 C 67.535156 32.332031 68.898438 32.554688 70.042969 32.75 C 72.058594 33.074219 73.5625 34.730469 73.695313 36.777344 C 73.769531 38.054688 73.769531 39.371094 73.703125 40.703125 C 73.570313 42.769531 72.0625 44.429688 70.035156 44.757813 C 68.804688 44.957031 67.320313 45.195313 66.15625 45.394531 C 65.445313 45.511719 64.878906 46 64.664063 46.679688 C 64.226563 48.042969 63.679688 49.351563 63.039063 50.578125 C 62.707031 51.207031 62.761719 51.960938 63.179688 52.542969 C 63.875 53.503906 64.757813 54.730469 65.484375 55.75 C 66.679688 57.402344 66.574219 59.640625 65.21875 61.179688 C 64.367188 62.136719 63.441406 63.070313 62.453125 63.960938 C 60.894531 65.328125 58.65625 65.4375 56.988281 64.234375 C 55.980469 63.507813 54.761719 62.625 53.796875 61.945313 C 53.210938 61.523438 52.464844 61.46875 51.832031 61.796875 C 50.558594 62.453125 49.246094 62.992188 47.925781 63.402344 C 47.246094 63.617188 46.753906 64.1875 46.640625 64.894531 L 46.597656 65.15625 C 46.414063 66.28125 46.191406 67.644531 46 68.789063 C 45.671875 70.804688 44.015625 72.308594 41.972656 72.441406 C 41.300781 72.480469 40.617188 72.5 39.929688 72.5 Z M 27.300781 59.074219 C 27.992188 59.074219 28.6875 59.238281 29.332031 59.574219 C 30.429688 60.148438 31.609375 60.640625 32.828125 61.03125 C 34.40625 61.527344 35.554688 62.855469 35.820313 64.496094 C 36.019531 65.652344 36.261719 67.148438 36.460938 68.382813 C 36.601563 69.253906 37.3125 69.898438 38.191406 69.957031 C 39.414063 70.019531 40.640625 70.015625 41.820313 69.945313 C 42.683594 69.890625 43.394531 69.246094 43.535156 68.382813 C 43.726563 67.234375 43.949219 65.878906 44.128906 64.757813 L 44.171875 64.496094 C 44.4375 62.851563 45.589844 61.519531 47.179688 61.019531 C 48.363281 60.648438 49.542969 60.164063 50.683594 59.578125 C 52.148438 58.816406 53.902344 58.941406 55.253906 59.914063 C 56.210938 60.589844 57.4375 61.476563 58.453125 62.210938 C 59.167969 62.722656 60.128906 62.679688 60.789063 62.097656 C 61.699219 61.277344 62.5625 60.40625 63.347656 59.523438 C 63.921875 58.871094 63.96875 57.917969 63.453125 57.207031 C 62.726563 56.183594 61.847656 54.964844 61.15625 54.007813 C 60.179688 52.65625 60.054688 50.898438 60.828125 49.421875 C 61.402344 48.320313 61.890625 47.144531 62.285156 45.925781 C 62.78125 44.347656 64.109375 43.199219 65.75 42.929688 C 66.90625 42.734375 68.398438 42.492188 69.636719 42.292969 C 70.503906 42.152344 71.152344 41.441406 71.207031 40.5625 C 71.269531 39.339844 71.265625 38.113281 71.199219 36.933594 C 71.144531 36.066406 70.5 35.359375 69.636719 35.21875 C 68.488281 35.023438 67.128906 34.804688 66.011719 34.625 L 65.746094 34.582031 C 64.105469 34.316406 62.769531 33.164063 62.273438 31.570313 C 61.902344 30.386719 61.417969 29.207031 60.832031 28.066406 C 60.066406 26.601563 60.191406 24.847656 61.167969 23.5 C 61.84375 22.542969 62.730469 21.316406 63.460938 20.296875 C 63.976563 19.585938 63.929688 18.625 63.351563 17.964844 C 62.527344 17.054688 61.660156 16.191406 60.777344 15.40625 C 60.125 14.832031 59.171875 14.785156 58.460938 15.296875 C 57.4375 16.027344 56.214844 16.90625 55.261719 17.597656 C 53.90625 18.570313 52.148438 18.699219 50.671875 17.925781 C 49.574219 17.351563 48.398438 16.859375 47.175781 16.46875 C 45.601563 15.972656 44.449219 14.644531 44.183594 13.003906 C 43.984375 11.847656 43.742188 10.351563 43.546875 9.117188 C 43.40625 8.246094 42.691406 7.601563 41.816406 7.542969 C 40.589844 7.484375 39.363281 7.484375 38.1875 7.554688 C 37.320313 7.609375 36.609375 8.253906 36.472656 9.117188 C 36.277344 10.265625 36.058594 11.621094 35.875 12.742188 L 35.832031 13.003906 C 35.566406 14.648438 34.414063 15.980469 32.824219 16.480469 C 31.640625 16.851563 30.460938 17.335938 29.320313 17.921875 C 27.855469 18.6875 26.101563 18.558594 24.753906 17.585938 C 23.792969 16.910156 22.566406 16.023438 21.550781 15.289063 C 20.835938 14.773438 19.878906 14.820313 19.214844 15.402344 C 18.308594 16.222656 17.441406 17.09375 16.65625 17.976563 C 16.082031 18.628906 16.039063 19.582031 16.550781 20.292969 C 17.277344 21.316406 18.160156 22.535156 18.851563 23.492188 C 19.824219 24.84375 19.953125 26.601563 19.179688 28.078125 C 18.605469 29.179688 18.113281 30.355469 17.71875 31.574219 C 17.226563 33.152344 15.898438 34.300781 14.257813 34.570313 C 13.097656 34.765625 11.605469 35.007813 10.367188 35.207031 C 9.5 35.347656 8.851563 36.058594 8.796875 36.9375 C 8.734375 38.160156 8.738281 39.386719 8.804688 40.566406 C 8.859375 41.433594 9.503906 42.140625 10.371094 42.28125 C 11.515625 42.476563 12.875 42.695313 13.992188 42.875 L 14.257813 42.917969 C 15.902344 43.183594 17.234375 44.335938 17.734375 45.929688 C 18.101563 47.113281 18.585938 48.292969 19.171875 49.433594 C 19.9375 50.898438 19.8125 52.652344 18.839844 54 C 18.160156 54.957031 17.277344 56.183594 16.542969 57.203125 C 16.027344 57.914063 16.074219 58.875 16.65625 59.535156 C 17.476563 60.445313 18.34375 61.308594 19.226563 62.09375 C 19.878906 62.667969 20.835938 62.714844 21.546875 62.203125 C 22.566406 61.472656 23.789063 60.59375 24.746094 59.902344 C 25.507813 59.351563 26.402344 59.074219 27.300781 59.074219 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear2);" d="M 40 60 C 28.28125 60 18.75 50.46875 18.75 38.75 C 18.75 27.03125 28.28125 17.5 40 17.5 C 51.71875 17.5 61.25 27.03125 61.25 38.75 C 61.25 50.46875 51.71875 60 40 60 Z M 40 20 C 29.660156 20 21.25 28.410156 21.25 38.75 C 21.25 49.089844 29.660156 57.5 40 57.5 C 50.339844 57.5 58.75 49.089844 58.75 38.75 C 58.75 28.410156 50.339844 20 40 20 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear3);" d="M 40 53.75 C 31.730469 53.75 25 47.019531 25 38.75 C 25 30.480469 31.730469 23.75 40 23.75 C 48.269531 23.75 55 30.480469 55 38.75 C 55 47.019531 48.269531 53.75 40 53.75 Z M 40 26.25 C 33.109375 26.25 27.5 31.859375 27.5 38.75 C 27.5 45.640625 33.109375 51.25 40 51.25 C 46.890625 51.25 52.5 45.640625 52.5 38.75 C 52.5 31.859375 46.890625 26.25 40 26.25 Z "/>
</g>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" id="Layer_1" x="0" y="0" version="1.1" viewBox="0 0 128 128" xml:space="preserve" width="128" height="128"><path fill="#d3d8dd" d="M99,119H29c-11,0-20-9-20-20V29C9,18,18,9,29,9h70c11,0,20,9,20,20v70C119,110,110,119,99,119z"/><path fill="#444b54" d="M99,122H29c-12.7,0-23-10.3-23-23V29c0-1.7,1.3-3,3-3s3,1.3,3,3v70c0,9.4,7.6,17,17,17h70c9.4,0,17-7.6,17-17 V29c0-9.4-7.6-17-17-17H29c-4.5,0-8.8,1.8-12,5c-1.2,1.2-3.1,1.2-4.2,0c-1.2-1.2-1.2-3.1,0-4.2C17.1,8.4,22.9,6,29,6h70 c12.7,0,23,10.3,23,23v70C122,111.7,111.7,122,99,122z"/><path fill="#fff" d="M94,107h-3c-1.7,0-3-1.3-3-3s1.3-3,3-3h3c1.7,0,3,1.3,3,3S95.7,107,94,107z M76.2,107h-3c-1.7,0-3-1.3-3-3 s1.3-3,3-3h3c1.7,0,3,1.3,3,3S77.8,107,76.2,107z M58.4,107h-3c-1.7,0-3-1.3-3-3s1.3-3,3-3h3c1.7,0,3,1.3,3,3S60,107,58.4,107z M40.6,107h-3c-1.7,0-3-1.3-3-3s1.3-3,3-3h3c1.7,0,3,1.3,3,3S42.2,107,40.6,107z M25,101.3c-1.1,0-2.2-0.6-2.7-1.7 c-0.6-1.2-0.9-2.4-1.1-3.7c-0.2-1.6,0.9-3.2,2.5-3.4c1.6-0.2,3.2,0.9,3.4,2.5c0.1,0.7,0.3,1.3,0.6,2c0.7,1.5,0.1,3.3-1.4,4 C25.9,101.2,25.4,101.3,25,101.3z M104,97.8c-0.1,0-0.2,0-0.2,0c-1.7-0.1-2.9-1.6-2.7-3.2c0-0.2,0-0.4,0-0.6v-2.1 c0-1.7,1.3-3,3-3s3,1.3,3,3V94c0,0.4,0,0.7,0,1.1C106.8,96.6,105.5,97.8,104,97.8z M24,83.7c-1.7,0-3-1.3-3-3v-3c0-1.7,1.3-3,3-3 s3,1.3,3,3v3C27,82.3,25.7,83.7,24,83.7z M104,80c-1.7,0-3-1.3-3-3v-3c0-1.7,1.3-3,3-3s3,1.3,3,3v3C107,78.7,105.7,80,104,80z M24,65.8c-1.7,0-3-1.3-3-3v-3c0-1.7,1.3-3,3-3s3,1.3,3,3v3C27,64.5,25.7,65.8,24,65.8z M104,62.2c-1.7,0-3-1.3-3-3v-3 c0-1.7,1.3-3,3-3s3,1.3,3,3v3C107,60.9,105.7,62.2,104,62.2z M24,48c-1.7,0-3-1.3-3-3v-3c0-1.7,1.3-3,3-3s3,1.3,3,3v3 C27,46.7,25.7,48,24,48z M104,44.4c-1.7,0-3-1.3-3-3v-3c0-1.7,1.3-3,3-3s3,1.3,3,3v3C107,43,105.7,44.4,104,44.4z M26.2,30.7 c-0.7,0-1.3-0.2-1.9-0.7c-1.3-1-1.5-2.9-0.5-4.2c0.8-1,1.8-1.9,2.8-2.6c1.4-0.9,3.2-0.6,4.2,0.8c0.9,1.4,0.6,3.2-0.8,4.2 c-0.6,0.4-1.1,0.9-1.5,1.4C28,30.3,27.1,30.7,26.2,30.7z M99,28.4c-0.5,0-1-0.1-1.5-0.4c-0.6-0.4-1.2-0.6-1.9-0.8 c-1.6-0.4-2.6-2-2.2-3.6c0.4-1.6,2-2.6,3.6-2.2c1.3,0.3,2.5,0.8,3.6,1.4c1.4,0.8,1.9,2.7,1.1,4.1C101.1,27.8,100.1,28.4,99,28.4z M81.5,27h-3c-1.7,0-3-1.3-3-3s1.3-3,3-3h3c1.7,0,3,1.3,3,3S83.1,27,81.5,27z M63.7,27h-3c-1.7,0-3-1.3-3-3s1.3-3,3-3h3 c1.7,0,3,1.3,3,3S65.3,27,63.7,27z M45.9,27h-3c-1.7,0-3-1.3-3-3s1.3-3,3-3h3c1.7,0,3,1.3,3,3S47.5,27,45.9,27z"/></svg>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="80pt" height="80pt" viewBox="0 0 80 80" version="1.1">
<defs>
<linearGradient id="linear0" gradientUnits="userSpaceOnUse" x1="29" y1="24.1667" x2="29" y2="29.1778" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#6DC7FF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#E6ABFF;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linear1" gradientUnits="userSpaceOnUse" x1="21" y1="24.1667" x2="21" y2="29.1778" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#6DC7FF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#E6ABFF;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linear2" gradientUnits="userSpaceOnUse" x1="45" y1="27.5" x2="45" y2="32.6694" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#6DC7FF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#E6ABFF;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linear3" gradientUnits="userSpaceOnUse" x1="32" y1="8.1667" x2="32" y2="55.463" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#1A6DFF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#C822FF;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linear4" gradientUnits="userSpaceOnUse" x1="21.3853" y1="8.1667" x2="21.3853" y2="55.463" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#1A6DFF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#C822FF;stop-opacity:1;"/>
</linearGradient>
</defs>
<g id="surface1">
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear0);" d="M 39.375 33.125 C 39.375 34.851563 37.976563 36.25 36.25 36.25 C 34.523438 36.25 33.125 34.851563 33.125 33.125 C 33.125 31.398438 34.523438 30 36.25 30 C 37.976563 30 39.375 31.398438 39.375 33.125 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear1);" d="M 29.375 33.125 C 29.375 34.851563 27.976563 36.25 26.25 36.25 C 24.523438 36.25 23.125 34.851563 23.125 33.125 C 23.125 31.398438 24.523438 30 26.25 30 C 27.976563 30 29.375 31.398438 29.375 33.125 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear2);" d="M 58.75 37.5 C 58.75 38.878906 57.628906 40 56.25 40 C 54.871094 40 53.75 38.878906 53.75 37.5 C 53.75 36.121094 54.871094 35 56.25 35 C 57.628906 35 58.75 36.121094 58.75 37.5 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear3);" d="M 62.917969 47.242188 C 63.601563 46.144531 64.132813 44.949219 64.484375 43.675781 C 67.582031 43.304688 70 40.695313 70 37.5 C 70 34.460938 67.820313 31.929688 64.941406 31.371094 C 64.363281 24.316406 58.449219 18.75 51.25 18.75 C 49.070313 18.75 46.933594 19.292969 45.003906 20.28125 C 42.691406 14.972656 37.398438 11.25 31.25 11.25 C 22.980469 11.25 16.25 17.980469 16.25 26.25 L 16.25 27.5 C 12.804688 27.5 10 30.304688 10 33.75 C 10 37.195313 12.804688 40 16.25 40 L 16.742188 40 C 17.097656 41.359375 17.632813 42.648438 18.328125 43.832031 C 11.621094 48.191406 7.5 55.710938 7.5 63.75 L 7.5 68.75 L 72.5 68.75 L 72.5 65 C 72.5 57.816406 68.863281 51.152344 62.917969 47.242188 Z M 67.5 37.5 C 67.5 39.144531 66.425781 40.535156 64.949219 41.035156 C 64.972656 40.691406 65 40.351563 65 40 L 65 33.980469 C 66.453125 34.496094 67.5 35.871094 67.5 37.5 Z M 51.25 21.25 C 57.453125 21.25 62.5 26.296875 62.5 32.5 L 62.5 40 C 62.5 46.148438 57.539063 51.152344 51.410156 51.242188 C 49.589844 48.304688 47.136719 45.757813 44.171875 43.828125 C 44.867188 42.644531 45.402344 41.359375 45.757813 40 L 46.25 40 C 49.695313 40 52.5 37.195313 52.5 33.75 C 52.5 30.304688 49.695313 27.5 46.25 27.5 L 46.25 26.25 C 46.25 25.015625 46.082031 23.820313 45.800781 22.667969 C 47.460938 21.746094 49.335938 21.25 51.25 21.25 Z M 46.25 36.25 L 46.25 35 C 46.941406 35 47.5 34.441406 47.5 33.75 C 47.5 33.058594 46.941406 32.5 46.25 32.5 L 46.25 30 C 48.316406 30 50 31.683594 50 33.75 C 50 35.816406 48.316406 37.5 46.25 37.5 Z M 18.75 26.25 C 18.75 19.359375 24.359375 13.75 31.25 13.75 C 38.140625 13.75 43.75 19.359375 43.75 26.25 L 43.75 36.25 C 43.75 43.140625 38.140625 48.75 31.25 48.75 C 24.359375 48.75 18.75 43.140625 18.75 36.25 Z M 16.25 37.5 C 14.183594 37.5 12.5 35.816406 12.5 33.75 C 12.5 31.683594 14.183594 30 16.25 30 L 16.25 32.5 C 15.558594 32.5 15 33.058594 15 33.75 C 15 34.441406 15.558594 35 16.25 35 Z M 31.25 51.25 C 35.859375 51.25 39.984375 49.160156 42.734375 45.878906 C 43.4375 46.332031 44.109375 46.824219 44.742188 47.351563 C 41.40625 51.414063 36.542969 53.75 31.25 53.75 C 25.957031 53.75 21.09375 51.414063 17.757813 47.351563 C 18.394531 46.824219 19.0625 46.332031 19.765625 45.878906 C 22.519531 49.160156 26.640625 51.25 31.25 51.25 Z M 29.097656 66.25 C 29.53125 65.507813 30.328125 65 31.25 65 C 32.171875 65 32.96875 65.507813 33.402344 66.25 Z M 52.5 66.25 L 36.074219 66.25 C 35.515625 64.101563 33.574219 62.5 31.25 62.5 C 28.925781 62.5 26.984375 64.101563 26.425781 66.25 L 10 66.25 L 10 63.75 C 10 58.214844 12.1875 52.960938 15.925781 49.050781 C 19.738281 53.621094 25.25 56.25 31.25 56.25 C 37.25 56.25 42.761719 53.621094 46.574219 49.050781 C 50.3125 52.960938 52.5 58.214844 52.5 63.75 Z M 70 66.25 L 55 66.25 L 55 63.75 C 55 60.210938 54.195313 56.78125 52.730469 53.667969 C 56.15625 53.296875 59.203125 51.65625 61.40625 49.234375 C 66.734375 52.675781 70 58.605469 70 65 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear4);" d="M 31.25 18.75 L 31.25 16.25 C 27.410156 16.25 23.859375 18.492188 22.214844 21.964844 L 24.472656 23.035156 C 25.707031 20.433594 28.367188 18.75 31.25 18.75 Z "/>
</g>
</svg>
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- Generator: Adobe Illustrator 22.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="Layer_1" x="0px" y="0px" viewBox="0 0 48 48" style="enable-background:new 0 0 48 48;" xml:space="preserve" width="96px" height="96px">
<path style="fill:#891212;" d="M24,28L6,35V20l18-7V28z"/>
<path style="fill:#891212;" d="M42,20l-18-7v15l18,7V20z"/>
<path style="fill:#891212;" d="M26,18.5c0,1.379-1.121,2.5-2.5,2.5S21,19.879,21,18.5s1.121-2.5,2.5-2.5S26,17.121,26,18.5z"/>
<path style="fill:#90CAF9;" d="M23.5,6C16.598,6,11,11.598,11,18.5S16.598,31,23.5,31S36,25.402,36,18.5S30.402,6,23.5,6z M23.5,20.805c-1.273,0-2.305-1.031-2.305-2.305s1.031-2.305,2.305-2.305s2.305,1.031,2.305,2.305S24.77,20.805,23.5,20.805z"/>
<path style="fill:#CFE8F9;" d="M20.676,19.844L13,25.344c0.879,1.316,2.516,2.938,4.188,4l5.43-7.531 C21.684,21.516,20.957,20.781,20.676,19.844z"/>
<path style="fill:#CFE8F9;" d="M30.27,8l-5.965,8.164c0.938,0.266,1.68,0.977,1.988,1.895l8.117-5.648 C33.41,10.621,31.984,9.109,30.27,8z"/>
<path style="fill:#F44336;" d="M24,27L6,20v15l18,7V27z"/>
<path style="fill:#C62828;" d="M42,35l-18,7V27l18-7V35z"/>
<path style="fill:#1E88E5;" d="M23.5,15c-1.934,0-3.5,1.566-3.5,3.5s1.566,3.5,3.5,3.5s3.5-1.566,3.5-3.5S25.434,15,23.5,15z M23.5,20c-0.828,0-1.5-0.672-1.5-1.5s0.672-1.5,1.5-1.5s1.5,0.672,1.5,1.5S24.328,20,23.5,20z"/>
</svg>
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="80pt" height="80pt" viewBox="0 0 80 80" version="1.1">
<defs>
<linearGradient id="linear0" gradientUnits="userSpaceOnUse" x1="16" y1="11.3333" x2="16" y2="16.8961" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#6DC7FF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#E6ABFF;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linear1" gradientUnits="userSpaceOnUse" x1="22" y1="11.3333" x2="22" y2="16.8961" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#6DC7FF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#E6ABFF;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linear2" gradientUnits="userSpaceOnUse" x1="28" y1="11.3333" x2="28" y2="16.8961" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#6DC7FF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#E6ABFF;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linear3" gradientUnits="userSpaceOnUse" x1="32" y1="8" x2="32" y2="57.847" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#1A6DFF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#C822FF;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linear4" gradientUnits="userSpaceOnUse" x1="19.9197" y1="8" x2="19.9197" y2="57.847" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#1A6DFF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#C822FF;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linear5" gradientUnits="userSpaceOnUse" x1="44.3491" y1="8" x2="44.3491" y2="57.847" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#1A6DFF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#C822FF;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linear6" gradientUnits="userSpaceOnUse" x1="32.5" y1="8" x2="32.5" y2="57.847" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#1A6DFF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#C822FF;stop-opacity:1;"/>
</linearGradient>
</defs>
<g id="surface1">
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear0);" d="M 20 20 C 18.621094 20 17.5 18.878906 17.5 17.5 C 17.5 16.121094 18.621094 15 20 15 C 21.378906 15 22.5 16.121094 22.5 17.5 C 22.5 18.878906 21.378906 20 20 20 Z M 20 17.5 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear1);" d="M 27.5 20 C 26.121094 20 25 18.878906 25 17.5 C 25 16.121094 26.121094 15 27.5 15 C 28.878906 15 30 16.121094 30 17.5 C 30 18.878906 28.878906 20 27.5 20 Z M 27.5 17.5 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear2);" d="M 35 20 C 33.621094 20 32.5 18.878906 32.5 17.5 C 32.5 16.121094 33.621094 15 35 15 C 36.378906 15 37.5 16.121094 37.5 17.5 C 37.5 18.878906 36.378906 20 35 20 Z M 35 17.5 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear3);" d="M 63.75 10 L 16.25 10 C 12.804688 10 10 12.804688 10 16.25 L 10 63.75 C 10 67.195313 12.804688 70 16.25 70 L 63.75 70 C 67.195313 70 70 67.195313 70 63.75 L 70 16.25 C 70 12.804688 67.195313 10 63.75 10 Z M 16.25 12.5 L 63.75 12.5 C 65.816406 12.5 67.5 14.183594 67.5 16.25 L 67.5 22.5 L 12.5 22.5 L 12.5 16.25 C 12.5 14.183594 14.183594 12.5 16.25 12.5 Z M 63.75 67.5 L 16.25 67.5 C 14.183594 67.5 12.5 65.816406 12.5 63.75 L 12.5 25 L 67.5 25 L 67.5 63.75 C 67.5 65.816406 65.816406 67.5 63.75 67.5 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear4);" d="M 28.964844 35.308594 L 20.042969 43.117188 C 19.5 43.589844 19.1875 44.277344 19.1875 45 C 19.1875 45.722656 19.5 46.410156 20.042969 46.886719 L 28.964844 54.691406 L 30.609375 52.808594 L 21.6875 44.996094 L 30.609375 37.191406 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear5);" d="M 51.910156 35.355469 L 50.164063 37.144531 L 58.207031 45.003906 L 50.164063 52.855469 L 51.910156 54.644531 L 59.953125 46.792969 C 60.441406 46.320313 60.707031 45.679688 60.707031 45 C 60.707031 44.320313 60.441406 43.683594 59.953125 43.207031 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear6);" d="M 33.824219 60.828125 L 36.175781 61.671875 L 47.425781 30.421875 L 45.074219 29.578125 Z "/>
</g>
</svg>
<?xml version="1.0"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" viewBox="0 0 192 192" width="24px" height="24px"><g fill="none" fill-rule="nonzero" stroke="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="10" stroke-dasharray="" stroke-dashoffset="0" font-family="none" font-weight="none" font-size="none" text-anchor="none" style="mix-blend-mode: normal"><path d="M0,192v-192h192v192z" fill="none"/><g fill="#ffffff"><g id="surface1"><path d="M96,0c-15.21875,0 -24.6875,3.65625 -25.5,4l-22.5,7.25c-10.40625,3.1875 -19.09375,9.4375 -25.5,18.25l-22.5,42.5l27.25,16.75l12.75,-24v119.25c0,4.40625 25.0625,8 56,8c30.9375,0 56,-3.59375 56,-8v-119.25l12.75,24l27.25,-16.75l-22.5,-42.5c-6.40625,-8.8125 -15.15625,-15.0625 -24.75,-18.25l-22.25,-7.25c-0.1875,0 -1.03125,1.3125 -2,2.75l1.25,-2.5c0,0 -9.84375,-4.25 -25.75,-4.25zM96,8c11.40625,0 18.4375,2.25 21,3.25c-4.46875,5.75 -11.40625,12.75 -21,12.75c-9.40625,0 -16.40625,-7.0625 -20.75,-12.75c2.875,-1.0625 9.875,-3.25 20.75,-3.25z"/></g></g></g></svg>
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- Generator: Adobe Illustrator 21.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="Layer_1" x="0px" y="0px" viewBox="0 0 64 64" style="enable-background:new 0 0 64 64;" xml:space="preserve" width="512px" height="512px">
<linearGradient id="SVGID_1__48254_62186" gradientUnits="userSpaceOnUse" x1="32" y1="7" x2="32" y2="57.0812" spreadMethod="reflect">
<stop offset="0" style="stop-color:#1A6DFF"/>
<stop offset="1" style="stop-color:#C822FF"/>
</linearGradient>
<path style="fill:url(#SVGID_1__48254_62186);" d="M52,7H12c-2.757,0-5,2.243-5,5v40c0,2.757,2.243,5,5,5h40c2.757,0,5-2.243,5-5V12 C57,9.243,54.757,7,52,7z M43,31H33V21h10V31z M45,21h10v10H45V21z M33,19V9h10v10H33z M31,19H21V9h10V19z M31,21v10H21V21H31z M19,31H9V21h10V31z M9,33h10v10H9V33z M21,33h10v10H21V33z M31,45v10H21V45H31z M33,45h10v10H33V45z M33,43V33h10v10H33z M45,33h10 v10H45V33z M55,12v7H45V9h7C53.654,9,55,10.346,55,12z M12,9h7v10H9v-7C9,10.346,10.346,9,12,9z M9,52v-7h10v10h-7 C10.346,55,9,53.654,9,52z M52,55h-7V45h10v7C55,53.654,53.654,55,52,55z"/>
<g>
<linearGradient id="SVGID_2__48254_62186" gradientUnits="userSpaceOnUse" x1="14" y1="23.0417" x2="14" y2="28.9623" spreadMethod="reflect">
<stop offset="0" style="stop-color:#6DC7FF"/>
<stop offset="1" style="stop-color:#E6ABFF"/>
</linearGradient>
<rect x="11" y="23" style="fill:url(#SVGID_2__48254_62186);" width="6" height="6"/>
<linearGradient id="SVGID_3__48254_62186" gradientUnits="userSpaceOnUse" x1="26" y1="11.0417" x2="26" y2="16.9623" spreadMethod="reflect">
<stop offset="0" style="stop-color:#6DC7FF"/>
<stop offset="1" style="stop-color:#E6ABFF"/>
</linearGradient>
<rect x="23" y="11" style="fill:url(#SVGID_3__48254_62186);" width="6" height="6"/>
<linearGradient id="SVGID_4__48254_62186" gradientUnits="userSpaceOnUse" x1="38" y1="11.0417" x2="38" y2="16.9623" spreadMethod="reflect">
<stop offset="0" style="stop-color:#6DC7FF"/>
<stop offset="1" style="stop-color:#E6ABFF"/>
</linearGradient>
<rect x="35" y="11" style="fill:url(#SVGID_4__48254_62186);" width="6" height="6"/>
<linearGradient id="SVGID_5__48254_62186" gradientUnits="userSpaceOnUse" x1="50" y1="11.0417" x2="50" y2="16.9623" spreadMethod="reflect">
<stop offset="0" style="stop-color:#6DC7FF"/>
<stop offset="1" style="stop-color:#E6ABFF"/>
</linearGradient>
<path style="fill:url(#SVGID_5__48254_62186);" d="M47,17h6v-5c0-0.552-0.448-1-1-1h-5V17z"/>
<linearGradient id="SVGID_6__48254_62186" gradientUnits="userSpaceOnUse" x1="14" y1="11.0417" x2="14" y2="16.9623" spreadMethod="reflect">
<stop offset="0" style="stop-color:#6DC7FF"/>
<stop offset="1" style="stop-color:#E6ABFF"/>
</linearGradient>
<path style="fill:url(#SVGID_6__48254_62186);" d="M12,11c-0.552,0-1,0.448-1,1v5h6v-6H12z"/>
<linearGradient id="SVGID_7__48254_62186" gradientUnits="userSpaceOnUse" x1="14" y1="35.0417" x2="14" y2="40.9623" spreadMethod="reflect">
<stop offset="0" style="stop-color:#6DC7FF"/>
<stop offset="1" style="stop-color:#E6ABFF"/>
</linearGradient>
<rect x="11" y="35" style="fill:url(#SVGID_7__48254_62186);" width="6" height="6"/>
<linearGradient id="SVGID_8__48254_62186" gradientUnits="userSpaceOnUse" x1="14" y1="47.0417" x2="14" y2="52.9623" spreadMethod="reflect">
<stop offset="0" style="stop-color:#6DC7FF"/>
<stop offset="1" style="stop-color:#E6ABFF"/>
</linearGradient>
<path style="fill:url(#SVGID_8__48254_62186);" d="M11,52c0,0.552,0.448,1,1,1h5v-6h-6V52z"/>
</g>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" width="96px" height="96px"><linearGradient id="eNrllKi~A~aex2Cvsji~Ia" x1="40.012" x2="40.012" y1="19.127" y2="27.441" gradientUnits="userSpaceOnUse" spreadMethod="reflect"><stop offset="0" stop-color="#6dc7ff"/><stop offset="1" stop-color="#e6abff"/></linearGradient><path fill="url(#eNrllKi~A~aex2Cvsji~Ia)" d="M40.012 19.822A3.414 3.414 0 1 0 40.012 26.650000000000002A3.414 3.414 0 1 0 40.012 19.822Z"/><linearGradient id="eNrllKi~A~aex2Cvsji~Ib" x1="23.444" x2="23.444" y1="3.001" y2="60.671" gradientUnits="userSpaceOnUse" spreadMethod="reflect"><stop offset="0" stop-color="#1a6dff"/><stop offset="1" stop-color="#c822ff"/></linearGradient><path fill="url(#eNrllKi~A~aex2Cvsji~Ib)" d="M29.351 22.98L16.537 30.377 17.538 32.11 30.351 24.712z"/><linearGradient id="eNrllKi~A~aex2Cvsji~Ic" x1="25.721" x2="25.721" y1="3.001" y2="60.671" gradientUnits="userSpaceOnUse" spreadMethod="reflect"><stop offset="0" stop-color="#1a6dff"/><stop offset="1" stop-color="#c822ff"/></linearGradient><path fill="url(#eNrllKi~A~aex2Cvsji~Ic)" d="M31.627 26.922L18.814 34.32 19.814 36.053 32.627 28.655z"/><linearGradient id="eNrllKi~A~aex2Cvsji~Id" x1="27.996" x2="27.996" y1="3.001" y2="60.671" gradientUnits="userSpaceOnUse" spreadMethod="reflect"><stop offset="0" stop-color="#1a6dff"/><stop offset="1" stop-color="#c822ff"/></linearGradient><path fill="url(#eNrllKi~A~aex2Cvsji~Id)" d="M21.089 38.263L22.09 39.995 34.903 32.597 33.903 30.865z"/><linearGradient id="eNrllKi~A~aex2Cvsji~Ie" x1="32" x2="32" y1="3.001" y2="60.671" gradientUnits="userSpaceOnUse" spreadMethod="reflect"><stop offset="0" stop-color="#1a6dff"/><stop offset="1" stop-color="#c822ff"/></linearGradient><path fill="url(#eNrllKi~A~aex2Cvsji~Ie)" d="M56.648,13.631c-1.35-2.337-3.529-4.01-6.136-4.708c-2.607-0.699-5.33-0.34-7.667,1.01 c-0.867,0.501-1.636,1.116-2.299,1.815l-2.599-0.831c-1.482-0.474-3.113-0.301-4.468,0.48L9.597,25.185 c-1.564,0.904-2.102,2.911-1.199,4.476l0.638,1.105L7.64,31.572c-0.758,0.438-1.3,1.145-1.526,1.989 c-0.227,0.846-0.11,1.729,0.327,2.486l10.243,17.741c0.606,1.05,1.71,1.638,2.843,1.638c0.556,0,1.118-0.142,1.633-0.438 L45.041,41.2c1.352-0.781,2.318-2.104,2.663-3.702l0.515-3.65c0.706-0.734,1.21-1.652,1.43-2.664l0.58-2.667 c0.95-0.225,1.862-0.587,2.721-1.082C57.775,24.648,59.434,18.455,56.648,13.631z M45.737,37.145 c-0.214,0.977-0.832,1.823-1.696,2.322L20.159,53.256c-0.608,0.355-1.391,0.144-1.743-0.467L8.173,35.048 c-0.171-0.295-0.216-0.64-0.128-0.969c0.088-0.329,0.3-0.605,0.595-0.774l1.396-0.806l8.605,14.904 c0.438,0.758,1.144,1.3,1.989,1.526c0.282,0.076,0.568,0.113,0.853,0.113c0.568,0,1.129-0.149,1.633-0.44L45.982,35.4L45.737,37.145 z M47.693,30.759c-0.212,0.976-0.83,1.821-1.695,2.321L22.116,46.869c-0.297,0.171-0.641,0.215-0.968,0.128 c-0.329-0.088-0.605-0.299-0.774-0.595L10.13,28.661c-0.352-0.609-0.142-1.392,0.467-1.743L34.479,13.13 c0.546-0.315,1.161-0.477,1.779-0.477c0.363,0,0.728,0.056,1.079,0.168l1.921,0.614c-1.072,1.761-1.595,3.836-1.44,5.972 c-0.004,0.002-0.009,0.003-0.013,0.006c-1.022,0.589-1.752,1.541-2.058,2.68c-0.305,1.139-0.148,2.329,0.441,3.35 c0.816,1.414,2.303,2.206,3.83,2.206c0.748,0,1.507-0.189,2.2-0.59c1.022-0.59,1.751-1.541,2.057-2.681 c0.305-1.139,0.148-2.329-0.441-3.35c-0.59-1.022-1.541-1.751-2.68-2.057c-0.447-0.119-0.9-0.146-1.349-0.126 c-0.037-1.732,0.466-3.397,1.426-4.78l8.329,2.663c0.632,0.201,1.002,0.843,0.86,1.491L47.693,30.759z M40.008,20.82 c0.21,0,0.421,0.027,0.629,0.083c0.622,0.167,1.143,0.566,1.465,1.125c0.323,0.559,0.408,1.209,0.242,1.832 c-0.167,0.623-0.566,1.144-1.125,1.466c-1.151,0.666-2.633,0.269-3.298-0.884c-0.323-0.559-0.408-1.209-0.242-1.832 c0.167-0.622,0.567-1.143,1.126-1.465C39.177,20.931,39.59,20.82,40.008,20.82z M55.726,20.78c-0.561,2.092-1.901,3.84-3.777,4.922 c-0.397,0.23-0.811,0.417-1.233,0.574l1.66-7.63c0.361-1.662-0.588-3.306-2.207-3.822l-7.437-2.378 c0.346-0.286,0.713-0.552,1.112-0.782c1.875-1.084,4.061-1.369,6.15-0.811c2.092,0.561,3.839,1.901,4.921,3.777 C55.999,16.506,56.286,18.689,55.726,20.78z"/></svg>
\ No newline at end of file
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 128 128" width="128px" height="128px"><path fill="#fff" d="M14,108V25c0-2.761,2.239-5,5-5h90c2.761,0,5,2.239,5,5v83"/><path fill="none" stroke="#9eb9d3" stroke-linecap="round" stroke-miterlimit="10" stroke-width="6" d="M28 61L35 61M47 61L76 61"/><path fill="#9eb9d3" d="M88 58A3 3 0 1 0 88 64 3 3 0 1 0 88 58zM100 58A3 3 0 1 0 100 64 3 3 0 1 0 100 58z"/><path fill="none" stroke="#9eb9d3" stroke-linecap="round" stroke-miterlimit="10" stroke-width="6" d="M28 77L35 77M47 77L76 77"/><path fill="#9eb9d3" d="M100 74A3 3 0 1 0 100 80A3 3 0 1 0 100 74Z"/><path fill="none" stroke="#9eb9d3" stroke-linecap="round" stroke-miterlimit="10" stroke-width="6" d="M28 93L35 93M47 93L76 93"/><path fill="#9eb9d3" d="M88 90A3 3 0 1 0 88 96 3 3 0 1 0 88 90zM100 90A3 3 0 1 0 100 96 3 3 0 1 0 100 90zM114 43H14V25c0-2.761 2.239-5 5-5h90c2.761 0 5 2.239 5 5V43z"/><path fill="#fff" d="M104,30H69c-1.657,0-3,1.343-3,3c0,1.657,1.343,3,3,3h35c1.657,0,3-1.343,3-3S105.657,30,104,30z"/><path fill="none" stroke="#444b54" stroke-linecap="round" stroke-miterlimit="10" stroke-width="6" d="M14,108V25 c0-2.761,2.239-5,5-5h90c2.761,0,5,2.239,5,5v83"/><path fill="#fff" d="M24 30A3 3 0 1 0 24 36 3 3 0 1 0 24 30zM34 30A3 3 0 1 0 34 36 3 3 0 1 0 34 30zM44 30A3 3 0 1 0 44 36 3 3 0 1 0 44 30z"/></svg>
\ No newline at end of file
<svg fill="#000000" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 80 80" width="80px" height="80px"><path d="M 13 10 C 11.355469 10 10 11.355469 10 13 L 10 25 C 10 26.644531 11.355469 28 13 28 L 31 28 C 32.644531 28 34 26.644531 34 25 L 34 13 C 34 11.355469 32.644531 10 31 10 Z M 22 28 C 21.449219 28 21 28.449219 21 29 C 21 29.550781 21.449219 30 22 30 C 22.550781 30 23 29.550781 23 29 C 23 28.449219 22.550781 28 22 28 Z M 13 12 L 31 12 C 31.566406 12 32 12.433594 32 13 L 32 25 C 32 25.566406 31.566406 26 31 26 L 13 26 C 12.433594 26 12 25.566406 12 25 L 12 13 C 12 12.433594 12.433594 12 13 12 Z M 16 14 C 15.449219 14 15 14.449219 15 15 C 15 15.550781 15.449219 16 16 16 C 16.550781 16 17 15.550781 17 15 C 17 14.449219 16.550781 14 16 14 Z M 16 18 C 15.449219 18 15 18.449219 15 19 C 15 19.550781 15.449219 20 16 20 C 16.550781 20 17 19.550781 17 19 C 17 18.449219 16.550781 18 16 18 Z M 16 22 C 15.449219 22 15 22.449219 15 23 C 15 23.550781 15.449219 24 16 24 C 16.550781 24 17 23.550781 17 23 C 17 22.449219 16.550781 22 16 22 Z M 49 28 C 47.355469 28 46 29.355469 46 31 L 46 36 C 45.449219 36 45 36.449219 45 37 C 45 37.550781 45.449219 38 46 38 L 46 43 C 46 44.644531 47.355469 46 49 46 L 67 46 C 68.644531 46 70 44.644531 70 43 L 70 31 C 70 29.355469 68.644531 28 67 28 Z M 49 30 L 67 30 C 67.566406 30 68 30.433594 68 31 L 68 43 C 68 43.566406 67.566406 44 67 44 L 49 44 C 48.433594 44 48 43.566406 48 43 L 48 31 C 48 30.433594 48.433594 30 49 30 Z M 22 32 C 21.449219 32 21 32.449219 21 33 C 21 33.550781 21.449219 34 22 34 C 22.550781 34 23 33.550781 23 33 C 23 32.449219 22.550781 32 22 32 Z M 52 32 C 51.449219 32 51 32.449219 51 33 C 51 33.550781 51.449219 34 52 34 C 52.550781 34 53 33.550781 53 33 C 53 32.449219 52.550781 32 52 32 Z M 22 36 C 21.449219 36 21 36.449219 21 37 C 21 37.550781 21.449219 38 22 38 C 22.550781 38 23 37.550781 23 37 C 23 36.449219 22.550781 36 22 36 Z M 26 36 C 25.449219 36 25 36.449219 25 37 C 25 37.550781 25.449219 38 26 38 C 26.550781 38 27 37.550781 27 37 C 27 36.449219 26.550781 36 26 36 Z M 30 36 C 29.449219 36 29 36.449219 29 37 C 29 37.550781 29.449219 38 30 38 C 30.550781 38 31 37.550781 31 37 C 31 36.449219 30.550781 36 30 36 Z M 34 36 C 33.449219 36 33 36.449219 33 37 C 33 37.550781 33.449219 38 34 38 C 34.550781 38 35 37.550781 35 37 C 35 36.449219 34.550781 36 34 36 Z M 38 36 C 37.449219 36 37 36.449219 37 37 C 37 37.550781 37.449219 38 38 38 C 38.550781 38 39 37.550781 39 37 C 39 36.449219 38.550781 36 38 36 Z M 42 36 C 41.449219 36 41 36.449219 41 37 C 41 37.550781 41.449219 38 42 38 C 42.550781 38 43 37.550781 43 37 C 43 36.449219 42.550781 36 42 36 Z M 52 36 C 51.449219 36 51 36.449219 51 37 C 51 37.550781 51.449219 38 52 38 C 52.550781 38 53 37.550781 53 37 C 53 36.449219 52.550781 36 52 36 Z M 22 40 C 21.449219 40 21 40.449219 21 41 C 21 41.550781 21.449219 42 22 42 C 22.550781 42 23 41.550781 23 41 C 23 40.449219 22.550781 40 22 40 Z M 52 40 C 51.449219 40 51 40.449219 51 41 C 51 41.550781 51.449219 42 52 42 C 52.550781 42 53 41.550781 53 41 C 53 40.449219 52.550781 40 52 40 Z M 22 44 C 21.449219 44 21 44.449219 21 45 C 21 45.550781 21.449219 46 22 46 C 22.550781 46 23 45.550781 23 45 C 23 44.449219 22.550781 44 22 44 Z M 22 48 C 21.449219 48 21 48.449219 21 49 C 21 49.550781 21.449219 50 22 50 C 22.550781 50 23 49.550781 23 49 C 23 48.449219 22.550781 48 22 48 Z M 22 52 C 21.449219 52 21 52.449219 21 53 C 21 53.550781 21.449219 54 22 54 C 22.550781 54 23 53.550781 23 53 C 23 52.449219 22.550781 52 22 52 Z M 49 52 C 47.355469 52 46 53.355469 46 55 L 46 60 C 45.449219 60 45 60.449219 45 61 C 45 61.550781 45.449219 62 46 62 L 46 67 C 46 68.644531 47.355469 70 49 70 L 67 70 C 68.644531 70 70 68.644531 70 67 L 70 55 C 70 53.355469 68.644531 52 67 52 Z M 49 54 L 67 54 C 67.566406 54 68 54.433594 68 55 L 68 67 C 68 67.566406 67.566406 68 67 68 L 49 68 C 48.433594 68 48 67.566406 48 67 L 48 55 C 48 54.433594 48.433594 54 49 54 Z M 22 56 C 21.449219 56 21 56.449219 21 57 C 21 57.550781 21.449219 58 22 58 C 22.550781 58 23 57.550781 23 57 C 23 56.449219 22.550781 56 22 56 Z M 52 56 C 51.449219 56 51 56.449219 51 57 C 51 57.550781 51.449219 58 52 58 C 52.550781 58 53 57.550781 53 57 C 53 56.449219 52.550781 56 52 56 Z M 22 60 C 21.449219 60 21 60.449219 21 61 C 21 61.550781 21.449219 62 22 62 C 22.550781 62 23 61.550781 23 61 C 23 60.449219 22.550781 60 22 60 Z M 26 60 C 25.449219 60 25 60.449219 25 61 C 25 61.550781 25.449219 62 26 62 C 26.550781 62 27 61.550781 27 61 C 27 60.449219 26.550781 60 26 60 Z M 30 60 C 29.449219 60 29 60.449219 29 61 C 29 61.550781 29.449219 62 30 62 C 30.550781 62 31 61.550781 31 61 C 31 60.449219 30.550781 60 30 60 Z M 34 60 C 33.449219 60 33 60.449219 33 61 C 33 61.550781 33.449219 62 34 62 C 34.550781 62 35 61.550781 35 61 C 35 60.449219 34.550781 60 34 60 Z M 38 60 C 37.449219 60 37 60.449219 37 61 C 37 61.550781 37.449219 62 38 62 C 38.550781 62 39 61.550781 39 61 C 39 60.449219 38.550781 60 38 60 Z M 42 60 C 41.449219 60 41 60.449219 41 61 C 41 61.550781 41.449219 62 42 62 C 42.550781 62 43 61.550781 43 61 C 43 60.449219 42.550781 60 42 60 Z M 52 60 C 51.449219 60 51 60.449219 51 61 C 51 61.550781 51.449219 62 52 62 C 52.550781 62 53 61.550781 53 61 C 53 60.449219 52.550781 60 52 60 Z M 52 64 C 51.449219 64 51 64.449219 51 65 C 51 65.550781 51.449219 66 52 66 C 52.550781 66 53 65.550781 53 65 C 53 64.449219 52.550781 64 52 64 Z"/></svg>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="128pt" height="128pt" viewBox="0 0 128 128" version="1.1">
<g id="surface1">
<path style=" stroke:none;fill-rule:nonzero;fill:#FFFFFF;fill-opacity:1;" d="M 40.800781 32.5 C 40.800781 27.085938 36.5 22.699219 31.199219 22.699219 C 25.898438 22.699219 21.601563 27.085938 21.601563 32.5 C 21.601563 37.914063 25.898438 42.300781 31.199219 42.300781 C 36.5 42.300781 40.800781 37.914063 40.800781 32.5 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:#FFFFFF;fill-opacity:1;" d="M 73.601563 32.5 C 73.601563 27.085938 69.300781 22.699219 64 22.699219 C 58.699219 22.699219 54.398438 27.085938 54.398438 32.5 C 54.398438 37.914063 58.699219 42.300781 64 42.300781 C 69.300781 42.300781 73.601563 37.914063 73.601563 32.5 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:#FFFFFF;fill-opacity:1;" d="M 40.800781 95.5 C 40.800781 90.085938 36.5 85.699219 31.199219 85.699219 C 25.898438 85.699219 21.601563 90.085938 21.601563 95.5 C 21.601563 100.914063 25.898438 105.300781 31.199219 105.300781 C 36.5 105.300781 40.800781 100.914063 40.800781 95.5 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:#FFFFFF;fill-opacity:1;" d="M 73.601563 95.5 C 73.601563 90.085938 69.300781 85.699219 64 85.699219 C 58.699219 85.699219 54.398438 90.085938 54.398438 95.5 C 54.398438 100.914063 58.699219 105.300781 64 105.300781 C 69.300781 105.300781 73.601563 100.914063 73.601563 95.5 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:#FFFFFF;fill-opacity:1;" d="M 106.398438 32.5 C 106.398438 27.085938 102.101563 22.699219 96.800781 22.699219 C 91.5 22.699219 87.199219 27.085938 87.199219 32.5 C 87.199219 37.914063 91.5 42.300781 96.800781 42.300781 C 102.101563 42.300781 106.398438 37.914063 106.398438 32.5 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:#454B54;fill-opacity:1;" d="M 31.199219 45.300781 C 24.199219 45.300781 18.601563 39.601563 18.601563 32.5 C 18.601563 25.398438 24.300781 19.699219 31.199219 19.699219 C 38.101563 19.699219 43.800781 25.398438 43.800781 32.5 C 43.898438 39.5 38.199219 45.300781 31.199219 45.300781 Z M 31.199219 25.699219 C 27.5 25.699219 24.601563 28.699219 24.601563 32.5 C 24.601563 36.199219 27.601563 39.300781 31.199219 39.300781 C 34.800781 39.300781 37.800781 36.300781 37.800781 32.5 C 37.898438 28.699219 34.898438 25.699219 31.199219 25.699219 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:#454B54;fill-opacity:1;" d="M 64 45.300781 C 57 45.300781 51.398438 39.601563 51.398438 32.5 C 51.398438 25.398438 57.101563 19.699219 64 19.699219 C 71 19.699219 76.601563 25.398438 76.601563 32.5 C 76.601563 39.5 71 45.300781 64 45.300781 Z M 64 25.699219 C 60.300781 25.699219 57.398438 28.699219 57.398438 32.5 C 57.398438 36.199219 60.398438 39.300781 64 39.300781 C 67.699219 39.300781 70.601563 36.300781 70.601563 32.5 C 70.601563 28.699219 67.699219 25.699219 64 25.699219 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:#454B54;fill-opacity:1;" d="M 31.199219 108.300781 C 24.199219 108.300781 18.601563 102.601563 18.601563 95.5 C 18.601563 88.398438 24.300781 82.699219 31.199219 82.699219 C 38.101563 82.699219 43.800781 88.398438 43.800781 95.5 C 43.898438 102.601563 38.199219 108.300781 31.199219 108.300781 Z M 31.199219 88.699219 C 27.5 88.699219 24.601563 91.699219 24.601563 95.5 C 24.601563 99.199219 27.601563 102.300781 31.199219 102.300781 C 34.800781 102.300781 37.800781 99.300781 37.800781 95.5 C 37.898438 91.800781 34.898438 88.699219 31.199219 88.699219 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:#454B54;fill-opacity:1;" d="M 64 108.300781 C 57 108.300781 51.398438 102.601563 51.398438 95.5 C 51.398438 88.398438 57.101563 82.699219 64 82.699219 C 71 82.699219 76.601563 88.398438 76.601563 95.5 C 76.601563 102.601563 71 108.300781 64 108.300781 Z M 64 88.699219 C 60.300781 88.699219 57.398438 91.699219 57.398438 95.5 C 57.398438 99.199219 60.398438 102.300781 64 102.300781 C 67.699219 102.300781 70.601563 99.300781 70.601563 95.5 C 70.601563 91.800781 67.699219 88.699219 64 88.699219 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:#454B54;fill-opacity:1;" d="M 96.800781 45.300781 C 89.800781 45.300781 84.199219 39.601563 84.199219 32.5 C 84.199219 25.398438 89.898438 19.699219 96.800781 19.699219 C 103.800781 19.699219 109.398438 25.398438 109.398438 32.5 C 109.398438 39.5 103.800781 45.300781 96.800781 45.300781 Z M 96.800781 25.699219 C 93.101563 25.699219 90.199219 28.699219 90.199219 32.5 C 90.199219 36.199219 93.199219 39.300781 96.800781 39.300781 C 100.5 39.300781 103.398438 36.300781 103.398438 32.5 C 103.398438 28.699219 100.5 25.699219 96.800781 25.699219 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:#454B54;fill-opacity:1;" d="M 31.199219 88.699219 C 29.5 88.699219 28.199219 87.398438 28.199219 85.699219 L 28.199219 42.300781 C 28.199219 40.601563 29.5 39.300781 31.199219 39.300781 C 32.898438 39.300781 34.199219 40.601563 34.199219 42.300781 L 34.199219 85.800781 C 34.199219 87.398438 32.898438 88.699219 31.199219 88.699219 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:#454B54;fill-opacity:1;" d="M 64 88.699219 C 62.300781 88.699219 61 87.398438 61 85.699219 L 61 42.300781 C 61 40.601563 62.300781 39.300781 64 39.300781 C 65.699219 39.300781 67 40.601563 67 42.300781 L 67 85.800781 C 67 87.398438 65.699219 88.699219 64 88.699219 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:#454B54;fill-opacity:1;" d="M 96.800781 67 L 31.199219 67 C 29.5 67 28.199219 65.699219 28.199219 64 C 28.199219 62.300781 29.5 61 31.199219 61 L 93.800781 61 L 93.800781 42.300781 C 93.800781 40.601563 95.101563 39.300781 96.800781 39.300781 C 98.5 39.300781 99.800781 40.601563 99.800781 42.300781 L 99.800781 64 C 99.800781 65.699219 98.398438 67 96.800781 67 Z "/>
</g>
</svg>
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="80pt" height="80pt" viewBox="0 0 80 80" version="1.1">
<defs>
<linearGradient id="linear0" gradientUnits="userSpaceOnUse" x1="32" y1="4.6686" x2="32" y2="58.1697" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#1A6DFF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#C822FF;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linear1" gradientUnits="userSpaceOnUse" x1="32" y1="16.3353" x2="32" y2="47.0024" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#6DC7FF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#E6ABFF;stop-opacity:1;"/>
</linearGradient>
</defs>
<g id="surface1">
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear0);" d="M 67.371094 72.496094 C 66.796875 72.496094 66.214844 72.367188 65.667969 72.097656 L 41.71875 60.269531 C 40.628906 59.730469 39.375 59.730469 38.28125 60.269531 L 14.332031 72.097656 C 12.867188 72.820313 11.15625 72.550781 9.976563 71.410156 C 8.75 70.226563 8.410156 68.453125 9.113281 66.886719 L 34.097656 11.375 C 35.171875 8.984375 37.433594 7.503906 40.003906 7.503906 C 42.570313 7.503906 44.832031 8.984375 45.910156 11.375 L 70.890625 66.886719 C 71.59375 68.453125 71.253906 70.226563 70.027344 71.410156 C 69.285156 72.125 68.335938 72.496094 67.371094 72.496094 Z M 66.773438 69.855469 C 67.546875 70.242188 68.128906 69.765625 68.289063 69.613281 C 68.652344 69.261719 68.929688 68.628906 68.605469 67.914063 L 43.625 12.398438 C 42.949219 10.898438 41.59375 10.003906 40 10.003906 C 38.40625 10.003906 37.050781 10.898438 36.375 12.398438 L 11.394531 67.910156 C 11.070313 68.628906 11.347656 69.261719 11.710938 69.609375 C 11.871094 69.765625 12.453125 70.238281 13.226563 69.855469 L 37.171875 58.027344 C 38.972656 57.140625 41.03125 57.140625 42.828125 58.027344 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear1);" d="M 55.734375 58.585938 L 41.363281 51.488281 C 40.5 51.0625 39.5 51.0625 38.636719 51.488281 L 24.265625 58.585938 C 22.933594 59.246094 21.53125 57.824219 22.152344 56.441406 L 37.140625 23.132813 C 38.269531 20.625 41.734375 20.625 42.859375 23.132813 L 57.847656 56.441406 C 58.46875 57.824219 57.066406 59.246094 55.734375 58.585938 Z "/>
</g>
</svg>
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="80pt" height="80pt" viewBox="0 0 80 80" version="1.1">
<defs>
<linearGradient id="linear0" gradientUnits="userSpaceOnUse" x1="47" y1="40.1667" x2="47" y2="47.5019" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#6DC7FF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#E6ABFF;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linear1" gradientUnits="userSpaceOnUse" x1="27" y1="8.375" x2="27" y2="53.7502" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#1A6DFF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#C822FF;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linear2" gradientUnits="userSpaceOnUse" x1="47" y1="8.375" x2="47" y2="53.7502" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#1A6DFF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#C822FF;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linear3" gradientUnits="userSpaceOnUse" x1="47" y1="8.375" x2="47" y2="53.7502" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#1A6DFF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#C822FF;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linear4" gradientUnits="userSpaceOnUse" x1="27" y1="8.375" x2="27" y2="53.7502" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#1A6DFF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#C822FF;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linear5" gradientUnits="userSpaceOnUse" x1="27" y1="8.375" x2="27" y2="53.7502" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#1A6DFF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#C822FF;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linear6" gradientUnits="userSpaceOnUse" x1="23.5" y1="8.375" x2="23.5" y2="53.7502" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#1A6DFF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#C822FF;stop-opacity:1;"/>
</linearGradient>
</defs>
<g id="surface1">
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear0);" d="M 62.5 55 C 62.5 57.070313 60.820313 58.75 58.75 58.75 C 56.679688 58.75 55 57.070313 55 55 C 55 52.929688 56.679688 51.25 58.75 51.25 C 60.820313 51.25 62.5 52.929688 62.5 55 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear1);" d="M 10 52.5 L 10 15 C 10 14.308594 10.5625 13.75 11.25 13.75 L 56.25 13.75 C 56.9375 13.75 57.5 14.308594 57.5 15 L 57.5 38.75 L 60 38.75 L 60 15 C 60 12.933594 58.316406 11.25 56.25 11.25 L 11.25 11.25 C 9.183594 11.25 7.5 12.933594 7.5 15 L 7.5 57.5 C 7.5 59.566406 9.183594 61.25 11.25 61.25 L 42.5 61.25 L 42.5 58.75 L 11.25 58.75 C 10.5625 58.75 10 58.191406 10 57.5 L 10 56.019531 C 10.390625 56.160156 10.808594 56.25 11.25 56.25 L 42.5 56.25 L 42.5 53.75 L 11.25 53.75 C 10.5625 53.75 10 53.191406 10 52.5 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear2);" d="M 70 51.25 L 69.394531 51.25 C 69.253906 50.8125 69.09375 50.457031 68.921875 50.132813 L 69.359375 49.695313 C 70.332031 48.722656 70.332031 47.132813 69.359375 46.160156 L 67.589844 44.390625 C 66.644531 43.449219 65 43.449219 64.054688 44.390625 L 63.59375 44.855469 C 63.234375 44.683594 62.871094 44.53125 62.5 44.402344 L 62.5 43.75 C 62.5 42.371094 61.378906 41.25 60 41.25 L 57.5 41.25 C 56.121094 41.25 55 42.371094 55 43.75 L 55 44.402344 C 54.628906 44.53125 54.265625 44.683594 53.90625 44.855469 L 53.445313 44.390625 C 52.5 43.449219 50.851563 43.449219 49.910156 44.390625 L 48.140625 46.160156 C 47.167969 47.132813 47.167969 48.722656 48.140625 49.695313 L 48.578125 50.132813 C 48.40625 50.457031 48.246094 50.8125 48.105469 51.25 L 47.5 51.25 C 46.121094 51.25 45 52.371094 45 53.75 L 45 56.25 C 45 57.628906 46.121094 58.75 47.5 58.75 L 48.105469 58.75 C 48.246094 59.1875 48.40625 59.542969 48.578125 59.867188 L 48.140625 60.304688 C 47.671875 60.777344 47.410156 61.40625 47.410156 62.074219 C 47.410156 62.742188 47.671875 63.367188 48.140625 63.839844 L 49.910156 65.609375 C 50.882813 66.578125 52.46875 66.582031 53.445313 65.609375 L 53.90625 65.144531 C 54.261719 65.316406 54.628906 65.464844 55 65.597656 L 55 66.25 C 55 67.628906 56.121094 68.75 57.5 68.75 L 60 68.75 C 61.378906 68.75 62.5 67.628906 62.5 66.25 L 62.5 65.597656 C 62.871094 65.464844 63.234375 65.3125 63.589844 65.144531 L 64.054688 65.609375 C 65.027344 66.578125 66.613281 66.582031 67.585938 65.609375 L 69.355469 63.839844 C 70.332031 62.863281 70.332031 61.277344 69.355469 60.304688 L 68.921875 59.867188 C 69.09375 59.542969 69.253906 59.1875 69.394531 58.75 L 70 58.75 C 71.378906 58.75 72.5 57.628906 72.5 56.25 L 72.5 53.75 C 72.5 52.371094 71.378906 51.25 70 51.25 Z M 70 56.25 L 67.386719 56.25 L 67.195313 57.265625 C 67.015625 58.195313 66.785156 58.589844 66.398438 59.238281 L 65.789063 60.269531 L 67.589844 62.070313 L 65.820313 63.835938 L 64.019531 62.039063 L 63.1875 62.53125 C 62.484375 62.945313 61.730469 63.257813 60.9375 63.460938 L 60 63.703125 L 60 66.25 L 57.5 66.25 L 57.5 63.703125 L 56.5625 63.460938 C 55.769531 63.257813 55.015625 62.945313 54.3125 62.53125 L 53.480469 62.039063 L 51.679688 63.839844 L 49.910156 62.070313 L 51.710938 60.269531 L 51.101563 59.242188 C 50.714844 58.589844 50.480469 58.199219 50.304688 57.269531 L 50.113281 56.25 L 47.5 56.25 L 47.5 53.75 L 50.113281 53.75 L 50.304688 52.734375 C 50.484375 51.800781 50.71875 51.40625 51.105469 50.757813 L 51.710938 49.730469 L 49.910156 47.929688 L 51.679688 46.164063 L 53.480469 47.960938 L 54.3125 47.46875 C 55.015625 47.054688 55.769531 46.742188 56.5625 46.539063 L 57.5 46.296875 L 57.5 43.75 L 60 43.75 L 60 46.296875 L 60.9375 46.539063 C 61.730469 46.742188 62.484375 47.054688 63.1875 47.46875 L 64.019531 47.960938 L 65.820313 46.160156 L 67.585938 47.929688 L 65.789063 49.730469 L 66.394531 50.753906 C 66.78125 51.40625 67.015625 51.800781 67.191406 52.730469 L 67.386719 53.75 L 70 53.75 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear3);" d="M 58.75 50 C 55.992188 50 53.75 52.242188 53.75 55 C 53.75 57.757813 55.992188 60 58.75 60 C 61.507813 60 63.75 57.757813 63.75 55 C 63.75 52.242188 61.507813 50 58.75 50 Z M 58.75 57.5 C 57.371094 57.5 56.25 56.378906 56.25 55 C 56.25 53.621094 57.371094 52.5 58.75 52.5 C 60.128906 52.5 61.25 53.621094 61.25 55 C 61.25 56.378906 60.128906 57.5 58.75 57.5 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear4);" d="M 55 22.5 L 26.074219 22.5 C 25.515625 20.351563 23.574219 18.75 21.25 18.75 C 18.925781 18.75 16.984375 20.351563 16.425781 22.5 L 12.5 22.5 L 12.5 25 L 16.425781 25 C 16.984375 27.148438 18.925781 28.75 21.25 28.75 C 23.574219 28.75 25.515625 27.148438 26.074219 25 L 55 25 Z M 21.25 26.25 C 19.871094 26.25 18.75 25.128906 18.75 23.75 C 18.75 22.371094 19.871094 21.25 21.25 21.25 C 22.628906 21.25 23.75 22.371094 23.75 23.75 C 23.75 25.128906 22.628906 26.25 21.25 26.25 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear5);" d="M 51.074219 35 L 55 35 L 55 32.5 L 51.074219 32.5 C 50.515625 30.351563 48.574219 28.75 46.25 28.75 C 43.925781 28.75 41.984375 30.351563 41.425781 32.5 L 12.5 32.5 L 12.5 35 L 41.425781 35 C 41.984375 37.148438 43.925781 38.75 46.25 38.75 C 48.574219 38.75 50.515625 37.148438 51.074219 35 Z M 43.75 33.75 C 43.75 32.371094 44.871094 31.25 46.25 31.25 C 47.628906 31.25 48.75 32.371094 48.75 33.75 C 48.75 35.128906 47.628906 36.25 46.25 36.25 C 44.871094 36.25 43.75 35.128906 43.75 33.75 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear6);" d="M 32.5 38.75 C 30.175781 38.75 28.234375 40.351563 27.675781 42.5 L 12.5 42.5 L 12.5 45 L 27.675781 45 C 28.234375 47.148438 30.175781 48.75 32.5 48.75 C 34.824219 48.75 36.765625 47.148438 37.324219 45 L 46.25 45 L 46.25 42.5 L 37.324219 42.5 C 36.765625 40.351563 34.824219 38.75 32.5 38.75 Z M 32.5 46.25 C 31.121094 46.25 30 45.128906 30 43.75 C 30 42.371094 31.121094 41.25 32.5 41.25 C 33.878906 41.25 35 42.371094 35 43.75 C 35 45.128906 33.878906 46.25 32.5 46.25 Z "/>
</g>
</svg>
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="80pt" height="80pt" viewBox="0 0 80 80" version="1.1">
<defs>
<linearGradient id="linear0" gradientUnits="userSpaceOnUse" x1="32" y1="25" x2="32" y2="55" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#6DC7FF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#E6ABFF;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linear1" gradientUnits="userSpaceOnUse" x1="32" y1="2" x2="32" y2="62.5129" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#1A6DFF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#C822FF;stop-opacity:1;"/>
</linearGradient>
</defs>
<g id="surface1">
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear0);" d="M 40 31.25 C 29.660156 31.25 21.25 39.660156 21.25 50 C 21.25 60.339844 29.660156 68.75 40 68.75 C 50.339844 68.75 58.75 60.339844 58.75 50 C 58.75 39.660156 50.339844 31.25 40 31.25 Z M 42.5 53.222656 L 42.5 57.5 C 42.5 58.882813 41.382813 60 40 60 C 38.617188 60 37.5 58.882813 37.5 57.5 L 37.5 53.222656 C 35.296875 52.257813 33.75 50.0625 33.75 47.5 C 33.75 44.046875 36.546875 41.25 40 41.25 C 43.453125 41.25 46.25 44.046875 46.25 47.5 C 46.25 50.0625 44.703125 52.257813 42.5 53.222656 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear1);" d="M 53.75 27.679688 L 53.75 22.5 C 53.75 21.121094 52.628906 20 51.25 20 L 46.25 20 C 44.871094 20 43.75 21.121094 43.75 22.5 L 43.75 24.050781 C 42.519531 23.871094 41.277344 23.75 40 23.75 C 38.722656 23.75 37.480469 23.871094 36.25 24.050781 L 36.25 22.5 C 36.25 21.121094 35.128906 20 33.75 20 L 32.5 20 L 32.5 13.75 C 32.5 9.613281 35.863281 6.25 40 6.25 C 44.136719 6.25 47.5 9.613281 47.5 13.75 L 47.5 15 L 50 15 L 50 13.75 C 50 8.234375 45.515625 3.75 40 3.75 C 34.484375 3.75 30 8.234375 30 13.75 L 30 20 L 28.75 20 C 27.371094 20 26.25 21.121094 26.25 22.5 L 26.25 27.679688 C 18.765625 32.3125 13.75 40.570313 13.75 50 C 13.75 64.476563 25.523438 76.25 40 76.25 C 54.476563 76.25 66.25 64.476563 66.25 50 C 66.25 40.570313 61.234375 32.3125 53.75 27.679688 Z M 46.25 24.535156 L 46.25 22.5 L 51.25 22.5 L 51.25 26.320313 C 50.457031 25.941406 49.644531 25.601563 48.8125 25.304688 C 48.808594 25.300781 48.808594 25.300781 48.804688 25.300781 C 47.972656 25.003906 47.121094 24.746094 46.25 24.535156 Z M 28.75 22.5 L 33.75 22.5 L 33.75 24.535156 C 32.878906 24.746094 32.027344 25.003906 31.195313 25.300781 C 31.191406 25.304688 31.191406 25.304688 31.1875 25.304688 C 30.355469 25.605469 29.542969 25.941406 28.75 26.320313 Z M 40 73.75 C 26.902344 73.75 16.25 63.097656 16.25 50 C 16.25 36.902344 26.902344 26.25 40 26.25 C 53.097656 26.25 63.75 36.902344 63.75 50 C 63.75 63.097656 53.097656 73.75 40 73.75 Z "/>
</g>
</svg>
<svg fill="#000000" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 80 80" width="80px" height="80px"><path d="M 30.929688 14 C 22.714844 14 16.21875 22.375 16.21875 22.375 L 15.449219 23.335938 L 16.546875 23.890625 C 16.546875 23.890625 16.78125 23.976563 17.167969 24.558594 C 17.554688 25.140625 18 26.171875 18 28 C 18 30.347656 18.550781 32.59375 18.855469 33.65625 C 18.335938 34.113281 18 34.761719 18 35.5 C 18 36.089844 18.167969 36.546875 18.300781 37.003906 C 18.371094 37.230469 18.4375 37.445313 18.480469 37.597656 C 18.519531 37.753906 18.527344 37.914063 18.527344 37.75 C 18.527344 39.007813 19.597656 40 20.839844 40 L 21.09375 40 C 21.25 43.167969 22.730469 45.976563 25 47.875 L 25 50.246094 C 23.714844 50.625 20.917969 51.511719 18.082031 52.820313 C 16.160156 53.707031 14.214844 54.78125 12.695313 56.074219 C 11.175781 57.367188 10 58.945313 10 60.832031 L 10 66 L 54 66 L 54 60.832031 C 54 58.945313 52.824219 57.367188 51.304688 56.074219 C 49.785156 54.78125 47.839844 53.707031 45.917969 52.820313 C 43.082031 51.511719 40.285156 50.625 39 50.246094 L 39 47.875 C 41.269531 45.976563 42.75 43.167969 42.90625 40 L 43.160156 40 C 44.402344 40 45.472656 39.007813 45.472656 37.75 C 45.472656 37.914063 45.480469 37.753906 45.519531 37.597656 C 45.5625 37.445313 45.628906 37.230469 45.695313 37.003906 C 45.832031 36.546875 45.996094 36.09375 46 35.5 C 46 34.734375 45.632813 34.0625 45.082031 33.609375 C 45.246094 32.757813 46 28.761719 46 26 C 46 22.945313 44.777344 20.640625 43.167969 19.167969 C 41.703125 17.824219 39.988281 17.207031 38.457031 17.09375 C 38.253906 16.804688 37.996094 16.339844 37.011719 15.671875 C 35.753906 14.816406 33.765625 14 30.929688 14 Z M 30.929688 16 C 33.386719 16 34.9375 16.683594 35.890625 17.328125 C 36.839844 17.972656 37.140625 18.511719 37.140625 18.511719 L 37.429688 19 L 38 19 C 39.019531 19 40.585938 19.511719 41.816406 20.640625 C 43.046875 21.773438 44 23.464844 44 26 C 44 28.25 43.34375 31.949219 43.148438 33.03125 C 43.078125 33.054688 43.042969 33.082031 43 33.109375 L 43 30.832031 C 43 27.949219 41.867188 25.957031 40.722656 24.753906 C 39.582031 23.550781 38.363281 23.066406 38.363281 23.066406 L 37.730469 22.820313 L 37.265625 23.320313 C 37.265625 23.320313 36.714844 23.933594 35.425781 24.617188 C 34.140625 25.300781 32.1875 26 29.5 26 C 28 26 26 26.4375 24.242188 27.574219 C 22.546875 28.667969 21.132813 30.542969 21.035156 33.113281 C 20.976563 33.078125 20.90625 33.042969 20.761719 33.019531 C 20.484375 32.019531 20 29.996094 20 28 C 20 25.839844 19.445313 24.371094 18.832031 23.453125 C 18.640625 23.164063 18.597656 23.226563 18.40625 23.035156 C 19.28125 22.027344 24.660156 16 30.929688 16 Z M 38.003906 25.203125 C 38.253906 25.320313 38.613281 25.4375 39.277344 26.132813 C 40.132813 27.03125 41 28.457031 41 30.832031 L 41 36.527344 L 42.515625 35.609375 C 42.820313 35.425781 43.132813 35.242188 43.371094 35.113281 C 43.421875 35.085938 43.445313 35.078125 43.488281 35.054688 C 43.777344 35.097656 44 35.265625 44 35.5 C 44 35.511719 43.90625 36.007813 43.777344 36.4375 C 43.714844 36.652344 43.648438 36.867188 43.59375 37.074219 C 43.535156 37.277344 43.472656 37.410156 43.472656 37.75 C 43.472656 37.871094 43.371094 38 43.160156 38 L 41 38 L 41 39.472656 C 41 43.910156 37.800781 47.574219 33.589844 48.324219 L 33.304688 48.375 L 33.09375 48.570313 C 32.792969 48.839844 32.421875 49 32 49 C 31.578125 49 31.207031 48.839844 30.90625 48.570313 L 30.695313 48.375 L 30.410156 48.324219 C 26.199219 47.574219 23 43.914063 23 39.472656 L 23 38 L 20.839844 38 C 20.628906 38 20.527344 37.871094 20.527344 37.75 C 20.527344 37.410156 20.464844 37.277344 20.40625 37.074219 C 20.351563 36.867188 20.285156 36.652344 20.21875 36.4375 C 20.09375 36.007813 20 35.511719 20 35.5 C 20 35.269531 20.222656 35.097656 20.511719 35.054688 C 20.554688 35.078125 20.582031 35.085938 20.632813 35.113281 C 20.867188 35.242188 21.179688 35.425781 21.484375 35.609375 L 23 36.523438 L 23 33.375 C 23 31.355469 23.976563 30.121094 25.328125 29.25 C 26.679688 28.382813 28.425781 28 29.5 28 C 32.539063 28 34.832031 27.199219 36.367188 26.382813 C 37.429688 25.816406 37.660156 25.519531 38.003906 25.203125 Z M 49 32 L 49 34 L 70 34 L 70 32 Z M 27.621094 35.167969 C 26.792969 35.167969 26.121094 35.832031 26.121094 36.65625 C 26.117188 37.476563 26.789063 38.140625 27.621094 38.140625 C 28.449219 38.140625 29.121094 37.476563 29.121094 36.65625 C 29.117188 35.832031 28.445313 35.167969 27.621094 35.167969 Z M 36.621094 35.167969 C 35.792969 35.167969 35.121094 35.832031 35.121094 36.65625 C 35.117188 37.476563 35.789063 38.140625 36.621094 38.140625 C 37.449219 38.140625 38.121094 37.476563 38.121094 36.65625 C 38.117188 35.832031 37.445313 35.167969 36.621094 35.167969 Z M 48 40 L 48 42 L 70 42 L 70 40 Z M 45 48 L 45 50 L 70 50 L 70 48 Z M 27 49.199219 C 27.871094 49.648438 28.804688 49.992188 29.796875 50.195313 C 30.40625 50.671875 31.15625 51 32 51 C 32.84375 51 33.59375 50.671875 34.203125 50.195313 C 35.195313 49.992188 36.128906 49.648438 37 49.199219 L 37 52.648438 C 36.851563 52.90625 35.597656 55 32 55 C 28.402344 55 27.148438 52.90625 27 52.648438 Z M 25 52.34375 L 25 53.265625 L 25.128906 53.496094 C 25.128906 53.496094 27.246094 57 32 57 C 36.753906 57 38.871094 53.496094 38.871094 53.496094 L 39 53.265625 L 39 52.34375 C 40.375 52.765625 42.683594 53.53125 45.082031 54.636719 C 46.910156 55.480469 48.714844 56.5 50.007813 57.597656 C 51.300781 58.695313 52 59.800781 52 60.832031 L 52 64 L 12 64 L 12 60.832031 C 12 59.800781 12.699219 58.695313 13.992188 57.597656 C 15.285156 56.5 17.089844 55.480469 18.917969 54.636719 C 21.316406 53.53125 23.625 52.765625 25 52.34375 Z M 16 60 C 15.449219 60 15 60.449219 15 61 C 15 61.550781 15.449219 62 16 62 C 16.550781 62 17 61.550781 17 61 C 17 60.449219 16.550781 60 16 60 Z M 20 60 C 19.449219 60 19 60.449219 19 61 C 19 61.550781 19.449219 62 20 62 C 20.550781 62 21 61.550781 21 61 C 21 60.449219 20.550781 60 20 60 Z M 24 60 C 23.449219 60 23 60.449219 23 61 C 23 61.550781 23.449219 62 24 62 C 24.550781 62 25 61.550781 25 61 C 25 60.449219 24.550781 60 24 60 Z M 28 60 C 27.449219 60 27 60.449219 27 61 C 27 61.550781 27.449219 62 28 62 C 28.550781 62 29 61.550781 29 61 C 29 60.449219 28.550781 60 28 60 Z M 32 60 C 31.449219 60 31 60.449219 31 61 C 31 61.550781 31.449219 62 32 62 C 32.550781 62 33 61.550781 33 61 C 33 60.449219 32.550781 60 32 60 Z M 36 60 C 35.449219 60 35 60.449219 35 61 C 35 61.550781 35.449219 62 36 62 C 36.550781 62 37 61.550781 37 61 C 37 60.449219 36.550781 60 36 60 Z M 40 60 C 39.449219 60 39 60.449219 39 61 C 39 61.550781 39.449219 62 40 62 C 40.550781 62 41 61.550781 41 61 C 41 60.449219 40.550781 60 40 60 Z M 44 60 C 43.449219 60 43 60.449219 43 61 C 43 61.550781 43.449219 62 44 62 C 44.550781 62 45 61.550781 45 61 C 45 60.449219 44.550781 60 44 60 Z M 48 60 C 47.449219 60 47 60.449219 47 61 C 47 61.550781 47.449219 62 48 62 C 48.550781 62 49 61.550781 49 61 C 49 60.449219 48.550781 60 48 60 Z"/></svg>
\ No newline at end of file
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" width="96px" height="96px"><linearGradient id="K7gJwCzSKQrggg~9x8k6Ya" x1="29" x2="29" y1="5.5" y2="54.82" gradientUnits="userSpaceOnUse" spreadMethod="reflect"><stop offset="0" stop-color="#1a6dff"/><stop offset="1" stop-color="#c822ff"/></linearGradient><path fill="url(#K7gJwCzSKQrggg~9x8k6Ya)" d="M12,49V29c0-1.654,1.346-3,3-3h28c1.654,0,3,1.346,3,3v12h2V29c0-2.757-2.243-5-5-5h-3v-1 c0-1.654-1.346-3-3-3v-6c0-4.411-3.589-8-8-8s-8,3.589-8,8v6c-1.654,0-3,1.346-3,3v1h-3c-2.757,0-5,2.243-5,5v20 c0,2.757,2.243,5,5,5h23v-2H15C13.346,52,12,50.654,12,49z M38,23v1h-4v-1c0-0.552,0.448-1,1-1h2C37.552,22,38,22.448,38,23z M23,14 c0-3.309,2.691-6,6-6s6,2.691,6,6v6c-1.654,0-3,1.346-3,3v1h-6v-1c0-1.654-1.346-3-3-3V14z M20,23c0-0.552,0.448-1,1-1h2 c0.552,0,1,0.448,1,1v1h-4V23z"/><linearGradient id="K7gJwCzSKQrggg~9x8k6Yb" x1="45.001" x2="45.001" y1="5.5" y2="54.82" gradientUnits="userSpaceOnUse" spreadMethod="reflect"><stop offset="0" stop-color="#1a6dff"/><stop offset="1" stop-color="#c822ff"/></linearGradient><path fill="url(#K7gJwCzSKQrggg~9x8k6Yb)" d="M48.788 45.189L43.984 49.993 41.191 47.282 39.799 48.718 44.006 52.8 50.202 46.604z"/><linearGradient id="K7gJwCzSKQrggg~9x8k6Yc" x1="26" x2="26" y1="5.5" y2="54.82" gradientUnits="userSpaceOnUse" spreadMethod="reflect"><stop offset="0" stop-color="#1a6dff"/><stop offset="1" stop-color="#c822ff"/></linearGradient><path fill="url(#K7gJwCzSKQrggg~9x8k6Yc)" d="M15 48H37V50H15z"/><linearGradient id="K7gJwCzSKQrggg~9x8k6Yd" x1="19" x2="19" y1="5.5" y2="54.82" gradientUnits="userSpaceOnUse" spreadMethod="reflect"><stop offset="0" stop-color="#1a6dff"/><stop offset="1" stop-color="#c822ff"/></linearGradient><path fill="url(#K7gJwCzSKQrggg~9x8k6Yd)" d="M23,39c0-2.206-1.794-4-4-4s-4,1.794-4,4s1.794,4,4,4S23,41.206,23,39z M17,39 c0-1.103,0.897-2,2-2s2,0.897,2,2s-0.897,2-2,2S17,40.103,17,39z"/><linearGradient id="K7gJwCzSKQrggg~9x8k6Ye" x1="29" x2="29" y1="5.5" y2="54.82" gradientUnits="userSpaceOnUse" spreadMethod="reflect"><stop offset="0" stop-color="#1a6dff"/><stop offset="1" stop-color="#c822ff"/></linearGradient><path fill="url(#K7gJwCzSKQrggg~9x8k6Ye)" d="M29,35c-2.206,0-4,1.794-4,4s1.794,4,4,4s4-1.794,4-4S31.206,35,29,35z M29,41 c-1.103,0-2-0.897-2-2s0.897-2,2-2s2,0.897,2,2S30.103,41,29,41z"/><linearGradient id="K7gJwCzSKQrggg~9x8k6Yf" x1="39" x2="39" y1="5.5" y2="54.82" gradientUnits="userSpaceOnUse" spreadMethod="reflect"><stop offset="0" stop-color="#1a6dff"/><stop offset="1" stop-color="#c822ff"/></linearGradient><path fill="url(#K7gJwCzSKQrggg~9x8k6Yf)" d="M43,39c0-2.206-1.794-4-4-4s-4,1.794-4,4s1.794,4,4,4S43,41.206,43,39z M39,41 c-1.103,0-2-0.897-2-2s0.897-2,2-2s2,0.897,2,2S40.103,41,39,41z"/><linearGradient id="K7gJwCzSKQrggg~9x8k6Yg" x1="45" x2="45" y1="39.667" y2="58.252" gradientUnits="userSpaceOnUse" spreadMethod="reflect"><stop offset="0" stop-color="#6dc7ff"/><stop offset="1" stop-color="#e6abff"/></linearGradient><path fill="url(#K7gJwCzSKQrggg~9x8k6Yg)" d="M45,58c-4.963,0-9-4.037-9-9s4.037-9,9-9s9,4.037,9,9S49.963,58,45,58z M45,42 c-3.859,0-7,3.141-7,7s3.141,7,7,7s7-3.141,7-7S48.859,42,45,42z"/><linearGradient id="K7gJwCzSKQrggg~9x8k6Yh" x1="22" x2="22" y1="21.583" y2="24.172" gradientUnits="userSpaceOnUse" spreadMethod="reflect"><stop offset="0" stop-color="#6dc7ff"/><stop offset="1" stop-color="#e6abff"/></linearGradient><path fill="url(#K7gJwCzSKQrggg~9x8k6Yh)" d="M24,24h-4v-1c0-0.552,0.448-1,1-1h2c0.552,0,1,0.448,1,1V24z"/><linearGradient id="K7gJwCzSKQrggg~9x8k6Yi" x1="36" x2="36" y1="21.583" y2="24.172" gradientUnits="userSpaceOnUse" spreadMethod="reflect"><stop offset="0" stop-color="#6dc7ff"/><stop offset="1" stop-color="#e6abff"/></linearGradient><path fill="url(#K7gJwCzSKQrggg~9x8k6Yi)" d="M38,24h-4v-1c0-0.552,0.448-1,1-1h2c0.552,0,1,0.448,1,1V24z"/></svg>
\ No newline at end of file
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" width="96px" height="96px"><linearGradient id="AqlBogUJrrMJkaHfojlpXa" x1="32" x2="32" y1="10.447" y2="37.324" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#6dc7ff"/><stop offset="1" stop-color="#e6abff"/></linearGradient><path fill="url(#AqlBogUJrrMJkaHfojlpXa)" d="M38.629,26.457C38.746,25.906,39,24.469,39,23c0-5.499-2.776-10.347-7-13.227 c-4.224,2.88-7,7.728-7,13.227c0,1.469,0.254,2.906,0.371,3.457c-4.51,2.06-7.9,6.141-8.989,11.098C18.401,38.474,20.637,39,23,39 c3.339,0,6.436-1.024,8.999-2.774c-3.312-2.259-5.726-5.73-6.617-9.774c0,0,0,0,0,0c-0.001-0.003-0.001-0.004-0.001-0.006 c0,0.002,0.001,0.004,0.002,0.006c0.042-0.019,0.084-0.038,0.127-0.057C27.495,25.51,29.685,25,32,25s4.505,0.51,6.492,1.396 c0.042,0.019,0.084,0.037,0.127,0.057c0-0.002,0.001-0.004,0.002-0.006c-0.001,0.003-0.001,0.004-0.001,0.006c0,0,0,0,0,0 c-0.891,4.044-3.305,7.515-6.617,9.774C34.564,37.976,37.661,39,41,39c2.363,0,4.599-0.526,6.618-1.445 C46.529,32.598,43.139,28.517,38.629,26.457z"/><linearGradient id="AqlBogUJrrMJkaHfojlpXb" x1="32" x2="32" y1="9.936" y2="57.327" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#1a6dff"/><stop offset="1" stop-color="#c822ff"/></linearGradient><path fill="url(#AqlBogUJrrMJkaHfojlpXb)" d="M58,23c0-9.374-7.626-17-17-17c-3.307,0-6.386,0.964-9,2.604C29.386,6.964,26.307,6,23,6 C13.626,6,6,13.626,6,23c0,6.584,3.769,12.292,9.256,15.115C15.094,39.054,15,40.015,15,41c0,9.374,7.626,17,17,17s17-7.626,17-17 c0-0.984-0.102-1.943-0.263-2.881C54.228,35.297,58,29.587,58,23z M32,11.028c3.635,2.74,6,7.079,6,11.972 c0,0.696-0.065,1.376-0.158,2.047C36.019,24.376,34.054,24,32,24c-2.055,0-4.017,0.385-5.842,1.056C26.065,24.382,26,23.699,26,23 C26,18.108,28.365,13.768,32,11.028z M43,41c0,6.065-4.935,11-11,11s-11-4.935-11-11c0-0.376,0.023-0.753,0.061-1.128 C21.698,39.947,22.342,40,23,40c3.303,0,6.378-0.962,8.99-2.598C34.603,39.045,37.691,40,41,40c0.658,0,1.302-0.053,1.939-0.128 C42.977,40.247,43,40.624,43,41z M24.263,25.881c-2.882,1.481-5.273,3.77-6.91,6.553C14.072,30.462,12,26.873,12,23 c0-6.065,4.935-11,11-11c1.517,0,2.969,0.317,4.337,0.908C25.244,15.733,24,19.222,24,23C24,23.984,24.102,24.943,24.263,25.881z M24.725,27.893c0.984,3.268,2.934,6.114,5.506,8.231C28.087,37.315,25.624,38,23,38c-1.923,0-3.755-0.377-5.446-1.039 C18.644,33.073,21.266,29.82,24.725,27.893z M27.244,28.913c-0.262-0.609-0.496-1.233-0.677-1.879C28.254,26.375,30.082,26,32,26 c1.917,0,3.744,0.373,5.429,1.032c-0.182,0.646-0.39,1.282-0.652,1.891C33.731,27.722,30.294,27.718,27.244,28.913z M35.851,30.697 c-0.999,1.662-2.311,3.115-3.852,4.28c-1.541-1.164-2.846-2.62-3.844-4.283C30.626,29.778,33.384,29.78,35.851,30.697z M41,38 c-2.619,0-5.079-0.679-7.222-1.865c2.573-2.115,4.511-4.972,5.496-8.239c3.453,1.929,6.071,5.182,7.159,9.07 C44.746,37.625,42.918,38,41,38z M39.737,25.876C39.898,24.939,40,23.982,40,23c0-3.78-1.245-7.271-3.34-10.097 C38.025,12.318,39.502,12,41,12c6.065,0,11,4.935,11,11c0,3.867-2.051,7.441-5.357,9.425C45.006,29.644,42.617,27.357,39.737,25.876 z M15.724,36.107C11.123,33.542,8,28.631,8,23c0-8.271,6.729-15,15-15c2.619,0,5.08,0.678,7.225,1.862 c-0.549,0.451-1.065,0.939-1.553,1.453C26.916,10.463,24.965,10,23,10c-7.168,0-13,5.832-13,13c0,4.62,2.493,8.899,6.435,11.215 C16.166,34.83,15.921,35.457,15.724,36.107z M32,56c-8.271,0-15-6.729-15-15c0-0.7,0.049-1.388,0.142-2.062 c0.633,0.233,1.288,0.418,1.952,0.579C19.038,40.009,19,40.505,19,41c0,7.168,5.832,13,13,13s13-5.832,13-13 c0-0.495-0.038-0.99-0.094-1.483c0.659-0.159,1.308-0.342,1.936-0.573C46.935,39.618,47,40.301,47,41C47,49.271,40.271,56,32,56z M48.275,36.107c-0.196-0.65-0.44-1.278-0.709-1.892C51.538,31.885,54,27.613,54,23c0-7.168-5.832-13-13-13 c-1.969,0-3.904,0.472-5.663,1.326c-0.491-0.518-1.01-1.01-1.562-1.464C35.92,8.678,38.381,8,41,8c8.271,0,15,6.729,15,15 C56,28.632,52.877,33.543,48.275,36.107z"/></svg>
\ No newline at end of file
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- Generator: Adobe Illustrator 20.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="&#1057;&#1083;&#1086;&#1081;_1" x="0px" y="0px" viewBox="0 0 64 64" style="enable-background:new 0 0 64 64;" xml:space="preserve" width="96px" height="96px">
<linearGradient id="SVGID_1__44764" gradientUnits="userSpaceOnUse" x1="43" y1="28.8333" x2="43" y2="37.5036" spreadMethod="reflect">
<stop offset="0" style="stop-color:#6DC7FF"/>
<stop offset="1" style="stop-color:#E6ABFF"/>
</linearGradient>
<path style="fill:url(#SVGID_1__44764);" d="M47,33c0,2.21-1.79,4-4,4s-4-1.79-4-4c0-2.21,1.79-4,4-4C43,31.21,44.79,33,47,33z"/>
<linearGradient id="SVGID_2__44764" gradientUnits="userSpaceOnUse" x1="16" y1="36.8333" x2="16" y2="43.3275" spreadMethod="reflect">
<stop offset="0" style="stop-color:#6DC7FF"/>
<stop offset="1" style="stop-color:#E6ABFF"/>
</linearGradient>
<path style="fill:url(#SVGID_2__44764);" d="M20,42c0,0.552-0.448,1-1,1h-6c-0.552,0-1-0.448-1-1v-4c0-0.552,0.448-1,1-1h6 c0.552,0,1,0.448,1,1V42z"/>
<linearGradient id="SVGID_3__44764" gradientUnits="userSpaceOnUse" x1="32" y1="7.375" x2="32" y2="57.825" spreadMethod="reflect">
<stop offset="0" style="stop-color:#1A6DFF"/>
<stop offset="1" style="stop-color:#C822FF"/>
</linearGradient>
<path style="fill:url(#SVGID_3__44764);" d="M58,33c0-4.335-7.062-10.397-14-10.946V11c0-1.654-1.346-3-3-3H9c-1.654,0-3,1.346-3,3v38v4 c0,1.654,1.346,3,3,3h32c1.654,0,3-1.346,3-3v-4v-5.054C50.938,43.397,58,37.335,58,33z M41,54H9c-0.552,0-1-0.448-1-1v-1.184 C8.314,51.928,8.648,52,9,52h32c0.352,0,0.686-0.072,1-0.184V53C42,53.552,41.552,54,41,54z M41,50H9c-0.552,0-1-0.448-1-1V11 c0-0.552,0.448-1,1-1h32c0.552,0,1,0.448,1,1v11.054C35.062,22.603,28,28.665,28,33s7.062,10.397,14,10.946V49 C42,49.552,41.552,50,41,50z M43,42c-6.317,0-13-5.853-13-9s6.683-9,13-9s13,5.853,13,9S49.317,42,43,42z"/>
<linearGradient id="SVGID_4__44764" gradientUnits="userSpaceOnUse" x1="20" y1="7.375" x2="20" y2="57.825" spreadMethod="reflect">
<stop offset="0" style="stop-color:#1A6DFF"/>
<stop offset="1" style="stop-color:#C822FF"/>
</linearGradient>
<rect x="12" y="21" style="fill:url(#SVGID_4__44764);" width="16" height="2"/>
<linearGradient id="SVGID_5__44764" gradientUnits="userSpaceOnUse" x1="19" y1="7.375" x2="19" y2="57.825" spreadMethod="reflect">
<stop offset="0" style="stop-color:#1A6DFF"/>
<stop offset="1" style="stop-color:#C822FF"/>
</linearGradient>
<rect x="12" y="25" style="fill:url(#SVGID_5__44764);" width="14" height="2"/>
<linearGradient id="SVGID_6__44764" gradientUnits="userSpaceOnUse" x1="17" y1="7.375" x2="17" y2="57.825" spreadMethod="reflect">
<stop offset="0" style="stop-color:#1A6DFF"/>
<stop offset="1" style="stop-color:#C822FF"/>
</linearGradient>
<rect x="12" y="29" style="fill:url(#SVGID_6__44764);" width="10" height="2"/>
<linearGradient id="SVGID_7__44764" gradientUnits="userSpaceOnUse" x1="16" y1="7.375" x2="16" y2="57.825" spreadMethod="reflect">
<stop offset="0" style="stop-color:#1A6DFF"/>
<stop offset="1" style="stop-color:#C822FF"/>
</linearGradient>
<rect x="12" y="33" style="fill:url(#SVGID_7__44764);" width="8" height="2"/>
<linearGradient id="SVGID_8__44764" gradientUnits="userSpaceOnUse" x1="25" y1="7.375" x2="25" y2="57.825" spreadMethod="reflect">
<stop offset="0" style="stop-color:#1A6DFF"/>
<stop offset="1" style="stop-color:#C822FF"/>
</linearGradient>
<rect x="12" y="17" style="fill:url(#SVGID_8__44764);" width="26" height="2"/>
</svg>
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="80pt" height="80pt" viewBox="0 0 80 80" version="1.1">
<defs>
<linearGradient id="linear0" gradientUnits="userSpaceOnUse" x1="38" y1="25.5" x2="38" y2="32.51" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#6DC7FF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#E6ABFF;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linear1" gradientUnits="userSpaceOnUse" x1="32" y1="5.1667" x2="32" y2="60.1843" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#1A6DFF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#C822FF;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linear2" gradientUnits="userSpaceOnUse" x1="38" y1="5.1667" x2="38" y2="60.1843" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#1A6DFF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#C822FF;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linear3" gradientUnits="userSpaceOnUse" x1="18.5" y1="5.1667" x2="18.5" y2="60.1843" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#1A6DFF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#C822FF;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linear4" gradientUnits="userSpaceOnUse" x1="18.5" y1="5.1667" x2="18.5" y2="60.1843" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#1A6DFF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#C822FF;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linear5" gradientUnits="userSpaceOnUse" x1="18.5" y1="5.1667" x2="18.5" y2="60.1843" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#1A6DFF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#C822FF;stop-opacity:1;"/>
</linearGradient>
<linearGradient id="linear6" gradientUnits="userSpaceOnUse" x1="18.5" y1="5.1667" x2="18.5" y2="60.1843" spreadMethod="reflect" gradientTransform="matrix(1.25,0,0,1.25,0,0)">
<stop offset="0" style="stop-color:#1A6DFF;stop-opacity:1;"/>
<stop offset="1" style="stop-color:#C822FF;stop-opacity:1;"/>
</linearGradient>
</defs>
<g id="surface1">
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear0);" d="M 38.75 33.75 L 38.75 38.75 C 38.75 39.441406 39.308594 40 40 40 L 41.914063 40 C 42.285156 40 46.289063 35.453125 46.289063 35.453125 C 46.824219 34.808594 47.828125 34.863281 48.289063 35.558594 C 48.289063 35.558594 52.5 40 51.917969 40 L 55 40 C 55.691406 40 56.25 39.4375 56.25 38.75 L 56.25 33.75 C 56.25 33.058594 55.691406 32.5 55 32.5 L 40 32.5 C 39.308594 32.5 38.75 33.058594 38.75 33.75 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear1);" d="M 66.25 7.5 L 13.75 7.5 C 11.683594 7.5 10 9.183594 10 11.25 L 10 58.75 C 10 60.816406 11.683594 62.5 13.75 62.5 L 35 62.5 L 35 60 L 13.75 60 C 13.058594 60 12.5 59.441406 12.5 58.75 L 12.5 57.269531 C 12.890625 57.410156 13.308594 57.5 13.75 57.5 L 35 57.5 L 35 55 L 13.75 55 C 13.058594 55 12.5 54.441406 12.5 53.75 L 12.5 20 L 67.5 20 L 67.5 53.75 C 67.5 54.441406 66.941406 55 66.25 55 L 60 55 L 60 57.5 L 66.25 57.5 C 66.691406 57.5 67.109375 57.410156 67.5 57.269531 L 67.5 58.75 C 67.5 59.441406 66.941406 60 66.25 60 L 60 60 L 60 62.5 L 66.25 62.5 C 68.316406 62.5 70 60.816406 70 58.75 L 70 11.25 C 70 9.183594 68.316406 7.5 66.25 7.5 Z M 35.476563 10 L 39.226563 17.5 L 33.273438 17.5 L 29.523438 10 Z M 12.5 11.25 C 12.5 10.558594 13.058594 10 13.75 10 L 26.726563 10 L 30.476563 17.5 L 12.5 17.5 Z M 42.023438 17.5 L 38.273438 10 L 66.25 10 C 66.941406 10 67.5 10.558594 67.5 11.25 L 67.5 17.5 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear2);" d="M 60.058594 49.085938 L 57.335938 45 L 58.75 45 C 60.128906 45 61.25 43.878906 61.25 42.5 L 61.25 30 C 61.25 28.621094 60.128906 27.5 58.75 27.5 L 36.25 27.5 C 34.871094 27.5 33.75 28.621094 33.75 30 L 33.75 42.5 C 33.75 43.878906 34.871094 45 36.25 45 L 37.664063 45 L 34.941406 49.085938 C 34.058594 50.40625 34.109375 52.148438 35.0625 53.414063 L 37.609375 56.8125 C 37.546875 57.03125 37.5 57.257813 37.5 57.5 L 37.5 60 C 37.5 61.378906 38.621094 62.5 40 62.5 L 40 68.75 C 40 70.816406 41.683594 72.5 43.75 72.5 L 51.25 72.5 C 53.316406 72.5 55 70.816406 55 68.75 L 55 62.5 C 56.378906 62.5 57.5 61.378906 57.5 60 L 57.5 57.5 C 57.5 57.257813 57.453125 57.03125 57.390625 56.8125 L 59.9375 53.417969 C 60.890625 52.148438 60.941406 50.40625 60.058594 49.085938 Z M 36.25 42.5 L 36.25 30 L 58.75 30 L 58.75 42.5 L 55.667969 42.5 L 50.621094 34.929688 C 49.921875 33.882813 48.757813 33.257813 47.5 33.257813 C 46.242188 33.257813 45.078125 33.882813 44.378906 34.929688 L 39.332031 42.5 Z M 48.75 48.75 C 48.75 49.441406 48.191406 50 47.5 50 C 46.808594 50 46.25 49.441406 46.25 48.75 C 46.25 48.058594 46.808594 47.5 47.5 47.5 C 48.191406 47.5 48.75 48.058594 48.75 48.75 Z M 52.5 68.75 C 52.5 69.441406 51.941406 70 51.25 70 L 43.75 70 C 43.058594 70 42.5 69.441406 42.5 68.75 L 42.5 62.5 L 52.5 62.5 Z M 40 60 L 40 57.5 L 55 57.5 L 55.003906 60 Z M 57.9375 51.914063 L 55.570313 55.074219 C 55.386719 55.027344 55.199219 55 55 55 L 40 55 C 39.800781 55 39.613281 55.027344 39.429688 55.074219 L 37.058594 51.914063 C 36.742188 51.492188 36.726563 50.914063 37.019531 50.472656 L 46.25 36.628906 L 46.25 45.230469 C 44.796875 45.75 43.75 47.125 43.75 48.75 C 43.75 50.820313 45.433594 52.5 47.5 52.5 C 49.566406 52.5 51.25 50.820313 51.25 48.75 C 51.25 47.125 50.203125 45.75 48.75 45.230469 L 48.75 36.628906 L 57.980469 50.472656 C 58.273438 50.910156 58.257813 51.492188 57.9375 51.914063 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear3);" d="M 17.5 27.5 L 28.75 27.5 L 28.75 30 L 17.5 30 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear4);" d="M 17.5 32.5 L 28.75 32.5 L 28.75 35 L 17.5 35 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear5);" d="M 17.5 37.5 L 28.75 37.5 L 28.75 40 L 17.5 40 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:url(#linear6);" d="M 17.5 42.5 L 28.75 42.5 L 28.75 45 L 17.5 45 Z "/>
</g>
</svg>
<?xml version="1.0"?>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24px" height="24px">
<path style="fill:#ffffff;" d="M 21 2 L 12 3.5 L 12 11 L 21 11 L 21 2 z M 10 3.8320312 L 3 5 L 3 11 L 10 11 L 10 3.8320312 z M 3 13 L 3 19 L 10 20.167969 L 10 13 L 3 13 z M 12 13 L 12 20.5 L 21 22 L 21 13 L 12 13 z"/>
</svg>
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- Generator: Adobe Illustrator 20.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="&#1057;&#1083;&#1086;&#1081;_1" x="0px" y="0px" viewBox="0 0 64 64" style="enable-background:new 0 0 64 64;" xml:space="preserve" width="96px" height="96px">
<linearGradient id="SVGID_1__48266" gradientUnits="userSpaceOnUse" x1="32" y1="5.3331" x2="32" y2="59.1757" spreadMethod="reflect">
<stop offset="0" style="stop-color:#1A6DFF"/>
<stop offset="1" style="stop-color:#C822FF"/>
</linearGradient>
<path style="fill:url(#SVGID_1__48266);" d="M57.402,30.556l-2.959-2.959c-0.796-0.795-2.09-0.795-2.886,0l-2.96,2.96 C48.463,30.691,48.361,31,48.272,31h-7.137c-0.128,0-0.323-0.704-0.594-1.005l-2.404-2.671L42.46,23H47v-2h-4v-4h-2v4.632 l-4.203,4.203l-2.569-2.854C33.893,22.609,33,22.361,33,22.208v-6.48c0-0.089,0.309-0.192,0.443-0.326l2.96-2.96 c0.793-0.795,0.793-2.09-0.001-2.886l-2.959-2.959c-0.796-0.795-2.09-0.795-2.886,0l-2.96,2.96c-0.793,0.795-0.793,2.09,0.001,2.886 l2.959,2.959C30.691,15.536,31,15.639,31,15.728v6.48c0,0.152-0.893,0.401-1.228,0.772l-2.525,2.806L23,21.539V17h-2v4h-4v2h4.632 l4.275,4.275l-2.448,2.72C23.188,30.296,22.993,31,22.865,31h-7.137c-0.089,0-0.192-0.309-0.325-0.443l-2.959-2.959 c-0.796-0.795-2.09-0.795-2.886,0l-2.96,2.96c-0.793,0.795-0.793,2.09,0.001,2.886l2.959,2.959c0.398,0.397,0.92,0.597,1.443,0.597 s1.045-0.199,1.443-0.597l2.96-2.96C15.537,33.308,15.639,33,15.728,33h7.137c0.128,0,0.323,0.703,0.594,1.005l1.955,2.173L20.63,41 H16v2h4v4h2v-4.541l4.755-4.792l3.017,3.353C30.108,41.392,31,41.657,31,41.823v6.45c0,0.088-0.309,0.191-0.443,0.325l-2.96,2.96 c-0.793,0.795-0.793,2.09,0.001,2.886l2.959,2.959c0.398,0.397,0.92,0.597,1.443,0.597s1.045-0.199,1.443-0.597l2.96-2.96 c0.793-0.795,0.793-2.09-0.001-2.886l-2.959-2.959C33.309,48.464,33,48.361,33,48.272v-6.45c0-0.166,0.892-0.43,1.228-0.803 l3.024-3.36L42,42.371V47h2v-4h4v-2h-4.541l-4.867-4.83l1.949-2.165C40.812,33.704,41.007,33,41.135,33h7.137 c0.089,0,0.192,0.309,0.325,0.443l2.959,2.959c0.398,0.397,0.92,0.597,1.443,0.597s1.045-0.199,1.443-0.597l2.96-2.96 C58.197,32.647,58.197,31.352,57.402,30.556z M29.012,10.97l3.017-2.959l2.958,2.958c0.017,0.017,0.017,0.043,0,0.06l-3.017,2.959 L29.012,10.97z M10.971,34.988L8.012,31.97l3.017-2.959l2.958,2.958c0.017,0.017,0.017,0.043,0,0.06L10.971,34.988z M34.987,52.969 c0.017,0.017,0.017,0.043,0,0.06l-3.017,2.959l-2.959-3.018l3.017-2.959L34.987,52.969z M39.054,32.667l-6.313,7.015 c-0.383,0.426-1.101,0.426-1.483,0l-6.313-7.015c-0.342-0.38-0.342-0.954,0-1.334l6.313-7.015c0.191-0.213,0.455-0.329,0.742-0.329 s0.55,0.116,0.742,0.329l6.313,7.015C39.396,31.713,39.396,32.287,39.054,32.667z M52.971,34.988l-2.959-3.018l3.017-2.959 l2.958,2.958c0.017,0.017,0.017,0.043,0,0.06L52.971,34.988z"/>
<linearGradient id="SVGID_2__48266" gradientUnits="userSpaceOnUse" x1="32" y1="25.9998" x2="32" y2="38.5098" spreadMethod="reflect">
<stop offset="0" style="stop-color:#6DC7FF"/>
<stop offset="1" style="stop-color:#E6ABFF"/>
</linearGradient>
<path style="fill:url(#SVGID_2__48266);" d="M36.627,32.781l-3.746,4.162c-0.471,0.523-1.291,0.523-1.762,0l-3.746-4.162 c-0.406-0.451-0.406-1.135,0-1.586l3.746-4.162c0.471-0.523,1.291-0.523,1.762,0l3.746,4.162 C37.033,31.646,37.033,32.33,36.627,32.781z"/>
</svg>
<svg width="2500" height="1055" viewBox="0 0 256 108" xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMinYMin meet"><path d="M152.984 37.214c-5.597 0-9.765 2.748-9.765 9.362 0 4.983 2.747 8.443 9.463 8.443 5.693 0 9.56-3.355 9.56-8.65 0-6-3.46-9.155-9.258-9.155zm-11.19 46.701c-1.325 1.625-2.645 3.353-2.645 5.39 0 4.067 5.186 5.291 12.31 5.291 5.9 0 13.938-.414 13.938-5.9 0-3.261-3.867-3.462-8.753-3.768l-14.85-1.013zm30.113-46.394c1.828 2.34 3.764 5.597 3.764 10.276 0 11.292-8.851 17.904-21.667 17.904-3.259 0-6.209-.406-8.038-.914l-3.359 5.39 9.969.61c17.602 1.122 27.975 1.632 27.975 15.157 0 11.702-10.272 18.311-27.975 18.311-18.413 0-25.433-4.68-25.433-12.716 0-4.578 2.035-7.015 5.596-10.378-3.358-1.419-4.476-3.961-4.476-6.71 0-2.24 1.118-4.273 2.952-6.208 1.83-1.93 3.864-3.865 6.306-6.103-4.984-2.442-8.75-7.732-8.75-15.262 0-11.697 7.733-19.731 23.295-19.731 4.376 0 7.022.402 9.362 1.017h19.84v8.644l-9.361.713zM199.166 19.034c-5.8 0-9.157-3.36-9.157-9.161 0-5.793 3.356-8.95 9.157-8.95 5.9 0 9.258 3.157 9.258 8.95 0 5.801-3.357 9.161-9.258 9.161zM186.04 80.171v-8.033l5.19-.71c1.425-.205 1.627-.509 1.627-2.038V39.48c0-1.116-.304-1.832-1.325-2.134l-5.492-1.935 1.118-8.238h21.061V69.39c0 1.63.098 1.833 1.629 2.039l5.188.71v8.032H186.04zM255.267 76.227c-4.376 2.135-10.785 4.068-16.586 4.068-12.106 0-16.682-4.878-16.682-16.38V37.264c0-.61 0-1.017-.817-1.017h-7.12V27.19c8.955-1.02 12.513-5.496 13.632-16.585h9.666v14.45c0 .71 0 1.017.815 1.017h14.343v10.173H237.36v24.313c0 6.002 1.426 8.34 6.917 8.34 2.852 0 5.799-.71 8.24-1.626l2.75 8.954" fill="#2F2707"/><path d="M104.529 49.53L58.013 3.017a6.86 6.86 0 0 0-9.703 0l-9.659 9.66 12.253 12.252a8.145 8.145 0 0 1 8.383 1.953 8.157 8.157 0 0 1 1.936 8.434L73.03 47.125c2.857-.984 6.154-.347 8.435 1.938a8.161 8.161 0 0 1 0 11.545 8.164 8.164 0 0 1-13.324-8.88L57.129 40.716l-.001 28.98a8.248 8.248 0 0 1 2.159 1.544 8.164 8.164 0 0 1 0 11.547c-3.19 3.19-8.36 3.19-11.545 0a8.164 8.164 0 0 1 2.672-13.328v-29.25a8.064 8.064 0 0 1-2.672-1.782c-2.416-2.413-2.997-5.958-1.759-8.925l-12.078-12.08L2.011 49.314a6.863 6.863 0 0 0 0 9.706l46.516 46.514a6.862 6.862 0 0 0 9.703 0l46.299-46.297a6.866 6.866 0 0 0 0-9.707" fill="#DE4C36"/></svg>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="80pt" height="80pt" viewBox="0 0 80 80" version="1.1">
<g id="surface1">
<path style=" stroke:none;fill-rule:nonzero;fill:#78909C;fill-opacity:1;" d="M 16.667969 73.332031 C 15.667969 73.332031 15 72.667969 15 71.667969 C 15 70.667969 15.667969 70 16.667969 70 C 17.5 70 18.332031 69.832031 18.332031 68.167969 L 18.332031 61.667969 C 18.332031 60.667969 19 60 20 60 C 21 60 21.667969 60.667969 21.667969 61.667969 L 21.667969 68.167969 C 21.667969 71.332031 19.667969 73.332031 16.667969 73.332031 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:#CFD8DC;fill-opacity:1;" d="M 67.832031 25 C 68.167969 24 68.332031 22.832031 68.332031 21.667969 C 68.332031 16.167969 63.832031 11.667969 58.332031 11.667969 C 55.5 11.667969 53 12.832031 51.167969 14.832031 C 49.667969 10 45.167969 6.667969 40 6.667969 C 34.667969 6.667969 30.332031 10.167969 28.832031 15 C 27.332031 14 25.332031 13.332031 23.332031 13.332031 C 17.832031 13.332031 13.332031 17.832031 13.332031 23.332031 C 13.332031 23.832031 13.332031 24.5 13.5 25 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:#32C24D;fill-opacity:1;" d="M 10 21.667969 L 70 21.667969 L 70 58.332031 L 10 58.332031 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:#FFFFFF;fill-opacity:1;" d="M 43.332031 40 C 43.332031 41.832031 41.832031 43.332031 40 43.332031 C 38.167969 43.332031 36.667969 41.832031 36.667969 40 C 36.667969 38.167969 38.167969 36.667969 40 36.667969 C 41.832031 36.667969 43.332031 38.167969 43.332031 40 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:#FFFFFF;fill-opacity:1;" d="M 56.667969 40 C 56.667969 41.832031 55.167969 43.332031 53.332031 43.332031 C 51.5 43.332031 50 41.832031 50 40 C 50 38.167969 51.5 36.667969 53.332031 36.667969 C 55.167969 36.667969 56.667969 38.167969 56.667969 40 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:#FFFFFF;fill-opacity:1;" d="M 30 40 C 30 41.832031 28.5 43.332031 26.667969 43.332031 C 24.832031 43.332031 23.332031 41.832031 23.332031 40 C 23.332031 38.167969 24.832031 36.667969 26.667969 36.667969 C 28.5 36.667969 30 38.167969 30 40 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:#546E7A;fill-opacity:1;" d="M 18.332031 58.332031 L 21.667969 58.332031 L 21.667969 61.667969 L 18.332031 61.667969 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:#78909C;fill-opacity:1;" d="M 26.667969 73.332031 C 25.667969 73.332031 25 72.667969 25 71.667969 C 25 70.667969 25.667969 70 26.667969 70 C 27.5 70 28.332031 69.832031 28.332031 68.167969 L 28.332031 61.667969 C 28.332031 60.667969 29 60 30 60 C 31 60 31.667969 60.667969 31.667969 61.667969 L 31.667969 68.167969 C 31.667969 71.332031 29.667969 73.332031 26.667969 73.332031 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:#546E7A;fill-opacity:1;" d="M 28.332031 58.332031 L 31.667969 58.332031 L 31.667969 61.667969 L 28.332031 61.667969 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:#78909C;fill-opacity:1;" d="M 48.332031 73.332031 C 47.332031 73.332031 46.667969 72.667969 46.667969 71.667969 C 46.667969 70.667969 47.332031 70 48.332031 70 C 49.167969 70 50 69.832031 50 68.167969 L 50 61.667969 C 50 60.667969 50.667969 60 51.667969 60 C 52.667969 60 53.332031 60.667969 53.332031 61.667969 L 53.332031 68.167969 C 53.332031 71.332031 51.332031 73.332031 48.332031 73.332031 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:#546E7A;fill-opacity:1;" d="M 50 58.332031 L 53.332031 58.332031 L 53.332031 61.667969 L 50 61.667969 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:#78909C;fill-opacity:1;" d="M 58.332031 73.332031 C 57.332031 73.332031 56.667969 72.667969 56.667969 71.667969 C 56.667969 70.667969 57.332031 70 58.332031 70 C 59.167969 70 60 69.832031 60 68.167969 L 60 61.667969 C 60 60.667969 60.667969 60 61.667969 60 C 62.667969 60 63.332031 60.667969 63.332031 61.667969 L 63.332031 68.167969 C 63.332031 71.332031 61.332031 73.332031 58.332031 73.332031 Z "/>
<path style=" stroke:none;fill-rule:nonzero;fill:#546E7A;fill-opacity:1;" d="M 60 58.332031 L 63.332031 58.332031 L 63.332031 61.667969 L 60 61.667969 Z "/>
</g>
</svg>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="100%" height="100%" viewBox="0 0 398 98" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
<path d="M218.013,20.338c-1.206,1.206 -1.809,2.688 -1.809,4.447c0,1.76 0.603,3.255 1.809,4.486c1.206,1.231 2.688,1.846 4.449,1.846c1.758,0 3.252,-0.615 4.484,-1.846c1.231,-1.231 1.847,-2.726 1.847,-4.486c0,-1.759 -0.616,-3.241 -1.847,-4.447c-1.232,-1.206 -2.726,-1.81 -4.484,-1.81c-1.761,0 -3.243,0.604 -4.449,1.81Zm0.339,14.661c-1.13,1.131 -1.695,2.502 -1.695,4.109l0,30.53c0,0.805 0.15,1.572 0.452,2.3c0.301,0.729 0.716,1.356 1.243,1.884c0.528,0.528 1.143,0.943 1.848,1.244c0.703,0.301 1.457,0.452 2.262,0.452c1.606,0 2.988,-0.577 4.145,-1.734c1.155,-1.155 1.734,-2.536 1.734,-4.146l0,-30.53c0,-0.803 -0.15,-1.557 -0.452,-2.261c-0.303,-0.703 -0.717,-1.32 -1.243,-1.848c-0.529,-0.527 -1.158,-0.942 -1.886,-1.243c-0.729,-0.302 -1.495,-0.452 -2.298,-0.452c-1.61,0 -2.978,0.565 -4.11,1.695Z" style="fill:url(#_Linear1);fill-rule:nonzero;"/>
<path d="M277.263,20.338c-1.206,1.206 -1.809,2.688 -1.809,4.447c0,1.76 0.603,3.255 1.809,4.486c1.207,1.231 2.688,1.846 4.449,1.846c1.758,0 3.253,-0.615 4.484,-1.846c1.231,-1.231 1.848,-2.726 1.848,-4.486c0,-1.759 -0.617,-3.241 -1.848,-4.447c-1.231,-1.206 -2.726,-1.81 -4.484,-1.81c-1.761,0 -3.242,0.604 -4.449,1.81Zm0.34,14.661c-1.13,1.131 -1.696,2.502 -1.696,4.109l0,30.53c0,0.805 0.15,1.572 0.452,2.3c0.301,0.729 0.716,1.356 1.244,1.884c0.527,0.528 1.142,0.943 1.847,1.244c0.703,0.301 1.457,0.452 2.262,0.452c1.607,0 2.988,-0.577 4.146,-1.734c1.154,-1.155 1.734,-2.536 1.734,-4.146l0,-30.53c0,-0.803 -0.151,-1.557 -0.453,-2.261c-0.303,-0.703 -0.717,-1.32 -1.243,-1.848c-0.529,-0.527 -1.157,-0.942 -1.886,-1.243c-0.729,-0.302 -1.495,-0.452 -2.298,-0.452c-1.61,0 -2.978,0.565 -4.109,1.695Z" style="fill:url(#_Linear2);fill-rule:nonzero;"/>
<path d="M296.485,61.384c-0.904,0.377 -1.684,0.905 -2.338,1.584c-0.652,0.678 -1.168,1.457 -1.545,2.336c-0.375,0.88 -0.565,1.822 -0.565,2.827c0,2.061 0.703,3.807 2.11,5.239c1.407,1.433 3.141,2.148 5.202,2.148c2.061,0 3.808,-0.715 5.241,-2.148c1.431,-1.432 2.147,-3.178 2.147,-5.239c0,-1.005 -0.188,-1.947 -0.565,-2.827c-0.377,-0.879 -0.904,-1.658 -1.582,-2.336c-0.679,-0.679 -1.471,-1.207 -2.376,-1.584c-0.905,-0.377 -1.859,-0.566 -2.865,-0.566c-1.005,0 -1.959,0.189 -2.864,0.566Z" style="fill:url(#_Linear3);fill-rule:nonzero;"/>
<path d="M312.466,20.338c-1.207,1.206 -1.81,2.688 -1.81,4.447c0,1.76 0.603,3.255 1.81,4.486c1.205,1.231 2.687,1.846 4.448,1.846c1.758,0 3.252,-0.615 4.485,-1.846c1.231,-1.231 1.846,-2.726 1.846,-4.486c0,-1.759 -0.615,-3.241 -1.846,-4.447c-1.233,-1.206 -2.727,-1.81 -4.485,-1.81c-1.761,0 -3.243,0.604 -4.448,1.81Zm0.338,14.661c-1.13,1.131 -1.695,2.502 -1.695,4.109l0,36.41c0,1.406 -0.202,2.5 -0.603,3.28c-0.403,0.778 -0.894,1.432 -1.47,1.96c-0.579,0.528 -1.206,0.954 -1.884,1.281c-0.679,0.326 -1.308,0.728 -1.886,1.206c-0.577,0.477 -1.067,1.08 -1.47,1.81c-0.401,0.728 -0.603,1.721 -0.603,2.978c0,1.607 0.592,2.826 1.772,3.656c1.182,0.828 2.601,1.243 4.26,1.243c1.857,0 3.618,-0.365 5.277,-1.093c1.656,-0.729 3.101,-1.809 4.334,-3.241c1.231,-1.433 2.197,-3.242 2.902,-5.428c0.704,-2.186 1.055,-4.737 1.055,-7.652l0,-36.41c0,-0.803 -0.151,-1.557 -0.452,-2.261c-0.301,-0.703 -0.715,-1.32 -1.244,-1.848c-0.528,-0.527 -1.157,-0.942 -1.885,-1.243c-0.729,-0.302 -1.495,-0.452 -2.298,-0.452c-1.611,0 -2.979,0.565 -4.11,1.695Z" style="fill:url(#_Linear4);fill-rule:nonzero;"/>
<path d="M143.046,19.621c-0.828,0.428 -1.508,0.969 -2.036,1.621c-0.527,0.653 -0.931,1.37 -1.206,2.149c-0.277,0.78 -0.415,1.521 -0.415,2.224c0,0.753 0.101,1.432 0.303,2.034l13.401,42.573c2.151,-5.941 4.474,-12.397 6.864,-19.098l-7.752,-27.545c-0.402,-1.406 -1.181,-2.525 -2.337,-3.355c-1.156,-0.829 -2.463,-1.244 -3.921,-1.244c-1.104,0 -2.073,0.215 -2.901,0.641Z" style="fill:url(#_Linear5);fill-rule:nonzero;"/>
<path d="M172.22,20.149c-1.082,0.78 -1.898,1.898 -2.451,3.355l-9.8,27.666l-0.012,-0.046c-2.39,6.701 -4.713,13.157 -6.864,19.098l0.243,0.774c0.452,1.407 1.206,2.513 2.261,3.317c1.056,0.804 2.311,1.205 3.769,1.205c1.458,0 2.715,-0.388 3.77,-1.168c1.055,-0.778 1.834,-1.872 2.336,-3.279l10.631,-29.928l10.493,29.549c1.813,-6.071 3.752,-12.822 5.582,-19.679l-9.744,-27.509c-0.503,-1.457 -1.308,-2.575 -2.412,-3.355c-1.106,-0.778 -2.413,-1.169 -3.919,-1.169c-1.509,0 -2.803,0.391 -3.883,1.169Z" style="fill:url(#_Linear6);fill-rule:nonzero;"/>
<path d="M202.335,20.224c-1.157,0.83 -1.935,1.949 -2.337,3.355l-7.764,27.591l-0.056,-0.157c-1.83,6.857 -3.769,13.608 -5.582,19.679l0.134,0.379c0.503,1.407 1.283,2.501 2.338,3.279c1.054,0.78 2.311,1.168 3.769,1.168c1.458,0 2.714,-0.401 3.769,-1.205c1.055,-0.804 1.809,-1.91 2.261,-3.317l13.645,-43.347c0.2,-0.602 0.301,-1.281 0.301,-2.034c0,-0.703 -0.139,-1.444 -0.415,-2.224c-0.276,-0.779 -0.678,-1.496 -1.206,-2.149c-0.526,-0.652 -1.204,-1.193 -2.035,-1.621c-0.829,-0.426 -1.797,-0.641 -2.901,-0.641c-1.458,0 -2.765,0.415 -3.921,1.244Z" style="fill:url(#_Linear7);fill-rule:nonzero;"/>
<path d="M262.038,34.66l-15.683,12.589l0,10.861l14.25,15.298c0.652,0.705 1.419,1.232 2.299,1.584c0.878,0.351 1.746,0.526 2.6,0.526c0.554,0 1.157,-0.1 1.811,-0.301c0.651,-0.2 1.254,-0.528 1.809,-0.981c0.552,-0.452 1.017,-1.054 1.395,-1.809c0.375,-0.753 0.564,-1.657 0.564,-2.713c0,-0.754 -0.139,-1.508 -0.414,-2.262c-0.277,-0.753 -0.717,-1.406 -1.32,-1.959l-13.116,-12.665l13.267,-9.423c0.704,-0.502 1.206,-1.131 1.508,-1.884c0.301,-0.754 0.452,-1.533 0.452,-2.337c0,-1.056 -0.202,-1.96 -0.603,-2.715c-0.403,-0.753 -0.893,-1.368 -1.47,-1.846c-0.578,-0.477 -1.194,-0.816 -1.847,-1.018c-0.654,-0.2 -1.257,-0.301 -1.81,-0.301c-1.357,0 -2.588,0.452 -3.692,1.356Z" style="fill:url(#_Linear8);fill-rule:nonzero;"/>
<g opacity="0.1">
<path d="M159.969,51.17l-6.877,19.052l-1.606,-5.102l8.483,-13.95Z" style="fill-rule:nonzero;"/>
</g>
<g opacity="0.1">
<path d="M192.234,51.17l-5.638,19.522l-1.808,-5.092l7.446,-14.43Z" style="fill-rule:nonzero;"/>
</g>
<g opacity="0.1">
<path d="M246.433,47.174l3.604,14.88l-3.682,-3.945l0.078,-10.935Z" style="fill-rule:nonzero;"/>
</g>
<path d="M236.444,20.677c-1.13,1.131 -1.696,2.501 -1.696,4.108l0,44.853c0,0.805 0.151,1.572 0.452,2.3c0.303,0.729 0.717,1.356 1.244,1.884c0.528,0.528 1.144,0.943 1.846,1.244c0.705,0.301 1.458,0.452 2.262,0.452c1.608,0 2.991,-0.577 4.146,-1.734c1.156,-1.155 1.735,-2.536 1.735,-4.146l0,-44.853c0,-0.803 -0.151,-1.557 -0.452,-2.261c-0.302,-0.703 -0.717,-1.319 -1.244,-1.847c-0.528,-0.528 -1.156,-0.942 -1.885,-1.245c-0.729,-0.3 -1.496,-0.452 -2.3,-0.452c-1.608,0 -2.977,0.566 -4.108,1.697Z" style="fill:url(#_Linear9);fill-rule:nonzero;"/>
<path d="M329.615,60.253c-1.031,0.981 -1.545,2.476 -1.545,4.485c0,1.659 0.589,3.167 1.771,4.524c1.18,1.356 2.651,2.538 4.41,3.543c1.759,1.005 3.643,1.784 5.654,2.336c2.01,0.553 3.844,0.829 5.503,0.829c2.31,0 4.485,-0.3 6.521,-0.904c2.035,-0.603 3.831,-1.494 5.389,-2.676c0.582,-0.442 1.104,-0.94 1.596,-1.466c-0.772,-4.296 -3.93,-8.44 -11.441,-11.435c0.494,0.22 0.955,0.448 1.364,0.689c0.981,0.578 1.471,1.345 1.471,2.299c0,1.006 -0.479,1.721 -1.432,2.148c-0.956,0.428 -1.936,0.641 -2.94,0.641c-1.157,0 -2.225,-0.339 -3.204,-1.017c-0.981,-0.678 -1.935,-1.419 -2.865,-2.224c-0.93,-0.803 -1.898,-1.546 -2.902,-2.224c-1.006,-0.679 -2.061,-1.018 -3.166,-1.018c-1.76,0 -3.155,0.49 -4.184,1.47Z" style="fill:url(#_Linear10);fill-rule:nonzero;"/>
<g opacity="0.1">
<path d="M358.914,70.921c-0.772,-4.297 -3.929,-8.441 -11.441,-11.435c0.494,0.219 0.955,0.447 1.365,0.689c0.23,0.135 0.427,0.283 0.603,0.44c0,-0.001 0,-0.001 -0.001,-0.002c0.001,0.001 0.001,0.002 0.002,0.003c0.023,0.02 0.045,0.04 0.068,0.061c4.582,4.051 7.041,7.921 8.022,11.529c0.495,-0.397 0.954,-0.827 1.382,-1.285" style="fill-rule:nonzero;"/>
</g>
<path d="M338.322,33.831c-1.76,0.654 -3.231,1.558 -4.41,2.714c-1.182,1.157 -2.049,2.514 -2.601,4.07c-0.554,1.559 -0.829,3.268 -0.829,5.127c0,2.363 0.49,4.272 1.47,5.729c0.98,1.459 2.198,2.652 3.656,3.581c1.457,0.931 3.053,1.647 4.787,2.148c1.733,0.503 3.329,0.98 4.787,1.433c0.847,0.263 1.605,0.55 2.291,0.856c7.511,2.995 10.669,7.139 11.441,11.435c0.822,-0.88 1.532,-1.865 2.098,-2.982c0.905,-1.783 1.357,-3.882 1.357,-6.294c0,-2.513 -0.49,-4.535 -1.471,-6.069c-0.979,-1.533 -2.197,-2.751 -3.655,-3.656c-1.458,-0.904 -3.042,-1.594 -4.749,-2.073c-1.71,-0.477 -3.293,-0.929 -4.749,-1.357c-1.459,-0.426 -2.677,-0.929 -3.656,-1.507c-0.981,-0.577 -1.471,-1.445 -1.471,-2.601c0,-0.552 0.189,-0.98 0.567,-1.281c0.375,-0.302 0.839,-0.452 1.394,-0.452c0.954,0 1.771,0.188 2.449,0.564c0.679,0.378 1.368,0.78 2.073,1.207c0.703,0.428 1.47,0.828 2.3,1.205c0.829,0.378 1.847,0.567 3.052,0.567c1.407,0 2.601,-0.503 3.582,-1.509c0.947,-0.971 1.425,-2.11 1.457,-3.411l-6.08,0c-1.294,0 -2.352,-1.059 -2.352,-2.351l0,-5.323c-0.139,-0.035 -0.27,-0.075 -0.414,-0.108c-1.835,-0.427 -3.856,-0.642 -6.067,-0.642c-2.413,0 -4.499,0.327 -6.257,0.98Z" style="fill:url(#_Linear11);fill-rule:nonzero;"/>
<path d="M364.105,34.43c0,1.136 0.929,2.065 2.065,2.065l6.222,0c1.136,0 2.065,-0.929 2.065,-2.065l0,-6.222c0,-1.136 -0.929,-2.066 -2.065,-2.066l-6.222,0c-1.136,0 -2.065,0.93 -2.065,2.066l0,6.222Z" style="fill:#3f51b5;fill-rule:nonzero;"/>
<path d="M381.136,36.6c0,1.137 0.93,2.066 2.066,2.066l3.216,0c1.136,0 2.065,-0.929 2.065,-2.066l0,-3.216c0,-1.136 -0.929,-2.065 -2.065,-2.065l-3.216,0c-1.136,0 -2.066,0.929 -2.066,2.065l0,3.216Z" style="fill:#3f51b5;fill-rule:nonzero;"/>
<path d="M374.457,53.131c0,1.136 0.929,2.066 2.066,2.066l4.551,0c1.137,0 2.066,-0.93 2.066,-2.066l0,-4.552c0,-1.136 -0.929,-2.065 -2.066,-2.065l-4.551,0c-1.137,0 -2.066,0.929 -2.066,2.065l0,4.552Z" style="fill:#3f51b5;fill-rule:nonzero;"/>
<path d="M392.491,44.615c0,1.137 0.929,2.066 2.065,2.066l0.879,0c1.136,0 2.065,-0.929 2.065,-2.066l0,-0.879c0,-1.135 -0.929,-2.064 -2.065,-2.064l-0.879,0c-1.136,0 -2.065,0.929 -2.065,2.064l0,0.879Z" style="fill:#3f51b5;fill-rule:nonzero;"/>
<path d="M65.686,50.653c0,0 20.812,0.75 30.375,9c9.562,8.25 16.125,24 13.312,37.688c-5.625,-1.313 -29.625,-5.438 -39.375,-17.438c-9.75,-12 -9.375,-20.437 -8.25,-25.5c1.125,-5.062 3.938,-3.75 3.938,-3.75" style="fill:#1c9cf3;fill-rule:nonzero;"/>
<path d="M62.038,54.454c-0.475,2.139 -0.988,5.498 0.046,9.953c1.125,4.848 3.801,10.068 8.198,15.31c10.06,11.993 38.391,16.857 38.735,16.932c1.077,-6.234 0.35,-12.729 -2.175,-19.516c-2.494,-6.704 -6.5,-12.668 -11.279,-16.793c-9.415,-8.121 -30.26,-8.963 -30.469,-8.97l-0.215,-0.008l-0.155,-0.081c-0.002,0 -0.177,-0.067 -0.418,-0.067c-0.998,0 -1.803,1.15 -2.268,3.24Z" style="fill:url(#_Radial12);fill-rule:nonzero;"/>
<path d="M60.248,50.653c0,0 2.625,5.438 -3.562,13.688c-6.188,8.25 -19.125,21.562 -51.375,18.75c1.125,-7.688 6.75,-15.563 12.937,-21.188c6.188,-5.625 20.063,-11.437 29.25,-11.625c9.188,-0.187 12.75,0.375 12.75,0.375" style="fill:#04bbf3;fill-rule:nonzero;"/>
<path d="M47.661,51.007c-4.286,0.087 -10.037,1.469 -15.783,3.792c-5.597,2.262 -10.53,5.127 -13.534,7.858c-6.762,6.148 -11.115,13.417 -12.413,19.94c2.596,0.201 7.447,0.302 7.447,0.302c11.549,0 21.195,-2.117 29.11,-6.626c7.017,-3.996 11.231,-8.995 13.79,-12.407c4.909,-6.545 4.149,-11.122 3.717,-12.555c-1.08,-0.116 -3.81,-0.344 -8.669,-0.344c-1.165,0 -2.398,0.013 -3.665,0.04Z" style="fill:url(#_Linear13);fill-rule:nonzero;"/>
<path d="M125.873,31.528c0,0 -3.75,10.875 -22.125,16.125c-18.375,5.25 -38.062,1.875 -38.062,1.875c0,0 4.687,-12.375 18.187,-18.187c13.5,-5.813 37.313,-0.563 42,0.187" style="fill:#02bef3;fill-rule:nonzero;"/>
<path d="M83.538,32.552c-10.988,4.731 -16.174,13.887 -17.695,17.055c2.266,0.309 7.463,0.902 13.983,0.902c8.656,0 16.566,-1.006 23.51,-2.99c14.825,-4.235 20.235,-12.672 21.72,-15.505c-0.243,-0.043 -17.126,-3.378 -26.758,-3.378c-6.903,0 -10.593,2.121 -14.76,3.916Z" style="fill:url(#_Radial14);fill-rule:nonzero;"/>
<path d="M59.915,51.278c0,0 -26.74,-1.259 -42.435,-12.71c-15.696,-11.451 -15.334,-15.226 -15.334,-15.226c0,0 17.599,-0.054 26.286,3.078c8.688,3.133 22.336,11.948 31.483,24.858" style="fill:#02bef3;fill-rule:nonzero;"/>
<path d="M18.403,38.359c6.069,4.428 13.396,7.558 22.006,9.664c0.002,0.001 0.002,0.001 0.004,0.001c9.149,1.098 16.735,2.791 18.559,2.947c-4.016,-5.463 -9.015,-10.405 -14.381,-14.518c-5.193,-3.99 -10.674,-7.143 -15.228,-8.942c-0.845,-0.337 -1.74,-0.639 -2.662,-0.915c-8.018,-2.397 -21.465,-2.554 -23.533,-2.584c0.509,0.942 2.299,4.909 15.235,14.347Z" style="fill:url(#_Radial15);fill-rule:nonzero;"/>
<path d="M60.107,53.87c2.377,0.304 3.66,5.62 2.862,11.865c-0.798,6.244 -3.376,11.067 -5.754,10.763c-2.377,-0.303 -3.66,-5.62 -2.862,-11.864c0.798,-6.245 3.376,-11.068 5.754,-10.764Z" style="fill:url(#_Radial16);"/>
<g>
<path d="M63.623,50.523c-7.957,1.497 3.291,37.119 15.337,42.529c23.156,10.401 35.993,-9.611 35.993,-16.859c0,-7.249 -31.884,-29.326 -51.33,-25.67Z" style="fill:url(#_Radial17);fill-rule:nonzero;"/>
<path d="M52.38,60.705c-2.895,5.261 20.366,23.165 30.768,21.166c10.402,-1.999 24.271,-12.529 23.192,-18.252c-1.079,-5.724 -19.995,-21.583 -35.131,-15.913c-9.929,3.719 -15.934,7.738 -18.829,12.999Z" style="fill:url(#_Radial18);fill-rule:nonzero;"/>
<path d="M62.304,63.032c-2.177,5.597 13.08,21.534 23.128,18.182c10.048,-3.352 22.409,-15.617 20.586,-21.148c-1.824,-5.531 -22.664,-18.761 -36.921,-11.146c-9.352,4.994 -4.616,8.515 -6.793,14.112Z" style="fill:url(#_Radial19);fill-rule:nonzero;"/>
<path d="M60.721,60.475c-1.854,4.721 11.081,18.141 19.616,15.304c8.535,-2.837 19.043,-13.191 17.501,-17.853c-1.542,-4.662 -19.221,-15.793 -31.334,-9.357c-7.945,4.221 -3.928,7.185 -5.783,11.906Z" style="fill:url(#_Radial20);fill-rule:nonzero;"/>
</g>
<g>
<path d="M63.547,59.973c-1.577,4.793 -19.173,24.596 -31.312,27.374c-12.14,2.779 -24.093,-9.922 -25.212,-15.785c-1.119,-5.862 17.202,-22.572 35.975,-24.02c12.314,-0.95 23.195,4.395 20.549,12.431" style="fill:url(#_Radial21);fill-rule:nonzero;"/>
<path d="M63.205,57.315c-1.214,5.58 -17.369,27.784 -29.357,30.149c-11.989,2.368 -24.988,-13.673 -26.567,-20.736c-1.578,-7.063 15.545,-25.529 34.305,-25.798c12.304,-0.177 23.656,7.026 21.619,16.385" style="fill:url(#_Radial22);fill-rule:nonzero;"/>
<path d="M54.504,60.754c-1.717,3.102 -15.803,13.833 -23.882,13.516c-8.079,-0.316 -13.708,-11.577 -13.531,-15.946c0.177,-4.369 14.255,-12.768 26.319,-10.259c7.913,1.647 13.974,7.488 11.094,12.689" style="fill:url(#_Radial23);fill-rule:nonzero;"/>
</g>
<path d="M36.741,55.538c-3.519,0.436 -20.482,-4.644 -24.978,-11.365c-4.497,-6.719 1.299,-17.895 4.937,-20.322c3.637,-2.426 18.71,4.018 23.777,15.251c3.323,7.368 2.164,15.705 -3.736,16.436" style="fill:url(#_Radial24);fill-rule:nonzero;"/>
<g>
<path d="M98.43,26.371c15.231,-2.015 28.385,2.308 29.356,9.649c0.972,7.34 -10.605,14.936 -25.836,16.951c-15.231,2.015 -28.384,-2.308 -29.356,-9.648c-0.971,-7.341 10.606,-14.936 25.836,-16.952Z" style="fill:url(#_Radial25);"/>
<path d="M101.52,27.364c13.736,1.417 24.292,8.341 23.559,15.452c-0.734,7.111 -12.482,11.734 -26.218,10.316c-13.737,-1.417 -24.293,-8.341 -23.559,-15.452c0.734,-7.111 12.481,-11.734 26.218,-10.316Z" style="fill:url(#_Radial26);"/>
<path d="M91.728,29.668c11.581,-1.43 21.601,2.407 22.36,8.562c0.76,6.154 -8.027,12.311 -19.608,13.74c-11.582,1.429 -21.602,-2.407 -22.361,-8.562c-0.76,-6.154 8.027,-12.311 19.609,-13.74Z" style="fill:url(#_Radial27);"/>
</g>
<path d="M61.347,51.035c0.022,0.368 0.979,7.845 -5.49,10.653c-5.003,2.171 -11.153,3.242 -24.791,-2.947c-13.639,-6.188 -18.378,-15.179 -18.378,-15.179c0,0 7.629,2.802 12.367,3.153c4.739,0.35 16.99,2.101 20.111,2.685c3.12,0.584 8.668,0.117 10.749,-0.35c2.08,-0.468 5.201,-1.752 5.432,1.985" style="fill:#b3c3ce;fill-rule:nonzero;"/>
<path d="M31.065,58.366c13.639,6.189 19.79,5.118 24.792,2.948c6.468,-2.809 5.512,-10.286 5.49,-10.655c-0.232,-3.736 -3.352,-2.451 -5.432,-1.984c-2.081,0.467 -7.49,0.137 -11.979,-0.178c-5.344,-0.375 -13.969,-1.5 -18.88,-2.158c-4.71,-0.63 -12.368,-3.153 -12.368,-3.153c0,0 4.74,8.991 18.377,15.18Z" style="fill:url(#_Linear28);fill-rule:nonzero;"/>
<path d="M57.256,44.227c0,0 -4.342,-3.433 -7.875,-7.168c-3.534,-3.736 -14.943,-14.539 -17.77,-17.467c-2.826,-2.927 -10.5,-12.923 -11.51,-17.164c-2.322,5.15 -3.836,14.539 -1.009,23.626c2.826,9.087 9.39,15.649 18.072,19.284c8.683,3.634 16.255,3.433 18.375,3.433c2.121,0 5.049,-1.414 1.717,-4.544" style="fill:#f5f6f2;fill-rule:nonzero;"/>
<path d="M19.467,26.054c2.827,9.086 9.39,15.649 18.073,19.283c8.682,3.636 16.254,3.687 18.375,3.687c1.197,0 4.989,-0.152 5.177,-0.714c0.403,-1.211 -1.926,-2.108 -3.375,-3.469c-3.848,-3.042 -3.776,-3.358 -7.961,-7.782c-3.534,-3.736 -14.943,-14.539 -17.769,-17.467c-2.827,-2.928 -10.502,-12.923 -11.511,-17.164c-2.322,5.149 -3.837,14.539 -1.009,23.626Z" style="fill:url(#_Linear29);fill-rule:nonzero;"/>
<path d="M105.331,7.54c-3.75,3.375 -10.395,7.863 -16.77,11.988c-6.375,4.125 -10.5,11.063 -15.375,18.375c-4.875,7.313 -9.75,10.875 -9.75,10.875c0,0 7.687,1.125 15,1.125c11.256,0 24,-9.375 28.687,-14.437c4.688,-5.063 7.838,-13.31 7.875,-21.75c0.043,-9.861 -4.519,-11.792 -4.519,-11.792c0,0 -1.398,2.241 -5.148,5.616Z" style="fill:url(#_Linear30);fill-rule:nonzero;"/>
<path d="M105.859,6.779c-3.751,3.375 -11.298,8.624 -17.673,12.749c-6.375,4.125 -10.5,11.063 -15.375,18.375c-3.75,5.626 -8.444,8.724 -10.41,10.329c-0.59,0.482 -0.934,1.765 -0.934,1.765c6.769,0.99 8.351,-0.094 16.594,-0.094c11.255,0 24,-9.375 28.687,-14.437c4.688,-5.063 7.688,-13.313 7.875,-21.75c0.188,-8.438 -4.125,-11.813 -4.125,-11.813c0,0 -0.89,1.501 -4.639,4.876Z" style="fill:url(#_Linear31);fill-rule:nonzero;"/>
<g>
<path d="M44.632,31.45c8.133,5.258 12.662,12.735 10.107,16.686c-2.555,3.952 -11.232,2.89 -19.364,-2.368c-8.133,-5.259 -12.662,-12.736 -10.107,-16.687c2.555,-3.951 11.232,-2.89 19.364,2.369Z" style="fill:url(#_Radial32);"/>
<path d="M43.849,30.894c7.726,5.84 12.066,13.139 9.684,16.29c-2.382,3.151 -10.588,0.968 -18.314,-4.871c-7.726,-5.839 -12.065,-13.139 -9.684,-16.29c2.382,-3.151 10.588,-0.968 18.314,4.871Z" style="fill:url(#_Radial33);"/>
</g>
<g>
<path d="M78.741,36.006c8.038,-4.494 15.958,-5.648 17.675,-2.577c1.716,3.071 -3.415,9.212 -11.453,13.706c-8.038,4.493 -15.957,5.648 -17.674,2.577c-1.717,-3.071 3.415,-9.212 11.452,-13.706Z" style="fill:url(#_Radial34);"/>
<path d="M81.132,32.187c7.951,-4.445 15.94,-5.31 17.83,-1.93c1.89,3.38 -3.032,9.733 -10.983,14.178c-7.951,4.445 -15.94,5.31 -17.829,1.93c-1.89,-3.38 3.031,-9.733 10.982,-14.178Z" style="fill:url(#_Radial35);"/>
<path d="M80.126,35.267c7.501,-5.169 15.482,-6.621 17.812,-3.24c2.331,3.381 -1.867,10.323 -9.367,15.493c-7.5,5.169 -15.481,6.621 -17.812,3.24c-2.33,-3.381 1.867,-10.323 9.367,-15.493Z" style="fill:url(#_Radial36);"/>
<path d="M89.308,27.918c2.879,-6.448 7.508,-10.659 10.333,-9.399c2.824,1.261 2.78,7.52 -0.098,13.967c-2.879,6.448 -7.509,10.659 -10.333,9.399c-2.824,-1.261 -2.78,-7.519 0.098,-13.967Z" style="fill:url(#_Radial37);"/>
</g>
<path d="M26.696,18.134c-0.805,5.903 0.586,11.978 3.363,15.977c2.778,4.002 10.763,11.808 18.631,12.918c5.111,0.719 10.596,0.69 10.596,0.69c0,0 -3.058,-2.97 -5.745,-8.562c-2.687,-5.591 -4.888,-10.846 -8.937,-14.358c-4.05,-3.51 -8.254,-7.302 -10.543,-10.031c-2.288,-2.728 -3.044,-4.431 -3.044,-4.431c0,0 -3.38,0.899 -4.321,7.797Z" style="fill:url(#_Linear38);fill-rule:nonzero;"/>
<path d="M26.959,18.171c-0.7,5.916 0.585,11.978 3.363,15.978c2.778,4 10.762,11.808 18.63,12.916c5.762,0.812 6.31,1.127 11.139,1.101c0,0 -3.6,-3.381 -6.288,-8.972c-2.688,-5.591 -4.887,-10.847 -8.937,-14.358c-4.05,-3.51 -8.808,-7.923 -11.097,-10.651c-2.289,-2.728 -2.764,-3.865 -2.764,-3.865c0,0 -3.347,1.934 -4.046,7.851Z" style="fill:url(#_Linear39);fill-rule:nonzero;"/>
<g>
<path d="M57.708,51.938c1.06,3.068 -2.837,7.203 -8.697,9.227c-5.861,2.024 -11.479,1.176 -12.539,-1.892c-1.059,-3.069 2.838,-7.203 8.698,-9.227c5.86,-2.024 11.479,-1.176 12.538,1.892Z" style="fill:url(#_Radial40);"/>
<path d="M55.199,53.999c0.119,2.902 -4.178,5.44 -9.592,5.663c-5.413,0.223 -9.904,-1.952 -10.024,-4.854c-0.12,-2.903 4.178,-5.44 9.591,-5.664c5.413,-0.223 9.905,1.953 10.025,4.855Z" style="fill:url(#_Radial41);"/>
<path d="M60.024,52.648c0.852,2.014 -2.078,5.179 -6.538,7.064c-4.459,1.885 -8.771,1.781 -9.622,-0.233c-0.851,-2.014 2.079,-5.179 6.538,-7.064c4.46,-1.885 8.771,-1.78 9.622,0.233Z" style="fill:url(#_Radial42);"/>
</g>
<path d="M33.667,51.566c2.166,3.131 5.442,5.398 8.477,6.086c3.035,0.69 10.168,0.927 14.358,-1.941c2.722,-1.866 5.295,-4.245 5.295,-4.245c0,0 -2.723,-0.081 -6.401,-1.56c-3.679,-1.479 -6.984,-3.009 -10.407,-2.919c-3.425,0.09 -7.043,0.115 -9.299,-0.185c-2.257,-0.299 -3.348,-0.777 -3.348,-0.777c0,0 -1.205,1.882 1.325,5.541Z" style="fill:url(#_Linear43);fill-rule:nonzero;"/>
<path d="M33.807,51.471c2.221,3.091 5.441,5.396 8.476,6.086c3.036,0.688 10.17,0.928 14.358,-1.942c3.068,-2.103 3.462,-2.19 5.729,-4.285c0,0 -3.155,-0.041 -6.835,-1.52c-3.679,-1.478 -6.982,-3.009 -10.407,-2.918c-3.424,0.091 -7.572,0.062 -9.828,-0.238c-2.256,-0.3 -2.97,-0.632 -2.97,-0.632c0,0 -0.745,2.356 1.477,5.449Z" style="fill:url(#_Linear44);fill-rule:nonzero;"/>
<path d="M100.92,50.491c-3.373,1.42 -18.374,0.622 -23.876,0c-5.503,-0.621 -11.189,-0.525 -12.25,-0.621c-3.796,-0.342 -3.106,0.887 -3.373,4.704c-0.621,10.563 3.373,12.693 6.302,13.137c2.93,0.444 5.593,-0.976 5.593,-0.976c0,0 29.024,-13.137 31.687,-14.558c0.496,-2.724 0.376,-3.586 -0.232,-3.586c-0.7,0 -2.047,1.141 -3.851,1.9Z" style="fill:url(#_Radial45);fill-rule:nonzero;"/>
<g>
<path d="M73.82,53.958c4.948,3.511 7.617,8.26 5.958,10.598c-1.66,2.339 -7.024,1.386 -11.971,-2.126c-4.948,-3.511 -7.617,-8.26 -5.958,-10.599c1.66,-2.338 7.024,-1.385 11.971,2.127Z" style="fill:url(#_Radial46);"/>
<path d="M72.54,53.958c3.799,2.696 5.535,6.783 3.876,9.121c-1.66,2.338 -6.091,2.047 -9.889,-0.649c-3.799,-2.696 -5.535,-6.783 -3.876,-9.121c1.66,-2.338 6.091,-2.047 9.889,0.649Z" style="fill:url(#_Radial47);"/>
<path d="M76.317,54.251c3.798,2.696 5.534,6.783 3.875,9.121c-1.66,2.338 -6.091,2.048 -9.889,-0.648c-3.798,-2.696 -5.535,-6.783 -3.875,-9.122c1.659,-2.338 6.09,-2.047 9.889,0.649Z" style="fill:url(#_Radial48);"/>
</g>
<path d="M63.496,55.18c2.637,4.341 9.236,7.059 12.286,7.681c3.05,0.622 6.968,-0.097 10.231,-2.059c3.811,-2.292 3.487,-4.503 3.487,-4.503c0,0 -1.191,-0.015 -3.37,-0.669c-2.18,-0.657 -5.468,-2.168 -8.551,-3.66c-3.083,-1.491 -6.724,-1.457 -10.686,-1.624c-3.961,-0.167 -6.476,-1.212 -6.476,-1.212c0,0 1.366,3.228 3.079,6.046Z" style="fill:url(#_Linear49);fill-rule:nonzero;"/>
<path d="M63.409,55.036c2.635,4.341 9.235,7.059 12.285,7.68c3.05,0.622 6.933,-0.154 10.23,-2.058c3.298,-1.903 3.588,-4.356 3.588,-4.356c0,0 -0.786,0.007 -2.965,-0.648c-2.18,-0.656 -5.972,-2.337 -9.056,-3.828c-3.083,-1.492 -6.724,-1.458 -10.686,-1.624c-3.961,-0.168 -6.854,-1.429 -6.854,-1.429c1.203,2.843 1.527,3.085 3.458,6.263Z" style="fill:url(#_Linear50);fill-rule:nonzero;"/>
<path d="M104.029,52.622c0,0 1.219,-0.937 1.125,-2.812c-0.093,-1.875 0.375,-4.688 -9.562,-10.782c-3.281,5.907 -14.625,21.657 -19.594,25.219c-4.969,3.563 -5.765,3.442 -5.765,3.442c0,0 2.871,-0.343 5.39,-2.223c2.723,-2.032 28.406,-12.844 28.406,-12.844" style="fill:#cbd3dd;fill-rule:nonzero;"/>
<path d="M76.373,64.435c-3.085,2.212 -4.026,2.655 -4.716,2.945c0.257,-0.077 2.189,-0.583 4.341,-1.726c3,-1.594 28.406,-12.844 28.406,-12.844c0,0 1.219,-0.938 1.125,-2.813c-0.093,-1.875 0.375,-4.687 -9.562,-10.781c-3.281,5.906 -14.625,21.657 -19.594,25.219Z" style="fill:url(#_Linear51);fill-rule:nonzero;"/>
<path d="M60.909,53.32c-0.618,-0.001 -6.022,9.819 -3.491,21.069c0,0 3.615,-4.338 4.058,-15.247c0.183,-4.5 -0.133,-5.822 -0.567,-5.822Z" style="fill:url(#_Linear52);fill-rule:nonzero;"/>
<path d="M46.823,22.051c1.272,-1.24 5.598,-0.248 6.615,1.116c0.995,1.333 6.118,6.458 5.875,14.213c0.788,0.033 1.832,0.17 3.031,0.17c1.036,0 1.994,-0.102 2.781,-0.152c-0.252,-7.765 4.878,-12.897 5.873,-14.231c1.017,-1.364 5.343,-2.356 6.615,-1.116c1.273,1.24 -2.035,1.116 -3.562,0.744c-4.941,1.094 -8.097,12.039 -8.769,14.594c1.152,-0.063 1.896,0.018 1.896,0.781c0,1.156 -1.619,3.021 -3.872,3.221c0.092,0.464 0.627,3.053 0.024,5.777c-0.245,1.107 -2.519,2.36 -2.519,2.36c-2.415,-7.912 -0.023,-8.682 0.01,-8.748c-1.978,-0.296 -3.057,-1.549 -3.057,-2.61c0,-0.676 0.517,-0.817 1.387,-0.796c-0.681,-2.582 -3.835,-13.487 -8.765,-14.579c-1.527,0.372 -4.835,0.496 -3.563,-0.744" style="fill:#00c6f9;fill-rule:nonzero;"/>
<path d="M70.998,23.542c-0.995,1.335 -6.125,6.465 -5.873,14.232c-0.787,0.049 -1.746,0.151 -2.781,0.151c-1.199,0 -2.243,-0.136 -3.031,-0.17c0.243,-7.755 -4.88,-12.88 -5.874,-14.213c-1.018,-1.365 -5.344,-2.356 -6.616,-1.116c-1.272,1.24 2.036,1.116 3.563,0.744c4.93,1.092 8.084,11.997 8.765,14.579c-0.87,-0.02 -1.387,0.12 -1.387,0.796c0,1.061 0.786,2.39 2.763,2.684c-0.033,0.066 -1.658,1.243 0.284,8.674c0,0 3.102,-0.292 2.628,-6.639c-0.054,-0.733 -0.13,-1.319 -0.223,-1.783c2.252,-0.201 3.962,-1.781 3.962,-2.936c0,-0.762 -0.744,-0.843 -1.897,-0.781c0.674,-2.555 3.829,-13.5 8.77,-14.594c1.527,0.372 4.835,0.496 3.562,-0.744c-0.408,-0.398 -1.13,-0.566 -1.956,-0.566c-1.75,0 -3.968,0.755 -4.659,1.682Z" style="fill:url(#_Radial53);fill-rule:nonzero;"/>
<path d="M50.005,10.069c-0.937,1.89 2.368,2.172 3.493,1.605c3.635,1.665 5.958,18.288 6.46,22.224c-0.641,-0.032 -1.022,0.182 -1.022,1.212c0,1.617 0.873,3.929 2.329,4.38c-0.024,0.1 -0.037,0.16 -0.037,0.16c0,0 -2.48,4.628 -0.417,14.753c0,0 2.307,-5.062 2.307,-12.099c0,-1.119 -0.096,-2.01 -0.165,-2.718c1.66,-0.306 2.92,-2.714 2.92,-4.476c0,-1.161 -0.547,-1.285 -1.397,-1.189c0.387,-4.644 1.969,-20.385 6.463,-22.247c1.125,0.567 4.286,0.354 3.348,-1.536c-0.937,-1.89 -4.255,-0.383 -5.571,1.387c-1.445,1.942 -4.932,10.629 -4.747,22.466c-0.579,0.076 -0.896,0.174 -1.658,0.174c-0.883,0 -1.653,-0.208 -2.234,-0.259c0.179,-11.822 -3.677,-19.606 -4.329,-21.665c-0.616,-1.95 -2.533,-3.102 -4.027,-3.102c-0.755,0 -1.401,0.295 -1.716,0.93Z" style="fill:url(#_Linear54);fill-rule:nonzero;"/>
<path d="M50.005,10.437c-0.937,1.874 2.368,2.154 3.493,1.591c3.635,1.652 5.958,18.142 6.46,22.047c-0.641,-0.031 -1.022,0.181 -1.022,1.203c0,1.604 0.873,3.897 2.329,4.344c-0.024,0.099 -0.037,0.159 -0.037,0.159c0,0 -4.295,14.834 -1.47,24.548c0,0 3.708,-12.317 3.36,-21.915c-0.04,-1.109 -0.096,-1.994 -0.165,-2.697c1.66,-0.302 2.92,-2.691 2.92,-4.439c0,-1.153 -0.547,-1.275 -1.397,-1.181c0.387,-4.606 1.969,-20.221 6.463,-22.069c1.125,0.563 4.286,0.352 3.348,-1.523c-0.937,-1.875 -4.255,-0.38 -5.571,1.376c-1.445,1.926 -4.932,10.544 -4.747,22.287c-0.579,0.075 -0.896,0.173 -1.658,0.173c-0.883,0 -1.653,-0.207 -2.234,-0.257c0.179,-11.729 -3.677,-19.449 -4.329,-21.493c-0.616,-1.934 -2.533,-3.077 -4.027,-3.077c-0.754,0.001 -1.401,0.293 -1.716,0.923Z" style="fill:url(#_Linear55);fill-rule:nonzero;"/>
<path d="M66.278,44.291c0,0 3.743,-2.96 6.791,-6.181c3.047,-3.222 12.885,-12.537 15.323,-15.063c2.438,-2.524 9.055,-11.144 9.926,-14.801c2.003,4.441 3.308,12.538 0.87,20.373c-2.437,7.836 -8.097,13.496 -15.584,16.63c-7.488,3.134 -14.018,2.96 -15.845,2.96c-1.829,0 -4.354,-1.219 -1.481,-3.918" style="fill:#f5f6f2;fill-rule:nonzero;"/>
<path d="M88.069,23.047c-2.439,2.526 -12.276,11.841 -15.323,15.063c-3.609,3.815 -3.547,4.087 -6.865,6.711c-1.25,1.173 -3.205,2.507 -2.946,3.072c0.259,0.564 3.467,0.316 4.5,0.316c1.828,0 8.358,0.174 15.846,-2.96c7.487,-3.134 13.146,-8.794 15.584,-16.629c2.439,-7.836 1.132,-15.933 -0.871,-20.374c-0.87,3.658 -7.487,12.277 -9.925,14.801Z" style="fill:url(#_Linear56);fill-rule:nonzero;"/>
<defs>
<linearGradient id="_Linear1" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0,56.99,-56.99,0,222.499,18.5284)"><stop offset="0" style="stop-color:#3f51b5;stop-opacity:1"/><stop offset="1" style="stop-color:#313a78;stop-opacity:1"/></linearGradient>
<linearGradient id="_Linear2" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0,56.99,-56.99,0,281.749,18.5284)"><stop offset="0" style="stop-color:#3f51b5;stop-opacity:1"/><stop offset="1" style="stop-color:#313a78;stop-opacity:1"/></linearGradient>
<linearGradient id="_Linear3" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0,-56.6692,56.6692,-0,299.387,73.7943)"><stop offset="0" style="stop-color:#2196f3;stop-opacity:1"/><stop offset="0.01" style="stop-color:#2196f3;stop-opacity:1"/><stop offset="1" style="stop-color:#00c0f3;stop-opacity:1"/></linearGradient>
<linearGradient id="_Linear4" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0,-56.6692,56.6692,-0,313.219,73.7943)"><stop offset="0" style="stop-color:#2196f3;stop-opacity:1"/><stop offset="0.01" style="stop-color:#2196f3;stop-opacity:1"/><stop offset="1" style="stop-color:#00c0f3;stop-opacity:1"/></linearGradient>
<linearGradient id="_Linear5" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(17.0441,33.7943,-33.7943,17.0441,139.694,21.0801)"><stop offset="0" style="stop-color:#3f51b5;stop-opacity:1"/><stop offset="1" style="stop-color:#313a78;stop-opacity:1"/></linearGradient>
<linearGradient id="_Linear6" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(23.1173,-6.36705,6.36705,23.1173,153.941,52.2409)"><stop offset="0" style="stop-color:#3f51b5;stop-opacity:1"/><stop offset="1" style="stop-color:#313a78;stop-opacity:1"/></linearGradient>
<linearGradient id="_Linear7" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(11.4607,-35.1657,35.1657,11.4607,195.608,59.0142)"><stop offset="0" style="stop-color:#3f51b5;stop-opacity:1"/><stop offset="1" style="stop-color:#313a78;stop-opacity:1"/></linearGradient>
<linearGradient id="_Linear8" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(-19.0116,-0.0985055,0.0985055,-19.0116,266.325,54.4147)"><stop offset="0" style="stop-color:#3f51b5;stop-opacity:1"/><stop offset="1" style="stop-color:#313a78;stop-opacity:1"/></linearGradient>
<linearGradient id="_Linear9" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(7.05273,-52.9934,52.9934,7.05273,237.313,71.8385)"><stop offset="0" style="stop-color:#3f51b5;stop-opacity:1"/><stop offset="1" style="stop-color:#313a78;stop-opacity:1"/></linearGradient>
<linearGradient id="_Linear10" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(-12.1464,7.83636,-7.83636,-12.1464,353.869,59.5849)"><stop offset="0" style="stop-color:#2196f3;stop-opacity:1"/><stop offset="0.01" style="stop-color:#2196f3;stop-opacity:1"/><stop offset="1" style="stop-color:#00c0f3;stop-opacity:1"/></linearGradient>
<linearGradient id="_Linear11" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(-6.465,27.8191,-27.8191,-6.465,351.575,31.532)"><stop offset="0" style="stop-color:#2196f3;stop-opacity:1"/><stop offset="0.01" style="stop-color:#2196f3;stop-opacity:1"/><stop offset="1" style="stop-color:#00c0f3;stop-opacity:1"/></linearGradient>
<radialGradient id="_Radial12" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="matrix(-66.1387,0,-0,66.1387,62.5747,49.8221)"><stop offset="0" style="stop-color:#3d4ead;stop-opacity:1"/><stop offset="1" style="stop-color:#00c0f3;stop-opacity:1"/></radialGradient>
<linearGradient id="_Linear13" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(-54.7355,0,0,-32.1015,60.3147,67.0176)"><stop offset="0" style="stop-color:#3f51b4;stop-opacity:1"/><stop offset="1" style="stop-color:#00c0f3;stop-opacity:1"/></linearGradient>
<radialGradient id="_Radial14" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="matrix(-66.1374,0,-0,66.1374,62.5749,49.8221)"><stop offset="0" style="stop-color:#3d4ead;stop-opacity:1"/><stop offset="1" style="stop-color:#00c0f3;stop-opacity:1"/></radialGradient>
<radialGradient id="_Radial15" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="matrix(-52.6361,-107.604,-12.8428,112.241,50.7804,124.457)"><stop offset="0" style="stop-color:#0072e9;stop-opacity:1"/><stop offset="1" style="stop-color:#00fdfe;stop-opacity:1"/></radialGradient>
<radialGradient id="_Radial16" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="matrix(4.0052,0.526563,-1.46889,11.3112,58.6611,65.1843)"><stop offset="0" style="stop-color:#153e68;stop-opacity:0.34"/><stop offset="1" style="stop-color:#153e68;stop-opacity:0.01"/></radialGradient>
<radialGradient id="_Radial17" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="matrix(-10.3568,10.999,26.0381,24.5177,76.5301,64.2632)"><stop offset="0" style="stop-color:#00336f;stop-opacity:1"/><stop offset="1" style="stop-color:#00336f;stop-opacity:0"/></radialGradient>
<radialGradient id="_Radial18" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="matrix(-6.51962,11.4057,24.5674,14.4231,74.7463,58.6441)"><stop offset="0" style="stop-color:#00336f;stop-opacity:0.5"/><stop offset="1" style="stop-color:#00336f;stop-opacity:0"/></radialGradient>
<radialGradient id="_Radial19" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="matrix(-4.96046,12.1651,26.2531,11.0614,74.0442,59.2965)"><stop offset="0" style="stop-color:#00336f;stop-opacity:0.5"/><stop offset="1" style="stop-color:#00336f;stop-opacity:0"/></radialGradient>
<radialGradient id="_Radial20" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="matrix(-4.22491,10.2622,22.277,9.29717,70.6931,57.3125)"><stop offset="0" style="stop-color:#00336f;stop-opacity:1"/><stop offset="1" style="stop-color:#00336f;stop-opacity:0"/></radialGradient>
<radialGradient id="_Radial21" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="matrix(-9.78901,-10.0451,-28.1355,22.8978,44.6851,58.4131)"><stop offset="0" style="stop-color:#002d68;stop-opacity:1"/><stop offset="1" style="stop-color:#002d68;stop-opacity:0"/></radialGradient>
<radialGradient id="_Radial22" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="matrix(-10.6184,-12.7117,-26.5102,25.0697,44.123,53.9971)"><stop offset="0" style="stop-color:#002d68;stop-opacity:1"/><stop offset="1" style="stop-color:#002d68;stop-opacity:0"/></radialGradient>
<radialGradient id="_Radial23" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="matrix(-4.66402,-8.96904,-21.2029,10.9396,42.8368,56.0939)"><stop offset="0" style="stop-color:#002d68;stop-opacity:1"/><stop offset="1" style="stop-color:#002d68;stop-opacity:0"/></radialGradient>
<radialGradient id="_Radial24" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="matrix(4.51007,-9.04744,-21.3185,-10.7126,33.6469,43.3607)"><stop offset="0" style="stop-color:#002d68;stop-opacity:1"/><stop offset="1" style="stop-color:#002d68;stop-opacity:0"/></radialGradient>
<radialGradient id="_Radial25" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="matrix(55.5618,-7.25333,2.08197,15.9483,72.5849,43.2523)"><stop offset="0" style="stop-color:#00326d;stop-opacity:1"/><stop offset="1" style="stop-color:#003b79;stop-opacity:0"/></radialGradient>
<radialGradient id="_Radial26" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="matrix(50.0892,5.26339,-1.61895,15.4438,75.3088,37.6118)"><stop offset="0" style="stop-color:#00326d;stop-opacity:1"/><stop offset="1" style="stop-color:#003b79;stop-opacity:0"/></radialGradient>
<radialGradient id="_Radial27" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="matrix(42.2509,-5.13094,1.62846,13.3715,72.1116,43.3493)"><stop offset="0" style="stop-color:#00326d;stop-opacity:1"/><stop offset="1" style="stop-color:#003b79;stop-opacity:0"/></radialGradient>
<linearGradient id="_Linear28" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(-48.7206,0,-0,48.7206,61.4089,53.1008)"><stop offset="0" style="stop-color:#f5f7fa;stop-opacity:1"/><stop offset="0.53" style="stop-color:#f1f4f2;stop-opacity:1"/><stop offset="1" style="stop-color:#bad7e9;stop-opacity:1"/></linearGradient>
<linearGradient id="_Linear29" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(-43.2077,0,-0,43.2077,61.1382,25.6029)"><stop offset="0" style="stop-color:#fafafa;stop-opacity:1"/><stop offset="0.26" style="stop-color:#f1f6f8;stop-opacity:1"/><stop offset="0.73" style="stop-color:#dce5eb;stop-opacity:1"/><stop offset="1" style="stop-color:#bbcfda;stop-opacity:1"/></linearGradient>
<linearGradient id="_Linear30" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0,-47.9791,-47.9791,-0,89.2171,49.9033)"><stop offset="0" style="stop-color:#fdfdff;stop-opacity:1"/><stop offset="0.26" style="stop-color:#f1f2f2;stop-opacity:1"/><stop offset="0.73" style="stop-color:#bfd2e0;stop-opacity:1"/><stop offset="1" style="stop-color:#afc0cc;stop-opacity:1"/></linearGradient>
<linearGradient id="_Linear31" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0,-48.0543,-48.0543,-0,88.4231,49.9576)"><stop offset="0" style="stop-color:#f1f6f6;stop-opacity:1"/><stop offset="0.41" style="stop-color:#fdfdfd;stop-opacity:1"/><stop offset="0.55" style="stop-color:#f5f8fa;stop-opacity:1"/><stop offset="0.89" style="stop-color:#d6e1e7;stop-opacity:1"/><stop offset="0.98" style="stop-color:#c3d3dd;stop-opacity:1"/><stop offset="1" style="stop-color:#c3d3dd;stop-opacity:1"/></linearGradient>
<radialGradient id="_Radial32" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="matrix(14.7354,9.52776,-4.62893,7.15901,40.0035,38.6087)"><stop offset="0" style="stop-color:#153e68;stop-opacity:1"/><stop offset="1" style="stop-color:#153e68;stop-opacity:0"/></radialGradient>
<radialGradient id="_Radial33" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="matrix(13.9988,10.5803,-4.31511,5.70934,39.5341,36.6037)"><stop offset="0" style="stop-color:#153e68;stop-opacity:1"/><stop offset="1" style="stop-color:#153e68;stop-opacity:0"/></radialGradient>
<radialGradient id="_Radial34" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="matrix(14.5634,-8.14176,3.11074,5.56427,81.8521,41.5703)"><stop offset="0" style="stop-color:#153e68;stop-opacity:1"/><stop offset="1" style="stop-color:#153e68;stop-opacity:0"/></radialGradient>
<radialGradient id="_Radial35" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="matrix(14.4062,-8.05386,3.42371,6.12408,84.5558,38.3112)"><stop offset="0" style="stop-color:#153e68;stop-opacity:1"/><stop offset="1" style="stop-color:#153e68;stop-opacity:0"/></radialGradient>
<radialGradient id="_Radial36" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="matrix(13.5894,-9.36638,4.22241,6.1262,84.3487,41.3934)"><stop offset="0" style="stop-color:#153e68;stop-opacity:1"/><stop offset="1" style="stop-color:#1a426b;stop-opacity:0"/></radialGradient>
<radialGradient id="_Radial37" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="matrix(5.21516,-11.6826,5.1171,2.2843,94.4254,30.2021)"><stop offset="0" style="stop-color:#153e68;stop-opacity:1"/><stop offset="1" style="stop-color:#1b436c;stop-opacity:0"/></radialGradient>
<linearGradient id="_Linear38" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(4.72457,-33.536,33.536,4.72457,41.1538,45.9665)"><stop offset="0" style="stop-color:#fdfdff;stop-opacity:1"/><stop offset="0.26" style="stop-color:#f1f2f2;stop-opacity:1"/><stop offset="0.73" style="stop-color:#bfd2e0;stop-opacity:1"/><stop offset="1" style="stop-color:#afc0cc;stop-opacity:1"/></linearGradient>
<linearGradient id="_Linear39" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(-33.3203,-0.000343575,0.000343575,-33.3203,60.0913,29.2441)"><stop offset="0" style="stop-color:#fafafa;stop-opacity:1"/><stop offset="0.26" style="stop-color:#f1f6f8;stop-opacity:1"/><stop offset="0.73" style="stop-color:#dce5eb;stop-opacity:1"/><stop offset="1" style="stop-color:#bbcfda;stop-opacity:1"/></linearGradient>
<radialGradient id="_Radial40" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1.92018,5.55941,-10.6179,3.66735,47.0904,55.6053)"><stop offset="0" style="stop-color:#153e68;stop-opacity:1"/><stop offset="1" style="stop-color:#153e68;stop-opacity:0"/></radialGradient>
<radialGradient id="_Radial41" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.21678,5.25887,-9.80783,0.404296,45.3907,54.4033)"><stop offset="0" style="stop-color:#153e68;stop-opacity:1"/><stop offset="1" style="stop-color:#153e68;stop-opacity:0"/></radialGradient>
<radialGradient id="_Radial42" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1.54211,3.64848,-8.0801,3.41524,51.9443,56.0636)"><stop offset="0" style="stop-color:#153e68;stop-opacity:1"/><stop offset="1" style="stop-color:#153e68;stop-opacity:0"/></radialGradient>
<linearGradient id="_Linear43" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(-12.2342,-17.8556,17.8556,-12.2342,52.4894,58.4592)"><stop offset="0" style="stop-color:#fdfdff;stop-opacity:1"/><stop offset="0.26" style="stop-color:#f1f2f2;stop-opacity:1"/><stop offset="0.73" style="stop-color:#bfd2e0;stop-opacity:1"/><stop offset="1" style="stop-color:#afc0cc;stop-opacity:1"/></linearGradient>
<linearGradient id="_Linear44" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(-15.7162,14.3692,-14.3692,-15.7162,54.2101,42.4051)"><stop offset="0" style="stop-color:#fafafa;stop-opacity:1"/><stop offset="0.26" style="stop-color:#f1f6f8;stop-opacity:1"/><stop offset="0.73" style="stop-color:#dce5eb;stop-opacity:1"/><stop offset="1" style="stop-color:#bbcfda;stop-opacity:1"/></linearGradient>
<radialGradient id="_Radial45" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="matrix(-16.9591,0,-0,16.9591,83.3344,58.1937)"><stop offset="0" style="stop-color:#f9f9fa;stop-opacity:1"/><stop offset="1" style="stop-color:#f5f7f7;stop-opacity:1"/></radialGradient>
<radialGradient id="_Radial46" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="matrix(8.96408,6.36252,-3.00685,4.23632,70.8134,58.194)"><stop offset="0" style="stop-color:#153e68;stop-opacity:1"/><stop offset="1" style="stop-color:#153e68;stop-opacity:0"/></radialGradient>
<radialGradient id="_Radial47" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="matrix(6.8821,4.88477,-3.00685,4.23632,69.5335,58.194)"><stop offset="0" style="stop-color:#153e68;stop-opacity:1"/><stop offset="1" style="stop-color:#153e68;stop-opacity:0"/></radialGradient>
<radialGradient id="_Radial48" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="matrix(6.8821,4.88477,-3.00685,4.23632,73.3098,58.4873)"><stop offset="0" style="stop-color:#153e68;stop-opacity:1"/><stop offset="1" style="stop-color:#153e68;stop-opacity:0"/></radialGradient>
<linearGradient id="_Linear49" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(18.4986,-11.2373,-11.2373,-18.4986,66.0219,59.3376)"><stop offset="0" style="stop-color:#fdfdff;stop-opacity:1"/><stop offset="0.26" style="stop-color:#f1f2f2;stop-opacity:1"/><stop offset="0.73" style="stop-color:#bfd2e0;stop-opacity:1"/><stop offset="1" style="stop-color:#afc0cc;stop-opacity:1"/></linearGradient>
<linearGradient id="_Linear50" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(8.40915,19.5646,19.5646,-8.40915,71.0611,43.9983)"><stop offset="0" style="stop-color:#fafafa;stop-opacity:1"/><stop offset="0.26" style="stop-color:#f1f6f8;stop-opacity:1"/><stop offset="0.73" style="stop-color:#dce5eb;stop-opacity:1"/><stop offset="1" style="stop-color:#bbcfda;stop-opacity:1"/></linearGradient>
<linearGradient id="_Linear51" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(6.46873,14.3437,14.3437,-6.46873,82.3507,45.5017)"><stop offset="0" style="stop-color:#aebcd0;stop-opacity:1"/><stop offset="0.22" style="stop-color:#859bb9;stop-opacity:1"/><stop offset="0.53" style="stop-color:#a1b1c9;stop-opacity:1"/><stop offset="1" style="stop-color:#97a9c3;stop-opacity:1"/></linearGradient>
<linearGradient id="_Linear52" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0,-21.0692,-21.0692,0,59.0903,74.3882)"><stop offset="0" style="stop-color:#c0cbda;stop-opacity:1"/><stop offset="0.02" style="stop-color:#c0cbda;stop-opacity:1"/><stop offset="0.11" style="stop-color:#d4dbe5;stop-opacity:1"/><stop offset="0.45" style="stop-color:#f5f6f9;stop-opacity:1"/><stop offset="0.59" style="stop-color:#fdfdfd;stop-opacity:1"/><stop offset="1" style="stop-color:#fcfdfd;stop-opacity:1"/></linearGradient>
<radialGradient id="_Radial53" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="matrix(-18.2184,0,-0,12.4951,62.2182,35.8819)"><stop offset="0" style="stop-color:#3f51b5;stop-opacity:1"/><stop offset="1" style="stop-color:#04bbf3;stop-opacity:1"/></radialGradient>
<linearGradient id="_Linear54" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0,-45.2637,-45.2637,-0,62.1493,54.4033)"><stop offset="0" style="stop-color:#afc0cc;stop-opacity:1"/><stop offset="0.24" style="stop-color:#afc0cc;stop-opacity:1"/><stop offset="0.74" style="stop-color:#f1f2f2;stop-opacity:1"/><stop offset="1" style="stop-color:#fdfdff;stop-opacity:1"/></linearGradient>
<linearGradient id="_Linear55" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0,-46.5257,-46.5257,-0,62.1493,56.0403)"><stop offset="0" style="stop-color:#fafafa;stop-opacity:1"/><stop offset="0.26" style="stop-color:#f1f6f8;stop-opacity:1"/><stop offset="0.73" style="stop-color:#dce5eb;stop-opacity:1"/><stop offset="1" style="stop-color:#bbcfda;stop-opacity:1"/></linearGradient>
<linearGradient id="_Linear56" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0,-39.9686,39.9686,-0,81.5604,48.215)"><stop offset="0" style="stop-color:#f1f6f6;stop-opacity:1"/><stop offset="0.41" style="stop-color:#fdfdfd;stop-opacity:1"/><stop offset="0.55" style="stop-color:#f5f8fa;stop-opacity:1"/><stop offset="0.89" style="stop-color:#d6e1e7;stop-opacity:1"/><stop offset="0.98" style="stop-color:#c3d3dd;stop-opacity:1"/><stop offset="1" style="stop-color:#c3d3dd;stop-opacity:1"/></linearGradient>
</defs>
</svg>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="100%" height="100%" viewBox="0 0 282 82" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:1.41421;">
<path d="M85.83,1.976c-1.317,1.317 -1.975,2.934 -1.975,4.854c-0.001,1.922 0.658,3.554 1.975,4.897c1.316,1.346 2.935,2.016 4.855,2.016c1.92,0 3.552,-0.67 4.896,-2.016c1.344,-1.343 2.016,-2.975 2.016,-4.897c0,-1.92 -0.672,-3.537 -2.016,-4.854c-1.344,-1.317 -2.976,-1.976 -4.896,-1.976c-1.92,0 -3.539,0.659 -4.855,1.976Zm0.371,16.005c-1.235,1.234 -1.852,2.73 -1.852,4.485l0,33.328c0,0.879 0.164,1.716 0.493,2.51c0.329,0.797 0.782,1.482 1.359,2.058c0.575,0.576 1.247,1.029 2.015,1.359c0.768,0.328 1.591,0.492 2.47,0.492c1.754,0 3.263,-0.63 4.526,-1.892c1.26,-1.261 1.892,-2.77 1.892,-4.527l0,-33.328c0,-0.876 -0.164,-1.7 -0.493,-2.469c-0.33,-0.768 -0.783,-1.44 -1.358,-2.016c-0.576,-0.576 -1.263,-1.029 -2.058,-1.357c-0.796,-0.329 -1.633,-0.494 -2.509,-0.494c-1.757,0 -3.251,0.617 -4.485,1.851Z" style="fill:url(#_Linear1);fill-rule:nonzero;"/>
<path d="M150.511,1.976c-1.318,1.317 -1.975,2.934 -1.975,4.854c0,1.922 0.657,3.554 1.975,4.897c1.317,1.346 2.935,2.016 4.855,2.016c1.92,0 3.552,-0.67 4.897,-2.016c1.343,-1.343 2.016,-2.975 2.016,-4.897c0,-1.92 -0.673,-3.537 -2.016,-4.854c-1.345,-1.317 -2.977,-1.976 -4.897,-1.976c-1.92,0 -3.538,0.659 -4.855,1.976Zm0.37,16.005c-1.234,1.234 -1.852,2.73 -1.852,4.485l0,33.328c0,0.879 0.164,1.716 0.495,2.51c0.329,0.797 0.781,1.482 1.357,2.058c0.575,0.576 1.247,1.029 2.017,1.359c0.767,0.328 1.59,0.492 2.468,0.492c1.755,0 3.263,-0.63 4.527,-1.892c1.26,-1.261 1.892,-2.77 1.892,-4.527l0,-33.328c0,-0.876 -0.164,-1.7 -0.494,-2.469c-0.33,-0.768 -0.782,-1.44 -1.357,-2.016c-0.576,-0.576 -1.263,-1.029 -2.057,-1.357c-0.796,-0.329 -1.633,-0.494 -2.511,-0.494c-1.756,0 -3.25,0.617 -4.485,1.851Z" style="fill:url(#_Linear2);fill-rule:nonzero;"/>
<path d="M171.494,46.784c-0.988,0.411 -1.838,0.987 -2.551,1.728c-0.714,0.741 -1.276,1.592 -1.687,2.55c-0.411,0.961 -0.618,1.99 -0.618,3.087c0,2.25 0.768,4.155 2.305,5.72c1.535,1.563 3.429,2.344 5.677,2.344c2.249,0 4.157,-0.781 5.721,-2.344c1.562,-1.565 2.345,-3.47 2.345,-5.72c0,-1.097 -0.206,-2.126 -0.617,-3.087c-0.412,-0.958 -0.988,-1.809 -1.728,-2.55c-0.74,-0.741 -1.605,-1.317 -2.593,-1.728c-0.987,-0.411 -2.03,-0.618 -3.128,-0.618c-1.097,0 -2.139,0.207 -3.126,0.618Z" style="fill:url(#_Linear3);fill-rule:nonzero;"/>
<path d="M188.94,1.976c-1.317,1.317 -1.976,2.934 -1.976,4.854c0,1.922 0.659,3.554 1.976,4.897c1.316,1.346 2.933,2.016 4.855,2.016c1.919,0 3.551,-0.67 4.897,-2.016c1.343,-1.343 2.015,-2.975 2.015,-4.897c0,-1.92 -0.672,-3.537 -2.015,-4.854c-1.346,-1.317 -2.978,-1.976 -4.897,-1.976c-1.922,0 -3.539,0.659 -4.855,1.976Zm0.37,16.005c-1.235,1.234 -1.852,2.73 -1.852,4.485l0,39.747c0,1.536 -0.22,2.73 -0.659,3.58c-0.44,0.851 -0.974,1.564 -1.603,2.14c-0.632,0.577 -1.317,1.042 -2.058,1.399c-0.741,0.356 -1.426,0.795 -2.058,1.317c-0.63,0.521 -1.165,1.179 -1.605,1.975c-0.437,0.794 -0.658,1.879 -0.658,3.251c0,1.755 0.645,3.085 1.934,3.99c1.29,0.906 2.84,1.359 4.65,1.359c2.029,0 3.95,-0.399 5.76,-1.194c1.81,-0.795 3.387,-1.975 4.733,-3.538c1.343,-1.564 2.398,-3.539 3.167,-5.926c0.769,-2.386 1.152,-5.171 1.152,-8.353l0,-39.747c0,-0.876 -0.164,-1.7 -0.494,-2.469c-0.328,-0.768 -0.78,-1.44 -1.357,-2.016c-0.576,-0.576 -1.264,-1.029 -2.058,-1.357c-0.795,-0.329 -1.633,-0.494 -2.509,-0.494c-1.758,0 -3.252,0.617 -4.485,1.851Z" style="fill:url(#_Linear4);fill-rule:nonzero;"/>
<clipPath id="_clip5">
<path d="M3.991,1.192c-0.905,0.468 -1.645,1.058 -2.222,1.771c-0.577,0.714 -1.016,1.495 -1.317,2.346c-0.302,0.85 -0.452,1.659 -0.452,2.427c0,0.823 0.109,1.564 0.329,2.221l14.629,46.475c2.349,-6.486 4.885,-13.534 7.493,-20.85l-8.461,-30.069c-0.44,-1.534 -1.29,-2.756 -2.552,-3.661c-1.262,-0.905 -2.688,-1.358 -4.279,-1.358c-1.207,0 -2.263,0.234 -3.168,0.698Z"/>
</clipPath>
<g clip-path="url(#_clip5)">
<path d="M10.488,-2.093l24.438,48.454l-19.968,10.07l-24.438,-48.453l19.968,-10.071Z" style="fill:url(#_Linear6);fill-rule:nonzero;"/>
</g>
<clipPath id="_clip7">
<path d="M35.839,1.769c-1.18,0.851 -2.072,2.072 -2.676,3.663l-10.698,30.201l-0.014,-0.051c-2.608,7.316 -5.144,14.364 -7.493,20.85l0.266,0.845c0.494,1.536 1.317,2.743 2.468,3.62c1.153,0.878 2.523,1.316 4.116,1.316c1.591,0 2.962,-0.423 4.114,-1.275c1.152,-0.849 2.002,-2.043 2.551,-3.579l11.604,-32.671l11.456,32.257c1.978,-6.628 4.096,-13.997 6.094,-21.482l-10.637,-30.031c-0.55,-1.591 -1.428,-2.812 -2.634,-3.663c-1.208,-0.849 -2.634,-1.275 -4.279,-1.275c-1.646,0 -3.059,0.426 -4.238,1.275Z"/>
</clipPath>
<g clip-path="url(#_clip7)">
<path d="M2.293,10.447l45.028,-12.402l15.376,55.825l-45.029,12.402l-15.375,-55.825Z" style="fill:url(#_Linear8);fill-rule:nonzero;"/>
</g>
<clipPath id="_clip9">
<path d="M68.714,1.852c-1.263,0.905 -2.112,2.127 -2.551,3.661l-8.476,30.12l-0.06,-0.17c-1.998,7.485 -4.116,14.854 -6.094,21.482l0.146,0.414c0.549,1.536 1.4,2.73 2.552,3.579c1.151,0.852 2.522,1.275 4.115,1.275c1.591,0 2.962,-0.438 4.115,-1.316c1.151,-0.877 1.974,-2.084 2.468,-3.62l14.896,-47.32c0.218,-0.657 0.328,-1.398 0.328,-2.221c0,-0.768 -0.152,-1.577 -0.452,-2.427c-0.303,-0.851 -0.741,-1.632 -1.317,-2.346c-0.575,-0.713 -1.316,-1.303 -2.222,-1.771c-0.905,-0.464 -1.962,-0.698 -3.168,-0.698c-1.592,0 -3.017,0.453 -4.28,1.358Z"/>
</clipPath>
<g clip-path="url(#_clip9)">
<path d="M48.492,59.544l19.898,-61.054l14.197,4.626l-19.898,61.055l-14.197,-4.627Z" style="fill:url(#_Linear10);fill-rule:nonzero;"/>
</g>
<clipPath id="_clip11">
<path d="M133.889,17.611l-17.12,13.743l0,11.855l15.556,16.7c0.712,0.77 1.549,1.345 2.51,1.729c0.959,0.384 1.906,0.575 2.839,0.575c0.603,0 1.261,-0.108 1.975,-0.328c0.713,-0.218 1.37,-0.576 1.976,-1.07c0.602,-0.494 1.11,-1.153 1.522,-1.975c0.411,-0.823 0.617,-1.811 0.617,-2.963c0,-0.823 -0.152,-1.646 -0.453,-2.469c-0.301,-0.822 -0.781,-1.535 -1.439,-2.139l-14.32,-13.826l14.484,-10.286c0.768,-0.548 1.317,-1.234 1.645,-2.057c0.329,-0.823 0.494,-1.673 0.494,-2.551c0,-1.153 -0.22,-2.14 -0.658,-2.963c-0.44,-0.823 -0.975,-1.494 -1.606,-2.016c-0.63,-0.521 -1.303,-0.891 -2.014,-1.111c-0.714,-0.219 -1.373,-0.329 -1.976,-0.329c-1.482,0 -2.827,0.494 -4.032,1.481Z"/>
</clipPath>
<g clip-path="url(#_clip11)">
<path d="M143.974,62.251l-27.364,-0.142l0.238,-46.092l27.364,0.142l-0.238,46.092Z" style="fill:url(#_Linear12);fill-rule:nonzero;"/>
</g>
<g>
<g opacity="0.100006">
<clipPath id="_clip13">
<rect x="13.204" y="35.633" width="9.261" height="20.798"/>
</clipPath>
<g clip-path="url(#_clip13)">
<path d="M22.466,35.633l-7.508,20.798l-1.753,-5.569l9.261,-15.229Z" style="fill-rule:nonzero;"/>
</g>
</g>
</g>
<g>
<g opacity="0.100006">
<clipPath id="_clip14">
<rect x="49.558" y="35.633" width="8.129" height="21.311"/>
</clipPath>
<g clip-path="url(#_clip14)">
<path d="M57.687,35.633l-6.154,21.312l-1.974,-5.559l8.128,-15.753Z" style="fill-rule:nonzero;"/>
</g>
</g>
</g>
<g>
<g opacity="0.100006">
<clipPath id="_clip15">
<rect x="116.769" y="31.272" width="4.02" height="16.242"/>
</clipPath>
<g clip-path="url(#_clip15)">
<path d="M116.854,31.272l3.936,16.242l-4.021,-4.305l0.085,-11.937Z" style="fill-rule:nonzero;"/>
</g>
</g>
</g>
<clipPath id="_clip16">
<path d="M105.949,2.345c-1.233,1.235 -1.851,2.73 -1.851,4.485l0,48.964c0,0.879 0.165,1.716 0.495,2.51c0.329,0.797 0.781,1.482 1.356,2.058c0.576,0.576 1.248,1.029 2.017,1.359c0.767,0.328 1.591,0.492 2.468,0.492c1.756,0 3.265,-0.63 4.527,-1.892c1.262,-1.261 1.893,-2.77 1.893,-4.527l0,-12.508l0,-12.015l0,-24.441c0,-0.876 -0.165,-1.7 -0.494,-2.469c-0.329,-0.767 -0.781,-1.44 -1.357,-2.016c-0.576,-0.576 -1.262,-1.029 -2.058,-1.357c-0.797,-0.329 -1.634,-0.494 -2.511,-0.494c-1.755,0 -3.25,0.618 -4.485,1.851Z"/>
</clipPath>
<g clip-path="url(#_clip16)">
<path d="M96.722,60.505l8.101,-60.875l19.396,2.581l-8.102,60.875l-19.395,-2.581Z" style="fill:url(#_Linear17);fill-rule:nonzero;"/>
</g>
<clipPath id="_clip18">
<path d="M207.661,45.549c-1.126,1.07 -1.688,2.703 -1.688,4.897c0,1.811 0.645,3.457 1.934,4.937c1.288,1.482 2.893,2.771 4.815,3.868c1.919,1.099 3.976,1.948 6.171,2.551c2.194,0.603 4.198,0.906 6.007,0.906c2.523,0 4.896,-0.33 7.12,-0.987c2.221,-0.66 4.181,-1.632 5.883,-2.923c0.636,-0.482 1.206,-1.025 1.741,-1.6c-0.842,-4.69 -4.288,-9.214 -12.489,-12.483c0.54,0.239 1.043,0.488 1.49,0.752c1.07,0.632 1.605,1.469 1.605,2.51c0,1.099 -0.523,1.879 -1.563,2.345c-1.043,0.467 -2.113,0.7 -3.21,0.7c-1.263,0 -2.429,-0.371 -3.497,-1.112c-1.071,-0.74 -2.113,-1.548 -3.128,-2.427c-1.015,-0.876 -2.072,-1.686 -3.168,-2.428c-1.098,-0.74 -2.251,-1.11 -3.456,-1.11c-1.921,0 -3.444,0.535 -4.567,1.604Z"/>
</clipPath>
<g clip-path="url(#_clip18)">
<path d="M241.491,56.676l-23.361,15.071l-15.168,-23.511l23.361,-15.072l15.168,23.512Z" style="fill:url(#_Linear19);fill-rule:nonzero;"/>
</g>
<g>
<g opacity="0.100006">
<clipPath id="_clip20">
<rect x="227.156" y="44.711" width="12.489" height="13.886"/>
</clipPath>
<g clip-path="url(#_clip20)">
<path d="M239.645,57.194c-0.843,-4.69 -4.289,-9.213 -12.489,-12.483c0.538,0.24 1.042,0.489 1.489,0.753c0.251,0.147 0.467,0.309 0.659,0.48c0,0 -0.001,-0.001 -0.002,-0.001c0.001,0 0.002,0.001 0.003,0.001c0.025,0.023 0.049,0.045 0.073,0.068c5.003,4.422 7.687,8.647 8.759,12.586c0.54,-0.434 1.041,-0.903 1.508,-1.404" style="fill-rule:nonzero;"/>
</g>
</g>
</g>
<clipPath id="_clip21">
<path d="M217.165,16.706c-1.921,0.714 -3.526,1.7 -4.814,2.962c-1.29,1.263 -2.235,2.744 -2.839,4.444c-0.605,1.701 -0.906,3.568 -0.906,5.596c0,2.58 0.535,4.664 1.606,6.255c1.07,1.592 2.4,2.894 3.99,3.908c1.591,1.016 3.333,1.798 5.226,2.346c1.893,0.549 3.635,1.069 5.225,1.563c0.927,0.288 1.753,0.601 2.502,0.935c8.201,3.269 11.647,7.793 12.489,12.483c0.898,-0.961 1.673,-2.035 2.292,-3.255c0.987,-1.947 1.48,-4.238 1.48,-6.871c0,-2.742 -0.534,-4.951 -1.605,-6.625c-1.068,-1.673 -2.399,-3.004 -3.99,-3.992c-1.592,-0.987 -3.32,-1.74 -5.185,-2.262c-1.865,-0.521 -3.594,-1.014 -5.184,-1.482c-1.593,-0.465 -2.922,-1.014 -3.991,-1.645c-1.07,-0.63 -1.605,-1.577 -1.605,-2.839c0,-0.603 0.205,-1.07 0.617,-1.399c0.411,-0.33 0.918,-0.494 1.523,-0.494c1.041,0 1.933,0.206 2.674,0.617c0.741,0.412 1.493,0.851 2.263,1.317c0.767,0.467 1.604,0.905 2.51,1.316c0.905,0.412 2.017,0.618 3.333,0.618c1.535,0 2.839,-0.548 3.909,-1.646c1.034,-1.06 1.557,-2.305 1.591,-3.724l-6.638,0c-1.412,0 -2.567,-1.155 -2.567,-2.567l0,-5.811c-0.152,-0.039 -0.295,-0.082 -0.451,-0.119c-2.003,-0.466 -4.211,-0.699 -6.624,-0.699c-2.634,0 -4.911,0.357 -6.831,1.07Z"/>
</clipPath>
<g clip-path="url(#_clip21)">
<path d="M250.155,20.875l-8.547,36.779l-38.046,-8.841l8.548,-36.78l38.045,8.842Z" style="fill:url(#_Linear22);fill-rule:nonzero;"/>
</g>
<path d="M245.311,17.359c0,1.239 1.015,2.254 2.255,2.254l6.792,0c1.24,0 2.255,-1.015 2.255,-2.254l0,-6.792c0,-1.241 -1.015,-2.255 -2.255,-2.255l-6.792,0c-1.24,0 -2.255,1.014 -2.255,2.255l0,6.792Z" style="fill:#3f51b5;fill-rule:nonzero;"/>
<path d="M263.904,19.728c0,1.24 1.015,2.255 2.255,2.255l3.511,0c1.24,0 2.255,-1.015 2.255,-2.255l0,-3.511c0,-1.24 -1.015,-2.255 -2.255,-2.255l-3.511,0c-1.24,0 -2.255,1.015 -2.255,2.255l0,3.511Z" style="fill:#3f51b5;fill-rule:nonzero;"/>
<path d="M256.613,37.774c0,1.24 1.015,2.255 2.254,2.255l4.97,0c1.24,0 2.254,-1.015 2.254,-2.255l0,-4.969c0,-1.24 -1.014,-2.255 -2.254,-2.255l-4.97,0c-1.239,0 -2.254,1.015 -2.254,2.255l0,4.969Z" style="fill:#3f51b5;fill-rule:nonzero;"/>
<path d="M276.299,28.478c0,1.24 1.015,2.254 2.255,2.254l0.959,0c1.241,0 2.255,-1.014 2.255,-2.254l0,-0.959c0,-1.24 -1.014,-2.255 -2.255,-2.255l-0.959,0c-1.24,0 -2.255,1.015 -2.255,2.255l0,0.959Z" style="fill:#3f51b5;fill-rule:nonzero;"/>
<defs>
<linearGradient id="_Linear1" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0,62.2136,-62.2136,0,90.7262,5.565e-05)"><stop offset="0" style="stop-color:#3f51b5;stop-opacity:1"/><stop offset="1" style="stop-color:#313a78;stop-opacity:1"/></linearGradient>
<linearGradient id="_Linear2" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0,62.2136,-62.2136,0,155.407,5.565e-05)"><stop offset="0" style="stop-color:#3f51b5;stop-opacity:1"/><stop offset="1" style="stop-color:#313a78;stop-opacity:1"/></linearGradient>
<linearGradient id="_Linear3" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0,-61.8634,61.8634,0,174.662,60.3315)"><stop offset="0" style="stop-color:#2196f3;stop-opacity:1"/><stop offset="1" style="stop-color:#00c0f3;stop-opacity:1"/></linearGradient>
<linearGradient id="_Linear4" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0,-61.8634,61.8634,0,189.762,60.3315)"><stop offset="0" style="stop-color:#2196f3;stop-opacity:1"/><stop offset="1" style="stop-color:#00c0f3;stop-opacity:1"/></linearGradient>
<linearGradient id="_Linear6" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(18.6063,36.8918,-36.8918,18.6063,0.331477,2.78559)"><stop offset="0" style="stop-color:#3f51b5;stop-opacity:1"/><stop offset="1" style="stop-color:#313a78;stop-opacity:1"/></linearGradient>
<linearGradient id="_Linear8" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(25.2361,-6.95063,6.95063,25.2361,15.8848,36.8025)"><stop offset="0" style="stop-color:#3f51b5;stop-opacity:1"/><stop offset="1" style="stop-color:#313a78;stop-opacity:1"/></linearGradient>
<linearGradient id="_Linear10" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(12.5111,-38.3889,38.3889,12.5111,61.3712,44.1966)"><stop offset="0" style="stop-color:#3f51b5;stop-opacity:1"/><stop offset="1" style="stop-color:#313a78;stop-opacity:1"/></linearGradient>
<linearGradient id="_Linear12" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(-20.7541,-0.107534,0.107534,-20.7541,138.569,39.1756)"><stop offset="0" style="stop-color:#3f51b5;stop-opacity:1"/><stop offset="1" style="stop-color:#313a78;stop-opacity:1"/></linearGradient>
<linearGradient id="_Linear17" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(7.69916,-57.8506,57.8506,7.69916,106.898,58.1964)"><stop offset="0" style="stop-color:#3f51b5;stop-opacity:1"/><stop offset="1" style="stop-color:#313a78;stop-opacity:1"/></linearGradient>
<linearGradient id="_Linear19" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(-13.2597,8.55462,-8.55462,-13.2597,234.138,44.8197)"><stop offset="0" style="stop-color:#2196f3;stop-opacity:1"/><stop offset="1" style="stop-color:#00c0f3;stop-opacity:1"/></linearGradient>
<linearGradient id="_Linear22" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(-7.05756,30.3689,-30.3689,-7.05756,231.634,14.1955)"><stop offset="0" style="stop-color:#2196f3;stop-opacity:1"/><stop offset="1" style="stop-color:#00c0f3;stop-opacity:1"/></linearGradient>
</defs>
</svg>
<svg width='84' height='48' viewBox='0 0 84 48' xmlns='http://www.w3.org/2000/svg'>
<path d='M0 0h12v6H0V0zm28 8h12v6H28V8zm14-8h12v6H42V0zm14 0h12v6H56V0zm0 8h12v6H56V8zM42 8h12v6H42V8zm0 16h12v6H42v-6zm14-8h12v6H56v-6zm14 0h12v6H70v-6zm0-16h12v6H70V0zM28 32h12v6H28v-6zM14 16h12v6H14v-6zM0 24h12v6H0v-6zm0 8h12v6H0v-6zm14 0h12v6H14v-6zm14 8h12v6H28v-6zm-14 0h12v6H14v-6zm28 0h12v6H42v-6zm14-8h12v6H56v-6zm0-8h12v6H56v-6zm14 8h12v6H70v-6zm0 8h12v6H70v-6zM14 24h12v6H14v-6zm14-8h12v6H28v-6zM14 8h12v6H14V8zM0 8h12v6H0V8z' fill='#000000' fill-opacity='0.05' fill-rule='evenodd'/>
</svg>
\ No newline at end of file
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 304 304" width="304" height="304">
<path fill='#000000' fill-opacity='0.15' fill-rule='evenodd' d="M44.1 224a5 5 0 1 1 0 2H0v-2h44.1zm160 48a5 5 0 1 1 0 2H82v-2h122.1zm57.8-46a5 5 0 1 1 0-2H304v2h-42.1zm0 16a5 5 0 1 1 0-2H304v2h-42.1zm6.2-114a5 5 0 1 1 0 2h-86.2a5 5 0 1 1 0-2h86.2zm-256-48a5 5 0 1 1 0 2H0v-2h12.1zm185.8 34a5 5 0 1 1 0-2h86.2a5 5 0 1 1 0 2h-86.2zM258 12.1a5 5 0 1 1-2 0V0h2v12.1zm-64 208a5 5 0 1 1-2 0v-54.2a5 5 0 1 1 2 0v54.2zm48-198.2V80h62v2h-64V21.9a5 5 0 1 1 2 0zm16 16V64h46v2h-48V37.9a5 5 0 1 1 2 0zm-128 96V208h16v12.1a5 5 0 1 1-2 0V210h-16v-76.1a5 5 0 1 1 2 0zm-5.9-21.9a5 5 0 1 1 0 2H114v48H85.9a5 5 0 1 1 0-2H112v-48h12.1zm-6.2 130a5 5 0 1 1 0-2H176v-74.1a5 5 0 1 1 2 0V242h-60.1zm-16-64a5 5 0 1 1 0-2H114v48h10.1a5 5 0 1 1 0 2H112v-48h-10.1zM66 284.1a5 5 0 1 1-2 0V274H50v30h-2v-32h18v12.1zM236.1 176a5 5 0 1 1 0 2H226v94h48v32h-2v-30h-48v-98h12.1zm25.8-30a5 5 0 1 1 0-2H274v44.1a5 5 0 1 1-2 0V146h-10.1zm-64 96a5 5 0 1 1 0-2H208v-80h16v-14h-42.1a5 5 0 1 1 0-2H226v18h-16v80h-12.1zm86.2-210a5 5 0 1 1 0 2H272V0h2v32h10.1zM98 101.9V146H53.9a5 5 0 1 1 0-2H96v-42.1a5 5 0 1 1 2 0zM53.9 34a5 5 0 1 1 0-2H80V0h2v34H53.9zm60.1 3.9V66H82v64H69.9a5 5 0 1 1 0-2H80V64h32V37.9a5 5 0 1 1 2 0zM101.9 82a5 5 0 1 1 0-2H128V37.9a5 5 0 1 1 2 0V82h-28.1zm16-64a5 5 0 1 1 0-2H146v44.1a5 5 0 1 1-2 0V18h-26.1zm102.2 270a5 5 0 1 1 0 2H98v14h-2v-16h124.1zM242 149.9V160h16v34h-16v62h48v48h-2v-46h-48v-66h16v-30h-16v-12.1a5 5 0 1 1 2 0zM53.9 18a5 5 0 1 1 0-2H64V2H48V0h18v18H53.9zm112 32a5 5 0 1 1 0-2H192V0h50v2h-48v48h-28.1zm-48-48a5 5 0 0 1-9.8-2h2.07a3 3 0 1 0 5.66 0H178v34h-18V21.9a5 5 0 1 1 2 0V32h14V2h-58.1zm0 96a5 5 0 1 1 0-2H137l32-32h39V21.9a5 5 0 1 1 2 0V66h-40.17l-32 32H117.9zm28.1 90.1a5 5 0 1 1-2 0v-76.51L175.59 80H224V21.9a5 5 0 1 1 2 0V82h-49.59L146 112.41v75.69zm16 32a5 5 0 1 1-2 0v-99.51L184.59 96H300.1a5 5 0 0 1 3.9-3.9v2.07a3 3 0 0 0 0 5.66v2.07a5 5 0 0 1-3.9-3.9H185.41L162 121.41v98.69zm-144-64a5 5 0 1 1-2 0v-3.51l48-48V48h32V0h2v50H66v55.41l-48 48v2.69zM50 53.9v43.51l-48 48V208h26.1a5 5 0 1 1 0 2H0v-65.41l48-48V53.9a5 5 0 1 1 2 0zm-16 16V89.41l-34 34v-2.82l32-32V69.9a5 5 0 1 1 2 0zM12.1 32a5 5 0 1 1 0 2H9.41L0 43.41V40.6L8.59 32h3.51zm265.8 18a5 5 0 1 1 0-2h18.69l7.41-7.41v2.82L297.41 50H277.9zm-16 160a5 5 0 1 1 0-2H288v-71.41l16-16v2.82l-14 14V210h-28.1zm-208 32a5 5 0 1 1 0-2H64v-22.59L40.59 194H21.9a5 5 0 1 1 0-2H41.41L66 216.59V242H53.9zm150.2 14a5 5 0 1 1 0 2H96v-56.6L56.6 162H37.9a5 5 0 1 1 0-2h19.5L98 200.6V256h106.1zm-150.2 2a5 5 0 1 1 0-2H80v-46.59L48.59 178H21.9a5 5 0 1 1 0-2H49.41L82 208.59V258H53.9zM34 39.8v1.61L9.41 66H0v-2h8.59L32 40.59V0h2v39.8zM2 300.1a5 5 0 0 1 3.9 3.9H3.83A3 3 0 0 0 0 302.17V256h18v48h-2v-46H2v42.1zM34 241v63h-2v-62H0v-2h34v1zM17 18H0v-2h16V0h2v18h-1zm273-2h14v2h-16V0h2v16zm-32 273v15h-2v-14h-14v14h-2v-16h18v1zM0 92.1A5.02 5.02 0 0 1 6 97a5 5 0 0 1-6 4.9v-2.07a3 3 0 1 0 0-5.66V92.1zM80 272h2v32h-2v-32zm37.9 32h-2.07a3 3 0 0 0-5.66 0h-2.07a5 5 0 0 1 9.8 0zM5.9 0A5.02 5.02 0 0 1 0 5.9V3.83A3 3 0 0 0 3.83 0H5.9zm294.2 0h2.07A3 3 0 0 0 304 3.83V5.9a5 5 0 0 1-3.9-5.9zm3.9 300.1v2.07a3 3 0 0 0-1.83 1.83h-2.07a5 5 0 0 1 3.9-3.9zM97 100a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0-16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-48 32a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm32 48a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-16 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm32-16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0-32a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16 32a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm32 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0-16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-16-64a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16 0a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16 96a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16-144a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0 32a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16-32a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16-16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-96 0a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16-32a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm96 0a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-16-64a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16-16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-32 0a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0-16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-16 0a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-16 0a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-16 0a3 3 0 1 0 0-6 3 3 0 0 0 0 6zM49 36a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-32 0a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm32 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zM33 68a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16-48a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0 240a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16 32a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-16-64a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-16-32a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm80-176a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16 0a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-16-16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm32 48a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16-16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0-32a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm112 176a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm-16 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zM17 180a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0 16a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm0-32a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16 0a3 3 0 1 0 0-6 3 3 0 0 0 0 6zM17 84a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm32 64a3 3 0 1 0 0-6 3 3 0 0 0 0 6zm16-16a3 3 0 1 0 0-6 3 3 0 0 0 0 6z"></path>
</svg>
<svg width="100%" height="100%" viewBox="0 0 40 40" xmlns="http://www.w3.org/2000/svg">
<path d="M40,0l-40,40l0,-20l20,-20l20,0Zm0,40l0,-20l-20,20l20,0Z" fill='#FFFFFF' fill-opacity='0.03' fill-rule='evenodd' />
</svg>
<svg
xmlns='http://www.w3.org/2000/svg' width='100' height='100' viewBox='0 0 100 100'>
<g fill-rule='evenodd'>
<g fill='#1976d2' fill-opacity='0.52'>
<path opacity='.5' d='M96 95h4v1h-4v4h-1v-4h-9v4h-1v-4h-9v4h-1v-4h-9v4h-1v-4h-9v4h-1v-4h-9v4h-1v-4h-9v4h-1v-4h-9v4h-1v-4h-9v4h-1v-4H0v-1h15v-9H0v-1h15v-9H0v-1h15v-9H0v-1h15v-9H0v-1h15v-9H0v-1h15v-9H0v-1h15v-9H0v-1h15v-9H0v-1h15V0h1v15h9V0h1v15h9V0h1v15h9V0h1v15h9V0h1v15h9V0h1v15h9V0h1v15h9V0h1v15h9V0h1v15h4v1h-4v9h4v1h-4v9h4v1h-4v9h4v1h-4v9h4v1h-4v9h4v1h-4v9h4v1h-4v9h4v1h-4v9zm-1 0v-9h-9v9h9zm-10 0v-9h-9v9h9zm-10 0v-9h-9v9h9zm-10 0v-9h-9v9h9zm-10 0v-9h-9v9h9zm-10 0v-9h-9v9h9zm-10 0v-9h-9v9h9zm-10 0v-9h-9v9h9zm-9-10h9v-9h-9v9zm10 0h9v-9h-9v9zm10 0h9v-9h-9v9zm10 0h9v-9h-9v9zm10 0h9v-9h-9v9zm10 0h9v-9h-9v9zm10 0h9v-9h-9v9zm10 0h9v-9h-9v9zm9-10v-9h-9v9h9zm-10 0v-9h-9v9h9zm-10 0v-9h-9v9h9zm-10 0v-9h-9v9h9zm-10 0v-9h-9v9h9zm-10 0v-9h-9v9h9zm-10 0v-9h-9v9h9zm-10 0v-9h-9v9h9zm-9-10h9v-9h-9v9zm10 0h9v-9h-9v9zm10 0h9v-9h-9v9zm10 0h9v-9h-9v9zm10 0h9v-9h-9v9zm10 0h9v-9h-9v9zm10 0h9v-9h-9v9zm10 0h9v-9h-9v9zm9-10v-9h-9v9h9zm-10 0v-9h-9v9h9zm-10 0v-9h-9v9h9zm-10 0v-9h-9v9h9zm-10 0v-9h-9v9h9zm-10 0v-9h-9v9h9zm-10 0v-9h-9v9h9zm-10 0v-9h-9v9h9zm-9-10h9v-9h-9v9zm10 0h9v-9h-9v9zm10 0h9v-9h-9v9zm10 0h9v-9h-9v9zm10 0h9v-9h-9v9zm10 0h9v-9h-9v9zm10 0h9v-9h-9v9zm10 0h9v-9h-9v9zm9-10v-9h-9v9h9zm-10 0v-9h-9v9h9zm-10 0v-9h-9v9h9zm-10 0v-9h-9v9h9zm-10 0v-9h-9v9h9zm-10 0v-9h-9v9h9zm-10 0v-9h-9v9h9zm-10 0v-9h-9v9h9zm-9-10h9v-9h-9v9zm10 0h9v-9h-9v9zm10 0h9v-9h-9v9zm10 0h9v-9h-9v9zm10 0h9v-9h-9v9zm10 0h9v-9h-9v9zm10 0h9v-9h-9v9zm10 0h9v-9h-9v9z'/>
<path d='M6 5V0H5v5H0v1h5v94h1V6h94V5H6z'/>
</g>
</g>
</svg>
\ No newline at end of file
<!-- background by SVGBackgrounds.com -->
<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 1600 800'><rect fill='#000000' width='1600' height='800'/><g ><path fill='#0d0d0d' d='M486 705.8c-109.3-21.8-223.4-32.2-335.3-19.4C99.5 692.1 49 703 0 719.8V800h843.8c-115.9-33.2-230.8-68.1-347.6-92.2C492.8 707.1 489.4 706.5 486 705.8z'/><path fill='#171717' d='M1600 0H0v719.8c49-16.8 99.5-27.8 150.7-33.5c111.9-12.7 226-2.4 335.3 19.4c3.4 0.7 6.8 1.4 10.2 2c116.8 24 231.7 59 347.6 92.2H1600V0z'/><path fill='#1e1e1e' d='M478.4 581c3.2 0.8 6.4 1.7 9.5 2.5c196.2 52.5 388.7 133.5 593.5 176.6c174.2 36.6 349.5 29.2 518.6-10.2V0H0v574.9c52.3-17.6 106.5-27.7 161.1-30.9C268.4 537.4 375.7 554.2 478.4 581z'/><path fill='#262626' d='M0 0v429.4c55.6-18.4 113.5-27.3 171.4-27.7c102.8-0.8 203.2 22.7 299.3 54.5c3 1 5.9 2 8.9 3c183.6 62 365.7 146.1 562.4 192.1c186.7 43.7 376.3 34.4 557.9-12.6V0H0z'/><path fill='#2e2e2e' d='M181.8 259.4c98.2 6 191.9 35.2 281.3 72.1c2.8 1.1 5.5 2.3 8.3 3.4c171 71.6 342.7 158.5 531.3 207.7c198.8 51.8 403.4 40.8 597.3-14.8V0H0v283.2C59 263.6 120.6 255.7 181.8 259.4z'/><path fill='#292929' d='M1600 0H0v136.3c62.3-20.9 127.7-27.5 192.2-19.2c93.6 12.1 180.5 47.7 263.3 89.6c2.6 1.3 5.1 2.6 7.7 3.9c158.4 81.1 319.7 170.9 500.3 223.2c210.5 61 430.8 49 636.6-16.6V0z'/><path fill='#252525' d='M454.9 86.3C600.7 177 751.6 269.3 924.1 325c208.6 67.4 431.3 60.8 637.9-5.3c12.8-4.1 25.4-8.4 38.1-12.9V0H288.1c56 21.3 108.7 50.6 159.7 82C450.2 83.4 452.5 84.9 454.9 86.3z'/><path fill='#202020' d='M1600 0H498c118.1 85.8 243.5 164.5 386.8 216.2c191.8 69.2 400 74.7 595 21.1c40.8-11.2 81.1-25.2 120.3-41.7V0z'/><path fill='#1b1b1b' d='M1397.5 154.8c47.2-10.6 93.6-25.3 138.6-43.8c21.7-8.9 43-18.8 63.9-29.5V0H643.4c62.9 41.7 129.7 78.2 202.1 107.4C1020.4 178.1 1214.2 196.1 1397.5 154.8z'/><path fill='#171717' d='M1315.3 72.4c75.3-12.6 148.9-37.1 216.8-72.4h-723C966.8 71 1144.7 101 1315.3 72.4z'/></g></svg>
import { make } from 'vuex-pathify'
const state = {
editor: '',
editorKey: '',
content: '',
mode: 'create',
activeModal: '',
activeModalData: null,
media: {
folderTree: [],
currentFolderId: 0,
currentFileId: null
},
checkoutDateActive: ''
}
export default {
namespaced: true,
state,
mutations: {
...make.mutations(state),
pushMediaFolderTree: (st, folder) => {
st.media.folderTree = st.media.folderTree.concat(folder)
},
popMediaFolderTree: (st) => {
st.media.folderTree = st.media.folderTree.slice(0, -1)
}
}
}
import _ from 'lodash'
import Vue from 'vue'
import Vuex from 'vuex'
import pathify from 'vuex-pathify' // eslint-disable-line import/no-duplicates
import { make } from 'vuex-pathify' // eslint-disable-line import/no-duplicates
import page from './page'
import site from './site'
import user from './user'
/* global WIKI */
Vue.use(Vuex)
const state = {
loadingStack: [],
notification: {
message: '',
style: 'primary',
icon: 'cached',
isActive: false
}
}
export default new Vuex.Store({
strict: process.env.NODE_ENV !== 'production',
plugins: [
pathify.plugin
],
state,
getters: {
isLoading: state => { return state.loadingStack.length > 0 }
},
mutations: {
...make.mutations(state),
loadingStart (st, stackName) {
st.loadingStack = _.union(st.loadingStack, [stackName])
},
loadingStop (st, stackName) {
st.loadingStack = _.without(st.loadingStack, stackName)
},
showNotification (st, opts) {
st.notification = _.defaults(opts, {
message: '',
style: 'primary',
icon: 'cached',
isActive: true
})
},
updateNotificationState (st, newState) {
st.notification.isActive = newState
},
pushGraphError (st, err) {
WIKI.$store.commit('showNotification', {
style: 'red',
message: _.get(err, 'graphQLErrors[0].message', err.message),
icon: 'alert'
})
}
},
actions: { },
modules: {
page,
site,
user
}
})
import { make } from 'vuex-pathify'
const state = {
id: 0,
authorId: 0,
authorName: 'Unknown',
createdAt: '',
description: '',
isPublished: true,
locale: 'en',
path: '',
publishEndDate: '',
publishStartDate: '',
tags: [],
title: '',
updatedAt: '',
editor: '',
mode: '',
scriptJs: '',
scriptCss: '',
effectivePermissions: {
comments: {
read: false,
write: false,
manage: false
},
history: {
read: false
},
source: {
read: false
},
pages: {
write: false,
manage: false,
delete: false,
script: false,
style: false
},
system: {
manage: false
}
},
commentsCount: 0
}
export default {
namespaced: true,
state,
mutations: make.mutations(state)
}
import { make } from 'vuex-pathify'
/* global siteConfig */
const state = {
id: siteConfig.id,
company: siteConfig.company,
contentLicense: siteConfig.contentLicense,
dark: siteConfig.darkMode,
title: siteConfig.title,
logoUrl: siteConfig.logoUrl,
search: '',
searchIsFocused: false,
searchIsLoading: false,
searchRestrictLocale: false,
searchRestrictPath: false,
printView: false
}
export default {
namespaced: true,
state,
mutations: make.mutations(state)
}
import { make } from 'vuex-pathify'
import jwt from 'jsonwebtoken'
import Cookies from 'js-cookie'
const state = {
id: 0,
email: '',
name: '',
pictureUrl: '',
localeCode: '',
defaultEditor: '',
timezone: '',
dateFormat: '',
appearance: '',
permissions: [],
iat: 0,
exp: 0,
authenticated: false
}
export default {
namespaced: true,
state,
mutations: {
...make.mutations(state),
REFRESH_AUTH(st) {
const jwtCookie = Cookies.get('jwt')
if (jwtCookie) {
try {
const jwtData = jwt.decode(jwtCookie)
st.id = jwtData.id
st.email = jwtData.email
st.name = jwtData.name
st.pictureUrl = jwtData.av
st.localeCode = jwtData.lc
st.timezone = jwtData.tz || Intl.DateTimeFormat().resolvedOptions().timeZone || ''
st.dateFormat = jwtData.df || ''
st.appearance = jwtData.ap || ''
// st.defaultEditor = jwtData.defaultEditor
st.permissions = jwtData.permissions
st.iat = jwtData.iat
st.exp = jwtData.exp
st.authenticated = true
} catch (err) {
console.debug('Invalid JWT. Silent authentication skipped.')
}
}
}
}
}
<template lang="pug">
v-footer.justify-center(:color='bgColor', inset)
.caption.grey--text(:class='$vuetify.theme.dark ? `text--lighten-1` : `text--darken-1`')
template(v-if='company && company.length > 0 && contentLicense !== ``')
span(v-if='contentLicense === `alr`') {{ $t('common:footer.copyright', { company: company, year: currentYear, interpolation: { escapeValue: false } }) }} |&nbsp;
span(v-else) {{ $t('common:footer.license', { company: company, license: $t('common:license.' + contentLicense), interpolation: { escapeValue: false } }) }} |&nbsp;
span {{ $t('common:footer.poweredBy') }} #[a(href='https://wiki.js.org', ref='nofollow') Wiki.js]
</template>
<script>
import { get } from 'vuex-pathify'
export default {
props: {
color: {
type: String,
default: 'grey lighten-3'
},
darkColor: {
type: String,
default: 'grey darken-3'
}
},
data() {
return {
currentYear: (new Date()).getFullYear()
}
},
computed: {
company: get('site/company'),
contentLicense: get('site/contentLicense'),
bgColor() {
if (!this.$vuetify.theme.dark) {
return this.color
} else {
return this.darkColor
}
}
}
}
</script>
<style lang="scss">
.v-footer {
a {
text-decoration: none;
}
&.altbg {
background: mc('theme', 'primary');
span {
color: mc('blue', '300');
}
a {
color: mc('blue', '200');
}
}
}
</style>
<template lang="pug">
div
.pa-3.d-flex(v-if='navMode === `MIXED`', :class='$vuetify.theme.dark ? `grey darken-5` : `blue darken-3`')
v-btn(
depressed
:color='$vuetify.theme.dark ? `grey darken-4` : `blue darken-2`'
style='min-width:0;'
@click='goHome'
:aria-label='$t(`common:header.home`)'
)
v-icon(size='20') mdi-home
v-btn.ml-3(
v-if='currentMode === `custom`'
depressed
:color='$vuetify.theme.dark ? `grey darken-4` : `blue darken-2`'
style='flex: 1 1 100%;'
@click='switchMode(`browse`)'
)
v-icon(left) mdi-file-tree
.body-2.text-none {{$t('common:sidebar.browse')}}
v-btn.ml-3(
v-else-if='currentMode === `browse`'
depressed
:color='$vuetify.theme.dark ? `grey darken-4` : `blue darken-2`'
style='flex: 1 1 100%;'
@click='switchMode(`custom`)'
)
v-icon(left) mdi-navigation
.body-2.text-none {{$t('common:sidebar.mainMenu')}}
v-divider
//-> Custom Navigation
v-list.py-2(v-if='currentMode === `custom`', dense, :class='color', :dark='dark')
template(v-for='item of items')
v-list-item(
v-if='item.k === `link`'
:href='item.t'
:target='item.y === `externalblank` ? `_blank` : `_self`'
:rel='item.y === `externalblank` ? `noopener` : ``'
)
v-list-item-avatar(size='24', tile)
v-icon(v-if='item.c.match(/fa[a-z] fa-/)', size='19') {{ item.c }}
v-icon(v-else) {{ item.c }}
v-list-item-title {{ item.l }}
v-divider.my-2(v-else-if='item.k === `divider`')
v-subheader.pl-4(v-else-if='item.k === `header`') {{ item.l }}
//-> Browse
v-list.py-2(v-else-if='currentMode === `browse`', dense, :class='color', :dark='dark')
template(v-if='currentParent.id > 0')
v-list-item(v-for='(item, idx) of parents', :key='`parent-` + item.id', @click='fetchBrowseItems(item)', style='min-height: 30px;')
v-list-item-avatar(size='18', :style='`padding-left: ` + (idx * 8) + `px; width: auto; margin: 0 5px 0 0;`')
v-icon(small) mdi-folder-open
v-list-item-title {{ item.title }}
v-divider.mt-2
v-list-item.mt-2(v-if='currentParent.pageId > 0', :href='`/` + currentParent.locale + `/` + currentParent.path', :key='`directorypage-` + currentParent.id', :input-value='path === currentParent.path')
v-list-item-avatar(size='24')
v-icon mdi-text-box
v-list-item-title {{ currentParent.title }}
v-subheader.pl-4 {{$t('common:sidebar.currentDirectory')}}
template(v-for='item of currentItems')
v-list-item(v-if='item.isFolder', :key='`childfolder-` + item.id', @click='fetchBrowseItems(item)')
v-list-item-avatar(size='24')
v-icon mdi-folder
v-list-item-title {{ item.title }}
v-list-item(v-else, :href='`/` + item.locale + `/` + item.path', :key='`childpage-` + item.id', :input-value='path === item.path')
v-list-item-avatar(size='24')
v-icon mdi-text-box
v-list-item-title {{ item.title }}
</template>
<script>
import _ from 'lodash'
import gql from 'graphql-tag'
import { get } from 'vuex-pathify'
/* global siteLangs */
export default {
props: {
color: {
type: String,
default: 'primary'
},
dark: {
type: Boolean,
default: true
},
items: {
type: Array,
default: () => []
},
navMode: {
type: String,
default: 'MIXED'
}
},
data() {
return {
currentMode: 'custom',
currentItems: [],
currentParent: {
id: 0,
title: '/ (root)'
},
parents: [],
loadedCache: []
}
},
computed: {
path: get('page/path'),
locale: get('page/locale')
},
methods: {
switchMode (mode) {
this.currentMode = mode
window.localStorage.setItem('navPref', mode)
if (mode === `browse` && this.loadedCache.length < 1) {
this.loadFromCurrentPath()
}
},
async fetchBrowseItems (item) {
this.$store.commit(`loadingStart`, 'browse-load')
if (!item) {
item = this.currentParent
}
if (this.loadedCache.indexOf(item.id) < 0) {
this.currentItems = []
}
if (item.id === 0) {
this.parents = []
} else {
const flushRightIndex = _.findIndex(this.parents, ['id', item.id])
if (flushRightIndex >= 0) {
this.parents = _.take(this.parents, flushRightIndex)
}
if (this.parents.length < 1) {
this.parents.push(this.currentParent)
}
this.parents.push(item)
}
this.currentParent = item
const resp = await this.$apollo.query({
query: gql`
query ($parent: Int, $locale: String!) {
pages {
tree(parent: $parent, mode: ALL, locale: $locale) {
id
path
title
isFolder
pageId
parent
locale
}
}
}
`,
fetchPolicy: 'cache-first',
variables: {
parent: item.id,
locale: this.locale
}
})
this.loadedCache = _.union(this.loadedCache, [item.id])
this.currentItems = _.get(resp, 'data.pages.tree', [])
this.$store.commit(`loadingStop`, 'browse-load')
},
async loadFromCurrentPath() {
this.$store.commit(`loadingStart`, 'browse-load')
const resp = await this.$apollo.query({
query: gql`
query ($path: String, $locale: String!) {
pages {
tree(path: $path, mode: ALL, locale: $locale, includeAncestors: true) {
id
path
title
isFolder
pageId
parent
locale
}
}
}
`,
fetchPolicy: 'cache-first',
variables: {
path: this.path,
locale: this.locale
}
})
const items = _.get(resp, 'data.pages.tree', [])
const curPage = _.find(items, ['pageId', this.$store.get('page/id')])
if (!curPage) {
console.warn('Could not find current page in page tree listing!')
return
}
let curParentId = curPage.parent
let invertedAncestors = []
while (curParentId) {
const curParent = _.find(items, ['id', curParentId])
if (!curParent) {
break
}
invertedAncestors.push(curParent)
curParentId = curParent.parent
}
this.parents = [this.currentParent, ...invertedAncestors.reverse()]
this.currentParent = _.last(this.parents)
this.loadedCache = [curPage.parent]
this.currentItems = _.filter(items, ['parent', curPage.parent])
this.$store.commit(`loadingStop`, 'browse-load')
},
goHome () {
window.location.assign(siteLangs.length > 0 ? `/${this.locale}/home` : '/')
}
},
mounted () {
this.currentParent.title = `/ ${this.$t('common:sidebar.root')}`
if (this.navMode === 'TREE') {
this.currentMode = 'browse'
} else if (this.navMode === 'STATIC') {
this.currentMode = 'custom'
} else {
this.currentMode = window.localStorage.getItem('navPref') || 'custom'
}
if (this.currentMode === 'browse') {
this.loadFromCurrentPath()
}
}
}
</script>
<template lang="pug">
v-app(v-scroll='upBtnScroll', :dark='$vuetify.theme.dark', :class='$vuetify.rtl ? `is-rtl` : `is-ltr`')
nav-header(v-if='!printView')
v-navigation-drawer(
v-if='navMode !== `NONE` && !printView'
:class='$vuetify.theme.dark ? `grey darken-4-d4` : `primary`'
dark
app
clipped
mobile-breakpoint='600'
:temporary='$vuetify.breakpoint.smAndDown'
v-model='navShown'
:right='$vuetify.rtl'
)
vue-scroll(:ops='scrollStyle')
nav-sidebar(:color='$vuetify.theme.dark ? `grey darken-4-d4` : `primary`', :items='sidebarDecoded', :nav-mode='navMode')
v-fab-transition(v-if='navMode !== `NONE`')
v-btn(
fab
color='primary'
fixed
bottom
:right='$vuetify.rtl'
:left='!$vuetify.rtl'
small
@click='navShown = !navShown'
v-if='$vuetify.breakpoint.mdAndDown'
v-show='!navShown'
)
v-icon mdi-menu
v-main(ref='content')
template(v-if='path !== `home`')
v-toolbar(:color='$vuetify.theme.dark ? `grey darken-4-d3` : `grey lighten-3`', flat, dense, v-if='$vuetify.breakpoint.smAndUp')
//- v-btn.pl-0(v-if='$vuetify.breakpoint.xsOnly', flat, @click='toggleNavigation')
//- v-icon(color='grey darken-2', left) menu
//- span Navigation
v-breadcrumbs.breadcrumbs-nav.pl-0(
:items='breadcrumbs'
divider='/'
)
template(slot='item', slot-scope='props')
v-icon(v-if='props.item.path === "/"', small, @click='goHome') mdi-home
v-btn.ma-0(v-else, :href='props.item.path', small, text) {{props.item.name}}
template(v-if='!isPublished')
v-spacer
.caption.red--text {{$t('common:page.unpublished')}}
status-indicator.ml-3(negative, pulse)
v-divider
v-container.grey.pa-0(fluid, :class='$vuetify.theme.dark ? `darken-4-l3` : `lighten-4`')
v-row(no-gutters, align-content='center', style='height: 90px;')
v-col.page-col-content.is-page-header(offset-xl='2', offset-lg='3', style='margin-top: auto; margin-bottom: auto;', :class='$vuetify.rtl ? `pr-4` : `pl-4`')
.headline.grey--text(:class='$vuetify.theme.dark ? `text--lighten-2` : `text--darken-3`') {{title}}
.caption.grey--text.text--darken-1 {{description}}
v-divider
v-container.pl-5.pt-4(fluid, grid-list-xl)
v-layout(row)
v-flex.page-col-sd(lg3, xl2, v-if='$vuetify.breakpoint.lgAndUp')
v-card.mb-5(v-if='tocDecoded.length')
.overline.pa-5.pb-0(:class='$vuetify.theme.dark ? `blue--text text--lighten-2` : `primary--text`') {{$t('common:page.toc')}}
v-list.pb-3(dense, nav, :class='$vuetify.theme.dark ? `darken-3-d3` : ``')
template(v-for='(tocItem, tocIdx) in tocDecoded')
v-list-item(@click='$vuetify.goTo(tocItem.anchor, scrollOpts)')
v-icon(color='grey', small) {{ $vuetify.rtl ? `mdi-chevron-left` : `mdi-chevron-right` }}
v-list-item-title.px-3 {{tocItem.title}}
//- v-divider(v-if='tocIdx < toc.length - 1 || tocItem.children.length')
template(v-for='tocSubItem in tocItem.children')
v-list-item(@click='$vuetify.goTo(tocSubItem.anchor, scrollOpts)')
v-icon.px-3(color='grey lighten-1', small) {{ $vuetify.rtl ? `mdi-chevron-left` : `mdi-chevron-right` }}
v-list-item-title.px-3.caption.grey--text(:class='$vuetify.theme.dark ? `text--lighten-1` : `text--darken-1`') {{tocSubItem.title}}
//- v-divider(inset, v-if='tocIdx < toc.length - 1')
v-card.mb-5(v-if='tags.length > 0')
.pa-5
.overline.teal--text.pb-2(:class='$vuetify.theme.dark ? `text--lighten-3` : ``') {{$t('common:page.tags')}}
v-chip.mr-1.mb-1(
label
:color='$vuetify.theme.dark ? `teal darken-1` : `teal lighten-5`'
v-for='(tag, idx) in tags'
:href='`/t/` + tag.tag'
:key='`tag-` + tag.tag'
)
v-icon(:color='$vuetify.theme.dark ? `teal lighten-3` : `teal`', left, small) mdi-tag
span(:class='$vuetify.theme.dark ? `teal--text text--lighten-5` : `teal--text text--darken-2`') {{tag.title}}
v-chip.mr-1.mb-1(
label
:color='$vuetify.theme.dark ? `teal darken-1` : `teal lighten-5`'
:href='`/t/` + tags.map(t => t.tag).join(`/`)'
:aria-label='$t(`common:page.tagsMatching`)'
)
v-icon(:color='$vuetify.theme.dark ? `teal lighten-3` : `teal`', size='20') mdi-tag-multiple
v-card.mb-5(v-if='commentsEnabled && commentsPerms.read')
.pa-5
.overline.pb-2.blue-grey--text.d-flex.align-center(:class='$vuetify.theme.dark ? `text--lighten-3` : `text--darken-2`')
span {{$t('common:comments.sdTitle')}}
//- v-spacer
//- v-chip.text-center(
//- v-if='!commentsExternal'
//- label
//- x-small
//- :color='$vuetify.theme.dark ? `blue-grey darken-3` : `blue-grey darken-2`'
//- dark
//- style='min-width: 50px; justify-content: center;'
//- )
//- span {{commentsCount}}
.d-flex
v-btn.text-none(
@click='goToComments()'
:color='$vuetify.theme.dark ? `blue-grey` : `blue-grey darken-2`'
outlined
style='flex: 1 1 100%;'
small
)
span.blue-grey--text(:class='$vuetify.theme.dark ? `text--lighten-1` : `text--darken-2`') {{$t('common:comments.viewDiscussion')}}
v-tooltip(right, v-if='commentsPerms.write')
template(v-slot:activator='{ on }')
v-btn.ml-2(
@click='goToComments(true)'
v-on='on'
outlined
small
:color='$vuetify.theme.dark ? `blue-grey` : `blue-grey darken-2`'
:aria-label='$t(`common:comments.newComment`)'
)
v-icon(:color='$vuetify.theme.dark ? `blue-grey lighten-1` : `blue-grey darken-2`', dense) mdi-comment-plus
span {{$t('common:comments.newComment')}}
v-card.mb-5
.pa-5
.overline.indigo--text.d-flex(:class='$vuetify.theme.dark ? `text--lighten-3` : ``')
span {{$t('common:page.lastEditedBy')}}
v-spacer
v-tooltip(right, v-if='isAuthenticated')
template(v-slot:activator='{ on }')
v-btn.btn-animate-edit(
icon
:href='"/h/" + locale + "/" + path'
v-on='on'
x-small
v-if='hasReadHistoryPermission'
:aria-label='$t(`common:header.history`)'
)
v-icon(color='indigo', dense) mdi-history
span {{$t('common:header.history')}}
.body-2.grey--text(:class='$vuetify.theme.dark ? `` : `text--darken-3`') {{ authorName }}
.caption.grey--text.text--darken-1 {{ updatedAt | moment('calendar') }}
//- v-card.mb-5
//- .pa-5
//- .overline.pb-2.yellow--text(:class='$vuetify.theme.dark ? `text--darken-3` : `text--darken-4`') Rating
//- .text-center
//- v-rating(
//- v-model='rating'
//- color='yellow darken-3'
//- background-color='grey lighten-1'
//- half-increments
//- hover
//- )
//- .caption.grey--text 5 votes
v-card(flat)
v-toolbar(:color='$vuetify.theme.dark ? `grey darken-4-d3` : `grey lighten-3`', flat, dense)
v-spacer
v-tooltip(bottom)
template(v-slot:activator='{ on }')
v-btn(icon, tile, v-on='on', :aria-label='$t(`common:page.bookmark`)'): v-icon(color='grey') mdi-bookmark
span {{$t('common:page.bookmark')}}
v-menu(offset-y, bottom, min-width='300')
template(v-slot:activator='{ on: menu }')
v-tooltip(bottom)
template(v-slot:activator='{ on: tooltip }')
v-btn(icon, tile, v-on='{ ...menu, ...tooltip }', :aria-label='$t(`common:page.share`)'): v-icon(color='grey') mdi-share-variant
span {{$t('common:page.share')}}
social-sharing(
:url='pageUrl'
:title='title'
:description='description'
)
v-tooltip(bottom)
template(v-slot:activator='{ on }')
v-btn(icon, tile, v-on='on', @click='print', :aria-label='$t(`common:page.printFormat`)')
v-icon(:color='printView ? `primary` : `grey`') mdi-printer
span {{$t('common:page.printFormat')}}
v-spacer
v-flex.page-col-content(xs12, lg9, xl10)
v-tooltip(:right='$vuetify.rtl', :left='!$vuetify.rtl', v-if='hasAnyPagePermissions')
template(v-slot:activator='{ on: onEditActivator }')
v-speed-dial(
v-model='pageEditFab'
direction='top'
open-on-hover
transition='scale-transition'
bottom
:right='!$vuetify.rtl'
:left='$vuetify.rtl'
fixed
dark
)
template(v-slot:activator)
v-btn.btn-animate-edit(
fab
color='primary'
v-model='pageEditFab'
@click='pageEdit'
v-on='onEditActivator'
:disabled='!hasWritePagesPermission'
:aria-label='$t(`common:page.editPage`)'
)
v-icon mdi-pencil
v-tooltip(:right='$vuetify.rtl', :left='!$vuetify.rtl', v-if='hasReadHistoryPermission')
template(v-slot:activator='{ on }')
v-btn(
fab
small
color='white'
light
v-on='on'
@click='pageHistory'
)
v-icon(size='20') mdi-history
span {{$t('common:header.history')}}
v-tooltip(:right='$vuetify.rtl', :left='!$vuetify.rtl', v-if='hasReadSourcePermission')
template(v-slot:activator='{ on }')
v-btn(
fab
small
color='white'
light
v-on='on'
@click='pageSource'
)
v-icon(size='20') mdi-code-tags
span {{$t('common:header.viewSource')}}
v-tooltip(:right='$vuetify.rtl', :left='!$vuetify.rtl', v-if='hasWritePagesPermission')
template(v-slot:activator='{ on }')
v-btn(
fab
small
color='white'
light
v-on='on'
@click='pageConvert'
)
v-icon(size='20') mdi-lightning-bolt
span {{$t('common:header.convert')}}
v-tooltip(:right='$vuetify.rtl', :left='!$vuetify.rtl', v-if='hasWritePagesPermission')
template(v-slot:activator='{ on }')
v-btn(
fab
small
color='white'
light
v-on='on'
@click='pageDuplicate'
)
v-icon(size='20') mdi-content-duplicate
span {{$t('common:header.duplicate')}}
v-tooltip(:right='$vuetify.rtl', :left='!$vuetify.rtl', v-if='hasManagePagesPermission')
template(v-slot:activator='{ on }')
v-btn(
fab
small
color='white'
light
v-on='on'
@click='pageMove'
)
v-icon(size='20') mdi-content-save-move-outline
span {{$t('common:header.move')}}
v-tooltip(:right='$vuetify.rtl', :left='!$vuetify.rtl', v-if='hasDeletePagesPermission')
template(v-slot:activator='{ on }')
v-btn(
fab
dark
small
color='red'
v-on='on'
@click='pageDelete'
)
v-icon(size='20') mdi-trash-can-outline
span {{$t('common:header.delete')}}
span {{$t('common:page.editPage')}}
v-alert.mb-5(v-if='!isPublished', color='red', outlined, icon='mdi-minus-circle', dense)
.caption {{$t('common:page.unpublishedWarning')}}
.contents(ref='container')
slot(name='contents')
.comments-container#discussion(v-if='commentsEnabled && commentsPerms.read && !printView')
.comments-header
v-icon.mr-2(dark) mdi-comment-text-outline
span {{$t('common:comments.title')}}
.comments-main
slot(name='comments')
nav-footer
notify
search-results
v-fab-transition
v-btn(
v-if='upBtnShown'
fab
fixed
bottom
:right='$vuetify.rtl'
:left='!$vuetify.rtl'
small
:depressed='this.$vuetify.breakpoint.mdAndUp'
@click='$vuetify.goTo(0, scrollOpts)'
color='primary'
dark
:style='upBtnPosition'
:aria-label='$t(`common:actions.returnToTop`)'
)
v-icon mdi-arrow-up
</template>
<script>
import { StatusIndicator } from 'vue-status-indicator'
import Tabset from './tabset.vue'
import NavSidebar from './nav-sidebar.vue'
import Prism from 'prismjs'
import mermaid from 'mermaid'
import { get, sync } from 'vuex-pathify'
import _ from 'lodash'
import ClipboardJS from 'clipboard'
import Vue from 'vue'
Vue.component('Tabset', Tabset)
Prism.plugins.autoloader.languages_path = '/_assets/js/prism/'
Prism.plugins.NormalizeWhitespace.setDefaults({
'remove-trailing': true,
'remove-indent': true,
'left-trim': true,
'right-trim': true,
'remove-initial-line-feed': true,
'tabs-to-spaces': 2
})
Prism.plugins.toolbar.registerButton('copy-to-clipboard', (env) => {
let linkCopy = document.createElement('button')
linkCopy.textContent = 'Copy'
const clip = new ClipboardJS(linkCopy, {
text: () => { return env.code }
})
clip.on('success', () => {
linkCopy.textContent = 'Copied!'
resetClipboardText()
})
clip.on('error', () => {
linkCopy.textContent = 'Press Ctrl+C to copy'
resetClipboardText()
})
return linkCopy
function resetClipboardText() {
setTimeout(() => {
linkCopy.textContent = 'Copy'
}, 5000)
}
})
export default {
components: {
NavSidebar,
StatusIndicator
},
props: {
pageId: {
type: Number,
default: 0
},
locale: {
type: String,
default: 'en'
},
path: {
type: String,
default: 'home'
},
title: {
type: String,
default: 'Untitled Page'
},
description: {
type: String,
default: ''
},
createdAt: {
type: String,
default: ''
},
updatedAt: {
type: String,
default: ''
},
tags: {
type: Array,
default: () => ([])
},
authorName: {
type: String,
default: 'Unknown'
},
authorId: {
type: Number,
default: 0
},
editor: {
type: String,
default: ''
},
isPublished: {
type: Boolean,
default: false
},
toc: {
type: String,
default: ''
},
sidebar: {
type: String,
default: ''
},
navMode: {
type: String,
default: 'MIXED'
},
commentsEnabled: {
type: Boolean,
default: false
},
effectivePermissions: {
type: String,
default: ''
},
commentsExternal: {
type: Boolean,
default: false
}
},
data() {
return {
navShown: false,
navExpanded: false,
upBtnShown: false,
pageEditFab: false,
scrollOpts: {
duration: 1500,
offset: 0,
easing: 'easeInOutCubic'
},
scrollStyle: {
vuescroll: {},
scrollPanel: {
initialScrollX: 0.01, // fix scrollbar not disappearing on load
scrollingX: false,
speed: 50
},
rail: {
gutterOfEnds: '2px'
},
bar: {
onlyShowBarOnScroll: false,
background: '#42A5F5',
hoverStyle: {
background: '#64B5F6'
}
}
},
winWidth: 0
}
},
computed: {
isAuthenticated: get('user/authenticated'),
commentsCount: get('page/commentsCount'),
commentsPerms: get('page/effectivePermissions@comments'),
rating: {
get () {
return 3.5
},
set (val) {
}
},
breadcrumbs() {
return [{ path: '/', name: 'Home' }].concat(_.reduce(this.path.split('/'), (result, value, key) => {
result.push({
path: _.get(_.last(result), 'path', `/${this.locale}`) + `/${value}`,
name: value
})
return result
}, []))
},
pageUrl () { return window.location.href },
upBtnPosition () {
if (this.$vuetify.breakpoint.mdAndUp) {
return this.$vuetify.rtl ? `right: 235px;` : `left: 235px;`
} else {
return this.$vuetify.rtl ? `right: 65px;` : `left: 65px;`
}
},
sidebarDecoded () {
return JSON.parse(Buffer.from(this.sidebar, 'base64').toString())
},
tocDecoded () {
return JSON.parse(Buffer.from(this.toc, 'base64').toString())
},
hasAdminPermission: get('page/effectivePermissions@system.manage'),
hasWritePagesPermission: get('page/effectivePermissions@pages.write'),
hasManagePagesPermission: get('page/effectivePermissions@pages.manage'),
hasDeletePagesPermission: get('page/effectivePermissions@pages.delete'),
hasReadSourcePermission: get('page/effectivePermissions@source.read'),
hasReadHistoryPermission: get('page/effectivePermissions@history.read'),
hasAnyPagePermissions () {
return this.hasAdminPermission || this.hasWritePagesPermission || this.hasManagePagesPermission ||
this.hasDeletePagesPermission || this.hasReadSourcePermission || this.hasReadHistoryPermission
},
printView: sync('site/printView')
},
created() {
this.$store.set('page/authorId', this.authorId)
this.$store.set('page/authorName', this.authorName)
this.$store.set('page/createdAt', this.createdAt)
this.$store.set('page/description', this.description)
this.$store.set('page/isPublished', this.isPublished)
this.$store.set('page/id', this.pageId)
this.$store.set('page/locale', this.locale)
this.$store.set('page/path', this.path)
this.$store.set('page/tags', this.tags)
this.$store.set('page/title', this.title)
this.$store.set('page/editor', this.editor)
this.$store.set('page/updatedAt', this.updatedAt)
if (this.effectivePermissions) {
this.$store.set('page/effectivePermissions', JSON.parse(Buffer.from(this.effectivePermissions, 'base64').toString()))
}
this.$store.set('page/mode', 'view')
},
mounted () {
if (this.$vuetify.theme.dark) {
this.scrollStyle.bar.background = '#424242'
}
// -> Check side navigation visibility
this.handleSideNavVisibility()
window.addEventListener('resize', _.debounce(() => {
this.handleSideNavVisibility()
}, 500))
// -> Highlight Code Blocks
Prism.highlightAllUnder(this.$refs.container)
// -> Render Mermaid diagrams
mermaid.mermaidAPI.initialize({
startOnLoad: true,
theme: this.$vuetify.theme.dark ? `dark` : `default`
})
// -> Handle anchor scrolling
if (window.location.hash && window.location.hash.length > 1) {
if (document.readyState === 'complete') {
this.$nextTick(() => {
this.$vuetify.goTo(decodeURIComponent(window.location.hash), this.scrollOpts)
})
} else {
window.addEventListener('load', () => {
this.$vuetify.goTo(decodeURIComponent(window.location.hash), this.scrollOpts)
})
}
}
// -> Handle anchor links within the page contents
this.$nextTick(() => {
this.$refs.container.querySelectorAll(`a[href^="#"], a[href^="${window.location.href.replace(window.location.hash, '')}#"]`).forEach(el => {
el.onclick = ev => {
ev.preventDefault()
ev.stopPropagation()
this.$vuetify.goTo(decodeURIComponent(ev.currentTarget.hash), this.scrollOpts)
}
})
})
},
methods: {
goHome () {
window.location.assign('/')
},
toggleNavigation () {
this.navOpen = !this.navOpen
},
upBtnScroll () {
const scrollOffset = window.pageYOffset || document.documentElement.scrollTop
this.upBtnShown = scrollOffset > window.innerHeight * 0.33
},
print () {
if (this.printView) {
this.printView = false
} else {
this.printView = true
this.$nextTick(() => {
window.print()
})
}
},
pageEdit () {
this.$root.$emit('pageEdit')
},
pageHistory () {
this.$root.$emit('pageHistory')
},
pageSource () {
this.$root.$emit('pageSource')
},
pageConvert () {
this.$root.$emit('pageConvert')
},
pageDuplicate () {
this.$root.$emit('pageDuplicate')
},
pageMove () {
this.$root.$emit('pageMove')
},
pageDelete () {
this.$root.$emit('pageDelete')
},
handleSideNavVisibility () {
if (window.innerWidth === this.winWidth) { return }
this.winWidth = window.innerWidth
if (this.$vuetify.breakpoint.mdAndUp) {
this.navShown = true
} else {
this.navShown = false
}
},
goToComments (focusNewComment = false) {
this.$vuetify.goTo('#discussion', this.scrollOpts)
if (focusNewComment) {
document.querySelector('#discussion-new').focus()
}
}
}
}
</script>
<style lang="scss">
.breadcrumbs-nav {
.v-btn {
min-width: 0;
&__content {
text-transform: none;
}
}
.v-breadcrumbs__divider:nth-child(2n) {
padding: 0 6px;
}
.v-breadcrumbs__divider:nth-child(2) {
padding: 0 6px 0 12px;
}
}
.page-col-sd {
margin-top: -90px;
align-self: flex-start;
position: sticky;
top: 64px;
max-height: calc(100vh - 64px);
overflow-y: auto;
-ms-overflow-style: none;
}
.page-col-sd::-webkit-scrollbar {
display: none;
}
</style>
<template lang="pug">
.tabset.elevation-2
ul.tabset-tabs(ref='tabs', role='tablist')
slot(name='tabs')
.tabset-content(ref='content')
slot(name='content')
</template>
<script>
import { customAlphabet } from 'nanoid/non-secure'
const nanoid = customAlphabet('1234567890abcdef', 10)
export default {
data() {
return {
currentTab: 0
}
},
watch: {
currentTab (newValue, oldValue) {
this.setActiveTab()
}
},
methods: {
setActiveTab () {
this.$refs.tabs.childNodes.forEach((node, idx) => {
if (idx === this.currentTab) {
node.className = 'is-active'
node.setAttribute('aria-selected', 'true')
} else {
node.className = ''
node.setAttribute('aria-selected', 'false')
}
})
this.$refs.content.childNodes.forEach((node, idx) => {
if (idx === this.currentTab) {
node.className = 'tabset-panel is-active'
node.removeAttribute('hidden')
} else {
node.className = 'tabset-panel'
node.setAttribute('hidden', '')
}
})
}
},
mounted () {
// Handle scroll to header on load within hidden tab content
if (window.location.hash && window.location.hash.length > 1) {
const headerId = decodeURIComponent(window.location.hash)
let foundIdx = -1
this.$refs.content.childNodes.forEach((node, idx) => {
if (node.querySelector(headerId)) {
foundIdx = idx
}
})
if (foundIdx >= 0) {
this.currentTab = foundIdx
}
}
this.setActiveTab()
const tabRefId = nanoid()
this.$refs.tabs.childNodes.forEach((node, idx) => {
node.setAttribute('id', `${tabRefId}-${idx}`)
node.setAttribute('role', 'tab')
node.setAttribute('aria-controls', `${tabRefId}-${idx}-tab`)
node.setAttribute('tabindex', '0')
node.addEventListener('click', ev => {
this.currentTab = [].indexOf.call(ev.target.parentNode.children, ev.target)
})
node.addEventListener('keydown', ev => {
if (ev.key === 'ArrowLeft' && idx > 0) {
this.currentTab = idx - 1
this.$refs.tabs.childNodes[idx - 1].focus()
} else if (ev.key === 'ArrowRight' && idx < this.$refs.tabs.childNodes.length - 1) {
this.currentTab = idx + 1
this.$refs.tabs.childNodes[idx + 1].focus()
} else if (ev.key === 'Enter' || ev.key === ' ') {
this.currentTab = idx
node.focus()
} else if (ev.key === 'Home') {
this.currentTab = 0
ev.preventDefault()
ev.target.parentNode.children[0].focus()
} else if (ev.key === 'End') {
this.currentTab = this.$refs.tabs.childNodes.length - 1
ev.preventDefault()
ev.target.parentNode.children[this.$refs.tabs.childNodes.length - 1].focus()
}
})
})
this.$refs.content.childNodes.forEach((node, idx) => {
node.setAttribute('id', `${tabRefId}-${idx}-tab`)
node.setAttribute('role', 'tabpanel')
node.setAttribute('aria-labelledby', `${tabRefId}-${idx}`)
node.setAttribute('tabindex', '0')
})
}
}
</script>
<style lang="scss">
.tabset {
border-radius: 5px;
margin-top: 10px;
@at-root .theme--dark & {
background-color: #292929;
}
> .tabset-tabs {
padding-left: 0;
margin: 0;
display: flex;
align-items: stretch;
background: linear-gradient(to bottom, #FFF, #FAFAFA);
box-shadow: inset 0 -1px 0 0 #DDD;
border-radius: 5px 5px 0 0;
overflow: auto;
@at-root .theme--dark & {
background: linear-gradient(to bottom, #424242, #333);
box-shadow: inset 0 -1px 0 0 #555;
}
> li {
display: block;
padding: 16px;
margin-top: 0;
cursor: pointer;
transition: color 1s ease;
border-right: 1px solid #FFF;
font-size: 14px;
font-weight: 500;
margin-bottom: 1px;
user-select: none;
@at-root .theme--dark & {
border-right-color: #555;
}
&.is-active {
background-color: #FFF;
margin-bottom: 0;
padding-bottom: 17px;
padding-top: 13px;
color: mc('blue', '700');
border-top: 3px solid mc('blue', '700');
@at-root .theme--dark & {
background-color: #292929;
color: mc('blue', '300');
}
}
&:last-child {
border-right: none;
&.is-active {
border-right: 1px solid #EEE;
@at-root .theme--dark & {
border-right-color: #555;
}
}
}
&:hover {
background-color: rgba(#CCC, .1);
@at-root .theme--dark & {
background-color: rgba(#222, .25);
}
&.is-active {
background-color: #FFF;
@at-root .theme--dark & {
background-color: #292929;
}
}
}
& + li {
border-left: 1px solid #EEE;
@at-root .theme--dark & {
border-left-color: #222;
}
}
}
}
> .tabset-content {
.tabset-panel {
padding: 2px 16px 16px;
display: none;
&.is-active {
display: block;
}
}
}
}
</style>
/* THEME SPECIFIC JAVASCRIPT */
/* THEME SPECIFIC STYLES */
.v-main .contents {
color: mc('grey', '800');
padding: .5rem 0 50px;
position: relative;
> div > *:first-child {
margin-top: 0;
}
@at-root .theme--dark & {
color: mc('grey', '300');
}
// ---------------------------------
// LINKS
// ---------------------------------
a {
color: mc('blue', '700');
&.is-internal-link.is-invalid-page {
color: mc('red', '700');
@at-root .theme--dark & {
color: mc('red', '200');
}
}
&.is-external-link {
padding-right: 3px;
&::after {
font-family: 'Material Design Icons', sans-serif;
font-size: 24px/1;
padding-left: 3px;
display: inline-block;
content: '\F03CC';
color: mc('grey', '500');
text-decoration: none;
}
}
@at-root .theme--dark & {
color: mc('blue', '200');
}
}
// ---------------------------------
// HEADERS
// ---------------------------------
h1, h2, h3, h4, h5, h6 {
position: relative;
&:first-child {
padding-top: 0;
}
&:hover {
.toc-anchor {
display: block;
}
}
.toc-anchor {
display: none;
position: absolute;
right: 1rem;
bottom: .5rem;
font-size: 1.25rem;
text-decoration: none;
color: mc('grey', '500');
}
& + h2, & + h3, & + h4, & + h5, & + h6 {
margin-top: 8px;
}
& + hr.footnotes-sep {
display: none;
}
}
h1 {
padding: 0;
color: mc('blue', '800');
margin-top: 2rem;
position: relative;
@at-root .theme--dark & {
color: mc('grey', '300');
}
&::after {
content: '';
position: absolute;
bottom: 0;
left: 0;
width: 100%;
height: 2px;
background: linear-gradient(to right, mc('theme', 'primary'), rgba(mc('theme', 'primary'), 0));
border-radius: 3px;
@at-root .theme--dark & {
background: linear-gradient(to right, mc('blue', '300') 0%, mc('blue', '500') 10%, rgba(mc('blue', '900'), 0) 100%);
}
@at-root .is-rtl & {
background: linear-gradient(to left, mc('theme', 'primary'), rgba(mc('theme', 'primary'), 0));
}
@at-root .theme--dark.is-rtl & {
background: linear-gradient(to left, mc('grey', '600'), rgba(mc('grey', '600'), 0));
}
}
}
h2 {
margin: 1rem 0 0 0;
color: mc('grey', '800');
position: relative;
@at-root .theme--dark & {
color: mc('grey', '400');
}
&::after {
content: '';
position: absolute;
bottom: 0;
left: 0;
width: 100%;
height: 1px;
background: linear-gradient(to right, mc('grey', '700'), rgba(mc('grey', '700'), 0));
@at-root .theme--dark & {
background: linear-gradient(to right, mc('grey', '300'), rgba(mc('grey', '700'), 0));
}
@at-root .is-rtl & {
background: linear-gradient(to left, mc('grey', '700'), rgba(mc('grey', '700'), 0));
}
@at-root .theme--dark.is-rtl & {
background: linear-gradient(to left, mc('grey', '300'), rgba(mc('grey', '700'), 0));
}
}
}
h3 {
margin: 8px 0 0 0;
color: mc('grey', '700');
position: relative;
@at-root .theme--dark & {
color: mc('grey', '600');
}
&::after {
content: '';
position: absolute;
bottom: 0;
left: 0;
width: 100%;
height: 1px;
background: linear-gradient(to right, mc('grey', '500'), rgba(mc('grey', '500'), 0) 90%);
}
}
h4, h5, h6 {
font-size: 1rem;
margin: 8px 0 0 0;
color: mc('grey', '700');
position: relative;
@at-root .theme--dark & {
color: mc('grey', '600');
}
&::after {
content: '';
position: absolute;
bottom: 0;
left: 0;
width: 100%;
height: 1px;
background: linear-gradient(to right, mc('grey', '500'), rgba(mc('grey', '500'), 0) 70%);
}
}
h5 {
&::after {
background: linear-gradient(to right, mc('grey', '500'), rgba(mc('grey', '500'), 0) 50%);
}
}
h6 {
&::after {
background: linear-gradient(to right, mc('grey', '500'), rgba(mc('grey', '500'), 0) 30%);
}
}
// ---------------------------------
// PARAGRAPHS
// ---------------------------------
p {
padding: 1rem 0 0 0;
margin: 0;
@at-root .contents > div > p:first-child {
padding-top: 0;
}
@at-root .v-application & {
margin-bottom: 0;
}
}
hr {
margin: 1rem 0;
height: 1px;
border: none;
background-color: mc('grey', '400');
@at-root .theme--dark & {
background-color: mc('grey', '700');
}
}
.emoji {
height: 1.25em;
margin: 0 1px -4px;
}
.text-huge {
font-size: 1.8em;
}
.text-big {
font-size: 1.4em;
}
.text-small {
font-size: .85em;
}
.text-tiny {
font-size: .7em;
}
blockquote {
padding: 0 1rem 1rem 1rem;
background-color: mc('blue-grey', '50');
border-left: 55px solid mc('blue-grey', '500');
border-radius: .5rem;
margin: 1rem 0;
position: relative;
@at-root .theme--dark & {
background-color: mc('blue-grey', '900');
}
&::before {
display: inline-block;
font: normal normal normal 24px/1 "Material Design Icons", sans-serif;
position: absolute;
margin-top: -12px;
top: 50%;
left: -38px;
color: rgba(255, 255, 255, .7);
content: "\F0757";
}
> p:first-child .emoji {
margin-right: .5rem;
}
&.valign-center > p {
display: flex;
align-items: center;
}
&.is-info {
background-color: mc('blue', '50');
border-color: mc('blue', '300');
color: mc('blue', '900');
&::before {
content: "\F02FC";
}
code {
background-color: mc('blue', '50');
color: mc('blue', '800');
}
@at-root .theme--dark & {
background-color: mc('blue', '900');
color: mc('blue', '50');
border-color: mc('blue', '500');
}
}
&.is-warning {
background-color: mc('orange', '50');
border-color: mc('orange', '300');
color: darken(mc('orange', '900'), 10%);
&::before {
content: "\F0026";
}
code {
background-color: mc('orange', '50');
color: mc('orange', '800');
}
@at-root .theme--dark & {
background-color: darken(mc('orange', '900'), 5%);
color: mc('orange', '100');
border-color: mc('orange', '500');
box-shadow: 0 0 2px 0 mc('grey', '900');
}
}
&.is-danger {
background-color: mc('red', '50');
border-color: mc('red', '300');
color: mc('red', '900');
&::before {
content: "\F0159";
}
code {
background-color: mc('red', '50');
color: mc('red', '800');
}
@at-root .theme--dark & {
background-color: mc('red', '900');
color: mc('red', '100');
border-color: mc('red', '500');
}
}
&.is-success {
background-color: mc('green', '50');
border-color: mc('green', '300');
color: mc('green', '900');
&::before {
content: "\F0E1E";
}
code {
background-color: mc('green', '50');
color: mc('green', '800');
}
@at-root .theme--dark & {
background-color: mc('green', '900');
color: mc('green', '50');
border-color: mc('green', '500');
}
}
}
// ---------------------------------
// LISTS
// ---------------------------------
ol, ul:not(.tabset-tabs) {
padding-top: 1rem;
width: 100%;
@at-root .is-rtl & {
padding-left: 0;
padding-right: 1rem;
}
li > ul, li > ol {
padding-top: .5rem;
padding-left: 1rem;
@at-root .is-rtl & {
padding-left: 0;
padding-right: 1rem;
}
}
li + li {
margin-top: .5rem;
}
&.links-list {
padding-left: 0;
list-style-type: none;
@at-root .is-rtl & {
padding-right: 0;
}
li {
background-color: mc('grey', '50');
background-image: linear-gradient(to bottom, #FFF, mc('grey', '50'));
border-right: 1px solid mc('grey', '200');
border-bottom: 1px solid mc('grey', '200');
border-left: 5px solid mc('grey', '300');
box-shadow: 0 3px 8px 0 rgba(116, 129, 141, 0.1);
padding: 1rem;
border-radius: 5px;
font-weight: 500;
@at-root .is-rtl & {
border-left-width: 1px;
border-right-width: 5px;
}
&:hover {
background-image: linear-gradient(to bottom, #FFF, lighten(mc('blue', '50'), 4%));
border-left-color: mc('blue', '500');
cursor: pointer;
@at-root .is-rtl & {
border-left-color: mc('grey', '200');
border-right-width: mc('blue', '500');
}
}
&::before {
content: '';
display: none;
}
> a {
display: block;
text-decoration: none;
margin: -1rem;
padding: 1rem;
> em {
font-weight: 400;
font-style: normal;
color: mc('grey', '700');
display: inline-block;
padding-left: .5rem;
border-left: 1px solid mc('grey', '300');
margin-left: .5rem;
&.is-block {
display: block;
padding-left: 0;
margin-left: 0;
border-left: none;
}
}
}
> em {
font-weight: 400;
font-style: normal;
}
@at-root .theme--dark & {
background-color: mc('grey', '50');
background-image: linear-gradient(to bottom, lighten(mc('grey', '900'), 5%), mc('grey', '900'));
border-right: 1px solid mc('grey', '900');
border-bottom: 1px solid mc('grey', '900');
border-left: 5px solid mc('grey', '700');
box-shadow: 0 3px 8px 0 rgba(0, 0, 0, 0.1);
@at-root .theme--dark.is-rtl & {
border-left-width: 1px;
border-right-width: 5px;
}
&:hover {
background-image: linear-gradient(to bottom, lighten(mc('grey', '900'), 2%), darken(mc('grey', '900'), 3%));
border-left-color: mc('indigo', '300');
cursor: pointer;
@at-root .theme--dark.is-rtl & {
border-left-color: mc('grey', '900');
border-right-width: mc('indigo', '300');
}
}
}
}
}
&.grid-list {
margin: 1rem 0 0 0;
background-color: #FFF;
border: 1px solid mc('grey', '200');
padding: 1px;
display: inline-block;
list-style-type: none;
@at-root .theme--dark & {
background-color: #000;
border: 1px solid mc('grey', '800');
}
li {
background-color: mc('grey', '50');
padding: .6rem 1rem;
display: block;
&:nth-child(odd) {
background-color: mc('grey', '100');
}
& + li {
margin-top: 0;
}
&::before {
content: '';
display: none;
}
@at-root .theme--dark & {
background-color: mc('grey', '900');
&:nth-child(odd) {
background-color: darken(mc('grey', '900'), 5%);
}
}
}
}
}
ul:not(.tabset-tabs):not(.contains-task-list) {
list-style: none;
> li::before {
position: absolute;
left: -1.1rem;
content: '\25b8';
color: mc('grey', '600');
width: 1.35rem;
@at-root .is-rtl & {
right: -1.1rem;
content: '\25C3';
}
}
}
ol, ul:not(.tabset-tabs) {
> li {
position: relative;
> p {
display:inline-block;
vertical-align:top;
padding-top:0;
}
}
}
// ---------------------------------
// CODE
// ---------------------------------
code {
background-color: mc('indigo', '50');
padding: 0 5px;
color: mc('indigo', '800');
font-family: 'Roboto Mono', monospace;
font-weight: normal;
font-size: 1rem;
box-shadow: none;
&::before, &::after {
display: none;
}
@at-root .theme--dark & {
background-color: darken(mc('grey', '900'), 5%);
color: mc('indigo', '100');
}
}
.prismjs{
border: none;
border-radius: 5px;
box-shadow: initial;
background-color: mc('grey', '900');
padding: 1rem 1rem 1rem 3rem;
margin: 1rem 0;
@at-root .theme--dark & {
background-color: darken(mc('grey', '900'), 5%);
}
> code {
background-color: transparent;
padding: 0;
color: #FFF;
box-shadow: initial;
display: block;
font-size: .85rem;
font-family: 'Roboto Mono', monospace;
&:after, &:before {
content: initial;
letter-spacing: initial;
}
}
}
.diagram {
margin-top: 1rem;
overflow: auto;
svg:first-child {
direction: ltr;
}
}
// ---------------------------------
// TASK LISTS
// ---------------------------------
.contains-task-list {
padding-left: 0;
}
.task-list-item {
position: relative;
list-style-type: none;
&-checkbox[disabled] {
width: 1.1rem;
height: 1.1rem;
top: 2px;
position: relative;
margin-right: 2px;
&::after {
position: absolute;
left: 0;
top: 0;
content: ' ';
display: block;
width: 1.1rem;
height: 1.1rem;
background-color: #FFF;
border: 1px solid mc('grey', '400');
border-radius: 2px;
font-weight: bold;
font-size: .8rem;
line-height: 1rem;
text-align: center;
@at-root .theme--dark & {
background-color: mc('grey', '900');
border-color: mc('grey', '700');
}
}
&[checked]::after {
content: '✓';
}
}
.contains-task-list {
padding: .5rem 0 0 1.5rem;
}
}
// ---------------------------------
// TABLES
// ---------------------------------
table {
margin: .5rem 1.75rem;
border-spacing: 0;
th {
padding: .75rem;
border-bottom: 2px solid mc('grey', '500');
color: mc('grey', '600');
}
td {
padding: .75rem;
}
tr {
td {
border-bottom: 1px solid mc('grey', '200');
}
}
}
figure.table {
margin: 0;
> table {
background-color: #FFF;
margin: 0;
border-collapse: collapse;
box-shadow: 0 0 5px 0 rgba(0, 0, 0, .07);
@at-root .theme--dark & {
background-color: darken(mc('grey', '900'), 3%);
}
td, th {
border: 1px solid mc('blue-grey', '100');
box-shadow: inset -1px -1px 0 0 #FFF, inset 1px 0 0 #FFF;
padding: .5rem .75rem;
@at-root .theme--dark & {
border-color: mc('grey', '700');
box-shadow: inset -1px -1px 0 0 rgba(0,0,0, .5);
}
}
th {
background-color: lighten(mc('blue-grey', '50'), 1%);
font-weight: 700;
color: mc('blue-grey', '700');
@at-root .theme--dark & {
background-color: mc('grey', '800');
color: mc('grey', '400');
}
}
thead th {
border-bottom: 2px solid mc('blue-grey', '100');
@at-root .theme--dark & {
border-bottom: none;
}
}
tbody th {
background-color: lighten(mc('blue-grey', '50'), 4%);
@at-root .theme--dark & {
background-color: darken(mc('grey', '800'), 8%);
}
}
}
}
// ---------------------------------
// IMAGES
// ---------------------------------
img {
max-width: 100%;
&.align-left {
float: left;
margin: 0 1rem 1rem 0;
}
&.align-right {
float: right;
margin: 0 0 1rem 1rem;
z-index: 1;
position: relative;
}
&.align-center {
display: block;
max-width: 100%;
margin: auto;
}
&.align-abstopright {
position: absolute;
top: -90px;
right: 1rem;
height: calc(90px - 32px);
width: auto;
@at-root .is-rtl & {
left: 1rem;
right: initial;
}
}
&.decor-shadow {
box-shadow: 0 3px 8px 0 rgba(116, 129, 141, 0.1);
}
&.decor-outline {
border: 1px solid mc('grey', '400');
}
&.uml-diagram {
margin: 1rem 0;
}
}
figure.image {
margin: 1rem 0 0 0;
img {
margin: 0 auto;
}
figcaption {
padding: 4px 1rem;
text-align: center;
font-size: 12px;
color: mc('grey', '700');
background-color: mc('grey', '100');
@at-root .theme--dark & {
color: mc('grey', '400');
background-color: mc('grey', '800');
}
}
}
figure.image-style-align-right {
float: right;
}
figure.image-style-align-left {
float: left;
}
// ---------------------------------
// DETAILS
// ---------------------------------
details {
background-color: mc('grey', '50');
margin: 1rem 2rem;
border: 1px solid mc('grey', '300');
border-radius: 7px;
> p {
padding-left: 0;
}
> summary {
border-radius: 7px;
background-color: mc('grey', '50');
cursor: pointer;
display: list-item;
align-items: center;
padding: 0.4rem 1rem;
transition: background-color .4s ease;
&:focus {
outline: none;
background-color: mc('grey', '100');
}
> h1, h2, h3, h4, h5, h6 {
width: 95%;
display: inline-block;
&:first-child {
margin-top: 0;
}
&:only-child::after {
display: none;
}
}
}
&[open] {
padding: 1rem;
> summary {
background-color: mc('grey', '100');
border-bottom: 1px solid mc('grey', '300');
border-bottom-left-radius: 0;
border-bottom-right-radius: 0;
margin: -1rem -1rem 1rem -1rem;
}
}
@at-root .theme--dark & {
background-color: mc('grey', '900');
border-color: mc('grey', '700');
> summary {
background-color: mc('grey', '900');
border-color: mc('grey', '700');
}
&[open] > summary {
background-color: lighten(mc('grey', '900'), 5%);
}
}
}
// ---------------------------------
// HIGHLIGHTING
// ---------------------------------
mark {
&.pen-red {
color: mc('red', '500');
background-color: initial;
}
&.pen-green {
color: mc('green', '500');
background-color: initial;
}
&.marker-blue {
background-color: mc('blue', '300');
}
&.marker-yellow {
background-color: mc('yellow', '300');
}
&.marker-pink {
background-color: mc('pink', '300');
}
&.marker-green {
background-color: mc('green', '300');
}
}
.mention {
background-color: rgba(153, 0, 48, .1);
color: #990030;
@at-root .theme--dark & {
color: mc('pink', '500');
}
}
}
// ---------------------------------
// COMMENTS
// ---------------------------------
.comments {
&-container {
border-radius: 7px;
}
&-header {
color: #FFF;
padding: 8px 20px;
font-size: 16px;
font-weight: 500;
background-color: mc('blue-grey', '500');
border-radius: 7px 7px 0 0;
@at-root .theme--dark & {
background-color: lighten(mc('blue-grey', '900'), 5%);
}
}
&-main {
background-color: mc('blue-grey', '50');
border-radius: 0 0 7px 7px;
padding: 20px;
@at-root .theme--dark & {
background-color: darken(mc('grey', '900'), 5%);
}
}
}
// ---------------
// RTL FIXES
// Vuetify GH Issue: https://github.com/vuetifyjs/vuetify/issues/6317
// ---------------
.is-rtl {
.page-col-content.is-page-header {
@each $size, $width in $grid-breakpoints {
@media (min-width: $width) {
@for $n from 0 through 12 {
&.offset-#{$size}-#{$n} {
margin-left: 0;
margin-right: ($n / 12 * 100) * 1%;
}
}
}
}
}
}
// ---------------
// PRINT OVERRIDES
// ---------------
@media print {
.nav-header,
.v-navigation-drawer,
.v-btn--fab,
.page-col-sd,
.v-tooltip__content
{
display: none !important;
}
.layout {
display: block !important;
}
.page-col-content {
flex-basis: 100% !important;
flex-grow: 1 !important;
max-width: 100% !important;
margin-left: 0 !important;
> .v-toolbar {
border: 1px solid mc('grey', '300') !important;
border-radius: 7px !important;
& + .v-divider {
display: none !important;
}
}
}
.v-main {
padding: 0 !important;
font-size: 14px;
background-color: #FFF;
}
.v-main .contents {
color: #000;
background-color: #FFF;
@at-root .theme--dark & {
color: #000;
}
.prismjs{
box-shadow: none;
background-color: #FFF;
@at-root .theme--dark & {
background-color: #FFF;
}
> code {
color: #000;
box-shadow: none;
text-shadow: none;
}
}
}
.comments-container {
display: none;
}
}
name: Default
author: requarks.io
site: https://wiki.requarks.io/
version: 1.0.0
requirements:
minimum: '>= 2.0.0'
maximum: '< 3.0.0'
props:
sdPosition:
type: String
default: 'left'
title: Table of Contents Position
hint: Should the content sidebar be shown on the left or right.
enum:
- 'hidden'
- 'left'
- 'right'
order: 1
icon: mdi-border-vertical
showTOC:
type: Boolean
default: true
title: Display the Table of Contents
order: 2
showTags:
type: Boolean
default: true
title: Display the Page Tags
order: 3
showTags:
type: Boolean
default: true
title: Display the Page Author and Date
order: 4
showTags:
type: Boolean
default: true
title: Display the Page Rating
order: 5
showSocialBar:
type: Boolean
default: true
title: Display the Social Links Bar
order: 6
showEditSpeedDial:
type: Boolean
default: true
title: Display the Edit Speed Dial
hint: Shown in the lower right corner of the page.
order: 7
This diff was suppressed by a .gitattributes entry.
case $MATRIXENV in
postgres)
echo "Using PostgreSQL..."
docker run -d -p 5432:5432 --name db --network="host" -e "POSTGRES_PASSWORD=Password123!" -e "POSTGRES_USER=wiki" -e "POSTGRES_DB=wiki" postgres:11
while ! docker exec db psql -U wiki -d wiki -c "SELECT 1" &> /dev/null ; do
echo "Waiting for database connection..."
sleep 2
done
docker run -d -p 3000:3000 --name wiki --network="host" -e "DB_TYPE=postgres" -e "DB_HOST=localhost" -e "DB_PORT=5432" -e "DB_NAME=wiki" -e "DB_USER=wiki" -e "DB_PASS=Password123!" requarks/wiki:canary-$REL_VERSION_STRICT
;;
mysql)
echo "Using MySQL..."
docker run -d -p 3306:3306 --name db --network="host" -e "MYSQL_ROOT_PASSWORD=Password123!" -e "MYSQL_USER=wiki" -e "MYSQL_PASSWORD=Password123!" -e "MYSQL_DATABASE=wiki" mysql:8
while ! docker exec db mysql --user=root --password=Password123! -e "SELECT 1" &> /dev/null ; do
echo "Waiting for database connection..."
sleep 2
done
docker run -d -p 3000:3000 --name wiki --network="host" -e "DB_TYPE=mysql" -e "DB_HOST=localhost" -e "DB_PORT=3306" -e "DB_NAME=wiki" -e "DB_USER=wiki" -e "DB_PASS=Password123!" requarks/wiki:canary-$REL_VERSION_STRICT
;;
mariadb)
echo "Using MariaDB..."
docker run -d -p 3306:3306 --name db --network="host" -e "MYSQL_ROOT_PASSWORD=Password123!" -e "MYSQL_USER=wiki" -e "MYSQL_PASSWORD=Password123!" -e "MYSQL_DATABASE=wiki" mariadb:10
while ! docker exec db mysql --user=root --password=Password123! -e "SELECT 1" &> /dev/null ; do
echo "Waiting for database connection..."
sleep 2
done
docker run -d -p 3000:3000 --name wiki --network="host" -e "DB_TYPE=mariadb" -e "DB_HOST=localhost" -e "DB_PORT=3306" -e "DB_NAME=wiki" -e "DB_USER=wiki" -e "DB_PASS=Password123!" requarks/wiki:canary-$REL_VERSION_STRICT
;;
mssql)
echo "Using MS SQL Server..."
docker run -d -p 1433:1433 --name db --network="host" -e "SA_PASSWORD=Password123!" -e "ACCEPT_EULA=Y" mcr.microsoft.com/mssql/server:2019-latest
while ! docker exec db /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P "Password123!" -Q 'CREATE DATABASE wiki' &> /dev/null ; do
echo "Waiting for database connection..."
sleep 2
done
docker run -d -p 3000:3000 --name wiki --network="host" -e "DB_TYPE=mssql" -e "DB_HOST=localhost" -e "DB_PORT=1433" -e "DB_NAME=wiki" -e "DB_USER=SA" -e "DB_PASS=Password123!" requarks/wiki:canary-$REL_VERSION_STRICT
;;
sqlite)
echo "Using SQLite..."
docker run -d -p 3000:3000 --name wiki --network="host" -e "DB_TYPE=sqlite" -e "DB_FILEPATH=db.sqlite" requarks/wiki:canary-$REL_VERSION_STRICT
;;
*)
echo "Invalid DB Type!"
;;
esac
/// <reference types="Cypress" />
describe('Setup', () => {
it('Load the setup page', () => {
cy.visit('/')
cy.contains('You are about to install Wiki.js').should('exist')
})
it('Enter administrator email address', () => {
cy.get('.v-input').contains('Administrator Email').next('input').click().type('test@example.com')
})
it('Enter a password', () => {
cy.get('.v-input').contains('Password').next('input').click().type('12345678')
cy.get('.v-input').contains('Confirm Password').next('input').click().type('12345678')
})
it('Enter a Site URL', () => {
cy.get('.v-input').contains('Site URL').next('input').click().clear().type('http://localhost:3000')
})
it('Disable Telemetry', () => {
cy.contains('Telemetry').next('.v-input').click()
})
it('Press Install', () => {
cy.get('.v-card__actions').find('button').click()
})
it('Wait for install success', () => {
cy.contains('Installation complete!', {timeout: 30000}).should('exist')
})
// -> Disabled because of origin change errors during CI tests
//
// it('Redirect to login page', () => {
// cy.location('pathname', {timeout: 10000}).should('include', '/login')
// })
})
/// <reference types="cypress" />
// ***********************************************************
// This example plugins/index.js can be used to load plugins
//
// You can change the location of this file or turn off loading
// the plugins file with the 'pluginsFile' configuration option.
//
// You can read more here:
// https://on.cypress.io/plugins-guide
// ***********************************************************
// This function is called when a project is opened or re-opened (e.g. due to
// the project's config changing)
/**
* @type {Cypress.PluginConfig}
*/
module.exports = (on, config) => {
// `on` is used to hook into various events Cypress emits
// `config` is the resolved Cypress config
}
// ***********************************************
// This example commands.js shows you how to
// create various custom commands and overwrite
// existing commands.
//
// For more comprehensive examples of custom
// commands please read more here:
// https://on.cypress.io/custom-commands
// ***********************************************
//
//
// -- This is a parent command --
// Cypress.Commands.add("login", (email, password) => { ... })
//
//
// -- This is a child command --
// Cypress.Commands.add("drag", { prevSubject: 'element'}, (subject, options) => { ... })
//
//
// -- This is a dual command --
// Cypress.Commands.add("dismiss", { prevSubject: 'optional'}, (subject, options) => { ... })
//
//
// -- This will overwrite an existing command --
// Cypress.Commands.overwrite("visit", (originalFn, url, options) => { ... })
// ***********************************************************
// This example support/index.js is processed and
// loaded automatically before your test files.
//
// This is a great place to put global configuration and
// behavior that modifies Cypress.
//
// You can change the location of this file or turn off
// automatically serving support files with the
// 'supportFile' configuration option.
//
// You can read more here:
// https://on.cypress.io/configuration
// ***********************************************************
// Import commands.js using ES2015 syntax:
import './commands'
// Alternatively you can use CommonJS syntax:
// require('./commands')
#!/usr/bin/env node
// ===========================================
// Wiki.js DEV UTILITY
// Licensed under AGPLv3
// ===========================================
const _ = require('lodash')
const chalk = require('chalk')
const init = {
dev() {
const webpack = require('webpack')
const chokidar = require('chokidar')
console.info(chalk.yellow.bold('--- ====================== ---'))
console.info(chalk.yellow.bold('--- Wiki.js DEVELOPER MODE ---'))
console.info(chalk.yellow.bold('--- ====================== ---'))
global.DEV = true
global.WP_CONFIG = require('./webpack/webpack.dev.js')
global.WP = webpack(global.WP_CONFIG)
global.WP_DEV = {
devMiddleware: require('webpack-dev-middleware')(global.WP, {
publicPath: global.WP_CONFIG.output.publicPath
}),
hotMiddleware: require('webpack-hot-middleware')(global.WP)
}
global.WP_DEV.devMiddleware.waitUntilValid(() => {
console.info(chalk.yellow.bold('>>> Starting Wiki.js in DEVELOPER mode...'))
require('../server')
process.stdin.setEncoding('utf8')
process.stdin.on('data', data => {
if (_.trim(data) === 'rs') {
console.warn(chalk.yellow.bold('--- >>>>>>>>>>>>>>>>>>>>>>>> ---'))
console.warn(chalk.yellow.bold('--- Manual restart requested ---'))
console.warn(chalk.yellow.bold('--- <<<<<<<<<<<<<<<<<<<<<<<< ---'))
this.reload()
}
})
const devWatcher = chokidar.watch([
'./server',
'!./server/views/master.pug'
], {
cwd: process.cwd(),
ignoreInitial: true,
atomic: 400
})
devWatcher.on('ready', () => {
devWatcher.on('all', _.debounce(() => {
console.warn(chalk.yellow.bold('--- >>>>>>>>>>>>>>>>>>>>>>>>>>>> ---'))
console.warn(chalk.yellow.bold('--- Changes detected: Restarting ---'))
console.warn(chalk.yellow.bold('--- <<<<<<<<<<<<<<<<<<<<<<<<<<<< ---'))
this.reload()
}, 500))
})
})
},
async reload() {
console.warn(chalk.yellow('--- Gracefully stopping server...'))
await global.WIKI.kernel.shutdown(true)
console.warn(chalk.yellow('--- Purging node modules cache...'))
global.WIKI = {}
Object.keys(require.cache).forEach(id => {
if (/[/\\]server[/\\]/.test(id)) {
delete require.cache[id]
}
})
Object.keys(module.constructor._pathCache).forEach(cacheKey => {
if (/[/\\]server[/\\]/.test(cacheKey)) {
delete module.constructor._pathCache[cacheKey]
}
})
console.warn(chalk.yellow('--- Unregistering process listeners...'))
process.removeAllListeners('unhandledRejection')
process.removeAllListeners('uncaughtException')
require('../server')
}
}
init.dev()
package main
import (
"fmt"
"runtime"
"github.com/bugsnag/bugsnag-go"
"github.com/fatih/color"
"gopkg.in/AlecAivazis/survey.v1"
)
var qs = []*survey.Question{
{
Name: "location",
Prompt: &survey.Input{
Message: "Where do you want to install Wiki.js?",
Default: "./wiki",
},
Validate: survey.Required,
},
{
Name: "dbtype",
Prompt: &survey.Select{
Message: "Select a DB Driver:",
Options: []string{"MariabDB", "MS SQL Server", "MySQL", "PostgreSQL", "SQLite"},
Default: "PostgreSQL",
},
},
{
Name: "port",
Prompt: &survey.Input{
Message: "Server Port:",
Default: "3000",
},
},
}
func main() {
bugsnag.Configure(bugsnag.Configuration{
APIKey: "37770b3b08864599fd47c4edba5aa656",
ReleaseStage: "dev",
})
bold := color.New(color.FgWhite).Add(color.Bold)
logo := `
__ __ _ _ _ _
/ / /\ \ (_) | _(_) (_)___
\ \/ \/ / | |/ / | | / __|
\ /\ /| | <| |_ | \__ \
\/ \/ |_|_|\_\_(_)/ |___/
|__/
`
color.Yellow(logo)
bold.Println("\nInstaller for Wiki.js 2.x")
fmt.Printf("%s-%s\n\n", runtime.GOOS, runtime.GOARCH)
// Check system requirements
bold.Println("Verifying system requirements...")
CheckNodeJs()
CheckRAM()
fmt.Println()
// the answers will be written to this struct
answers := struct {
Location string
DBType string `survey:"dbtype"`
Port int
}{}
// perform the questions
err := survey.Ask(qs, &answers)
if err != nil {
fmt.Println(err.Error())
return
}
fmt.Printf("%s chose %d.", answers.Location, answers.Port)
// Download archives...
bold.Println("\nDownloading packages...")
// uiprogress.Start()
// bar := uiprogress.AddBar(100)
// bar.AppendCompleted()
// bar.PrependElapsed()
// for bar.Incr() {
// time.Sleep(time.Millisecond * 20)
// }
finish := `
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
| |
| Open http://localhost:3000/ in your browser |
| to complete the installation! |
| |
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
`
color.Yellow("\n\n" + finish)
fmt.Println("Press any key to continue.")
fmt.Scanln()
}
package main
import (
"fmt"
"log"
"os/exec"
"github.com/blang/semver"
"github.com/fatih/color"
"github.com/pbnjay/memory"
)
const nodejsSemverRange = ">=8.11.4 <11.0.0"
const ramMin = 768
// CheckNodeJs checks if Node.js is installed and has minimal supported version
func CheckNodeJs() bool {
cmd := exec.Command("node", "-v")
cmdOutput, err := cmd.CombinedOutput()
if err != nil {
log.Fatal(err)
}
validRange := semver.MustParseRange(nodejsSemverRange)
nodeVersion, err := semver.ParseTolerant(string(cmdOutput[:]))
if !validRange(nodeVersion) {
panic(fmt.Errorf(color.RedString("Error: Installed Node.js version %s is not supported! %s\n"), nodeVersion, nodejsSemverRange))
}
fmt.Printf(color.GreenString("✔")+" Node.js %s: OK\n", nodeVersion.String())
return true
}
// CheckRAM checks if system total RAM meets requirements
func CheckRAM() bool {
var totalRAM = memory.TotalMemory() / 1024 / 1024
if totalRAM < ramMin {
panic(fmt.Errorf(color.RedString("Error: System does not meet RAM requirements. %s MB minimum.\n"), ramMin))
}
fmt.Printf(color.GreenString("✔")+" Total System RAM %d MB: OK\n", totalRAM)
return true
}
// CheckNetworkAccess checks if download server can be reached
func CheckNetworkAccess() bool {
// TODO
return true
}
doctype html
html(lang=siteConfig.lang)
head
meta(http-equiv='X-UA-Compatible', content='IE=edge')
meta(charset='UTF-8')
meta(name='viewport', content='user-scalable=yes, width=device-width, initial-scale=1, maximum-scale=5')
meta(name='theme-color', content='#1976d2')
meta(name='msapplication-TileColor', content='#1976d2')
meta(name='msapplication-TileImage', content='/_assets-legacy/favicons/mstile-150x150.png')
title= pageMeta.title + ' | ' + config.title
//- SEO / OpenGraph
meta(name='description', content=pageMeta.description)
meta(property='og:title', content=pageMeta.title)
meta(property='og:type', content='website')
meta(property='og:description', content=pageMeta.description)
meta(property='og:image', content=pageMeta.image)
meta(property='og:url', content=pageMeta.url)
meta(property='og:site_name', content=config.title)
//- Favicon
link(rel='apple-touch-icon', sizes='180x180', href='/_assets-legacy/favicons/apple-touch-icon.png')
link(rel='icon', type='image/png', sizes='192x192', href='/_assets-legacy/favicons/android-chrome-192x192.png')
link(rel='icon', type='image/png', sizes='32x32', href='/_assets-legacy/favicons/favicon-32x32.png')
link(rel='icon', type='image/png', sizes='16x16', href='/_assets-legacy/favicons/favicon-16x16.png')
link(rel='mask-icon', href='/_assets-legacy/favicons/safari-pinned-tab.svg', color='#1976d2')
link(rel='manifest', href='/_assets-legacy/manifest.json')
//- Site Properties
script.
var siteId = "!{siteId}"
var siteConfig = !{JSON.stringify(siteConfig)}
var siteLangs = !{JSON.stringify(langs)}
//- Dev Mode Warning
if devMode
script.
siteConfig.devMode = true
//- CSS
<% for (var index in htmlWebpackPlugin.files.css) { %>
<% if (htmlWebpackPlugin.files.cssIntegrity) { %>
link(
type='text/css'
rel='stylesheet'
href='<%= htmlWebpackPlugin.files.css[index] %>'
integrity=config.security.securitySRI ? '<%= htmlWebpackPlugin.files.cssIntegrity[index] %>' : false
crossorigin='<%= webpackConfig.output.crossOriginLoading %>'
)
<% } else { %>
link(
type='text/css'
rel='stylesheet'
href='<%= htmlWebpackPlugin.files.css[index] %>'
)
<% } %>
<% } %>
//- JS
<% for (var index in htmlWebpackPlugin.files.js) { %>
<% if (htmlWebpackPlugin.files.jsIntegrity) { %>
script(
type='text/javascript'
src='<%= htmlWebpackPlugin.files.js[index] %>'
integrity=config.security.securitySRI ? '<%= htmlWebpackPlugin.files.jsIntegrity[index] %>' : false
crossorigin='<%= webpackConfig.output.crossOriginLoading %>'
)
<% } else { %>
script(
type='text/javascript'
src='<%= htmlWebpackPlugin.files.js[index] %>'
)
<% } %>
<% } %>
!= analyticsCode.head
block head
body
!= analyticsCode.bodyStart
block body
!= analyticsCode.bodyEnd
const webpack = require('webpack')
const path = require('path')
const fs = require('fs-extra')
const yargs = require('yargs').argv
const _ = require('lodash')
const { VueLoaderPlugin } = require('vue-loader')
const CopyWebpackPlugin = require('copy-webpack-plugin')
const HtmlWebpackPlugin = require('html-webpack-plugin')
const HtmlWebpackPugPlugin = require('html-webpack-pug-plugin')
const MomentTimezoneDataPlugin = require('moment-timezone-data-webpack-plugin')
const VuetifyLoaderPlugin = require('vuetify-loader/lib/plugin')
const WriteFilePlugin = require('write-file-webpack-plugin')
const WebpackBarPlugin = require('webpackbar')
const babelConfig = fs.readJsonSync(path.join(process.cwd(), '.babelrc'))
const cacheDir = '.webpack-cache/cache'
const babelDir = path.join(process.cwd(), '.webpack-cache/babel')
process.noDeprecation = true
fs.emptyDirSync(path.join(process.cwd(), 'assets-legacy'))
module.exports = {
mode: 'development',
entry: {
app: ['./client/index-app.js', 'webpack-hot-middleware/client']
},
output: {
path: path.join(process.cwd(), 'assets-legacy'),
publicPath: '/_assets-legacy/',
filename: 'js/[name].js',
chunkFilename: 'js/[name].js',
globalObject: 'this',
pathinfo: true,
crossOriginLoading: 'use-credentials'
},
module: {
rules: [
{
test: /\.js$/,
exclude: (modulePath) => {
return modulePath.includes('node_modules') && !modulePath.includes('vuetify')
},
use: [
{
loader: 'cache-loader',
options: {
cacheDirectory: cacheDir
}
},
{
loader: 'babel-loader',
options: {
...babelConfig,
cacheDirectory: babelDir
}
}
]
},
{
test: /\.css$/,
use: [
'style-loader',
'css-loader',
'postcss-loader'
]
},
{
test: /\.sass$/,
use: [
{
loader: 'cache-loader',
options: {
cacheDirectory: cacheDir
}
},
'style-loader',
'css-loader',
'postcss-loader',
{
loader: 'sass-loader',
options: {
implementation: require('sass'),
sourceMap: false,
sassOptions: {
fiber: false
}
}
}
]
},
{
test: /\.scss$/,
use: [
{
loader: 'cache-loader',
options: {
cacheDirectory: cacheDir
}
},
'style-loader',
'css-loader',
'postcss-loader',
{
loader: 'sass-loader',
options: {
implementation: require('sass'),
sourceMap: false,
sassOptions: {
fiber: false
}
}
},
{
loader: 'sass-resources-loader',
options: {
resources: path.join(process.cwd(), '/client/scss/global.scss')
}
}
]
},
{
test: /\.vue$/,
loader: 'vue-loader'
},
{
test: /\.pug$/,
exclude: [
path.join(process.cwd(), 'dev')
],
loader: 'pug-plain-loader'
},
{
test: /\.(png|jpg|gif)$/,
use: [
{
loader: 'url-loader',
options: {
limit: 8192
}
}
]
},
{
test: /\.svg$/,
exclude: [
path.join(process.cwd(), 'node_modules/grapesjs')
],
use: [
{
loader: 'file-loader',
options: {
name: '[name].[ext]',
outputPath: 'svg/'
}
}
]
},
{
test: /\.(graphql|gql)$/,
exclude: /node_modules/,
use: [
{ loader: 'graphql-persisted-document-loader' },
{ loader: 'graphql-tag/loader' }
]
},
{
test: /\.(woff2|woff|ttf|eot)(\?v=\d+\.\d+\.\d+)?$/,
use: [{
loader: 'file-loader',
options: {
name: '[name].[ext]',
outputPath: 'fonts/'
}
}]
},
{
loader: 'webpack-modernizr-loader',
test: /\.modernizrrc\.js$/
}
]
},
plugins: [
new VueLoaderPlugin(),
new VuetifyLoaderPlugin(),
new MomentTimezoneDataPlugin({
startYear: 2017,
endYear: (new Date().getFullYear()) + 5
}),
new CopyWebpackPlugin({
patterns: [
{ from: 'client/static' },
{ from: './node_modules/prismjs/components', to: 'js/prism' }
]
}),
new HtmlWebpackPlugin({
template: 'dev/templates/base.pug',
filename: '../server/views/base.pug',
hash: false,
inject: false
}),
new HtmlWebpackPugPlugin(),
new WebpackBarPlugin({
name: 'Client Assets'
}),
new webpack.DefinePlugin({
'process.env.NODE_ENV': JSON.stringify('development'),
'process.env.CURRENT_THEME': JSON.stringify(_.defaultTo(yargs.theme, 'default'))
}),
new WriteFilePlugin(),
new webpack.HotModuleReplacementPlugin(),
new webpack.WatchIgnorePlugin([
/node_modules/
])
],
optimization: {
namedModules: true,
namedChunks: true,
splitChunks: {
cacheGroups: {
default: {
minChunks: 2,
priority: -20,
reuseExistingChunk: true
},
vendor: {
test: /[\\/]node_modules[\\/]/,
minChunks: 2,
priority: -10
}
}
},
runtimeChunk: 'single'
},
resolve: {
mainFields: ['browser', 'main', 'module'],
symlinks: true,
alias: {
'@': path.join(process.cwd(), 'client'),
'vue$': 'vue/dist/vue.esm.js',
'gql': path.join(process.cwd(), 'client/graph'),
// Duplicates fixes:
'apollo-link': path.join(process.cwd(), 'node_modules/apollo-link'),
'apollo-utilities': path.join(process.cwd(), 'node_modules/apollo-utilities'),
'uc.micro': path.join(process.cwd(), 'node_modules/uc.micro'),
'modernizr$': path.resolve(process.cwd(), 'client/.modernizrrc.js')
},
extensions: [
'.js',
'.json',
'.vue'
],
modules: [
'node_modules'
]
},
node: {
fs: 'empty'
},
stats: {
children: false,
entrypoints: false
},
target: 'web',
watch: true
}
const webpack = require('webpack')
const path = require('path')
const fs = require('fs-extra')
const yargs = require('yargs').argv
const _ = require('lodash')
const { VueLoaderPlugin } = require('vue-loader')
const { CleanWebpackPlugin } = require('clean-webpack-plugin')
const CopyWebpackPlugin = require('copy-webpack-plugin')
const HtmlWebpackPlugin = require('html-webpack-plugin')
const HtmlWebpackPugPlugin = require('html-webpack-pug-plugin')
const MiniCssExtractPlugin = require('mini-css-extract-plugin')
const MomentTimezoneDataPlugin = require('moment-timezone-data-webpack-plugin')
const OptimizeCssAssetsPlugin = require('optimize-css-assets-webpack-plugin')
const ScriptExtHtmlWebpackPlugin = require('script-ext-html-webpack-plugin')
const VuetifyLoaderPlugin = require('vuetify-loader/lib/plugin')
const WebpackBarPlugin = require('webpackbar')
const now = Math.round(Date.now() / 1000)
const babelConfig = fs.readJsonSync(path.join(process.cwd(), '.babelrc'))
const cacheDir = '.webpack-cache/cache'
const babelDir = path.join(process.cwd(), '.webpack-cache/babel')
process.noDeprecation = true
fs.emptyDirSync(path.join(process.cwd(), 'assets-legacy'))
module.exports = {
mode: 'production',
entry: {
app: './client/index-app.js'
},
output: {
path: path.join(process.cwd(), 'assets-legacy'),
publicPath: '/_assets-legacy/',
filename: `js/[name].js?${now}`,
chunkFilename: `js/[name].js?${now}`,
globalObject: 'this',
crossOriginLoading: 'use-credentials'
},
module: {
rules: [
{
test: /\.js$/,
exclude: (modulePath) => {
return modulePath.includes('node_modules') && !modulePath.includes('vuetify')
},
use: [
{
loader: 'cache-loader',
options: {
cacheDirectory: cacheDir
}
},
{
loader: 'babel-loader',
options: {
...babelConfig,
cacheDirectory: babelDir
}
}
]
},
{
test: /\.css$/,
use: [
'style-loader',
MiniCssExtractPlugin.loader,
'css-loader',
'postcss-loader'
]
},
{
test: /\.sass$/,
use: [
{
loader: 'cache-loader',
options: {
cacheDirectory: cacheDir
}
},
'style-loader',
'css-loader',
'postcss-loader',
{
loader: 'sass-loader',
options: {
implementation: require('sass'),
sourceMap: false,
sassOptions: {
fiber: false
}
}
}
]
},
{
test: /\.scss$/,
use: [
{
loader: 'cache-loader',
options: {
cacheDirectory: cacheDir
}
},
'style-loader',
MiniCssExtractPlugin.loader,
'css-loader',
'postcss-loader',
{
loader: 'sass-loader',
options: {
implementation: require('sass'),
sourceMap: false,
sassOptions: {
fiber: false
}
}
},
{
loader: 'sass-resources-loader',
options: {
resources: path.join(process.cwd(), '/client/scss/global.scss')
}
}
]
},
{
test: /\.vue$/,
loader: 'vue-loader'
},
{
test: /\.pug$/,
exclude: [
path.join(process.cwd(), 'dev')
],
loader: 'pug-plain-loader'
},
{
test: /\.(png|jpg|gif)$/,
use: [
{
loader: 'url-loader',
options: {
limit: 8192
}
}
]
},
{
test: /\.svg$/,
exclude: [
path.join(process.cwd(), 'node_modules/grapesjs')
],
use: [
{
loader: 'file-loader',
options: {
name: '[name].[ext]',
outputPath: 'svg/'
}
}
]
},
{
test: /\.(graphql|gql)$/,
exclude: /node_modules/,
use: [
{ loader: 'graphql-persisted-document-loader' },
{ loader: 'graphql-tag/loader' }
]
},
{
test: /\.(woff2|woff|ttf|eot)(\?v=\d+\.\d+\.\d+)?$/,
use: [{
loader: 'file-loader',
options: {
name: '[name].[ext]',
outputPath: 'fonts/'
}
}]
},
{
loader: 'webpack-modernizr-loader',
test: /\.modernizrrc\.js$/
}
]
},
plugins: [
new VueLoaderPlugin(),
new VuetifyLoaderPlugin(),
new webpack.BannerPlugin('Wiki.js - wiki.js.org - Licensed under AGPL'),
new MomentTimezoneDataPlugin({
startYear: 2017,
endYear: (new Date().getFullYear()) + 5
}),
new CopyWebpackPlugin({
patterns: [
{ from: 'client/static' },
{ from: './node_modules/prismjs/components', to: 'js/prism' }
]
}),
new MiniCssExtractPlugin({
filename: 'css/bundle.[hash].css',
chunkFilename: 'css/[name].[chunkhash].css'
}),
new HtmlWebpackPlugin({
template: 'dev/templates/base.pug',
filename: '../server/views/base.pug',
hash: false,
inject: false
}),
new HtmlWebpackPugPlugin(),
new ScriptExtHtmlWebpackPlugin({
sync: 'runtime.js',
defaultAttribute: 'async'
}),
new WebpackBarPlugin({
name: 'Client Assets'
}),
new CleanWebpackPlugin(),
new OptimizeCssAssetsPlugin({
cssProcessorOptions: { discardComments: { removeAll: true } },
canPrint: true
}),
new webpack.DefinePlugin({
'process.env.NODE_ENV': JSON.stringify('production'),
'process.env.CURRENT_THEME': JSON.stringify(_.defaultTo(yargs.theme, 'default'))
}),
new webpack.optimize.MinChunkSizePlugin({
minChunkSize: 50000
})
],
optimization: {
namedModules: true,
namedChunks: true,
splitChunks: {
name: 'vendor',
minChunks: 2
},
runtimeChunk: 'single'
},
resolve: {
mainFields: ['browser', 'main', 'module'],
symlinks: true,
alias: {
'@': path.join(process.cwd(), 'client'),
'vue$': 'vue/dist/vue.esm.js',
'gql': path.join(process.cwd(), 'client/graph'),
// Duplicates fixes:
'apollo-link': path.join(process.cwd(), 'node_modules/apollo-link'),
'apollo-utilities': path.join(process.cwd(), 'node_modules/apollo-utilities'),
'uc.micro': path.join(process.cwd(), 'node_modules/uc.micro'),
'modernizr$': path.resolve(process.cwd(), 'client/.modernizrrc.js')
},
extensions: [
'.js',
'.json',
'.vue'
],
modules: [
'node_modules'
]
},
node: {
fs: 'empty'
},
stats: {
children: false,
entrypoints: false
},
target: 'web'
}
{
"name": "wiki",
"version": "3.0.0",
"releaseDate": "2022-01-01T01:01:01.000Z",
"description": "The most powerful and extensible open source Wiki software",
"main": "wiki.js",
"dev": true,
"scripts": {
"start": "node server",
"dev": "nodemon server",
"legacy:dev": "NODE_OPTIONS=--openssl-legacy-provider node dev",
"legacy:build": "NODE_OPTIONS=--openssl-legacy-provider webpack --profile --config dev/webpack/webpack.prod.js",
"test": "eslint --format codeframe --ext .js,.vue . && pug-lint server/views && jest"
},
"repository": {
"type": "git",
"url": "git+https://github.com/Requarks/wiki.git"
},
"keywords": [
"wiki",
"wikis",
"docs",
"documentation",
"markdown",
"guides",
"knowledge base"
],
"author": "Nicolas Giard",
"license": "AGPL-3.0",
"bugs": {
"url": "https://github.com/Requarks/wiki/issues"
},
"homepage": "https://github.com/Requarks/wiki#readme",
"engines": {
"node": ">=16.0"
},
"dependencies": {
"@azure/storage-blob": "12.11.0",
"@exlinc/keycloak-passport": "1.0.2",
"@graphql-tools/schema": "8.3.7",
"@graphql-tools/utils": "8.6.6",
"@joplin/turndown-plugin-gfm": "1.0.44",
"@root/csr": "0.8.1",
"@root/keypairs": "0.10.3",
"@root/pem": "1.0.4",
"acme": "3.0.3",
"akismet-api": "5.3.0",
"apollo-fetch": "0.7.0",
"apollo-server": "3.6.7",
"apollo-server-express": "3.6.7",
"auto-load": "3.0.4",
"aws-sdk": "2.1208.0",
"bcryptjs-then": "1.0.1",
"body-parser": "1.20.0",
"chalk": "4.1.2",
"cheerio": "1.0.0-rc.12",
"chokidar": "3.5.3",
"chromium-pickle-js": "0.2.0",
"clean-css": "4.2.3",
"command-exists": "1.2.9",
"compression": "1.7.4",
"connect-session-knex": "3.0.0",
"cookie-parser": "1.4.6",
"cors": "2.8.5",
"cron-parser": "4.6.0",
"cuint": "0.2.2",
"custom-error-instance": "2.1.2",
"dependency-graph": "0.9.0",
"diff": "4.0.2",
"diff2html": "3.1.14",
"dompurify": "2.4.0",
"dotize": "0.3.0",
"emoji-regex": "10.1.0",
"eventemitter2": "6.4.7",
"express": "4.18.1",
"express-brute": "1.0.1",
"express-session": "1.17.3",
"file-type": "15.0.1",
"filesize": "6.1.0",
"fs-extra": "9.0.1",
"getos": "3.2.1",
"graphql": "16.3.0",
"graphql-list-fields": "2.0.2",
"graphql-rate-limit-directive": "2.0.2",
"graphql-tools": "8.2.5",
"graphql-upload": "13.0.0",
"he": "1.2.0",
"highlight.js": "10.3.1",
"i18next": "19.8.3",
"i18next-node-fs-backend": "2.1.3",
"image-size": "0.9.2",
"js-base64": "3.7.2",
"js-binary": "1.2.0",
"js-yaml": "4.1.0",
"jsdom": "16.4.0",
"jsonwebtoken": "8.5.1",
"katex": "0.12.0",
"klaw": "4.0.1",
"knex": "2.3.0",
"lodash": "4.17.21",
"luxon": "2.3.1",
"markdown-it": "11.0.1",
"markdown-it-abbr": "1.0.4",
"markdown-it-attrs": "3.0.3",
"markdown-it-emoji": "1.4.0",
"markdown-it-expand-tabs": "1.0.13",
"markdown-it-external-links": "0.0.6",
"markdown-it-footnote": "3.0.3",
"markdown-it-imsize": "2.0.1",
"markdown-it-mark": "3.0.1",
"markdown-it-mathjax": "2.0.0",
"markdown-it-multimd-table": "4.0.3",
"markdown-it-sub": "1.0.0",
"markdown-it-sup": "1.0.0",
"markdown-it-task-lists": "2.1.1",
"mathjax": "3.1.2",
"mime-types": "2.1.35",
"moment": "2.29.2",
"moment-timezone": "0.5.31",
"ms": "2.1.3",
"multer": "1.4.4",
"nanoid": "3.3.2",
"node-2fa": "1.1.2",
"node-cache": "5.1.2",
"nodemailer": "6.7.8",
"objection": "3.0.1",
"passport": "0.6.0",
"passport-auth0": "1.4.3",
"passport-azure-ad": "4.3.4",
"passport-cas": "0.1.1",
"passport-discord": "0.1.4",
"passport-dropbox-oauth2": "1.1.0",
"passport-facebook": "3.0.0",
"passport-github2": "0.1.12",
"passport-gitlab2": "5.0.0",
"passport-google-oauth20": "2.0.0",
"passport-jwt": "4.0.0",
"passport-ldapauth": "3.0.1",
"passport-local": "1.0.0",
"passport-microsoft": "1.0.0",
"passport-oauth2": "1.6.1",
"passport-okta-oauth": "0.0.1",
"passport-openidconnect": "0.1.1",
"passport-saml": "3.2.1",
"passport-slack-oauth2": "1.1.1",
"passport-twitch-strategy": "2.2.0",
"pem-jwk": "2.0.0",
"pg": "8.8.0",
"pg-hstore": "2.3.4",
"pg-pubsub": "0.8.0",
"pg-query-stream": "4.2.4",
"pg-tsquery": "8.4.0",
"poolifier": "2.2.0",
"pug": "3.0.2",
"punycode": "2.1.1",
"puppeteer-core": "17.1.3",
"qr-image": "3.2.0",
"rate-limiter-flexible": "2.3.8",
"remove-markdown": "0.3.0",
"request": "2.88.2",
"request-promise": "4.2.6",
"safe-regex": "2.1.1",
"sanitize-filename": "1.6.3",
"scim-query-filter-parser": "2.0.4",
"semver": "7.3.7",
"serve-favicon": "2.5.0",
"sharp": "0.31.0",
"simple-git": "2.21.0",
"socket.io": "4.5.2",
"ssh2": "1.9.0",
"ssh2-promise": "1.0.2",
"striptags": "3.2.0",
"tar-fs": "2.1.1",
"turndown": "7.1.1",
"twemoji": "13.1.0",
"uslug": "1.0.4",
"uuid": "8.3.2",
"validate.js": "0.13.1",
"xss": "1.0.14",
"yargs": "16.1.0"
},
"devDependencies": {
"@babel/cli": "^7.12.1",
"@babel/core": "^7.12.3",
"@babel/plugin-proposal-class-properties": "^7.12.1",
"@babel/plugin-proposal-decorators": "^7.12.1",
"@babel/plugin-proposal-export-namespace-from": "^7.12.1",
"@babel/plugin-proposal-function-sent": "^7.12.1",
"@babel/plugin-proposal-json-strings": "^7.12.1",
"@babel/plugin-proposal-numeric-separator": "^7.12.1",
"@babel/plugin-proposal-throw-expressions": "^7.12.1",
"@babel/plugin-syntax-dynamic-import": "^7.8.3",
"@babel/plugin-syntax-import-meta": "^7.10.4",
"@babel/polyfill": "^7.12.1",
"@babel/preset-env": "^7.12.1",
"@mdi/font": "5.8.55",
"@panter/vue-i18next": "0.15.2",
"@requarks/ckeditor5": "19.0.1-wiki.2",
"@vue/babel-preset-app": "4.5.15",
"animate-sass": "0.8.2",
"animated-number-vue": "1.0.0",
"apollo-cache-inmemory": "1.6.6",
"apollo-client": "2.6.10",
"apollo-link": "1.2.14",
"apollo-link-batch-http": "1.2.14",
"apollo-link-error": "1.1.13",
"apollo-link-http": "1.5.17",
"apollo-link-persisted-queries": "0.2.2",
"apollo-link-ws": "1.0.20",
"apollo-utilities": "1.3.4",
"autoprefixer": "9.8.6",
"babel-eslint": "10.1.0",
"babel-jest": "26.6.1",
"babel-loader": "^8.1.0",
"babel-plugin-graphql-tag": "3.1.0",
"babel-plugin-lodash": "3.3.4",
"babel-plugin-prismjs": "2.0.1",
"babel-plugin-transform-imports": "2.0.0",
"cache-loader": "4.1.0",
"canvas-confetti": "1.3.1",
"cash-dom": "8.1.1",
"chart.js": "2.9.4",
"clean-webpack-plugin": "3.0.0",
"clipboard": "2.0.10",
"codemirror": "5.58.2",
"copy-webpack-plugin": "6.2.1",
"core-js": "3.6.5",
"css-loader": "4.3.0",
"cssnano": "4.1.10",
"cypress": "5.3.0",
"d3": "6.2.0",
"duplicate-package-checker-webpack-plugin": "3.0.0",
"epic-spinners": "1.1.0",
"eslint": "7.12.0",
"eslint-config-requarks": "1.0.7",
"eslint-config-standard": "15.0.0",
"eslint-plugin-cypress": "2.11.2",
"eslint-plugin-import": "2.22.1",
"eslint-plugin-node": "11.1.0",
"eslint-plugin-promise": "4.2.1",
"eslint-plugin-standard": "4.0.2",
"eslint-plugin-vue": "7.1.0",
"file-loader": "6.1.1",
"filepond": "4.21.1",
"filepond-plugin-file-validate-type": "1.2.6",
"filesize.js": "2.0.0",
"graphql-persisted-document-loader": "2.0.0",
"graphql-tag": "2.12.6",
"hammerjs": "2.0.8",
"html-webpack-plugin": "4.5.0",
"html-webpack-pug-plugin": "2.0.0",
"i18next-chained-backend": "2.0.1",
"i18next-localstorage-backend": "3.1.3",
"i18next-xhr-backend": "3.2.2",
"ignore-loader": "0.1.2",
"jest": "26.6.1",
"js-beautify": "1.13.5",
"js-cookie": "2.2.1",
"mermaid": "8.8.2",
"mini-css-extract-plugin": "0.11.3",
"moment-duration-format": "2.3.2",
"moment-timezone-data-webpack-plugin": "1.3.0",
"nodemon": "2.0.15",
"offline-plugin": "5.0.7",
"optimize-css-assets-webpack-plugin": "5.0.4",
"pako": "1.0.11",
"postcss-cssnext": "3.1.1",
"postcss-flexbugs-fixes": "4.2.1",
"postcss-flexibility": "2.0.0",
"postcss-import": "12.0.1",
"postcss-loader": "3.0.0",
"postcss-preset-env": "6.7.0",
"postcss-selector-parser": "6.0.10",
"prismjs": "1.22.0",
"pug-lint": "2.6.0",
"pug-loader": "2.4.0",
"pug-plain-loader": "1.0.0",
"raw-loader": "4.0.2",
"resolve-url-loader": "3.1.2",
"sass": "1.27.0",
"sass-loader": "10.0.4",
"sass-resources-loader": "2.1.1",
"script-ext-html-webpack-plugin": "2.1.5",
"simple-progress-webpack-plugin": "1.1.2",
"style-loader": "1.3.0",
"terser": "5.3.8",
"twemoji-awesome": "1.0.6",
"url-loader": "4.1.1",
"velocity-animate": "1.5.2",
"viz.js": "2.1.2",
"vue": "2.6.14",
"vue-apollo": "3.0.5",
"vue-chartjs": "3.5.1",
"vue-clipboards": "1.3.0",
"vue-filepond": "6.0.3",
"vue-hot-reload-api": "2.3.4",
"vue-loader": "15.9.8",
"vue-moment": "4.1.0",
"vue-router": "3.4.7",
"vue-status-indicator": "1.2.1",
"vue-template-compiler": "2.6.14",
"vue2-animate": "2.1.4",
"vuedraggable": "2.24.3",
"vuescroll": "4.16.1",
"vuetify": "2.3.15",
"vuetify-loader": "1.6.0",
"vuex": "3.5.1",
"vuex-pathify": "1.4.5",
"vuex-persistedstate": "3.1.0",
"webpack": "4.44.2",
"webpack-bundle-analyzer": "3.9.0",
"webpack-cli": "3.3.12",
"webpack-dev-middleware": "3.7.2",
"webpack-hot-middleware": "2.25.1",
"webpack-merge": "5.2.0",
"webpack-modernizr-loader": "5.0.0",
"webpack-subresource-integrity": "1.5.1",
"webpackbar": "4.0.0",
"whatwg-fetch": "3.6.2",
"write-file-webpack-plugin": "4.5.1",
"xterm": "4.9.0",
"zxcvbn": "4.4.2"
},
"browserslist": [
"> 1%",
"last 2 major versions",
"Firefox ESR",
"not ie > 0",
"not ie_mob > 0",
"not android > 0",
"not dead"
],
"postcss": {
"plugins": {
"autoprefixer": {},
"cssnano": {
"preset": [
"default",
{
"discardComments": {
"removeAll": true
}
}
]
},
"postcss-flexbugs-fixes": {},
"postcss-flexibility": {}
}
},
"pugLintConfig": {
"disallowDuplicateAttributes": true,
"disallowIdAttributeWithStaticValue": true,
"disallowMultipleLineBreaks": true,
"requireClassLiteralsBeforeAttributes": true,
"requireIdLiteralsBeforeAttributes": true,
"requireLineFeedAtFileEnd": true,
"requireLowerCaseAttributes": true,
"requireLowerCaseTags": true,
"requireSpaceAfterCodeOperator": true,
"requireStrictEqualityOperators": true,
"validateAttributeQuoteMarks": "'",
"validateAttributeSeparator": {
"separator": ", ",
"multiLineSeparator": "\n "
},
"validateDivTags": true,
"validateIndentation": 2,
"excludeFiles": [
"node_modules/**",
"server/views/master.pug",
"server/views/setup.pug",
"server/views/legacy/master.pug"
]
},
"collective": {
"type": "opencollective",
"url": "https://opencollective.com/wikijs",
"logo": "https://opencollective.com/opencollective/logo.txt"
},
"nodemonConfig": {
"env": {
"NODE_ENV": "development"
},
"ext": "js,json,graphql,gql",
"watch": [
"server/"
]
}
}
audit = false
fund = false
lockfile-version = "3"
save-exact = true
save-prefix = ""
......@@ -66,7 +66,7 @@ module.exports = {
// Load package info
const packageInfo = require(path.join(WIKI.ROOTPATH, 'package.json'))
const packageInfo = require(path.join(WIKI.SERVERPATH, 'package.json'))
// Load DB Password from Docker Secret File
if (process.env.DB_PASS_FILE) {
......
......@@ -20,7 +20,7 @@ module.exports = {
this.maxWorkers = WIKI.config.scheduler.workers === 'auto' ? (os.cpus().length - 1) : WIKI.config.scheduler.workers
if (this.maxWorkers < 1) { this.maxWorkers = 1 }
WIKI.logger.info(`Initializing Worker Pool (Limit: ${this.maxWorkers})...`)
this.workerPool = new DynamicThreadPool(1, this.maxWorkers, './server/worker.js', {
this.workerPool = new DynamicThreadPool(1, this.maxWorkers, path.join(WIKI.SERVERPATH, 'worker.js'), {
errorHandler: (err) => WIKI.logger.warn(err),
exitHandler: () => WIKI.logger.debug('A worker has gone offline.'),
onlineHandler: () => WIKI.logger.debug('New worker is online.')
......
......@@ -7,12 +7,18 @@ const path = require('path')
const { DateTime } = require('luxon')
const semver = require('semver')
const nanoid = require('nanoid').customAlphabet('1234567890abcdef', 10)
const fs = require('fs-extra')
if (!semver.satisfies(process.version, '>=18')) {
console.error('ERROR: Node.js 18.x or later required!')
process.exit(1)
}
if (fs.pathExistsSync('./package.json')) {
console.error('ERROR: Must run server from the parent directory!')
process.exit(1)
}
let WIKI = {
IS_DEBUG: process.env.NODE_ENV === 'development',
ROOTPATH: process.cwd(),
......
{
"name": "wiki-server",
"version": "3.0.0",
"releaseDate": "2023-01-01T01:01:01.000Z",
"description": "The most powerful and extensible open source Wiki software",
"main": "index.js",
"private": true,
"dev": true,
"scripts": {
"start": "cd .. && node server",
"dev": "cd .. && nodemon server"
},
"repository": {
"type": "git",
"url": "git+https://github.com/Requarks/wiki.git"
},
"keywords": [
"wiki",
"wikis",
"docs",
"documentation",
"markdown",
"guides",
"knowledge base"
],
"author": "Nicolas Giard",
"license": "AGPL-3.0",
"bugs": {
"url": "https://github.com/Requarks/wiki/issues"
},
"homepage": "https://github.com/Requarks/wiki#readme",
"engines": {
"node": ">=18.0"
},
"dependencies": {
"@azure/storage-blob": "12.11.0",
"@exlinc/keycloak-passport": "1.0.2",
"@graphql-tools/schema": "8.3.7",
"@graphql-tools/utils": "8.6.6",
"@joplin/turndown-plugin-gfm": "1.0.44",
"@root/csr": "0.8.1",
"@root/keypairs": "0.10.3",
"@root/pem": "1.0.4",
"acme": "3.0.3",
"akismet-api": "5.3.0",
"apollo-fetch": "0.7.0",
"apollo-server": "3.6.7",
"apollo-server-express": "3.6.7",
"auto-load": "3.0.4",
"aws-sdk": "2.1208.0",
"bcryptjs-then": "1.0.1",
"body-parser": "1.20.0",
"chalk": "4.1.2",
"cheerio": "1.0.0-rc.12",
"chokidar": "3.5.3",
"chromium-pickle-js": "0.2.0",
"clean-css": "4.2.3",
"command-exists": "1.2.9",
"compression": "1.7.4",
"connect-session-knex": "3.0.0",
"cookie-parser": "1.4.6",
"cors": "2.8.5",
"cron-parser": "4.6.0",
"cuint": "0.2.2",
"custom-error-instance": "2.1.2",
"dependency-graph": "0.9.0",
"diff": "4.0.2",
"diff2html": "3.1.14",
"dompurify": "2.4.0",
"dotize": "0.3.0",
"emoji-regex": "10.1.0",
"eventemitter2": "6.4.7",
"express": "4.18.1",
"express-brute": "1.0.1",
"express-session": "1.17.3",
"file-type": "15.0.1",
"filesize": "6.1.0",
"fs-extra": "9.0.1",
"getos": "3.2.1",
"graphql": "16.3.0",
"graphql-list-fields": "2.0.2",
"graphql-rate-limit-directive": "2.0.2",
"graphql-tools": "8.2.5",
"graphql-upload": "13.0.0",
"he": "1.2.0",
"highlight.js": "10.3.1",
"i18next": "19.8.3",
"i18next-node-fs-backend": "2.1.3",
"image-size": "0.9.2",
"js-base64": "3.7.2",
"js-binary": "1.2.0",
"js-yaml": "4.1.0",
"jsdom": "16.4.0",
"jsonwebtoken": "8.5.1",
"katex": "0.12.0",
"klaw": "4.0.1",
"knex": "2.3.0",
"lodash": "4.17.21",
"luxon": "2.3.1",
"markdown-it": "11.0.1",
"markdown-it-abbr": "1.0.4",
"markdown-it-attrs": "3.0.3",
"markdown-it-emoji": "1.4.0",
"markdown-it-expand-tabs": "1.0.13",
"markdown-it-external-links": "0.0.6",
"markdown-it-footnote": "3.0.3",
"markdown-it-imsize": "2.0.1",
"markdown-it-mark": "3.0.1",
"markdown-it-mathjax": "2.0.0",
"markdown-it-multimd-table": "4.0.3",
"markdown-it-sub": "1.0.0",
"markdown-it-sup": "1.0.0",
"markdown-it-task-lists": "2.1.1",
"mathjax": "3.1.2",
"mime-types": "2.1.35",
"moment": "2.29.2",
"moment-timezone": "0.5.31",
"ms": "2.1.3",
"multer": "1.4.4",
"nanoid": "3.3.2",
"node-2fa": "1.1.2",
"node-cache": "5.1.2",
"nodemailer": "6.7.8",
"objection": "3.0.1",
"passport": "0.6.0",
"passport-auth0": "1.4.3",
"passport-azure-ad": "4.3.4",
"passport-cas": "0.1.1",
"passport-discord": "0.1.4",
"passport-dropbox-oauth2": "1.1.0",
"passport-facebook": "3.0.0",
"passport-github2": "0.1.12",
"passport-gitlab2": "5.0.0",
"passport-google-oauth20": "2.0.0",
"passport-jwt": "4.0.0",
"passport-ldapauth": "3.0.1",
"passport-local": "1.0.0",
"passport-microsoft": "1.0.0",
"passport-oauth2": "1.6.1",
"passport-okta-oauth": "0.0.1",
"passport-openidconnect": "0.1.1",
"passport-saml": "3.2.1",
"passport-slack-oauth2": "1.1.1",
"passport-twitch-strategy": "2.2.0",
"pem-jwk": "2.0.0",
"pg": "8.8.0",
"pg-hstore": "2.3.4",
"pg-pubsub": "0.8.0",
"pg-query-stream": "4.2.4",
"pg-tsquery": "8.4.0",
"poolifier": "2.2.0",
"pug": "3.0.2",
"punycode": "2.1.1",
"puppeteer-core": "17.1.3",
"qr-image": "3.2.0",
"rate-limiter-flexible": "2.3.8",
"remove-markdown": "0.3.0",
"request": "2.88.2",
"request-promise": "4.2.6",
"safe-regex": "2.1.1",
"sanitize-filename": "1.6.3",
"scim-query-filter-parser": "2.0.4",
"semver": "7.3.7",
"serve-favicon": "2.5.0",
"sharp": "0.31.0",
"simple-git": "2.21.0",
"socket.io": "4.5.2",
"ssh2": "1.9.0",
"ssh2-promise": "1.0.2",
"striptags": "3.2.0",
"tar-fs": "2.1.1",
"turndown": "7.1.1",
"twemoji": "13.1.0",
"uslug": "1.0.4",
"uuid": "8.3.2",
"validate.js": "0.13.1",
"xss": "1.0.14",
"yargs": "16.1.0"
},
"devDependencies": {
"eslint": "7.12.0",
"eslint-config-requarks": "1.0.7",
"eslint-config-standard": "15.0.0",
"eslint-plugin-import": "2.22.1",
"eslint-plugin-node": "11.1.0",
"eslint-plugin-promise": "4.2.1",
"eslint-plugin-standard": "4.0.2",
"nodemon": "2.0.15"
},
"collective": {
"type": "opencollective",
"url": "https://opencollective.com/wikijs",
"logo": "https://opencollective.com/opencollective/logo.txt"
},
"nodemonConfig": {
"env": {
"NODE_ENV": "development"
},
"ext": "js,json,graphql,gql",
"watch": [
"./"
]
}
}
{
"name": "ux",
"version": "0.0.1",
"name": "wiki-ux",
"version": "3.0.0",
"description": "The most powerful and extensible open source Wiki software",
"productName": "Wiki.js",
"author": "Nicolas Giard <nick@requarks.io>",
......@@ -44,6 +44,7 @@
"clipboard": "2.0.11",
"codemirror": "5.65.11",
"codemirror-asciidoc": "1.0.4",
"dependency-graph": "0.11.0",
"filesize": "10.0.6",
"filesize-parser": "1.5.0",
"fuse.js": "6.6.2",
......@@ -84,6 +85,7 @@
"@quasar/app-vite": "1.2.0",
"@types/lodash": "4.14.191",
"@volar/vue-language-plugin-pug": "1.0.24",
"autoprefixer": "10.4.14",
"browserlist": "latest",
"eslint": "8.33.0",
"eslint-config-standard": "17.0.0",
......@@ -93,10 +95,7 @@
"eslint-plugin-vue": "9.9.0"
},
"engines": {
"node": "^18",
"npm": ">= 6.13.4",
"yarn": ">= 1.21.1"
},
"eslint.packageManager": "yarn",
"packageManager": "yarn@3.2.0"
"node": ">= 18.0",
"npm": ">= 6.13.4"
}
}
This diff was suppressed by a .gitattributes entry.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment