moved studio repo to /

This commit is contained in:
André Michelle
2025-07-11 13:27:47 +02:00
parent 2899d4a597
commit e34e8ac0b9
1198 changed files with 66407 additions and 8 deletions
+5
View File
@@ -0,0 +1,5 @@
/** @type {import("eslint").Linter.Config} */
module.exports = {
root: true,
extends: ["@opendaw/eslint-config/index.js"],
};
+20 -1
View File
@@ -1 +1,20 @@
/.idea/
.DS_Store
.turbo
.idea
.env
.cache
*.log
*.local
node_modules
dist
dist-ssr
server/dist
public/dist
public/build-info.json
lerna-debug.log
/packages/lib/box-forge/test/gen/**
/packages/studio/boxes/src/**
/packages/studio/adapters/src/index.ts
/packages/app/studio/public/build-info.json
/packages/app/localhost.pem
/packages/app/localhost-key.pem
+64 -7
View File
@@ -17,6 +17,21 @@ We are committed to transparency and community-driven development.
The source code for openDAW is available under GPL3 (links below).
### Built on Trust and Transparency
**openDAW stands for radical simplicity and respect.**
- **No SignUp**
- **No Tracking**
- **No Cookie Banners**
- **No User Profiling**
- **No Terms & Conditions**
- **No Ads**
- **No Paywalls**
- **No Data Mining**
**Just a free, open-source DAW in your browser.**
## Huge Shoutout To The Incredible openDAW Community!
To everyone who has contributed feedback, reported bugs, suggested improvements, or helped spread the word — thank you!
@@ -35,10 +50,8 @@ Huge thanks to our [ambassadors](https://opendaw.org/ambassadors), whose dedicat
## And big hugs to all our supporters!
### openDAW Top Supporter — $100.00
- Polarity
### openDAW Visionary — $25.00
- Polarity
- kanaris
- Stephen Tai
- Thad Guidry
@@ -71,15 +84,46 @@ Huge thanks to our [ambassadors](https://opendaw.org/ambassadors), whose dedicat
### openDAW Custom Pledge
- lokomotywa ($2.47)
**Lets keep building together!**
---
### Repositories
* [openDAW](https://github.com/andremichelle/opendaw)
* [openDAW · studio](https://github.com/andremichelle/opendaw-studio)
* [openDAW · library (submodule)](https://github.com/andremichelle/opendaw-lib)
### Prepare, Clone, Installation, and Run
openDAW tries to avoid external libraries and frameworks. Following is a list of the internal core libraries and their
dependencies. This is a list of the external libraries we currently use in the web studio:
* [jszip](https://www.npmjs.com/package/jszip) (for openDAW project bundle file)
* [markdown-it](https://www.npmjs.com/package/markdown-it) + [markdown-it-table](https://www.npmjs.com/package/markdown-it-table) (for help pages)
Before starting, ensure you have the following installed on your system:
- [Git](https://git-scm.com/) is required for cloning the repository and managing submodules.
- [mkcert](https://github.com/FiloSottile/mkcert#installation) is required to create a certificate for developing with
https protocol.
- [Node.js](nodejs.org) version **>= 23**. This is necessary for running the development server and installing
dependencies.
- [Sass](https://sass-lang.com/) While Sass is handled internally during the development process, you will need to
ensure you have the
binaries available in your environment if used outside the build system.
- [TypeScript](https://www.typescriptlang.org/)
- [OpenSSL](https://chocolatey.org/) For generating local development certificates (), OpenSSL needs to be installed on
your system. Most Linux/macOS systems have OpenSSL pre-installed.
### Clone
`git clone https://github.com/andremichelle/opendaw.git && cd opendaw`
### Installation
* `npm run cert` (only for the very first time)
* `npm run clean` (to revert to clean slate, removes all `node_modules` and `dist` folders)
* `npm install` (for the first time and after `npm run clean`)
* `npm run build` (for the first time and after `npm run clean`)
* `npm run dev:studio` | `npm run dev:headless` (start dev server)
* Navigate to https://localhost:8080 (port is important > cors sample api)
---
@@ -92,6 +136,19 @@ Watch Polarity's Video *"there's a new FREE DAW in town"*
We welcome contributions from developers, musicians, educators, and enthusiasts. To learn more about how you can
participate, visit our [Contribute](https://opendaw.org/contribute) page.
### What We Are Looking For:
1. **Offline desktop build (e.g., via Tauri) or a standalone installable PWA** — offer offline capability.
2. **Cloud-agnostic project storage** — a facade layer that lets users plug in different cloud services (e.g., Drive,
S3, Dropbox) for projects and sample libraries.
3. **Live remote collaboration** — real-time session sharing and sync so multiple users can edit the same project
concurrently.
4. **AI manual assistant** — an embedded agent that answers context-aware questions and guides users through features as
they work.
5. **AI-powered stem splitting** — integrated source-separation to extract vocals, drums, and other stems directly
inside the DAW.
6. **Import and Export** - Contribute every possible file format IO
## Links
* [opendaw.studio (prototype)](https://opendaw.studio)
+12
View File
@@ -0,0 +1,12 @@
{
"$schema": "node_modules/lerna/schemas/lerna-schema.json",
"version": "independent",
"npmClient": "npm",
"command": {
"publish": {
"conventionalCommits": true,
"registry": "http://localhost:4873/"
}
},
"packages": ["packages/**"]
}
+39
View File
@@ -0,0 +1,39 @@
{
"name": "opendaw",
"private": true,
"license": "LGPL-3.0-or-later",
"scripts": {
"cert": "bash ./scripts/cert.sh",
"clean": "bash ./scripts/clean.sh",
"build": "turbo build",
"dev:studio": "turbo run dev --filter=@opendaw/app-studio",
"dev:headless": "turbo run dev --filter=@opendaw/app-headless",
"dev": "turbo run dev",
"test": "turbo run test",
"lint": "turbo run lint",
"format": "prettier --write \"**/*.{ts,tsx,md}\"",
"publish-sdk": "lerna publish"
},
"devDependencies": {
"@typescript-eslint/eslint-plugin": "^7.1.0",
"@typescript-eslint/parser": "^7.1.0",
"eslint": "^8.57.0",
"eslint-config-prettier": "^9.1.0",
"lerna": "^8.2.3",
"prettier": "^3.6.2",
"turbo": "^2.5.4",
"typescript": "^5.8.3",
"vitest": "^3.1.3"
},
"repository": {
"type": "git",
"url": "https://github.com/andremichelle/opendaw"
},
"packageManager": "npm@11.4.2",
"workspaces": [
"packages/**/*"
],
"dependencies": {
"@opendaw/studio-core": "^0.0.0"
}
}
+5
View File
@@ -0,0 +1,5 @@
/** @type {import("eslint").Linter.Config} */
module.exports = {
root: true,
extends: ["@opendaw/eslint-config/index.js"],
};
+32
View File
@@ -0,0 +1,32 @@
# Change Log
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [0.0.7](https://github.com/andremichelle/opendaw-turbo/compare/@opendaw/app-headless@0.0.6...@opendaw/app-headless@0.0.7) (2025-07-11)
**Note:** Version bump only for package @opendaw/app-headless
## [0.0.6](https://github.com/andremichelle/opendaw-turbo/compare/@opendaw/app-headless@0.0.5...@opendaw/app-headless@0.0.6) (2025-07-11)
**Note:** Version bump only for package @opendaw/app-headless
## [0.0.5](https://github.com/andremichelle/opendaw-turbo/compare/@opendaw/app-headless@0.0.4...@opendaw/app-headless@0.0.5) (2025-07-11)
**Note:** Version bump only for package @opendaw/app-headless
## [0.0.4](https://github.com/andremichelle/opendaw-turbo/compare/@opendaw/app-headless@0.0.3...@opendaw/app-headless@0.0.4) (2025-07-11)
**Note:** Version bump only for package @opendaw/app-headless
## [0.0.3](https://github.com/andremichelle/opendaw-turbo/compare/@opendaw/app-headless@0.0.2...@opendaw/app-headless@0.0.3) (2025-07-11)
**Note:** Version bump only for package @opendaw/app-headless
## [0.0.2](https://github.com/andremichelle/opendaw-turbo/compare/@opendaw/app-headless@0.0.1...@opendaw/app-headless@0.0.2) (2025-07-11)
**Note:** Version bump only for package @opendaw/app-headless
## 0.0.1 (2025-07-11)
**Note:** Version bump only for package @opendaw/app-headless
+13
View File
@@ -0,0 +1,13 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8"/>
<link rel="icon" type="image/svg+xml" href="/favicon.svg"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<title>Vite + TS</title>
</head>
<body>
<div id="app"></div>
<script type="module" src="src/main.ts"></script>
</body>
</html>
+35
View File
@@ -0,0 +1,35 @@
{
"name": "@opendaw/app-headless",
"private": true,
"version": "0.0.0",
"type": "module",
"scripts": {
"dev": "vite --clearScreen false",
"build": "tsc && vite build",
"preview": "vite preview",
"lint": "eslint \"src/**/*.ts\""
},
"dependencies": {
"@opendaw/lib-box": "^0.0.0",
"@opendaw/lib-dom": "^0.0.0",
"@opendaw/lib-dsp": "^0.0.0",
"@opendaw/lib-jsx": "^0.0.0",
"@opendaw/lib-runtime": "^0.0.0",
"@opendaw/lib-std": "^0.0.0",
"@opendaw/studio-adapters": "^0.0.0",
"@opendaw/studio-boxes": "^0.0.0",
"@opendaw/studio-core": "^0.0.0",
"@opendaw/studio-enums": "^0.0.0",
"@types/markdown-it": "^14.1.2",
"markdown-it": "^14.1.0"
},
"devDependencies": {
"@opendaw/eslint-config": "^0.0.0",
"@opendaw/typescript-config": "^0.0.0",
"@types/node": "^22.15.18",
"eslint": "^8.57.0",
"sass": "^1.88.0",
"vite": "^7.0.2",
"vite-plugin-cross-origin-isolation": "^0.1.6"
}
}
+8
View File
@@ -0,0 +1,8 @@
<svg viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg">
<path d="M8,3L8,21C8,22.104 7.104,23 6,23L3,23C1.896,23 1,22.104 1,21L1,3C1,1.896 1.896,1 3,1L6,1C7.104,1 8,1.896 8,3Z"
style="fill:rgb(221,221,221);"/>
<path d="M23,3L23,11C23,12.104 22.104,13 21,13L12,13C10.896,13 10,12.104 10,11L10,3C10,1.896 10.896,1 12,1L21,1C22.104,1 23,1.896 23,3ZM22,3C22,2.448 21.552,2 21,2L12,2C11.448,2 11,2.448 11,3L11,11C11,11.552 11.448,12 12,12L21,12C21.552,12 22,11.552 22,11L22,3Z"
style="fill:rgb(221,221,221);"/>
<path d="M23,17L23,21C23,22.104 22.104,23 21,23L12,23C10.896,23 10,22.104 10,21L10,17C10,15.896 10.896,15 12,15L21,15C22.104,15 23,15.896 23,17Z"
style="fill:rgb(221,221,221);"/>
</svg>

After

Width:  |  Height:  |  Size: 752 B

Binary file not shown.
@@ -0,0 +1,57 @@
import {int, Notifier, Observer, Option, Subscription, Terminable, UUID} from "@opendaw/lib-std"
import {Peaks} from "@opendaw/lib-fusion"
import {AudioData, AudioLoader, AudioLoaderState} from "@opendaw/studio-adapters"
import {SampleApi} from "./SampleApi"
export class MainThreadAudioLoader implements AudioLoader {
readonly #context: AudioContext
readonly #uuid: UUID.Format
readonly #notifier: Notifier<AudioLoaderState>
#data: Option<AudioData> = Option.None
#state: AudioLoaderState = {type: "progress", progress: 0.0}
#version: int = 0
constructor(context: AudioContext, uuid: UUID.Format) {
this.#context = context
this.#uuid = uuid
this.#notifier = new Notifier<AudioLoaderState>()
this.#get()
}
invalidate(): void {
this.#state = {type: "progress", progress: 0.0}
this.#data = Option.None
this.#version++
this.#get()
}
subscribe(observer: Observer<AudioLoaderState>): Subscription {
if (this.#state.type === "loaded") {
observer(this.#state)
return Terminable.Empty
}
return this.#notifier.subscribe(observer)
}
get uuid(): UUID.Format {return this.#uuid}
get data(): Option<AudioData> {return this.#data}
get peaks(): Option<Peaks> {return Option.None}
get state(): AudioLoaderState {return this.#state}
#setState(value: AudioLoaderState): void {
this.#state = value
this.#notifier.notify(this.#state)
}
#get(): void {
console.debug("GET", UUID.toString(this.#uuid))
SampleApi.load(this.#context, this.#uuid, progress => this.#setState({type: "progress", progress}))
.then(([data]) => {
console.debug("LOADED", UUID.toString(this.#uuid))
this.#data = Option.wrap(data)
this.#setState({type: "loaded"})
}, reason => this.#setState({type: "error", reason}))
}
}
@@ -0,0 +1,19 @@
import {SortedSet, UUID} from "@opendaw/lib-std"
import {AudioLoader, AudioLoaderManager} from "@opendaw/studio-adapters"
import {MainThreadAudioLoader} from "./MainThreadAudioLoader"
export class MainThreadAudioLoaderManager implements AudioLoaderManager {
readonly #context: AudioContext
readonly #loaders: SortedSet<UUID.Format, MainThreadAudioLoader>
constructor(context: AudioContext) {
this.#context = context
this.#loaders = UUID.newSet(loader => loader.uuid)
}
getOrCreate(uuid: UUID.Format): AudioLoader {
return this.#loaders.getOrCreate(uuid, uuid => new MainThreadAudioLoader(this.#context, uuid))
}
invalidate(_uuid: UUID.Format): void {}
}
+70
View File
@@ -0,0 +1,70 @@
import {Arrays, asDefined, panic, Procedure, unitValue, UUID} from "@opendaw/lib-std"
import {AudioData, AudioMetaData, AudioSample} from "@opendaw/studio-adapters"
import {network, Promises} from "@opendaw/lib-runtime"
const username = "openDAW"
const password = "prototype"
const base64Credentials = btoa(`${username}:${password}`)
const headers: RequestInit = {
method: "GET",
headers: {"Authorization": `Basic ${base64Credentials}`},
credentials: "include"
}
export namespace SampleApi {
export const ApiRoot = "https://api.opendaw.studio/samples"
export const FileRoot = "https://assets.opendaw.studio/samples"
export const all = async (): Promise<ReadonlyArray<AudioSample>> => {
return await Promises.retry(() => fetch(`${ApiRoot}/list.php`, headers).then(x => x.json(), () => []))
}
export const get = async (uuid: UUID.Format): Promise<AudioSample> => {
const url = `${ApiRoot}/get.php?uuid=${UUID.toString(uuid)}`
const sample: AudioSample = await Promises.retry(() => network.limitFetch(url, headers)
.then(x => x.json()))
.then(x => {if ("error" in x) {return panic(x.error)} else {return x}})
return Object.freeze({...sample, cloud: true})
}
export const load = async (context: AudioContext,
uuid: UUID.Format,
progress: Procedure<unitValue>): Promise<[AudioData, AudioMetaData]> => {
console.debug(`fetch ${UUID.toString(uuid)}`)
return get(uuid)
.then(({uuid, name, bpm}) => Promises.retry(() => network.limitFetch(`${FileRoot}/${uuid}`, headers))
.then(response => {
const total = parseInt(response.headers.get("Content-Length") ?? "0")
let loaded = 0
return new Promise<ArrayBuffer>((resolve, reject) => {
const reader = asDefined(response.body, "No body in response").getReader()
const chunks: Array<Uint8Array> = []
const nextChunk = ({done, value}: ReadableStreamReadResult<Uint8Array>) => {
if (done) {
resolve(new Blob(chunks).arrayBuffer())
} else {
chunks.push(value)
loaded += value.length
progress(loaded / total)
reader.read().then(nextChunk, reject)
}
}
reader.read().then(nextChunk, reject)
})
})
.then(arrayBuffer => context.decodeAudioData(arrayBuffer))
.then(audioBuffer => ([fromAudioBuffer(audioBuffer), {
bpm,
name,
duration: audioBuffer.duration,
sample_rate: audioBuffer.sampleRate
}])))
}
const fromAudioBuffer = (buffer: AudioBuffer): AudioData => ({
frames: Arrays.create(channel => buffer.getChannelData(channel), buffer.numberOfChannels),
sampleRate: buffer.sampleRate,
numberOfFrames: buffer.length,
numberOfChannels: buffer.numberOfChannels
})
}
+9
View File
@@ -0,0 +1,9 @@
import {createElement} from "@opendaw/lib-jsx"
type Construct = {}
export const Test = ({}: Construct) => {
return (
<div>Hello Jsx</div>
)
}
+12
View File
@@ -0,0 +1,12 @@
import {requireProperty} from "@opendaw/lib-std"
export const testFeatures = async (): Promise<void> => {
requireProperty(Promise, "withResolvers")
requireProperty(window, "indexedDB")
requireProperty(window, "AudioWorkletNode")
requireProperty(navigator, "storage")
requireProperty(navigator.storage, "getDirectory")
requireProperty(crypto, "randomUUID")
requireProperty(crypto, "subtle")
requireProperty(crypto.subtle, "digest")
}
+62
View File
@@ -0,0 +1,62 @@
import "./style.css"
import {assert} from "@opendaw/lib-std"
import {PPQN} from "@opendaw/lib-dsp"
import {AnimationFrame, Browser} from "@opendaw/lib-dom"
import {Promises} from "@opendaw/lib-runtime"
import {Project, Worklets} from "@opendaw/studio-core"
import MeterProcessorUrl from "@opendaw/studio-core/meter-processor.js?url"
import EngineProcessorUrl from "@opendaw/studio-core/engine-processor.js?url"
import RecordingProcessorUrl from "@opendaw/studio-core/recording-processor.js?url"
import {testFeatures} from "./features"
import {MainThreadAudioLoaderManager} from "./MainThreadAudioLoaderManager"
(async () => {
console.debug("openDAW -> headless")
console.debug("Agent", Browser.userAgent)
console.debug("isLocalHost", Browser.isLocalHost())
assert(crossOriginIsolated, "window must be crossOriginIsolated")
console.debug("booting...")
document.body.textContent = "booting..."
{
const {status, error} = await Promises.tryCatch(testFeatures())
if (status === "rejected") {
document.querySelector("#preloader")?.remove()
alert(`Could not test features (${error})`)
return
}
}
const context = new AudioContext({latencyHint: 0})
console.debug(`AudioContext state: ${context.state}, sampleRate: ${context.sampleRate}`)
{
const {status, error} = await Promises.tryCatch(Worklets.install(context, {
meter: MeterProcessorUrl,
engine: EngineProcessorUrl,
recording: RecordingProcessorUrl
}))
if (status === "rejected") {
alert(`Could not install Worklets (${error})`)
return
}
}
{
const audioManager = new MainThreadAudioLoaderManager(context)
const project = Project.load({audioManager}, await fetch("subset.od").then(x => x.arrayBuffer()))
const worklet = Worklets.get(context).createEngine(project)
await worklet.isReady()
while (!await worklet.queryLoadingComplete()) {}
worklet.connect(context.destination)
worklet.isPlaying().setValue(true)
AnimationFrame.add(() => {
const ppqn = worklet.position().getValue()
const {bars, beats} = PPQN.toParts(ppqn)
document.body.textContent = `${bars + 1}:${beats + 1}`
})
}
if (context.state === "suspended") {
window.addEventListener("click",
async () => await context.resume().then(() =>
console.debug(`AudioContext resumed (${context.state})`)), {capture: true, once: true})
}
AnimationFrame.start()
document.querySelector("#preloader")?.remove()
})()
+97
View File
@@ -0,0 +1,97 @@
:root {
font-family: Inter, Avenir, Helvetica, Arial, sans-serif;
font-size: 16px;
line-height: 24px;
font-weight: 400;
color-scheme: light dark;
color: rgba(255, 255, 255, 0.87);
background-color: #242424;
font-synthesis: none;
text-rendering: optimizeLegibility;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
-webkit-text-size-adjust: 100%;
}
a {
font-weight: 500;
color: #646cff;
text-decoration: inherit;
}
a:hover {
color: #535bf2;
}
body {
margin: 0;
display: flex;
place-items: center;
min-width: 320px;
min-height: 100vh;
}
h1 {
font-size: 3.2em;
line-height: 1.1;
}
#app {
max-width: 1280px;
margin: 0 auto;
padding: 2rem;
text-align: center;
}
.logo {
height: 6em;
padding: 1.5em;
will-change: filter;
}
.logo:hover {
filter: drop-shadow(0 0 2em #646cffaa);
}
.logo.vanilla:hover {
filter: drop-shadow(0 0 2em #f7df1eaa);
}
.card {
padding: 2em;
}
.read-the-docs {
color: #888;
}
button {
border-radius: 8px;
border: 1px solid transparent;
padding: 0.6em 1.2em;
font-size: 1em;
font-weight: 500;
font-family: inherit;
background-color: #1a1a1a;
cursor: pointer;
transition: border-color 0.25s;
}
button:hover {
border-color: #646cff;
}
button:focus,
button:focus-visible {
outline: 4px auto -webkit-focus-ring-color;
}
@media (prefers-color-scheme: light) {
:root {
color: #213547;
background-color: #ffffff;
}
a:hover {
color: #747bff;
}
button {
background-color: #f9f9f9;
}
}
+1
View File
@@ -0,0 +1 @@
/// <reference types="vite/client" />
+6
View File
@@ -0,0 +1,6 @@
{
"extends": "@opendaw/typescript-config/vite.json",
"include": [
"src"
]
}
+31
View File
@@ -0,0 +1,31 @@
import {defineConfig} from "vite"
import crossOriginIsolation from "vite-plugin-cross-origin-isolation"
import {readFileSync} from "fs"
import {resolve} from "path"
export default defineConfig({
resolve: {
alias: {
"@": resolve(__dirname, "./src")
}
},
server: {
port: 8080,
host: "localhost",
https: {
key: readFileSync("../localhost-key.pem"),
cert: readFileSync("../localhost.pem")
},
headers: {
"Cross-Origin-Opener-Policy": "same-origin",
"Cross-Origin-Embedder-Policy": "require-corp"
},
fs: {
// Allow serving files from the entire workspace
allow: [".."]
}
},
plugins: [
crossOriginIsolation()
]
})
+5
View File
@@ -0,0 +1,5 @@
/** @type {import("eslint").Linter.Config} */
module.exports = {
root: true,
extends: ["@opendaw/eslint-config/index.js"],
};
+32
View File
@@ -0,0 +1,32 @@
# Change Log
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [0.0.7](https://github.com/andremichelle/opendaw-turbo/compare/@opendaw/app-studio@0.0.6...@opendaw/app-studio@0.0.7) (2025-07-11)
**Note:** Version bump only for package @opendaw/app-studio
## [0.0.6](https://github.com/andremichelle/opendaw-turbo/compare/@opendaw/app-studio@0.0.5...@opendaw/app-studio@0.0.6) (2025-07-11)
**Note:** Version bump only for package @opendaw/app-studio
## [0.0.5](https://github.com/andremichelle/opendaw-turbo/compare/@opendaw/app-studio@0.0.4...@opendaw/app-studio@0.0.5) (2025-07-11)
**Note:** Version bump only for package @opendaw/app-studio
## [0.0.4](https://github.com/andremichelle/opendaw-turbo/compare/@opendaw/app-studio@0.0.3...@opendaw/app-studio@0.0.4) (2025-07-11)
**Note:** Version bump only for package @opendaw/app-studio
## [0.0.3](https://github.com/andremichelle/opendaw-turbo/compare/@opendaw/app-studio@0.0.2...@opendaw/app-studio@0.0.3) (2025-07-11)
**Note:** Version bump only for package @opendaw/app-studio
## [0.0.2](https://github.com/andremichelle/opendaw-turbo/compare/@opendaw/app-studio@0.0.1...@opendaw/app-studio@0.0.2) (2025-07-11)
**Note:** Version bump only for package @opendaw/app-studio
## 0.0.1 (2025-07-11)
**Note:** Version bump only for package @opendaw/app-studio
+90
View File
@@ -0,0 +1,90 @@
<!doctype html>
<html lang="en" translate="no">
<head>
<meta charset="UTF-8">
<meta name="google" content="notranslate">
<meta name="apple-mobile-web-app-capable" content="notranslate">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="Cross-Origin-Opener-Policy" content="same-origin">
<meta http-equiv="Cross-Origin-Embedder-Policy" content="require-corp">
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate">
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Expires" content="0">
<meta name="robots" content="noindex, nofollow">
<meta name="title" content="openDAW Studio Prototype" />
<meta name="description"
content="openDAW is a next-gen web-based digital audio workstation designed to democratize music production." />
<meta property="og:type" content="website" />
<meta property="og:url" content="https://opendaw.studio" />
<meta property="og:title" content="openDAW Studio Prototype" />
<meta property="og:description"
content="openDAW is a next-gen web-based digital audio workstation designed to democratize music production." />
<meta property="og:image" content="/images/meta.jpg" />
<meta property="twitter:card" content="summary_large_image" />
<meta property="twitter:url" content="https://opendaw.studio" />
<meta property="twitter:title" content="openDAW Studio Prototype" />
<meta property="twitter:description"
content="openDAW is a next-gen web-based digital audio workstation designed to democratize music production." />
<meta property="twitter:image" content="/images/meta.jpg" />
<link rel="icon" type="image/x-icon" href="/favicon.svg">
<link rel="canonical" href="https://opendaw.studio">
<title>🎧openDAW.studio</title>
<style>
html, body {
width: 100%;
height: 100%;
color: red;
background-color: hsl(200, 9%, 9%);
font-family: Rubik, sans-serif;
overflow: hidden;
display: flex
}
#preloader {
top: calc(50% - 0.5em);
left: calc(50% - 0.5em);
scale: 0.25;
position: absolute;
font-size: 10px;
width: 1em;
height: 1em;
border-radius: 50%;
text-indent: -9999em;
animation: mulShdSpin 1.1s infinite ease;
transform: translateZ(0);
}
@keyframes mulShdSpin {
0%,
100% {
box-shadow: 0em -2.6em 0em 0em #ffffff, 1.8em -1.8em 0 0em rgba(255, 255, 255, 0.2), 2.5em 0em 0 0em rgba(255, 255, 255, 0.2), 1.75em 1.75em 0 0em rgba(255, 255, 255, 0.2), 0em 2.5em 0 0em rgba(255, 255, 255, 0.2), -1.8em 1.8em 0 0em rgba(255, 255, 255, 0.2), -2.6em 0em 0 0em rgba(255, 255, 255, 0.5), -1.8em -1.8em 0 0em rgba(255, 255, 255, 0.7);
}
12.5% {
box-shadow: 0em -2.6em 0em 0em rgba(255, 255, 255, 0.7), 1.8em -1.8em 0 0em #ffffff, 2.5em 0em 0 0em rgba(255, 255, 255, 0.2), 1.75em 1.75em 0 0em rgba(255, 255, 255, 0.2), 0em 2.5em 0 0em rgba(255, 255, 255, 0.2), -1.8em 1.8em 0 0em rgba(255, 255, 255, 0.2), -2.6em 0em 0 0em rgba(255, 255, 255, 0.2), -1.8em -1.8em 0 0em rgba(255, 255, 255, 0.5);
}
25% {
box-shadow: 0em -2.6em 0em 0em rgba(255, 255, 255, 0.5), 1.8em -1.8em 0 0em rgba(255, 255, 255, 0.7), 2.5em 0em 0 0em #ffffff, 1.75em 1.75em 0 0em rgba(255, 255, 255, 0.2), 0em 2.5em 0 0em rgba(255, 255, 255, 0.2), -1.8em 1.8em 0 0em rgba(255, 255, 255, 0.2), -2.6em 0em 0 0em rgba(255, 255, 255, 0.2), -1.8em -1.8em 0 0em rgba(255, 255, 255, 0.2);
}
37.5% {
box-shadow: 0em -2.6em 0em 0em rgba(255, 255, 255, 0.2), 1.8em -1.8em 0 0em rgba(255, 255, 255, 0.5), 2.5em 0em 0 0em rgba(255, 255, 255, 0.7), 1.75em 1.75em 0 0em #ffffff, 0em 2.5em 0 0em rgba(255, 255, 255, 0.2), -1.8em 1.8em 0 0em rgba(255, 255, 255, 0.2), -2.6em 0em 0 0em rgba(255, 255, 255, 0.2), -1.8em -1.8em 0 0em rgba(255, 255, 255, 0.2);
}
50% {
box-shadow: 0em -2.6em 0em 0em rgba(255, 255, 255, 0.2), 1.8em -1.8em 0 0em rgba(255, 255, 255, 0.2), 2.5em 0em 0 0em rgba(255, 255, 255, 0.5), 1.75em 1.75em 0 0em rgba(255, 255, 255, 0.7), 0em 2.5em 0 0em #ffffff, -1.8em 1.8em 0 0em rgba(255, 255, 255, 0.2), -2.6em 0em 0 0em rgba(255, 255, 255, 0.2), -1.8em -1.8em 0 0em rgba(255, 255, 255, 0.2);
}
62.5% {
box-shadow: 0em -2.6em 0em 0em rgba(255, 255, 255, 0.2), 1.8em -1.8em 0 0em rgba(255, 255, 255, 0.2), 2.5em 0em 0 0em rgba(255, 255, 255, 0.2), 1.75em 1.75em 0 0em rgba(255, 255, 255, 0.5), 0em 2.5em 0 0em rgba(255, 255, 255, 0.7), -1.8em 1.8em 0 0em #ffffff, -2.6em 0em 0 0em rgba(255, 255, 255, 0.2), -1.8em -1.8em 0 0em rgba(255, 255, 255, 0.2);
}
75% {
box-shadow: 0em -2.6em 0em 0em rgba(255, 255, 255, 0.2), 1.8em -1.8em 0 0em rgba(255, 255, 255, 0.2), 2.5em 0em 0 0em rgba(255, 255, 255, 0.2), 1.75em 1.75em 0 0em rgba(255, 255, 255, 0.2), 0em 2.5em 0 0em rgba(255, 255, 255, 0.5), -1.8em 1.8em 0 0em rgba(255, 255, 255, 0.7), -2.6em 0em 0 0em #ffffff, -1.8em -1.8em 0 0em rgba(255, 255, 255, 0.2);
}
87.5% {
box-shadow: 0em -2.6em 0em 0em rgba(255, 255, 255, 0.2), 1.8em -1.8em 0 0em rgba(255, 255, 255, 0.2), 2.5em 0em 0 0em rgba(255, 255, 255, 0.2), 1.75em 1.75em 0 0em rgba(255, 255, 255, 0.2), 0em 2.5em 0 0em rgba(255, 255, 255, 0.2), -1.8em 1.8em 0 0em rgba(255, 255, 255, 0.5), -2.6em 0em 0 0em rgba(255, 255, 255, 0.7), -1.8em -1.8em 0 0em #ffffff;
}
}
</style>
<script type="module" src="/src/main.ts"></script>
</head>
<body>
<span id="preloader"></span>
</body>
</html>
+37
View File
@@ -0,0 +1,37 @@
{
"name": "@opendaw/app-studio",
"private": true,
"version": "0.0.0",
"type": "module",
"scripts": {
"dev": "vite --clearScreen false",
"build": "tsc && vite build",
"preview": "vite preview",
"lint": "eslint \"src/**/*.ts\""
},
"dependencies": {
"@opendaw/lib-box": "^0.0.0",
"@opendaw/lib-dom": "^0.0.0",
"@opendaw/lib-dsp": "^0.0.0",
"@opendaw/lib-jsx": "^0.0.0",
"@opendaw/lib-runtime": "^0.0.0",
"@opendaw/lib-std": "^0.0.0",
"@opendaw/studio-adapters": "^0.0.0",
"@opendaw/studio-boxes": "^0.0.0",
"@opendaw/studio-core": "^0.0.0",
"@opendaw/studio-enums": "^0.0.0",
"jszip": "^3.10.1",
"markdown-it": "^14.1.0",
"markdown-it-table": "^4.1.1"
},
"devDependencies": {
"@opendaw/eslint-config": "^0.0.0",
"@opendaw/typescript-config": "^0.0.0",
"@types/markdown-it": "^14.1.2",
"@types/node": "^22.15.18",
"eslint": "^8.57.0",
"sass": "^1.88.0",
"vite": "^7.0.2",
"vite-plugin-cross-origin-isolation": "^0.1.6"
}
}
+32
View File
@@ -0,0 +1,32 @@
# openDAW
# prototype
# CORS Headers
Header set Access-Control-Allow-Origin "https://localhost:8080"
Header set Access-Control-Allow-Methods "GET, POST, OPTIONS, PUT, DELETE"
Header set Access-Control-Allow-Headers "Authorization, Content-Type, X-Requested-With"
Header set Access-Control-Allow-Credentials "true"
Header set Cross-Origin-Opener-Policy "same-origin"
Header set Cross-Origin-Embedder-Policy "require-corp"
# Enable Brotli Compression for supported files, only if they exist
RewriteEngine On
# Serve .br files if the client supports Brotli
RewriteCond %{HTTP:Accept-Encoding} br
RewriteCond %{REQUEST_FILENAME}.br -f
RewriteRule ^(.*)$ $1.br [QSA,L]
# Set Content-Encoding header only for actual Brotli-compressed files
<FilesMatch "\.(js|css|html|json|svg|xml)\.br$">
Header set Content-Encoding br
</FilesMatch>
# URL rewriting (if needed)
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ index.html [QSA,L]
# Redirect /manuals/ to root index.html for SPA handling
RewriteRule ^manuals/$ /index.html [L]
Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

+8
View File
@@ -0,0 +1,8 @@
<svg viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg">
<path d="M8,3L8,21C8,22.104 7.104,23 6,23L3,23C1.896,23 1,22.104 1,21L1,3C1,1.896 1.896,1 3,1L6,1C7.104,1 8,1.896 8,3Z"
style="fill:rgb(221,221,221);"/>
<path d="M23,3L23,11C23,12.104 22.104,13 21,13L12,13C10.896,13 10,12.104 10,11L10,3C10,1.896 10.896,1 12,1L21,1C22.104,1 23,1.896 23,3ZM22,3C22,2.448 21.552,2 21,2L12,2C11.448,2 11,2.448 11,3L11,11C11,11.552 11.448,12 12,12L21,12C21.552,12 22,11.552 22,11L22,3Z"
style="fill:rgb(221,221,221);"/>
<path d="M23,17L23,21C23,22.104 22.104,23 21,23L12,23C10.896,23 10,22.104 10,21L10,17C10,15.896 10.896,15 12,15L21,15C22.104,15 23,15.896 23,17Z"
style="fill:rgb(221,221,221);"/>
</svg>

After

Width:  |  Height:  |  Size: 752 B

Binary file not shown.
+3
View File
@@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" fill="rgba(255, 255, 255, 0.08)">
<rect x="0" y="0" width="1" height="1"/>
</svg>

After

Width:  |  Height:  |  Size: 145 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 347 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 88 KiB

@@ -0,0 +1,17 @@
# Browser Support Manuals
openDAW is tested on the latest version of all modern browsers, such as Chrome, Firefox, and Safari.
However, there are differences in which web APIs are supported by each browser.
| Feature | Chrome | Firefox | Safari |
|---------------------|--------|------------------------------|--------|
| Select Audio-Output | Yes | No | No |
| Midi Devices | Yes | [Yes](/manuals/firefox-midi) | No |
| File Api | Yes | ⚠️ | ⚠️ |
## Legend
### ⚠️ Workaround
This symbol indicates a temporary solution or alternative approach to bypass a limitation, bug, or
missing feature. It is not a permanent fix but allows functionality until an official resolution is available.
@@ -0,0 +1,243 @@
# Development
## TODO
* PianoModePanel
* Show timeline navigation?
* Different note labels for different countries (Global Switch)
* ~~dialog? to disable note tracks~~
* ~~Control to show and edit signature~~
* ~~Scroll Y should change engine position (FW, RW)~~
* ~~Rename to PianoModePanel~~
* ~~Transpose~~
* ~~Go back to the timeline view~~
* ~~Open MidiFall view (or Piano Tutorial Mode?)~~
* ~~labels on falling notes (~~Hide when note is too short~~ clip)~~
* ~~control to adjust visible time range~~
* ~~active piano colors~~
* ~~different keyboard layouts https://familypiano.com/blog/piano-keys-faq/~~
* ~~time signature / octave (C, F) grid~~
* ~~Playfield bug: Samples appear louder when polyphone~~
* Attach a CurveBox to ValueEventBox (enables having different curve shapes in future)
* Make effect-bypass parameter automatable
* Add SoundFont device
* Polish audio playback -> will have unwanted sounds when start/stop audio segments
* AcceptingType for audio-unit should be a set?
* Admin sample management (rename, edit, delete)
* Do not use an unknown track for busses. This must be handled by the timeline view.
* https://bungee.parabolaresearch.com/
* Audio/Midi Recording
* Solid state for recording in main-thread (none, running, cancel, abort)
* Listen to all incoming midi-signals and create track, region, notes and automation (revertible process)
* Record audio to memory and create track and region (revertible process)
* Preview / update peaks
* ~~Count in~~
* ~~Global shuffle~~
* ~~Midi generator effects should continue to run when transport is stopped~~
* ~~Time-Manipulation Midi-Effects~~
* ~~clamp pitch 0-127~~
* ~~release notes when changing midi effect chain~~
* ~~release notes when pausing~~
* ~~Sending notes to broadcaster~~
* ~~Revive regions/clips~~
* ~~groove unipolar (percentage)~~
* ~~Replace event-targets with NoteEventSource~~
* ~~NoteEvent~~
* ~~Remove chance, playCount, playCurve (not needed in processing)~~
* Playfield
* ~~Panics when replacing synth with Playfield and undo~~
* ~~Remember~~
* ~~sample in edit mode~~
* ~~octave index~~
* ~~cache editor~~
* Fix envelope (not in prototype)
* Fix loop discontinuations with fades (not in prototype)
* Update start & end while playing (not in prototype)
* ~~Reset Playfield and delete samples~~
* ~~Automation~~
* ~~Exclusion group~~
* ~~Gate-mode selector (Off, On, Loop)~~
* ~~Monophone / Polyphone switcher~~
* Stereo Tool
* Stereo Widthing is not really working (not in prototype < no easy fix)
* ~~Interpolate matrix~~
* ~~swap channels~~
* PointerLock Api
* Midi Pitch-bend
* List all midi connections and edit (range, remove, etc..)
* Name constraints (min, max)
* Find a modifier key to always select
* Offline Tauri version
* Offline PWA version
* studio header > peak-meter
* peak-meter > hold-value | rms < PeakBroadcaster
* Implement presets for devices and complete device-chain
* Preview midi notes (https://discord.com/channels/1241019312328675399/1337837099302391849)
* Different schedule switch-times for clips
* Double-click the input name in the track-header to rename
* [kurp] Making region bounds in content-editor fully operational
* Timeline navigation in other workspace views (mixer)
* Spotlight
* Flatten ValueRegion
* Flatten AudioRegion
* Absolute time display
* Pre- & Post-gain FX / Gain-stage
### Optimisation
* Only produce and stream values in the audio-engine if there is a visible consumer in the user-interface
### Misc Bugs
* Setting a pointer to two different targets in one modification breaks undo
### Panel Management
* Resizers are only working on the adjacent elements.
* Resizers do not open/close panels while dragging to increase/decrease space
* Resizers on min-size and max-size should remember their size in pixels, not flex (example: Browser).
* No indicator that a panel reached min- or max-size
* Switching screen will rebuild ALL panels (should be reused if the screen contains the same panel-states)
## Done
* ~~Learn Midi Device~~
* ~~Keys~~
* ~~Control~~
* ~~Store midi connections and reload when loading project~~
* ~~Copy on 'Save As'~~
* ~~DEL to delete track~~
* ~~Having extra space to drop new content below tracks~~
* ~~Long labels can blow layouts~~
* ~~Table of contents for manual~~
* ~~Reset Parameter Option~~
* ~~Piano Roll: Velocity represented by Opacity~~
* ~~Auto-scroll on text-element~~
* ~~List local projects in dashboard~~
* ~~Bake colours and remove filter~~
* ~~Audio Output Device Selector~~
* ~~Choose region color hue~~
* ~~[kurp] Creating notes and value-nodes should appear on the second pointer-down not release~~
* ~~Change song length~~
* ~~Changing hash in url throws error~~
* ~~checkboxes do not show automated state~~
* ~~Note Editor Properties are not editible anymore~~
* ~~[Polarity] Simple Sampler~~
* ~~[kurp] arrow keys do not do anything~~
* ~~Add description, tags and cover to project's metadata~~
* ~~Add new effect to chain (right to the instrument or last device)~~
* ~~Move audio-units within bounds~~
* ~~Drag'n'drop devices in chain~~
* ~~Add message to error handler to deactivate extensions~~
* ~~Recovery Mode~~
* ~~Drag & Drop inside app to create and sort~~
* ~~[Polarity] Add + button to create a tape and add a sample in one go~~
* ~~[razcore-rad] Revamp EQ-enable control has no automation menu~~
* ~~Update Manual with shortcuts (like undo/redo & scissor)~~
* ~~[razcore-rad] Dropdown triangle (note editor > property selector)~~
* ~~Value-Clips~~
* ~~When deleting samples check existing projects, if they will break~~
* ~~Waiting state not working on clips when starting column~~
* ~~Follow playback cursor~~
* ~~List selection~~
* ~~Multiple samples dragging into the timeline (changed to context-menu)~~
* ~~Show Playback-Timestamp indicator~~
* ~~Converting clip to region~~
* ~~Midi Transposing (https://discord.com/channels/1241019312328675399/1337836390628462614)~~
* ~~Sample Preview~~
* ~~Show insert marker when adding sample~~
* ~~Ask for replacement for deleted or incomplete local samples~~
* ~~Drag mulitple files~~
* ~~Change name & bpm for samples~~
* ~~Drag & Drop Files directly onto the timeline~~
* ~~Import custom samples~~
* ~~Parameter-Knob has too many control state indicators~~
* ~~Show clip-area when new clip is added (e.g. convert to clip)~~
* ~~Import / Export zip-package~~
* ~~[Coral] Killing all buffers (on stop) can still reintroduce feedback out of the blue when delay has 100% fb~~
* ~~[Jetdarc] Missing automation state for channelstrips controls (track & timeline)~~
* ~~[2L&L] Possible to create a region with negative position~~
* ~~[Polarity] Seen that an automation on Revamp (freq) were not updating the curve~~
* ~~[Jetdarc] Apparently you can set the bpm to 9999999~~
* ~~[raii] Selected notes with higher pitch are not captured with higher priority~~
* ~~[Polarity] search sample names within the string not just the beginning~~
* ~~[Polarity] Sample Browser Search~~
* ~~Implement Clips DSP~~
* ~~Better visual state for playing clips (hard to distinguish from non-playing clips)~~
* ~~Drag sample on clip-area~~
* ~~One-shot playback~~
* ~~Do not allow dropping clips on mismatching track~~
* ~~Double stop must stop all playing clips~~
* ~~[kurp] 0% in gain mapping is not silent~~
* ~~[kurp] overlapping region when creating in too smaller gaps~~
* ~~ADD Donation Link!~~
* ~~Show Update Banner~~
* ~~Wav-Preview in sample-browser (better than nothing)~~
* ~~[kurp] Always play from the last *set* position~~
* ~~swap devices in chain~~
* ~~_Cannot have panel open in multiple location_ when adding a hash to url~~
* ~~[Truls] Playing notes from the piano-roll~~
* ~~[Truls] Restart audio-engine if errored out~~
* ~~Export must open FileDialog with a new user-interaction (security issue)~~
* ~~[Truls] When the play head is moved during playback, playing notes should be released~~
* ~~[Truls] note region preview is a little unpredictable for short notes~~
* ~~Solution for output device chain automation in timeline~~
* ~~Option to auto open content editor when the region is already in edit-mode~~
* ~~[Truls] Channelstrip at the end of the device-chain~~
* ~~[Truls] ValueRegionEditor does not allow dragging loop-duration~~
* ~~ValueRegion must hold value when ended~~
* ~~Channelstrip text overflow fix~~
* ~~Select new region after flatten~~
* ~~Indices of AudioUnits can be broken after deletion~~
* ~~Error handling like Sentry~~
* ~~Still something wrong with the track indices~~
* ~~ArpeggioDeviceProcessor & PitchDeviceProcessor UpdateClock~~
* ~~Kill all buffers and reset all devices on double-stop~~
* ~~Delete Bus (2 channels without output) > Create new output > ERROR (dub-techno)~~
* ~~Create a test all pointer targets entry in app-menu for debugging~~
* ~~Proper solution for ordering instrument and bus tracks~~
* ~~Allow F12 & Reload with modal dialogs~~
* ~~Minimized device version (collapse)~~
* ~~Check audio-unit "bus" behaviour in timeline (creates an empty track)~~
* ~~The content-editor does not show its scroller (no much content in header)~~
* ~~Label has "unassigned" in ValueHeader and missing in track header~~
* ~~Automation track are not being deleted when deleting the device~~
* ~~DelayDeviceProcessor cross missing~~
* ~~Show control state on revamp ui~~
* ~~Introduce mapping in ValueTrackHeader~~
* ~~Show format value in ValueTrackHeader~~
* ~~Make the ProjectInfo page nicer too~~
* ~~Make Revamp parameters automatable~~
* ~~No modular views available should be nicer~~
* ~~'Finish' Revamp DSP (BiquadStack order)~~
* ~~Disable track~~
* ~~Keyboard Shortcut for Play/Pause at least~~
* ~~'Finish' Delay DSP > Filter~~
* ~~'Finish' Vaporisateur DSP > Bandlimited Osc?~~
* ~~Make this part of the running studio: https://localhost:8080/issues~~
* ~~Channelstrip Solo~~
* ~~[BUG] Index on delete audio-unit seems to be wrong (optic glitch)~~
* ~~Load Midi~~
* ~~'Finish' sample management (cache)~~
* ~~Audio region drag-preview in timeline~~
* ~~Create Tape if sample is dropped below tracks~~
* ~~Do we need TrackAssignmentBox for anything other than value-automation?~~
* ~~Audio region drag > clip~~
* ~~Connect all(?) AudioFileBoxes to RootBox~~
* ~~Either make Clips working fully or hide them~~
* ~~Default color region type~~
* ~~Do not allow dropping regions on different track types~~
* ~~Pimp dashboard~~
* ~~Pimp publish page~~
* ~~Progress dialog~~
* ~~Implement 'enabled' for effects (bypass)~~
* ~~Device icon colers~~
* ~~No cut-indicator when outside region~~
* ~~Play many audio-tracks~~
* ~~Fix audio region split~~
* ~~Create new track for audio-unit (note or audio, depending on type)~~
* ~~Temp remove tape parameter controls~~
* ~~Simple dialog layering~~
* ~~Revamp DSP~~
* ~~ValueTrackHeader~~
* ~~Export2wav~~
@@ -0,0 +1,32 @@
# Request Midi Access On Firefox Does Not Work
This is a known issue with Firefox's MIDI implementation. Unlike Chrome, which allows requesting MIDI access even if no
devices are currently connected, Firefox denies access outright if **no MIDI devices are detected** at the time of the
request.
### Solutions
1. **Restart Firefox**
- If you connected the MIDI device after starting Firefox, restart the browser and try again.
2. **Check Firefox Permissions**
- Open `about:config` in a new tab.
- Search for `dom.webmidi.enabled`.
- Ensure it is set to `true`. If not, double-click to enable it.
- Search for `privacy.resistFingerprinting` (if enabled, it can block MIDI access).
- Set `privacy.resistFingerprinting` to `false` if you trust the site.
3. **Verify Device Detection**
- Check if your OS detects the MIDI device.
- On macOS: Open `Audio MIDI Setup` > `MIDI Studio` and ensure your device is listed.
- On Windows: Check `Device Manager` under "Sound, video and game controllers."
4. **Force Firefox to Recognize the Device**
- Connect your MIDI device before starting Firefox.
- Restart the browser with the device already connected.
5. **Use Chrome or Edge**
- If Firefox's handling of MIDI is problematic, you might consider using a Chromium-based browser for MIDI-related
tasks.
(ChatGPT Feb. 2025)
@@ -0,0 +1,18 @@
# openDAW Manuals
Please join our [discord community](https://discord.com/invite/ZRm8du7vn4) for updates and news!
## Known Issues
**openDAW is in an early prototype stage and NOT ready for production use!**
### General
* Some features in openDAW may be unpolished or not functional yet.
* No backward compatibility guaranteed. New studio versions may invalidate old project files.
### Audio Engine
* Not optimised.
* Clicks & Pops can occur, since there are no fadings to avoid discontinuities.
* Fast automation or value changes can potentially crash the dsp, since there is no interpolation.
@@ -0,0 +1,29 @@
# Keyboard Shortcuts
## Misc
* SPACE: Toggle Playback
* ⌘Z Undo
* ⌘⇧Z Redo
## Views
* ⇧0: Show Dashboard
* ⇧1: Show Classic View
* ⇧2: Show Mixer
* ⇧3: Show Modular Systems
* ⇧4: Show Project Info
## Panels
* B: Toggle **B**rowser
* E: Toggle **E**ditor
* D: Toggle **D**evices
* M: Toggle **M**ixer
## Timeline
* Hold ⌘ and click to cut a region
* Hold ⌥ and drag to copy a region / clip
* Hold ⌥⇧ and drag to copy a region / clip as mirrored
* Click track header and hit ⌫ to delete track
@@ -0,0 +1,3 @@
# Browser Permissions
openDAW requires grand access to your microphone. tbc...
@@ -0,0 +1,23 @@
# openDAW File System
openDAW stores your projects and samples in the
[Origin private file system](https://developer.mozilla.org/en-US/docs/Web/API/File_System_API/Origin_private_file_system) (
OPFS).
## Why Samples?
openDAW uses the OPFS to store user-imported samples because modern browsers do not retain
information about the file origins of imported local files due to security restrictions. This means that once a user
imports a file, the browser has no way to automatically reload it the next time openDAW starts. To ensure persistent
access to user samples, openDAW copies every imported sample into OPFS, allowing the application to manage and retrieve
these files securely without relying on external file paths.
## Granting OPFS Storage Permission in Firefox
In Firefox, storing data in OPFS requires explicit user approval due to its privacy settings. Without permission, openDAW may not be able to retain imported samples across sessions. To allow persistent storage for openDAW in Firefox, follow these steps:
* Open Firefox Settings
* Navigate to Privacy & Security
* Scroll down to Permissions and find Storage Permissions
* Click Exceptions and enter the openDAW studio URL `https://opendaw.studio`
* Select Allow and confirm the changes
* Restart Firefox for the settings to take effect
@@ -0,0 +1,44 @@
# Tech-Stack
## Toolchain
* [Vite](https://vite.dev)
* [Typescript](https://www.typescriptlang.org)
* [Sass](https://sass-lang.com)
## Libraries
openDAW uses minimal external dependencies, avoiding hidden behaviors from bulky UI frameworks.
Each in-house library has a clear, focused purpose. [github repository](https://github.com/andremichelle/opendaw-lib)
### Dependency Table
| Library | Dependencies |
|---------------|-------------------------------------|
| **std** | none |
| **dsp** | std |
| **dom** | std |
| **jsx** | std, dom |
| **runtime** | std |
| **box** | std, dom, runtime |
| **box-forge** | std, dom, box |
| **fusion** | std, dom, box, runtime (all peered) |
### In-House Runtime
* std (Core)
* dsp (DSP & Sequencing)
* dom (DOM Integration)
* jsx ([JSX](https://en.wikipedia.org/wiki/JSX_(JavaScript)) Integration)
* runtime (Runtime and Scheduling)
### In-House Data Management
* box (Runtime Immutable Data Graph)
* box-forge (Box Code Generator)
### External
* [jszip](https://www.npmjs.com/package/jszip) (Pack & Unpack Zip-Files)
* [markdown-it](https://www.npmjs.com/package/markdown-it) (Markdown parser)
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+100
View File
@@ -0,0 +1,100 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="google" content="notranslate">
<meta name="apple-mobile-web-app-capable" content="notranslate">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="refresh" content="7.2">
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Expires" content="0">
<link rel="icon" type="image/x-icon" href="favicon.svg">
<title>🎧openDAW.studio</title>
<style>
html, body {
width: 100%;
height: 100%;
background-color: hsl(200, 9%, 9%);
color: rgb(100, 100, 100);
font-family: Rubik, sans-serif;
overflow: hidden;
display: flex
}
div {
position: absolute;
top: calc(50% - 0.5em);
left: calc(50% - 0.5em);
display: flex;
flex-direction: column;
align-items: center;
font-family: Verdana, sans-serif;
font-size: 10px;
gap: 1em;
letter-spacing: 1px;
}
</style>
</head>
<body>
<div>
<svg width="24" height="24" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" fill="white">
<rect x="1" y="1" width="7.33" height="7.33">
<animate id="spinner_oJFS" begin="0;spinner_5T1J.end+0.2s" attributeName="x" dur="0.6s" values="1;4;1" />
<animate begin="0;spinner_5T1J.end+0.2s" attributeName="y" dur="0.6s" values="1;4;1" />
<animate begin="0;spinner_5T1J.end+0.2s" attributeName="width" dur="0.6s" values="7.33;1.33;7.33" />
<animate begin="0;spinner_5T1J.end+0.2s" attributeName="height" dur="0.6s" values="7.33;1.33;7.33" />
</rect>
<rect x="8.33" y="1" width="7.33" height="7.33">
<animate begin="spinner_oJFS.begin+0.1s" attributeName="x" dur="0.6s" values="8.33;11.33;8.33" />
<animate begin="spinner_oJFS.begin+0.1s" attributeName="y" dur="0.6s" values="1;4;1" />
<animate begin="spinner_oJFS.begin+0.1s" attributeName="width" dur="0.6s" values="7.33;1.33;7.33" />
<animate begin="spinner_oJFS.begin+0.1s" attributeName="height" dur="0.6s" values="7.33;1.33;7.33" />
</rect>
<rect x="1" y="8.33" width="7.33" height="7.33">
<animate begin="spinner_oJFS.begin+0.1s" attributeName="x" dur="0.6s" values="1;4;1" />
<animate begin="spinner_oJFS.begin+0.1s" attributeName="y" dur="0.6s" values="8.33;11.33;8.33" />
<animate begin="spinner_oJFS.begin+0.1s" attributeName="width" dur="0.6s" values="7.33;1.33;7.33" />
<animate begin="spinner_oJFS.begin+0.1s" attributeName="height" dur="0.6s" values="7.33;1.33;7.33" />
</rect>
<rect x="15.66" y="1" width="7.33" height="7.33">
<animate begin="spinner_oJFS.begin+0.2s" attributeName="x" dur="0.6s" values="15.66;18.66;15.66" />
<animate begin="spinner_oJFS.begin+0.2s" attributeName="y" dur="0.6s" values="1;4;1" />
<animate begin="spinner_oJFS.begin+0.2s" attributeName="width" dur="0.6s" values="7.33;1.33;7.33" />
<animate begin="spinner_oJFS.begin+0.2s" attributeName="height" dur="0.6s" values="7.33;1.33;7.33" />
</rect>
<rect x="8.33" y="8.33" width="7.33" height="7.33">
<animate begin="spinner_oJFS.begin+0.2s" attributeName="x" dur="0.6s" values="8.33;11.33;8.33" />
<animate begin="spinner_oJFS.begin+0.2s" attributeName="y" dur="0.6s" values="8.33;11.33;8.33" />
<animate begin="spinner_oJFS.begin+0.2s" attributeName="width" dur="0.6s" values="7.33;1.33;7.33" />
<animate begin="spinner_oJFS.begin+0.2s" attributeName="height" dur="0.6s" values="7.33;1.33;7.33" />
</rect>
<rect x="1" y="15.66" width="7.33" height="7.33">
<animate begin="spinner_oJFS.begin+0.2s" attributeName="x" dur="0.6s" values="1;4;1" />
<animate begin="spinner_oJFS.begin+0.2s" attributeName="y" dur="0.6s" values="15.66;18.66;15.66" />
<animate begin="spinner_oJFS.begin+0.2s" attributeName="width" dur="0.6s" values="7.33;1.33;7.33" />
<animate begin="spinner_oJFS.begin+0.2s" attributeName="height" dur="0.6s" values="7.33;1.33;7.33" />
</rect>
<rect x="15.66" y="8.33" width="7.33" height="7.33">
<animate begin="spinner_oJFS.begin+0.3s" attributeName="x" dur="0.6s" values="15.66;18.66;15.66" />
<animate begin="spinner_oJFS.begin+0.3s" attributeName="y" dur="0.6s" values="8.33;11.33;8.33" />
<animate begin="spinner_oJFS.begin+0.3s" attributeName="width" dur="0.6s" values="7.33;1.33;7.33" />
<animate begin="spinner_oJFS.begin+0.3s" attributeName="height" dur="0.6s" values="7.33;1.33;7.33" />
</rect>
<rect x="8.33" y="15.66" width="7.33" height="7.33">
<animate begin="spinner_oJFS.begin+0.3s" attributeName="x" dur="0.6s" values="8.33;11.33;8.33" />
<animate begin="spinner_oJFS.begin+0.3s" attributeName="y" dur="0.6s" values="15.66;18.66;15.66" />
<animate begin="spinner_oJFS.begin+0.3s" attributeName="width" dur="0.6s" values="7.33;1.33;7.33" />
<animate begin="spinner_oJFS.begin+0.3s" attributeName="height" dur="0.6s" values="7.33;1.33;7.33" />
</rect>
<rect x="15.66" y="15.66" width="7.33" height="7.33">
<animate id="spinner_5T1J" begin="spinner_oJFS.begin+0.4s" attributeName="x" dur="0.6s"
values="15.66;18.66;15.66" />
<animate begin="spinner_oJFS.begin+0.4s" attributeName="y" dur="0.6s" values="15.66;18.66;15.66" />
<animate begin="spinner_oJFS.begin+0.4s" attributeName="width" dur="0.6s" values="7.33;1.33;7.33" />
<animate begin="spinner_oJFS.begin+0.4s" attributeName="height" dur="0.6s" values="7.33;1.33;7.33" />
</rect>
</svg>
<span>updating</span>
</div>
</body>
</html>
@@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" width="256" height="256" fill="hsl(156, 69%, 48%)">
<path d="M10.303 136.287a8.395 8.395 0 0 1-5.96-2.47 8.426 8.426 0 0 1 0-11.92l118.02-118.02a8.426 8.426 0 0 1 11.92 0 8.426 8.426 0 0 1 0 11.92l-118.02 118.02a8.395 8.395 0 0 1-5.96 2.47zm-.466 47.486a8.395 8.395 0 0 1-5.96-2.47 8.426 8.426 0 0 1 0-11.92L169.383 3.877a8.426 8.426 0 0 1 11.92 0 8.426 8.426 0 0 1 0 11.92L15.797 181.306a8.404 8.404 0 0 1-5.96 2.467zm0 47.022a8.395 8.395 0 0 1-5.96-2.47 8.426 8.426 0 0 1 0-11.92L216.405 3.877a8.426 8.426 0 0 1 11.92 0 8.426 8.426 0 0 1 0 11.92L15.797 228.325a8.395 8.395 0 0 1-5.96 2.47zm23.511 23.512a8.395 8.395 0 0 1-5.96-2.47 8.426 8.426 0 0 1 0-11.92l212.529-212.53a8.426 8.426 0 0 1 11.92 0 8.426 8.426 0 0 1 0 11.92l-212.53 212.53a8.405 8.405 0 0 1-5.96 2.47zm47.022 0a8.395 8.395 0 0 1-5.96-2.47 8.426 8.426 0 0 1 0-11.92L239.917 74.41a8.426 8.426 0 0 1 11.92 0 8.426 8.426 0 0 1 0 11.92L86.33 251.837a8.405 8.405 0 0 1-5.96 2.47zm47.02 0a8.395 8.395 0 0 1-5.96-2.47 8.426 8.426 0 0 1 0-11.92l118.253-118.254a8.426 8.426 0 0 1 11.92 0 8.426 8.426 0 0 1 0 11.92L133.35 251.837a8.4 8.4 0 0 1-5.96 2.47zm47.02 0a8.4 8.4 0 0 1-5.96-2.47 8.426 8.426 0 0 1 0-11.92l71.467-71.467a8.426 8.426 0 0 1 11.92 0 8.426 8.426 0 0 1 0 11.92l-71.467 71.467a8.395 8.395 0 0 1-5.96 2.47zM9.837 89.73a8.395 8.395 0 0 1-5.96-2.47 8.426 8.426 0 0 1 0-11.92L75.34 3.878a8.426 8.426 0 0 1 11.92 0 8.426 8.426 0 0 1 0 11.92L15.797 87.26a8.395 8.395 0 0 1-5.96 2.47zm0-47.02a8.395 8.395 0 0 1-5.96-2.47 8.426 8.426 0 0 1 0-11.92L28.32 3.878a8.426 8.426 0 0 1 11.92 0 8.426 8.426 0 0 1 0 11.92L15.797 40.24a8.395 8.395 0 0 1-5.96 2.47zm211.598 211.597a8.4 8.4 0 0 1-5.96-2.47 8.426 8.426 0 0 1 0-11.92l24.442-24.442a8.426 8.426 0 0 1 11.92 0 8.426 8.426 0 0 1 0 11.92l-24.442 24.442a8.405 8.405 0 0 1-5.96 2.47z"/>
</svg>

After

Width:  |  Height:  |  Size: 1.8 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 5.9 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 6.8 KiB

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="#fff" d="m256.0016,21c0,0-7.5444,12.187-18.0659,32.3125-14.0426-11.3735-31.3058-19.606-50.8188-23.2063-6.9118-1.2756-13.7108-1.8856-20.4154-1.9096-46.9342-.1694-86.9175,29.155-93.7062,71.9687-7.7588,48.9303 30.628,96.8688 85.9216,107.0721 7.8453,1.4476 15.6261,2.0539 23.2063,1.9091-2.6268,15.6341-4.2591,31.3683-4.2596,46.8533 0,1.073.1319,2.1555.1456,3.2313h-113.3875c5.7659-15.3168 15.8615-28.4387 28.7875-37.8937-40.8266,3.9198-72.4096,32.532-72.4091,67.2688s31.5807,63.3499 72.4091,67.2688c-12.926-9.4554-23.0216-22.5774-28.7875-37.8937h120.2909c4.5045,21.2421 10.9021,41.9963 17.9187,61.3937h-56.8409c3.3154-8.8064 9.0184-16.4486 16.45-21.8846-23.4723,2.2537-41.5654,18.8038-41.5654,38.775s18.0922,36.3751 41.5654,38.6283c-7.4316-5.436-13.1346-12.9316-16.45-21.7375h70.0596c19.8138,45.9354 39.95,77.8438 39.95,77.8438s20.1358-31.9083 39.95-77.8438h70.0591c-3.3148,8.8059-9.0183,16.301-16.4499,21.7375 23.4736-2.2532 41.5658-18.6566 41.5658-38.6283s-18.0936-36.5214-41.5658-38.775c7.4316,5.4361 13.1346,13.0782 16.4499,21.8846h-56.8404c7.0161-19.3974 13.4138-40.1516 17.9187-61.3937h120.2904c-5.766,15.3168-15.8611,28.4383-28.7875,37.8937 40.8284-3.9188 72.4096-32.5315 72.4096-67.2688s-31.5831-63.349-72.4096-67.2688c12.926,9.455 23.0216,22.5765 28.7875,37.8937h-113.3875c0-1.0758.1456-2.1583.1456-3.2313 0-15.485-1.6327-31.2193-4.2596-46.8533 7.5801.1456 15.361-.4605 23.2062-1.9091 55.2936-10.2033 93.6804-58.1418 85.9221-107.0721-6.7892-42.8137-46.7721-72.137-93.7063-71.9687-6.705,0-13.5041.6342-20.4158,1.9096-19.513,3.6007-36.7761,11.8328-50.8187,23.2063-10.5214-20.1254-18.0654-32.3125-18.0654-32.3125zm-85.188,21.8841c5.9116.0649 11.9643.6363 18.0659,1.7625 16.5848,3.0602 31.4364,9.9325 43.6216,19.0938-16.5341,32.9851-37.5224,81.3575-48.0279,132.1875-6.2933,0-12.7195-.5592-19.2404-1.7625-48.8142-9.0071-83.2154-49.7777-76.6692-91.0625 5.7284-36.1242 40.8707-60.6949 82.25-60.2188zm170.3755,0c41.3792-.4764 76.5216,24.0946 82.25,60.2188 6.5462,41.2853-27.855,82.0554-76.6687,91.0625-6.5213,1.2032-12.9471,1.7465-19.2409,1.7625-10.5054-50.83-31.4938-99.2024-48.0284-132.1875 12.1857-9.1613 27.0373-16.0336 43.6221-19.0938 6.1016-1.1256 12.1543-1.6943 18.0659-1.7625zm-162.4437,28.4937c-15.4033,0-29.3087,5.8938-39.8034,15.4221h26.5846c7.0524,0 12.6313,5.845 12.6313,13.0717s-5.5789,12.925-12.6313,12.925h-43.3284c-1.6601,5.397-2.4967,11.1108-2.4967,17.0375 0,31.6775 25.6211,57.3221 57.575,58.1625 .8512-5.3241 1.7555-10.5976 2.9375-15.8625-12.628-.9752-22.4721-11.397-22.4721-24.0875 0-13.3278 10.8504-24.0875 24.3813-24.0871 4.2534,0 8.4182,1.067 11.8971,2.9375 6.3479-16.9171 13.4073-32.1579 19.5346-44.3562-9.7544-6.9682-21.8385-11.1625-34.8096-11.1625zm154.5125,0c-12.9711,0-25.0553,4.1943-34.8096,11.1625 6.1269,12.1988 13.1863,27.4395 19.5346,44.3563 3.4789-1.8701 7.6436-2.9375 11.8966-2.9375 13.5309,0 24.3813,10.7597 24.3813,24.0875 0,12.69-9.8442,23.1123-22.4717,24.0875 1.182,5.265 2.0863,10.5384 2.9375,15.8625 31.9539-.8404 57.575-26.4854 57.575-58.1625 0-5.9267-.8371-11.6405-2.4966-17.0375h-43.3284c-7.0529,0-12.7779-5.6983-12.7779-12.925s5.7256-13.0721 12.7779-13.0721h26.5846c-10.4951-9.5284-24.4006-15.4221-39.8034-15.4221zm-101.1972,34.9563c-6.0658,18.2675-11.1625,91.5978-11.1625,111.4784 0,53.5621 35.1034,113.6813 35.1034,113.6813s35.1029-60.1196 35.1029-113.6813c0-19.8805-5.0967-93.2109-11.1625-111.4784 15.0489,26.1813 31.725,115.3131 31.725,149.6658 0,6.6247-.807,13.2724-1.9096,19.975h122.7875c6.7553,0 12.1909,5.2434 12.1909,11.8966s-5.4356,12.0438-12.1909,12.0438h-128.5153c-9.5983,30.2299-26.0733,57.6634-37.0125,74.025 8.6799,4.0787 14.8341,12.8084 14.8346,22.9125v.7346h78.4313c2.5935,0 4.5529,2.0234 4.5529,4.5529s-1.9594,4.5534-4.5529,4.5534h-80.6346c-3.9095,9.1039-12.98,15.4216-23.6467,15.4216s-19.7377-6.3177-23.6471-15.4216h-80.6342c-2.594,0-4.5534-2.0238-4.5534-4.5534s1.9594-4.5529 4.5534-4.5529h78.4312v-.7346c0-10.1041 6.1542-18.8338 14.8341-22.9125-10.9392-16.3617-27.4142-43.7951-37.0125-74.025h-128.5153c-6.7553,0-12.1909-5.3899-12.1909-12.0438s5.4356-11.8966 12.1904-11.8971h122.7875c-1.1021-6.7022-1.9091-13.3504-1.9091-19.975 0-34.3523 16.6761-123.4845 31.725-149.6654zm23.9409,26.1437c8.8247,0 16.0091,7.0373 16.0091,15.8625s-7.184,16.0096-16.0091,16.0096-16.0096-7.1844-16.0096-16.0096 7.184-15.8625 16.0091-15.8625zm0,44.3563c8.8251,0 16.0091,7.0373 16.0091,15.8625s-7.184,16.0096-16.0091,16.0096-16.0096-7.1844-16.0096-16.0096 7.1844-15.8625 16.0096-15.862zm-.0005,44.3562c8.8256,0 16.0096,7.0373 16.0096,15.8625s-7.184,16.0096-16.0091,16.0096-16.0096-7.1844-16.0096-16.0096 7.184-15.8625 16.0096-15.8625zm.0005,159.8c-8.8256,0-16.0096,7.0373-16.0096,15.8625s7.1844,16.0096 16.0096,16.0096 16.0091-7.1845 16.0091-16.0096-7.184-15.8625-16.0091-15.8625z"/></svg>

After

Width:  |  Height:  |  Size: 4.7 KiB

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="#fff" d="m21,491c15.6613-29.061 114.9027-51.4062 235-51.4062s219.3387,22.3452 235,51.4062h-470zm61.2471-42.0062c6.9255-6.3939 15.6473-12.3699 25.7029-17.7716l9.6938-168.6125c-26.0902-5.6099-45.6779-29.6133-45.6779-58.3096 0-31.2109 23.2297-56.7041 52.7279-59.1904l4.7001-79.4595 4.7,79.4595c29.4982,2.4863 52.7284,27.9796 52.7284,59.1904 0,28.6963-19.5881,52.6997-45.6784,58.3096l8.6659,151.7217c24.5914-7.2996 53.1453-12.0626 83.8654-13.6592l10.575-182.7125c-26.0902-5.61-45.6779-29.6133-45.6779-58.3096 0-31.2108 23.2297-56.7041 52.7279-59.1904l4.7-79.4596 4.7001,79.4596c29.4981,2.4863 52.7284,27.9796 52.7284,59.1904 0,28.6964-19.5882,52.6997-45.6784,58.3096l10.575,182.7125c30.6995,1.5886 59.1359,6.3755 83.7188,13.6592l8.6659-151.7217c-26.0902-5.6099-45.6784-29.6133-45.6784-58.3096 0-31.2109 23.2297-56.7041 52.7284-59.1904l4.7-79.4595 4.7,79.4595c29.4982,2.4863 52.7279,27.9796 52.7279,59.1904 0,28.6963-19.5882,52.6997-45.678,58.3096l9.6938,168.6125c10.1309,5.4271 18.8851,11.3392 25.85,17.7716-38.6767-12.1857-101.9834-20.2688-173.7534-20.2688-71.7577,0-135.071,8.0835-173.7529,20.2688zm47.1467-190.6437c28.8171,0 52.1409-24.1815 52.1409-54.05s-23.3238-54.05-52.1409-54.05-52.2875,24.182-52.2875,54.05 23.4704,54.05 52.2875,54.05zm253.0659,0c28.8166,0 52.1404-24.1815 52.1404-54.05s-23.3237-54.05-52.1404-54.05-52.2875,24.182-52.2875,54.05 23.4704,54.05 52.2875,54.05zm-253.0659-9.4c-23.774,0-43.0342-20.0084-43.0342-44.65s19.2602-44.6501 43.0342-44.6501 43.0346,20.0089 43.0346,44.6501-19.2606,44.65-43.0346,44.65zm253.0659,0c-23.774,0-43.0346-20.0084-43.0346-44.65s19.2606-44.6501 43.0346-44.6501 43.0341,20.0089 43.0341,44.6501-19.2601,44.65-43.0341,44.65zm-126.4596-35.25c28.8172,0 52.1409-24.1815 52.1409-54.05s-23.3237-54.05-52.1409-54.05-52.2875,24.182-52.2875,54.05 23.4704,54.05 52.2875,54.05zm0-9.3999c-23.774,0-43.0341-20.0084-43.0341-44.6501s19.2601-44.5029 43.0341-44.5029 43.0346,19.8618 43.0346,44.5029-19.2606,44.6501-43.0346,44.6501z"/></svg>

After

Width:  |  Height:  |  Size: 2.0 KiB

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="#fff" d="m256,21-235,119.5562c35.3919,5.4586 74.4386,9.6712 116.0312,12.4842l107.3659-112.0654-90.3284,113.0937c12.7498.7295 25.7697,1.2935 38.9221,1.7625 9.8475-25.2169 34.3058-43.1813 63.0091-43.1813s53.1622,17.9643 63.0096,43.1813c13.1647-.4699 26.1602-1.0316 38.9217-1.7625l-90.3279-113.0937 107.3654,112.0654c41.587-2.8144 80.6158-7.0246 116.0312-12.4842l-235-119.5562zm0,107.8063c-28.4594,0-51.5528,23.0934-51.5528,51.5529s23.0934,51.5533 51.5528,51.5533 51.5534-23.0939 51.5534-51.5533-23.0935-51.5529-51.5534-51.5529zm-234.7062,17.3312 38.4812,56.5466c1.5407-.8526 3.1509-1.5942 4.8471-2.0562 1.6319-.4468 3.3022-.8225 4.9938-.8813 25.372-.8779 56.6476,40.8863 72.1154,97.6722 3.3699,12.3708 5.6611,24.4513 7.05,35.9841l107.2187,157.5971 107.3659-157.7438c1.3916-11.4877 3.6951-23.5207 7.05-35.8374 15.4677-56.7859 46.8905-98.5501 72.2625-97.6722 1.6916.0577 3.3614.4367 4.9937.8813 1.6319.4468 3.0663,1.1026 4.553,1.9096l38.4812-56.4c-33.7423,8.1079-72.561,14.4308-114.7092,18.6529l-108.3937,279.3563 89.8875-277.5937c-11.3745.9461-23.0314,1.723-34.8096,2.35 .6378,3.7318 1.0284,7.5426 1.0284,11.4563 0,37.388-30.3216,67.7096-67.7097,67.7096s-67.7091-30.3215-67.7091-67.7096c0-3.9137.3899-7.7245 1.0279-11.4563-11.7928-.6263-23.422-1.4034-34.8091-2.35l89.8875,277.5937-108.3937-279.3563c-42.1553-4.2201-80.9885-10.5463-114.7096-18.6529zm52.5813,71.0875c-.8775.0987-1.6304.263-2.4967.4418-2.7251.5628-5.3491,1.7202-7.7846,3.3779 19.5365,17.5766 33.2093,78.7508 32.1658,152.0158-.5354,37.6014-4.7916,72.2766-11.6033,99.7279 9.3986,10.5595 19.2169,15.8992 28.6408,13.9534 27.7145-5.7233 41.0052-70.5024 29.5217-144.8188-10.7654-69.6719-39.4306-123.0314-65.8-124.6971-.8789-.0577-1.7658-.0987-2.6437,0zm361.7533,0c-26.3689,1.6657-55.0342,55.0248-65.8,124.6967-11.4835,74.3168 1.8076,139.096 29.5217,144.8187 9.4244,1.9463 19.2422-3.3934 28.6409-13.9528-6.8112-27.4518-11.0676-62.1265-11.6034-99.7284-1.0434-73.2646 12.6294-134.4388 32.1659-152.0154-2.4351-1.6582-5.0596-2.8153-7.7846-3.3783-.8657-.1787-1.6191-.343-2.4966-.4418s-1.7648-.0577-2.6438,0z"/></svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="#fff" d="m21,21.0019c2.7392,17.4074 5.2367,36.0635 7.3461,55.6826 11.7805-4.1529 24.4004-6.4644 37.6116-6.4644 62.3641,0 112.8349,50.4708 112.8349,112.8344s-50.4708,112.981-112.8349,112.981c-10.0406,0-19.8292-1.2304-29.0901-3.673-.5081,26.6132-1.5326,52.2714-3.0855,76.9857 21.9019-4.496 44.5427-6.8841 66.996-6.9052 22.8941,0 45.6598,2.3279 67.4363,7.0523 23.7368,5.217 45.337,12.7412 66.7022,19.6873 21.2721,6.8526 42.4954,13.3517 64.7916,16.1613 34.9303,4.4645 72.5781-.0505 104.7542-13.0758-30.3102,15.2726-68.1037,22.9157-105.9297,20.8623-24.0785-1.3447-47.4134-6.3027-69.7872-11.7538-22.5214-5.4252-44.5249-11.3486-66.408-14.3979-44.3533-6.3003-90.8319-1.2723-130.6121,12.4884-.3574,4.3592-.7863,8.7983-1.1755,13.0758 30.611-9.4648 63.3718-14.3679 95.9389-14.3984 22.8941,0 45.5132,2.328 67.2896,7.0523 23.7368,5.217 45.4841,12.8883 66.8488,19.8339 21.2721,6.8526 42.4958,13.2051 64.7921,16.0143 34.9303,4.4645 72.5781-.0505 104.7542-13.0759-30.3106,15.2731-68.1041,22.9158-105.9296,20.8628-24.0785-1.3451-47.4134-6.3027-69.7873-11.7538-22.5213-5.4252-44.5248-11.2019-66.4079-14.2513-56.4078-8.0121-116.2147,2.3618-161.3185,25.7113-1.7418,14.7485-3.6213,29.0468-5.7302,42.4597 64.8475-10.1741 146.2861-16.3081 235.073-16.3081 88.7221,0 170.1008,6.1471 234.9254,16.3081-6.8295-43.5722-11.6959-94.7122-14.2513-150.4456-20.7753,7.5134-43.1825,11.6066-66.5546,11.6066-108.1499,0-195.845-87.6946-195.845-195.8441 0-44.8237 15.1823-86.02 40.55-119.0045-88.325-.0576-169.3395-6.1495-233.8976-16.3085zm469.9984,0c-54.5381,8.5742-120.8591,14.1305-193.347,15.7205-31.8645,29.9568-51.8629,72.4079-51.8629,119.5925 0,90.7826 73.621,164.4031 164.4041,164.4031 23.2193,0 45.2157-4.8316 65.2324-13.5167-.4137-15.1626-.6947-30.5926-.7346-46.2793-3.3995,2.1038-6.8103,4.1031-10.4312,5.8769-.24.1175-.4958.1787-.7346.2962-1.402.6753-2.8299,1.4335-4.261,2.0567-.3856.1643-.7906.2775-1.1755.4418-1.2981.5499-2.6461,1.1102-3.9668,1.6159-.3337.1268-.6954.1694-1.0283.2962-3.0922,1.1543-6.1984,2.1789-9.4028,3.0855-1.6079.4562-3.2148.932-4.8485,1.3221-.1549.0432-.2868.1124-.4418.1456-.5974.1412-1.1623.3099-1.763.4418-1.2394.2724-2.5666.5009-3.8202.7346-1.2901.24-2.6626.3899-3.9668.5881-.5052.075-.9617.2205-1.4692.2962-.5924.0843-1.1675.0721-1.763.1456-3.0047.3762-6.0414.7257-9.109.8813h-.5873c-1.9031.0894-3.8056.1456-5.7302.1456-67.8894,0-122.8252-55.0819-122.8252-122.9714 0-2.1216.0432-4.2229.1456-6.3177 1.1661-23.0445 8.7288-44.4731 20.8628-62.4407 1.1031-1.6337 2.2005-3.1255 3.3788-4.7014 22.3884-29.9464 58.1275-49.3653 98.437-49.3653 2.1352,0 4.2088.0504 6.3177.1456 3.0677.1549 6.1044.5059 9.1091.8817 .5751.0721 1.1896.0649 1.763.1456 .5016.0721.9691.2162 1.4692.2962 1.3531.2068 2.6283.3387 3.9668.5873 .529.0987 1.0899.1881 1.6158.2962 1.3033.2587 2.679.5801 3.9673.8817 .1506.0504.2912.1124.4418.1456 1.6338.3899 3.2402.8686 4.8481,1.3221 3.5537,1.0053 7.0166,2.0703 10.4316,3.3793 1.3348.5095 2.6546,1.0623 3.9668,1.6159 .3805.16.7971.2775 1.1755.4418 .6075.263 1.1605.6082 1.763.8817 6.0325,2.7434 11.8732,5.907 17.3364,9.55 .2018.1362.3856.3056.5881.4418 1.2897.8709 2.5657,1.7263 3.8197,2.6442 .0894.0649.2068.0843.2962.1456 .908.6681 1.7719,1.3658 2.6447,2.0572 1.6097-13.2648 3.3816-26.1875 5.2893-38.3463zm-80.8058,69.6402c-36.3135,0-65.6739,29.3603-65.6739,65.6728s29.3603,65.82 65.6739,65.82 65.8199-29.5069 65.8199-65.82-29.5069-65.6728-65.8199-65.6728zm-344.2349,12.4883c-12.3224,0-23.9426,2.8054-34.3794,7.7865 3.7181,44.7589 5.7302,93.6462 5.7302,145.1566 0,.6435.0004,1.2671 0,1.9101 8.8933,3.4075 18.5701,5.2889 28.6492,5.2889 44.2076,0 79.9246-35.8642 79.9246-80.0713s-35.7171-80.0708-79.9246-80.0708z"/></svg>

After

Width:  |  Height:  |  Size: 3.6 KiB

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="#fff" d="m256,21-33.6774,69.8895c-54.0932-1.1139-131.5117-30.7728-174.4697-45.7512 4.2394,29.907 36.159,99.7767 37.9798,136.6915l-64.8328,13.473 66.3165,71.8541c-.5592,58.8802-40.0501,135.8968-55.7829,177.2497 13.5041-1.7212 72.9764-22.5323 87.9765-23.8577l-6.5279,70.4511 116.0167-65.5391c-1.1275-3.2064-1.7803-6.6524-1.7803-10.2451 0-16.3508 12.6393-29.6772 28.7814-30.8748 16.1426,1.1976 28.7818,14.524 28.7818,30.8748 0,3.5927-.6529,7.0387-1.7803,10.2451l116.0162,65.5391-6.5278-70.4511c15.0005,1.3254 74.4729,22.1365 87.977,23.8577-15.7328-41.3529-55.2236-118.3695-55.7829-177.2497l66.316-71.8541-64.8327-13.473c1.8212-36.9148 33.7408-106.7845 37.9802-136.6915-42.958,14.9784-120.3764,44.6373-174.4702,45.7512l-33.6773-69.8895zm-178.475,56.9781c36.495,14.6047 92.4358,33.9082 132.039,35.2255l-11.5719,20.0685c11.7148,4.4603 20.0281,15.5476 20.0281,28.7697 0,17.1399-14.0511,31.0153-31.3034,31.0153-15.5058,0-28.27-11.2532-30.7103-25.9628l-46.8816,9.8235c-1.6412-26.0262-20.3698-71.5203-31.5999-98.9397zm356.9504,0c-11.2307,27.4194-29.9592,72.9134-31.6004,98.9397l-46.8811-9.8235c-2.4407,14.7096-15.2045,25.9628-30.7103,25.9628-17.2528,0-31.3039-13.8753-31.3039-31.0153 0-13.2221 8.3139-24.3094 20.0286-28.7697l-11.5719-20.0685c39.6026-1.3174 95.544-20.6208 132.039-35.2255zm-178.4754,82.8009 25.6662,44.4878c-5.4487,2.0746-9.1984,7.1825-9.1984,13.3325 0,7.9717 6.5147,14.4548 14.5395,14.4548 7.2117,0 13.1074-5.0873 14.2425-11.9291l62.7553,13.0519-42.7272,46.3124c-2.6541-3.6185-7.0218-5.7542-11.8684-5.7542-8.0243,0-14.5395,6.3432-14.5395,14.3148s6.5151,14.4553 14.5395,14.4553c1.6374,0 3.1269-.3481 4.5989-.8422l7.2695,62.8723-53.8541-24.4193c.5246-1.4913.5931-2.9601.5931-4.6309 0-7.1543-5.1644-12.9202-12.017-14.0342-6.8526,1.1139-12.017,6.8799-12.017,14.0342 0,1.6709.0721,3.1396.5938,4.6309l-53.8545,24.4193 7.27-62.8723c1.472.4951 2.961.8422 4.5989.8422 8.0243,0 14.5389-6.4832 14.5389-14.4553s-6.5146-14.3148-14.5389-14.3148c-4.8466,0-9.2148,2.1357-11.8689,5.7542l-42.7272-46.3124 62.7558-13.0519c1.135,6.8418 7.0308,11.9291 14.2424,11.9291 8.0243,0 14.539-6.4832 14.539-14.4548 0-6.1499-3.7492-11.2579-9.1979-13.3325l25.6658-44.4878zm-119.577,120.5522c5.1992,0 10.0341,1.1731 14.391,3.2279 .9202.4324 1.8019.8916 2.6705,1.4034 .3387.1975.7084.3481 1.0383.5614 .0894.0504.2068.0843.2962.1412 9.0099,5.4337 14.9845,15.2632 14.9845,26.5244 0,17.14-13.9031,31.0153-31.1553,31.0153-3.5218,0-6.9232-.6198-10.0885-1.6841l-6.5279,56.1359c-6.8234.7171-40.9097,9.1466-47.3262,9.9644 8.4948-20.5639 18.9058-58.4426 29.5231-92.3442-.2018-1.3921-.2962-2.7645-.2962-4.2102 0-7.0932 2.5558-13.6056 6.8249-18.8056 .0504-.1787.1081-.3856.1506-.5614l.1506.1412c5.9521-7.0068 15.1274-11.508 25.3692-11.508zm239.1539,0c10.2423,0 19.4171,4.5011 25.3697,11.5079l.1506-.1413c.0505.1787.1081.3856.1506.5614 4.2685,5.1996 6.8244,11.712 6.8244,18.8052 0,1.4457-.0937,2.8181-.2962,4.2102 10.6173,33.9016 21.0283,71.7803 29.5236,92.3442-6.4169-.8178-40.5028-9.2472-47.3267-9.964l-6.5278-56.1363c-3.1655,1.0646-6.5669,1.6841-10.0881,1.6841-17.2528,0-31.1554-13.8754-31.1554-31.0153 0-11.2612 5.9742-21.0907 14.9841-26.5244 .0894-.0577.2068-.0843.2962-.1412 .3286-.2112.7005-.3618 1.0387-.5614 .868-.5117 1.7498-.9691 2.6701-1.4034 4.3574-2.0548 9.1917-3.2279 14.3909-3.2279z"/></svg>

After

Width:  |  Height:  |  Size: 3.3 KiB

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="#fff" d="m255.8531,490.9997c0,0-26.2829-69.0378-29.5035-124.4032-30.5542,46.3457-87.9231,93.1186-87.9231,93.1186s11.8435-72.9391 36.8427-122.4936c-49.7052,24.9236-122.8574,36.7187-122.8574,36.7187s46.8641-57.2238 93.3536-87.684c-55.5332-3.211-124.7655-29.3749-124.7655-29.3749s88.4863-33.5166 145.6091-29.375c1.1411.0843 2.2733.3149 3.376.4418-.4043,3.3713-.7341,6.8019-.7341,10.2812 0,47.6622 38.7947,86.2152 86.6022,86.2152h.147 .147c47.8074,0 86.602-38.5531 86.602-86.2152 0-3.4794-.3322-6.91-.7339-10.2812 1.1026-.1268 2.2348-.3574 3.376-.4418 57.1225-4.1417 145.6088,29.375 145.6088,29.375s-69.2319,26.1639-124.7656,29.3749c46.4898,30.4602 93.3541,87.684 93.3541,87.684s-73.1524-11.7951-122.8575-36.7187c24.9993,49.5544 36.8426,122.4936 36.8426,122.4936s-57.3688-46.7729-87.923-93.1186c-3.2206,55.3654-29.5034,124.4032-29.5034,124.4032l-.147-.4418-.147.4418zm-4.4035-184.7685c-4.3345-.2587-8.5328-.9292-12.6234-1.9096v-47.5874c0-7.6337-6.2593-13.8062-14.0912-13.8062s-14.0912,6.1725-14.0912,13.8062v33.6346c-16.6112-13.2681-27.3016-33.6581-27.3016-56.547 0-9.2505 1.8287-18.0222 4.9906-26.1437 2.2281-.9358 4.4513-1.896 6.6053-3.0842 13.8211-7.7804 23.671-21.5584 29.7969-35.8374 8.8157-20.5494 31.2648-147.7561 31.2648-147.7561s22.4492,127.2067 31.2648,147.7561c6.126,14.279 15.9759,28.057 29.797,35.8374 2.1539,1.1882 4.3771,2.1484 6.6052,3.0842 3.1619,8.1215 4.9907,16.8932 4.9907,26.1437 0,22.8889-10.6905,43.2789-27.3017,56.547v-33.6346c0-7.6337-6.2594-13.8062-14.0912-13.8062s-14.0911,6.1725-14.0911,13.8062v47.5874c-4.0907.9805-8.289,1.6526-12.6234,1.9096-1.4448.0843-2.9387,0-4.4035,0h-.147-.147c-1.4648,0-2.9587.0843-4.4035,0zm-95.7027-104.7219c-1.4204.0432-2.8383-.0987-4.2568-.1456-6.8065-.2493-13.5844-1.5406-19.9623-3.9654-16.9665-6.5964-29.8694-20.1696-35.5216-36.5721-5.4867-17.6753-3.2284-34.1172-2.4952-48.6153 .2349-7.2248.0504-14.1803-1.4679-20.7096-1.5143-6.4785-4.2483-12.9123-8.8068-17.4779-6.1279-6.3257-16.1572-9.447-25.5403-7.6375-9.3924,1.7761-18.1199,8.646-22.1642,18.2125 2.6358-10.0514 10.6374-18.8051 21.1368-22.4721 10.5078-3.634 22.9276-1.8964 32.4389,5.2875 6.7887,5.2362 11.6024,12.5278 14.5314,20.4158 2.9446,7.8391 4.3588,16.127 5.1376,23.9404 1.8193,15.5767 1.6365,30.3619 7.4856,40.5374 4.8476,9.392 14.5042,16.4519 23.9258,18.3595 9.3803,2.037 19.7-.6234 26.421-6.1687 6.8083-5.4064 11.3415-14.5023 11.3021-22.325 .0843-4.3315-1.2367-8.8802-3.229-12.7783-1.4546.1549-2.9088.1456-4.4039.1456-23.1324,0-41.9799-18.8832-41.9799-42.1528s18.8474-42.0062 41.9799-42.0062 41.8334,18.7361 41.8334,42.0062c0,4.9542-.7858,9.6829-2.3485,14.1 7.7755,14.2185 10.5021,30.4089 7.6326,46.1187-3.8108,19.7907-15.9485,36.3751-32.5858,45.8249-9.1465,5.0911-19.1194,7.7625-29.0632,8.0779zm200.5058,0c-9.9435-.3149-19.9168-2.9869-29.0631-8.0779-16.6372-9.4498-28.775-26.0342-32.5858-45.825-2.8693-15.7097-.1427-31.9003 7.6327-46.1186-1.5628-4.4171-2.3486-9.1457-2.3486-14.1 0-23.2701 18.7006-42.0062 41.8332-42.0062s41.98,18.7361 41.98,42.0062-18.8474,42.1529-41.98,42.1529c-1.4947,0-2.9492.005-4.4035-.1456-1.9924,3.8981-3.3138,8.4468-3.2292,12.7783-.036,7.8227 4.494,16.9186 11.3023,22.3249 6.7207,5.5455 17.0405,8.2057 26.421,6.1688 9.4217-1.9077 19.0784-8.9676 23.9257-18.3595 5.8495-10.1755 5.6664-24.9608 7.4859-40.5374 .7788-7.8133 2.193-16.1013 5.1374-23.9404 2.9292-7.888 7.743-15.1796 14.5316-20.4159 9.5113-7.1839 21.931-8.9215 32.439-5.2874 10.4992,3.6669 18.5009,12.4207 21.1368,22.4721-4.0447-9.5664-12.772-16.4364-22.1642-18.2125-9.3834-1.8095-19.4124,1.3118-25.5403,7.6375-4.5588,4.5656-7.2928,10.9994-8.807,17.4779-1.5007,6.5292-1.7037,13.4847-1.4679,20.7096 .7333,14.4981 2.9915,30.94-2.4953,48.6153-5.6523,16.4025-18.5552,29.9757-35.5215,36.5721-6.3779,2.4247-13.1558,3.7177-19.9625,3.9654-1.4181.0504-2.8363.1924-4.2567.1456z"/></svg>

After

Width:  |  Height:  |  Size: 3.8 KiB

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="#fff" d="m21,256c0,42.8085 11.2622,82.9653 30.9904,117.6466v-235.2933c-19.7283,34.6813-30.9904,74.8377-30.9904,117.6467zm45.2375,139.6784c3.4291,4.7273 7.1097,9.3516 10.8687,13.8058v-306.9683c-3.759,4.4537-7.4396,9.079-10.8687,13.8057zm16.5967,20.4154c36.1509,39.7705 85.5442,67.1113 141.1471,74.9062v-69.0312h-49.6438c-25.4035,0-45.9721-20.547-45.9721-46.1187s20.5686-46.1187 45.9721-46.1187h49.6438v-27.4654h-49.6438c-25.4035,0-45.9721-20.6941-45.9721-46.2659s20.5686-46.1187 45.9721-46.1187h49.6438v-27.4654h-49.6438c-25.4035,0-45.9721-20.5465-45.9721-46.1192s20.5686-46.1183 45.9721-46.1183h49.6438v-69.1784c-55.6029,7.7954-104.9962,35.1362-141.1471,74.9062zm61.2471-40.2437c0,18.165 14.7073,32.6063 32.7529,32.6063h173.1137v-65.3596h-173.1137c-18.0456,0-32.7529,14.5883-32.7529,32.7534zm0-119.85c0,18.165 14.7073,32.7534 32.7529,32.7534h95.9519v-65.5067h-95.9519c-18.0456,0-32.7529,14.5883-32.7529,32.7534zm0-119.7034c0,18.166 14.7073,32.6067 32.7529,32.6067h139.534v-65.3596h-139.534c-18.0456,0-32.7529,14.5892-32.7529,32.7529zm211.5945,272.1596h102.718c18.0452,0 32.6063-14.4412 32.6063-32.6063 0-18.165-14.5611-32.7534-32.6063-32.7534h-102.718zm-77.1618-119.7029h179.8798c18.0452,0 32.6063-14.5883 32.6063-32.7534 0-18.165-14.5611-32.7534-32.6063-32.7534h-179.8798zm43.5822-119.85h136.2976c18.0452,0 32.6063-14.4407 32.6063-32.6067 0-18.1641-14.5611-32.7529-32.6063-32.7529h-136.2976zm44.2068,220.4592c0-6.909 5.1239-12.4841 11.4562-12.4841h82.838c6.3337,0 11.4563,5.5751 11.4563,12.4841s-5.1226,12.3375-11.4563,12.3375h-82.838c-6.3323,0-11.4562-5.4285-11.4562-12.3375zm0-133.2159c0-6.9081 5.1239-12.6308 11.4562-12.6308h82.838c6.3337,0 11.4563,5.7227 11.4563,12.6308s-5.1226,12.4846-11.4563,12.4846h-82.838c-6.3323,0-11.4562-5.5747-11.4562-12.4846zm0-133.3625c0-6.9081 5.1239-12.4841 11.4562-12.4841h82.838c6.3337,0 11.4563,5.5765 11.4563,12.4841s-5.1226,12.4846-11.4563,12.4846h-82.838c-6.3323,0-11.4562-5.5747-11.4562-12.4846z"/></svg>

After

Width:  |  Height:  |  Size: 2.0 KiB

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="#fff" d="m285.375,21c21.1833,2.7415 41.5997,8.1197 60.6596,16.0096l-36.8659,97.6716c8.3712,3.7328 16.4425,8.3688 23.7937,13.6597l66.5346-80.6347c16.7005,12.7309 31.5572,27.6003 44.3557,44.2097l-80.9278,66.2404c5.3204,7.3085 9.9043,15.1796 13.6596,23.5l98.1125-36.5716c7.9783,19.0472 13.5604,39.1886 16.3029,60.3653l-103.4,16.8908c.4699,4.5176.5873,9.0184.5873,13.6592 0,4.5891-.1268,9.1918-.5873,13.6597l103.4,17.0375c-2.7425,21.1777-8.3251,41.3191-16.3029,60.3653l-98.1125-36.7188c-3.7671,8.3684-8.3115,16.3001-13.6596,23.6472l80.9278,66.2404c-12.8047,16.6042-27.6552,31.4773-44.3557,44.2096l-66.5346-80.6346c-7.3513,5.2894-15.4225,9.926-23.7937,13.6596l36.8659,97.6717c-19.0599,7.8894-39.4763,13.1215-60.6596,15.8625l-17.0375-102.5188c-4.0627.4137-8.1884.5621-12.3375.5873-4.1482-.0504-8.2748-.1737-12.3375-.5873l-17.0375,102.5188c-21.1834-2.7411-41.5997-7.9731-60.6596-15.8625l36.8658-97.6717c-8.3711-3.7336-16.442-8.3702-23.7937-13.6596l-66.5346,80.6346c-16.7009-12.7323-31.5516-27.6054-44.3557-44.2096l80.9278-66.2404c-5.3481-7.3471-9.8925-15.2788-13.6596-23.6472l-98.1125,36.7188c-7.9778-19.0463-13.5604-39.1876-16.3028-60.3654l103.4-17.0375c-.4605-4.4678-.5874-9.0706-.5874-13.6597 0-4.6407.1175-9.1415.5874-13.6592l-103.4-16.8908c2.7424-21.1768 8.3246-41.3181 16.3028-60.3653l98.1125,36.5716c3.7553-8.3204 8.3392-16.1915 13.6596-23.5l-80.9278-66.2404c12.7981-16.6094 27.6548-31.4787 44.3557-44.2097l66.5346,80.6347c7.3517-5.2908 15.4226-9.9269 23.7937-13.6597l-36.8658-97.6716c19.0599-7.8899 39.4762-13.2681 60.6596-16.0096l17.0375,102.6658c4.0617-.418 8.1884-.5643 12.3375-.5874 4.1501.0432 8.2753.1694 12.3375.5874l17.0375-102.6658zm-29.375,119.1158c-63.7268.7826-115.0038,52.3472-115.0029,115.8841l33.9279-2.4966c0,44.8573 36.1486,77.5575 81.075,78.4312 44.9273-.8737 81.075-33.574 81.075-78.4312l33.9279,2.4966c.0009-63.5369-51.2751-115.1016-115.0029-115.8841zm22.9125,18.0654c35.3163,0 46.5596,65.7187 46.5596,97.525 0,40.2292-30.8926,61.5348-69.4721,62.4221-38.5785-.8874-69.4721-22.1929-69.4721-62.4221 0-31.8063 11.2433-97.525 46.5596-97.525v53.6096c0,13.544 10.0726,24.5364 22.9125,25.4092 12.8409-.8728 22.9125-11.8652 22.9125-25.4092v-53.6096z"/></svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="#fff" d="m256,20.9995-5.7284,28.6404-187.4125-25.7029c-.69-.0937-1.3776-.1413-2.0562-.1456-10.1821-.0843-18.8287,9.564-18.0654,19.6813l11.8966,157.8904c-19.8251,9.2769-33.6341,30.2361-33.6341,54.6376s13.8091,45.3202 33.6341,54.6375l-11.8966,157.8909c-.8136,10.7916 9.0799,21.0532 20.1216,19.5341l187.4125-25.7029 5.7284,28.6404 5.7279-28.6404 187.4125,25.7029c11.0417,1.5191 20.9352-8.7425 20.1221-19.5341l-11.8971-158.0377c19.7724-9.3596 33.6346-30.1618 33.6346-54.4908s-13.8622-45.1718-33.6346-54.4904l11.8971-158.0375c.7619-10.1172-7.8838-19.7672-18.0659-19.6813-.6786.004-1.3663.0504-2.0562.1456l-187.4125,25.7029-5.7279-28.6404zm-187.5596,19.6813 179.9221,18.0654-5.2875,26.5846-63.7442-21.2971 50.8192,42.8875-50.8192,43.0346 63.7442-21.2971 12.925,64.3312 12.925-64.3312 63.7433,21.2971-50.8183-43.0346 50.8183-42.8875-63.7433,21.2971-5.2875-26.5846 179.9216-18.0654c4.6427.2112 8.2133,3.5791 8.5188,8.0779l-5.2875,148.9312c-4.011-.9485-8.2038-1.4687-12.4846-1.4687-18.0922,0-34.1441,8.9944-44.5029,22.9124 8.6494-14.5352 22.3527-25.2582 38.3346-29.0812v-116.4716c0-.0505-.1457-.7347-.1457-.7347s-18.7192,53.9917-21.0029,97.2313c-21.6703-36.198-62.4221-72.7029-62.4221-72.7029s8.5592,57.0608 26.2904,95.7625c-35.2542-19.4651-87.2433-28.7875-87.2433-28.7875s33.2685,44.8005 66.2404,68.5905c-39.3888,2.5079-88.5654,22.9124-88.5654,22.9124l.4418.1456h-.4418c0,0 49.1766,20.5522 88.5654,23.0596-32.9719,23.7905-66.2404,68.5904-66.2404,68.5904s51.989-9.322 87.2433-28.7875c-17.7312,38.7021-26.2904,95.7625-26.2904,95.7625s40.7514-36.652 62.4221-72.85c2.2847,43.2395 21.0029,97.2312 21.0029,97.2312s.1363-.7041.1457-.7341v-116.325c-16.1196-3.8554-29.8445-14.6142-38.4817-29.375 10.3494,14.1235 26.4281,23.2063 44.65,23.2063 4.2808,0 8.4736-.516 12.4846-1.4687l5.2875,148.9312c-.3055,4.4988-3.8761,7.8678-8.5188,8.0779l-179.9216-18.0654 5.2875-26.5846 63.7433,21.4437-50.8183-43.0341 50.8183-42.8875-63.7433,21.15-12.925-64.3312-12.925,64.3312-63.7442-21.15 50.8192,42.8875-50.8192,43.0341 63.7442-21.4437 5.2875,26.5846-179.9221,18.0654c-4.6427-.2112-8.2128-3.579-8.5188-8.0779l5.2875-148.9312c3.964.9315 8.1061,1.4687 12.3375,1.4687 17.5639,0 33.3601-8.3336 43.7687-21.5909-8.7067,13.928-21.9311,24.0476-37.4529,27.7597v116.325c0,.0432.1457.7341.1457.7341s18.5721-53.9917 20.8563-97.2313c21.6708,36.198 62.4221,72.85 62.4221,72.85s-8.4125-57.0604-26.1442-95.7625c35.2556,19.4655 87.2442,28.7875 87.2442,28.7875s-33.2685-44.7999-66.2409-68.5904c39.3893-2.5074 88.4188-23.0596 88.4188-23.0596h-.2914l.2914-.1456c0,0-49.0294-20.4046-88.4188-22.9125 32.9724-23.79 66.2409-68.5904 66.2409-68.5904s-51.9881,9.3225-87.2442,28.7875c17.7317-38.7017 26.1442-95.7626 26.1442-95.7626s-40.7514,36.5049-62.4221,72.703c-2.2842-43.2396-20.8562-97.2313-20.8562-97.2313s-.1363.7048-.1457.7347v116.4716c15.5217,3.713 28.7461,13.8631 37.4529,27.7596-10.4086-13.2257-26.2048-21.5908-43.7687-21.5908-4.2314,0-8.3735.5412-12.3375,1.4687l-5.2875-148.9312c.3055-4.4988 3.8761-7.8678 8.5187-8.0779zm187.5596,49.6438c9.4874,0 17.1841,7.3893 17.1841,16.5966s-7.6972,16.7438-17.1841,16.7438-17.1846-7.5359-17.1846-16.7438 7.6977-16.5966 17.1846-16.5966zm-159.6534,135.8591c15.5349,0 28.2,13.3052 28.2,29.8159s-12.6651,29.6687-28.2,29.6687-28.0534-13.1581-28.0534-29.6687 12.5189-29.8159 28.0534-29.8159zm319.1591,0c15.5349,0 28.0534,13.3052 28.0534,29.8159s-12.5184,29.6687-28.0534,29.6687c-15.5344,0-28.2-13.1581-28.2-29.6687s12.6656-29.8159 28.2-29.8159zm-159.5058,162.15c9.486,0 17.1841,7.5364 17.1841,16.7437s-7.6972,16.5972-17.1841,16.5972-17.1846-7.3899-17.1846-16.5972 7.6977-16.7437 17.1846-16.7437z"/></svg>

After

Width:  |  Height:  |  Size: 3.6 KiB

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="#fff" d="m75.05,21c-29.9639,0-54.05,24.0861-54.05,54.05v136.4469h71.9688c14.4985,0 26.1437,11.645 26.1437,26.1438v7.05h85.1876v-15.7157h197.1063c6.5438,0 11.7499,2.7085 11.7499,6.1688v41.7125c0,3.4602-5.2061,6.1687-11.7499,6.1687h-197.1063v-15.7156h-85.1876v7.05c0,14.4987-11.6452,26.1438-26.1437,26.1438h-71.9688v136.3c0,29.964 24.0861,54.1969 54.05,54.1969h106.7779v-99.4343h-30.2558c-17.2856,0-31.1375-14.0009-31.1375-31.2844v-2.35h345.1558c14.1023,0 25.4096-10.6587 25.4096-23.6469v-33.3406-90.0344-33.3406c0-12.9882-11.3064-23.5-25.4096-23.5h-345.1558v-2.4969c0-17.2835 13.8519-31.1375 31.1375-31.1375h30.2558v-99.4343h-106.7779zm129.2501,0v99.4343h286.7v-45.3843c0-29.964-24.0861-54.05-54.05-54.05h-232.65zm52.5812,25.7031c.8507-.0865 1.7705,0 2.6438,0 13.9717,0 25.2625,11.2905 25.2625,25.2625s-11.2908,25.2625-25.2625,25.2625-25.4096-11.2905-25.4096-25.2625c0-13.0988 10.0091-23.9669 22.7659-25.2625zm80.3409,0c.8502-.0865 1.7715,0 2.6433,0 13.9731,0 25.2625,11.2905 25.2625,25.2625s-11.2894,25.2625-25.2625,25.2625-25.4092-11.2905-25.4092-25.2625c0-13.0988 10.0082-23.9669 22.7659-25.2625zm80.1933,0c.8516-.0865 1.7705,0 2.6442,0 13.9712,0 25.2625,11.2905 25.2625,25.2625s-11.2913,25.2625-25.2625,25.2625-25.4096-11.2905-25.4096-25.2625c0-13.0988 10.0105-23.9669 22.7654-25.2625zm-213.1154,344.8626v99.4343h232.65c29.9639,0 54.05-24.2329 54.05-54.1969v-45.2375h-286.7zm55.225,23.2062c13.9721,0 25.2625,11.2905 25.2625,25.2625s-11.2903,25.4093-25.2625,25.4093-25.4096-11.4373-25.4096-25.4093 11.4375-25.2625 25.4096-25.2625zm80.3404,0c13.9731,0 25.2625,11.2905 25.2625,25.2625s-11.2894,25.4093-25.2625,25.4093-25.4092-11.4373-25.4092-25.4093 11.437-25.2625 25.4092-25.2625zm80.1942,0c13.9722,0 25.2625,11.2905 25.2625,25.2625s-11.2903,25.4093-25.2625,25.4093-25.4096-11.4373-25.4096-25.4093 11.436-25.2625 25.4096-25.2625z"/></svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 6.2 KiB

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="#fff" d="m195.7751,21.0596c-5.99.1535-11.9966.5664-18.0675,1.3218-98.2118,12.2222-167.7229,100.1823-155.2628,196.5188 1.7092,13.2151 3.5664,26.0205 6.6101,38.1875-.0216.8853-.147,1.7525-.147,2.6438 0,32.2722 16.7564,60.5927 42.0106,76.9625l-21.2991,105.4562c-4.0777,20.2404 16.6888,38.2294 37.3101,37.1594l143.5116-7.4906c30.9503,15.4793 66.8024,22.3825 103.8512,17.7719 98.2118-12.2221 167.7229-100.1823 155.2628-196.5188-1.0071-7.7859-2.0754-15.4682-3.3785-22.9125 .387-3.4213.7344-6.904.7344-10.4281 0-34.2294-18.8631-64.1173-46.711-79.9l22.1804-110.0094c4.0777-20.2403-16.6887-38.2293-37.3101-37.1594l-143.5116,7.4906c-25.8652-12.9229-55.2218-19.8763-85.7838-19.0937zm120.5967,41.8593h81.6709c14.4389,0 25.9996,11.5595 25.9996,25.9969v83.7187c-9.1481-3.0524-18.9238-4.7-29.0842-4.7-6.0772,0-11.8821.6335-17.6268,1.7625-6.8404-43.1825-29.3064-80.382-60.9594-106.7782zm-163.048,7.9312c58.8788-1.6258 128.3044,46.3124 174.5054,123.6688-18.2298,17.4767-28.2796,42.9052-24.8244,69.6187 .2184,1.6905.5628,3.3413.8814,4.9938 .007.0432-.007.0994 0,.1463 4.756,46.1983 43.6158,82.25 91.0718,82.25 23.5273,0 44.9994-8.9278 61.2531-23.5-3.7753,47.9649-23.6392,86.4447-58.756,103.6938-63.0403,30.965-152.8084-17.3872-209.9059-109.1281 15.4357-16.435 24.9714-38.5332 24.9714-62.8625 0-50.6679-40.9863-91.7969-91.6594-91.7969-25.7086,0-48.9862,10.563-65.6599,27.6125 1.2983-53.3177 21.4399-96.6788 59.3436-115.2969 8.5917-4.2202 17.7386-7.0021 27.1747-8.3718 3.8219-.5549 7.6791-.9198 11.6043-1.0282zm-47.8862,124.8438c21.6408,0 39.2197,17.5771 39.2197,39.2157s-17.5789,39.2156-39.2197,39.2156-39.2196-17.5771-39.2196-39.2156 17.5789-39.2157 39.2196-39.2157zm268.5151,0c21.6408,0 39.2196,17.5771 39.2196,39.2157s-17.5789,39.2156-39.2196,39.2156-39.0728-17.5771-39.0728-39.2156 17.4321-39.2157 39.0728-39.2157zm-285.995,149.6657c10.2423,3.9397 21.2908,6.1687 32.9034,6.1687 5.2147,0 10.1542-.632 15.1297-1.4687 8.1995,39.8661 29.8706,74.1836 59.6374,98.9937h-81.6709c-14.4388,0-25.9996-11.5595-25.9996-25.9968v-77.6969z"/></svg>

After

Width:  |  Height:  |  Size: 2.0 KiB

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="#fff" d="m115.7344,21-91.65,93.0938 73.5843,74.8259h-46.8531c0,0-29.8156,41.8681-29.8156,65.9111 0,.3769.1333.7835.147,1.1691-.0144.3856-.147.7922-.147,1.1692 0,24.043 29.8156,65.911 29.8156,65.911h46.8531l-73.5843,74.8259 91.65,93.0939 48.7625-49.5429c24.415,21.3517 56.4497,34.3439 91.5031,34.3439 35.0675,0 67.0844-12.9769 91.5031-34.3439l48.6157,49.5429 91.7969-93.0939-73.7313-74.8259h47c0,0 29.8156-41.868 29.8156-65.911 0-.3769-.1333-.7834-.147-1.1692 .0144-.3856.147-.792.147-1.1691 0-24.043-29.8156-65.9111-29.8156-65.9111h-47l73.7313-74.8259-91.7969-93.0938-48.6157,49.5429c-24.4187-21.367-56.4356-34.3439-91.5031-34.3439-35.0534,0-67.0881,12.9922-91.5031,34.3439l-48.7625-49.5429zm116.7656,36.3899 16.0094,105.37c-3.4741.7227-6.7788,1.8757-9.8406,3.5075l-36.5719-98.0628c9.4643-4.927 19.6375-8.6206 30.4031-10.8147zm46.8531,0c10.8176,2.1907 21.0443,5.8661 30.55,10.8147l-36.5719,98.0628c-3.0602-1.631-6.3684-2.7847-9.8406-3.5075l15.8624-105.37zm-176.1031,12.4223c19.6493,0 35.6906,15.8153 35.6906,35.3669s-16.0413,35.513-35.6906,35.513-35.5437-15.9615-35.5437-35.513 15.8944-35.3669 35.5437-35.3669zm305.5,0c19.6493,0 35.5437,15.8153 35.5437,35.3669s-15.8944,35.513-35.5437,35.513-35.5438-15.9615-35.5438-35.513 15.8945-35.3669 35.5438-35.3669zm-62.8625,27.1828c6.7096,8.044 12.2462,17.0872 16.5969,26.7444l-72.2626,60.5038c-1.4469-3.0944-3.2929-6.0443-5.4343-8.6226l61.1-78.6256zm-179.775.1463 61.1,78.4795c-2.1134,2.5443-3.9966,5.4284-5.4344,8.4763l-72.2625-60.3576c4.3354-9.6233 9.9184-18.5761 16.5969-26.5982zm-26.5844,68.8339 59.0437,23.6753h-57.7219c-.972-6.0287-1.4687-12.2588-1.4687-18.5603 0-1.7088.0735-3.4242.147-5.1151zm232.9438,0c.0735,1.6909.147,3.4062.147,5.1151 0,6.3014-.4965,12.5315-1.4688,18.5603h-57.575l58.8969-23.6753zm-251.0094,43.6971h134.5375 134.5375c25.5631,0 46.1188,20.136 46.1188,45.1586 0,.3928-.1369.7791-.147,1.1691 .007.3899.147.7768.147,1.1692 0,25.0226-20.5556,45.1586-46.1188,45.1586h-134.5375-134.5375c-25.5631,0-46.1187-20.136-46.1187-45.1586 0-.3928.1369-.7792.147-1.1692-.007-.3899-.147-.7766-.147-1.1691 0-25.0226 20.5556-45.1586 46.1187-45.1586zm24.2344,20.1679c-12.9355,1.2733-23.0594,11.9933-23.0594,24.9907 0,.3841-.0216.7896 0,1.1691-.0216.3798 0,.7852 0,1.1692 0,12.9974 10.1238,23.7174 23.0594,24.9906 .8623.0843 1.7585,0 2.6437,0h107.6594 107.6594c14.1633,0 25.7032-11.1268 25.7032-24.9906 0-.3841.0216-.7894 0-1.1692 .0216-.3798 0-.7852 0-1.1691 0-13.8639-11.5398-24.9907-25.7032-24.9907h-107.6594-107.6594c-.8852,0-1.7813-.0843-2.6437,0zm-4.8469,92.5094h57.575l-58.8969,23.6753c-.0735-1.6909-.1463-3.4062-.1463-5.1151 0-6.3014.4965-12.5315 1.4687-18.5603zm172.5781,0h57.7219c.9721,6.0287 1.4688,12.2588 1.4688,18.5603 0,1.7088-.0735,3.4242-.1463,5.1151l-59.0438-23.6753zm-91.65,5.5535c1.4469,3.0944 3.2929,5.8982 5.4344,8.4763l-61.1,78.6257c-6.6814-8.0103-12.2537-16.9875-16.5969-26.5983l72.2625-60.5037zm68.4437.1463 72.2626,60.2115c-4.3354,9.6232-9.9184,18.576-16.5969,26.5982l-61.1-78.4795c2.1134-2.5443 3.9966-5.2823 5.4343-8.3303zm-51.5531,17.8296c3.0603,1.6311 6.3684,2.7847 9.8406,3.5075l-15.8625,105.2239c-10.8176-2.1907-21.0442-5.8661-30.55-10.8147l36.5719-97.9167zm34.6625,0 36.5719,97.9167c-9.4643,4.927-19.6374,8.6206-30.4031,10.8147l-16.0093-105.2239c3.4741-.7226 6.7788-1.8755 9.8406-3.5074zm-170.0812,25.4291c19.6493,0 35.6906,15.8153 35.6906,35.3669s-16.0413,35.513-35.6906,35.513-35.5437-15.9615-35.5437-35.513 15.8944-35.3669 35.5437-35.3669zm305.5,0c19.6493,0 35.5437,15.8153 35.5437,35.3669s-15.8944,35.513-35.5437,35.513-35.5438-15.9615-35.5438-35.513 15.8945-35.3669 35.5438-35.3669z"/></svg>

After

Width:  |  Height:  |  Size: 3.6 KiB

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="#fff" d="m138.4597,52.3426-12.9078,48.3291c5.309.4232 10.4863,2.6436 14.5826,6.7398 8.5198,8.5199 9.082,21.9091 1.6271,31.0494-.497.6091-1.1148,1.0998-1.6826,1.6676-9.088,9.088-23.5911,9.1743-32.679.0865-4.1264-4.1264-6.292-9.4069-6.6992-14.7842l-48.3547,13.1087 12.8907,48.1089c.7907-.3792 1.6441-.6812 2.4784-.9683 4.2245-1.4552 9.0573-1.7275 13.7127-.4801 11.6384,3.1184 18.7916,14.5518 16.9056,26.1949-.1255.7762-.3949,1.5152-.603,2.291-3.3264,12.4143-15.9298,19.591-28.3441,16.2647-5.6035-1.5015-10.1113-4.8563-13.1281-9.259l-35.2584,35.305 35.305,35.2584c3.019-4.3779 7.4723-7.7821 13.0303-9.2713 11.6384-3.1185 23.6339,3.1174 27.8221,14.1437 .2793.7352.4005,1.4949.6084,2.2706 3.3264,12.4144-4.0001,25.1041-16.4144,28.4305-5.558,1.4893-11.1168.7678-15.9202-1.5141l-13.0878,48.2252 48.3671,13.0497c.4029-5.353 2.5997-10.6224 6.7018-14.7245 3.195-3.195 6.9801-5.3563 11.0842-6.3162 6.8404-1.5999 14.2525.0288 19.9652,4.6891 .6093.4974 1.0998,1.1145 1.6677,1.6826 9.0879,9.0878 9.1743,23.5911.0865,32.679-4.1264,4.1264-9.4068,6.2921-14.7842,6.6993l13.1087,48.3546 48.2508-12.9287c-2.336-4.8606-3.1006-10.5163-1.5903-16.1531 2.3389-8.7288 9.3096-14.9302 17.5735-16.7249 2.7546-.5983 5.7107-.6524 8.6215-.1802 .7762.1255 1.3732.4333 2.1491.6409 12.4143,3.3264 19.7329,15.8918 16.4066,28.3061-1.4835,5.5366-4.9397,9.9605-9.297,12.9862l35.343,35.4003 35.2584-35.305c-4.3779-3.019-7.7821-7.4724-9.2714-13.0303-3.1185-11.6385 3.1175-23.6338 14.1437-27.8221 .7351-.279 1.4948-.4008 2.2707-.6084 12.4143-3.3265 25.1041,4.0001 28.4305,16.4144 1.4893,5.5579.7678,11.1168-1.5141,15.9202l48.2252,13.0878 12.9078-48.3291c-5.3212-.4116-10.4804-2.6377-14.5826-6.7398-9.0878-9.0879-9.2124-23.733-.1246-32.8209 3.4079-3.4079 7.5692-5.5689 11.9737-6.4026 7.3407-1.3895 15.2053.7401 20.8853,6.42 4.1264,4.1264 6.324,9.3982 6.6992,14.7841l48.3547-13.1087-12.9288-48.2508c-4.8606,2.336-10.5163,3.1007-16.1531,1.5903-12.4142-3.3264-19.771-16.0337-16.4446-28.448 2.079-7.7589 7.8327-13.4462 14.9152-15.8605 4.2495-1.4486 8.9154-1.6896 13.5708-.4419 5.5367,1.4835 9.9606,4.9398 12.9863,9.297l35.4003-35.343-35.305-35.2584c-3.019,4.378-7.4723,7.7821-13.0303,9.2713-12.4143,3.3264-25.246-3.962-28.5724-16.3763s4.142-25.1422 16.5563-28.4685c5.558-1.4893 11.1168-.7678 15.9202,1.5141l13.0878-48.2252-48.329-12.9078c-.4114,5.3212-2.6378,10.4804-6.7399,14.5826-9.0879,9.0879-23.7331,9.2124-32.8209.1247s-9.0704-23.771.0187-32.8589c3.408-3.408 7.5876-5.5505 11.9737-6.4025 .9138-.1773 1.8458-.3727 2.7724-.4383l-13.0706-48.2128-48.2508,12.9288c2.368,4.852 3.1006,10.5163 1.5903,16.1531-3.3264,12.4143-16.0336,19.771-28.448,16.4446s-19.629-16.0717-16.3027-28.486c1.4993-5.5955 4.8729-10.107 9.259-13.1281l-35.305-35.2584-35.2584,35.305c4.3779,3.019 7.7821,7.4724 9.2714,13.0303 3.3264,12.4143-3.9621,25.246-16.3763,28.5724s-25.1421-4.142-28.4685-16.5563c-1.4893-5.558-.7678-11.1168 1.5141-15.9202l-48.2252-13.0877zm103.2306,69.077c4.6595-1.3693 9.538-2.0236 14.3639-2.0235 12.869-7e-05 25.7033,4.794 35.5642,14.655l86.2729,86.3975c19.7218,19.7219 19.7787,51.4472.0569,71.1691l-86.3975,86.2729c-19.7218,19.7219-51.4472,19.7787-71.169.0577l-86.2729-86.3975c-19.7218-19.7218-19.7787-51.4472-.057-71.169l86.3975-86.273c6.1631-6.1631 13.4751-10.4062 21.2409-12.6882zm-7.8836,63.1058c-30.4444,9.4663-52.6478,37.8848-52.6478,71.4498 0,41.3107 33.5065,74.8651 74.8172,74.8651s74.8651-33.5065 74.8651-74.8172-33.5065-74.8652-74.8172-74.8652c-7.7458,0-15.1918,1.1829-22.2174,3.3674z"/></svg>

After

Width:  |  Height:  |  Size: 3.4 KiB

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="#fff" d="m143.4937,21c-50.162,0-90.7687,39.7025-90.7687,89.0062v2.35h94.7344c13.5616,0 24.5282,13.3384 24.5282,29.9625s-10.9666,29.9625-24.5282,29.9625h-94.7344v15.7156h94.7344c13.5616,0 24.5282,13.4853 24.5282,30.1094s-10.9666,29.9625-24.5282,29.9625h-94.7344v15.7156h94.7344c13.5616,0 24.5282,13.3385 24.5282,29.9625s-10.9666,30.1093-24.5282,30.1093h-94.7344v15.7157h94.7344c13.5616,0 24.5282,13.3384 24.5282,29.9625s-10.9666,29.9625-24.5282,29.9625h-94.7344v40.0969h-14.5407v37.1594h-17.1843v14.2469h17.1843 435.7782 17.0375v-14.2469h-17.0375v-37.1594h-14.6875v-329.5875c0-49.3037-40.1662-89.0062-90.3281-89.0062s-90.6218,39.7025-90.6218,89.0062v2.35h92.9718c13.5616,0 24.5282,13.3384 24.5282,29.9625s-10.9666,29.9625-24.5282,29.9625h-92.9718v15.7156h92.9718c13.5616,0 24.5282,13.4853 24.5282,30.1094s-10.9666,29.9625-24.5282,29.9625h-92.9718v15.7156h92.9718c13.5616,0 24.5282,13.3385 24.5282,29.9625s-10.9666,30.1093-24.5282,30.1093h-92.9718v15.7157h92.9718c13.5616,0 24.5282,13.3384 24.5282,29.9625s-10.9666,29.9625-24.5282,29.9625h-92.9718v40.0969h-44.5032v-329.5875c0-49.3037-40.1662-89.0062-90.3281-89.0062z"/></svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="#fff" d="m227.2777,30.0703c-33.0796,0-61.3761,19.5743-74.073,47.8245-9.8682-8.6719-22.6242-14.0175-36.8304-14.0175h-39.4415c-31.0246,0-55.9327,25.0452-55.9327,56.0702v191.0233c0,30.2401 23.6706,54.578 53.5965,55.7953v88.7777h-42.8772v26.3859h448.561v-26.3859h-43.0144v-88.7777c29.9907-1.1483 53.7342-25.5095 53.7342-55.7953v-191.0233c0-31.025-24.9079-56.0702-55.9329-56.0702h-39.579c-14.1732,0-27.0025,5.2445-36.8303,13.8801-12.7726-28.1605-41.0583-47.6871-74.0733-47.6871h-57.3068zm8.1084,34.2193h41.0904c32.2986,0 58.2689,25.9702 58.2689,58.2689v159.6902h-157.6286v-159.6902c0-32.2988 25.9697-58.2689 58.2692-58.2689zm-152.8189,23.2251h28.3099c15.4069,0 28.5884,8.6404 35.3187,21.3012-.027.8701-.1369,1.7343-.1369,2.6111v95.7863h-103.6198v-79.5699c0-22.2498 17.8782-40.1287 40.1286-40.1287zm318.6928,0h28.1727c22.2495,0 40.1287,17.8789 40.1287,40.1287v79.5699h-103.6202v-95.7863c0-.8769-.1099-1.7411-.1362-2.6111 6.7301-12.6607 20.048-21.3012 35.4561-21.3012zm-145.2604,4.2603c-30.9129,0-55.9325,25.0196-55.9325,55.9327s25.0196,56.0702 55.9325,56.0702 55.9329-25.1571 55.9329-56.0702-25.0192-55.9327-55.9329-55.9327zm-159.2775,14.7046c-21.2952,0-38.4795,17.1843-38.4795,38.4795s17.1843,38.617 38.4795,38.617 38.4795-17.3218 38.4795-38.617-17.1843-38.4795-38.4795-38.4795zm318.5553,0c-21.2952,0-38.4795,17.1843-38.4795,38.4795s17.1843,38.617 38.4795,38.617c21.2948,0 38.7544-17.3218 38.7544-38.617s-17.4596-38.4795-38.7544-38.4795zm-372.8389,123.1344h103.6198v54.1462c-6.7754,12.5118-19.8847,21.0265-35.1813,21.0265h-28.3099c-22.2504,0-40.1286-17.8795-40.1286-40.1286v-35.0441zm323.5025,0h103.6202v35.0441c0,22.2491-17.8791,40.1286-40.1287,40.1286h-28.1727c-15.2973,0-28.543-8.5147-35.3189-21.0265v-54.1462zm-188.8243,75.1727h157.6286v16.6284c0,32.2986-25.9704,58.269-58.2689,58.269h-41.0904c-32.2995,0-58.2692-25.9704-58.2692-58.269v-16.6284zm-31.0585,53.5961v30.2339c0,26.1555 12.2777,49.2199 31.3333,64.0414 .505.356.9974.7551 1.5117,1.0994 11.6388,7.7821 25.5108,12.4828 40.5411,12.7805-15.5712,0-29.9898-4.0401-42.1903-10.9941h-58.6812v-88.7777c10.0946-.3958 19.4588-3.3735 27.4853-8.3833zm219.8828,0c7.9989,4.9953 17.2704,7.9879 27.3482,8.3833v88.7777h-58.5439c-12.2,6.954-26.6199,10.9941-42.1898,10.9941h-1.5119c15.2621,0 29.3619-4.5204 41.2281-12.2307 20.3603-14.723 33.6694-38.5349 33.6694-65.6905v-30.2339zm-147.596,46.3131h18.5524v35.0436h-18.5524v-35.0436zm28.3095,0h18.69v35.0436h-18.69v-35.0436zm28.3103,0h18.6901v35.0436h-18.6901v-35.0436z"/></svg>

After

Width:  |  Height:  |  Size: 2.5 KiB

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="#fff" d="m256,21c-83.6528,0-163.1292,8.0759-235,22.6188l6.3156,11.1625c70.4584-14.7018 147.6728-22.9125 228.6844-22.9125s158.2259,8.2107 228.6843,22.9125l6.3156-11.1625c-71.8709-14.5429-151.3472-22.6188-235-22.6188zm0,23.0594c-78.7468,0-153.6695,7.8024-222.5156,21.7375l66.0937,117.9406c8.9946-10.7 19.2474-20.4788 30.6969-29.0813-16.2549-16.8991-25.7319-29.6458-22.9124-32.1656 .2436-.2169.6176-.3834 1.0281-.4403 4.5067-.6392 18.8875,8.2679 37.1594,22.4718 6.5806-4.0413 13.4355-7.852 20.5625-11.1625-12.3813-22.335-18.826-38.7763-15.1282-40.6844 .2984-.1557.6155-.1881 1.0282-.147 4.83.4519 17.2006,13.7052 31.8718,33.6344 6.9415-2.4698 14.1375-4.5602 21.4438-6.3156-6.1043-26.0545-8.1131-45.0903-3.8188-46.1187 4.337-1.0386 13.6345,16.6066 23.0594,42.3 7.0532-1.0202 14.3052-1.5835 21.5907-1.9093 1.6107-27.2715 5.3214-46.7063 9.8406-46.7063s8.3768,19.4345 9.9874,46.7063c7.2853.3257 14.3907.8891 21.4438,1.9093 9.4249-25.6932 18.7224-43.3385 23.0594-42.3 4.2943,1.0284 2.4324,20.0641-3.6719,46.1187 7.3062,1.7555 14.3554,3.8458 21.2969,6.3156 14.6712-19.9291 27.1887-33.1821 32.0187-33.6344 .4129-.036.73-.007 1.0282.147 3.6979,1.9081-2.7468,18.3493-15.1282,40.6844 7.127,3.3106 13.9819,7.1212 20.5625,11.1625 16.6389-12.9335 30.0159-21.5201 35.6907-22.4718 1.1354-.191 1.863.002 2.35.4403 2.8195,2.5198-6.6575,15.2665-22.9124,32.1656 11.4496,8.6025 21.849,18.3817 30.8437,29.0813l66.0937-117.9406c-68.8461-13.9351-143.9157-21.7375-222.6624-21.7375zm0,107.5124c-70.6186,0-129.8829,42.5929-147.7563,100.6094 13.6274,9.7553 22.1781,24.5978 22.1781,41.4188 0,15.6174-7.4039,29.7379-19.3875,39.5093 20.6382,53.9722 77.5968,92.825 144.9656,92.825 67.3167,0 124.5404-38.771 145.2593-92.6782-12.0783-9.7766-19.8281-23.9681-19.8281-39.6562 0-16.8901 8.8948-31.8133 22.6187-41.5657-17.9571-57.9513-77.4832-100.4625-148.0499-100.4625zm-14.1001,57.4281v90.3281c0,7.8437 6.2563,14.2469 14.1001,14.2469s14.2469-6.4031 14.2469-14.2469v-90.3281c23.5026,2.6278 44.6514,11.804 61.3937,25.2625-1.5573.7812-3.1364,1.6312-4.7,2.4969-25.8126,14.291-42.1384,34.9268-36.5718,46.1187s30.8811,8.7098 56.6937-5.5812c4.5563-2.5225 8.7313-5.3931 12.6313-8.225 6.0234,12.3555 9.5469,25.8995 9.5469,40.2438 0,3.988-.2313,7.8836-.7344,11.75-19.5051,15.3184-62.5823,25.9968-112.5062,25.9968-49.7182,0-92.5948-10.6332-112.2126-25.8499-.5153-3.9188-.8812-7.853-.8812-11.8969 0-14.308 3.4141-27.9139 9.4-40.2438 3.9346,2.8571 8.1844,5.6817 12.7781,8.225 25.8126,14.291 51.1272,16.7731 56.6937,5.5812s-10.7592-31.8277-36.5718-46.1187c-1.5636-.8657-3.1427-1.7157-4.7-2.4969 16.7398-13.4574 37.875-22.648 61.3937-25.2625zm-170.9625,45.825c-23.9741,0-43.475,17.3486-43.475,38.775s19.5009,38.9218 43.475,38.9218 43.3281-17.4953 43.3281-38.9218-19.3539-38.775-43.3281-38.775zm370.2718,0c-23.9741,0-43.3281,17.3486-43.3281,38.775s19.354,38.9218 43.3281,38.9218 43.3281-17.4953 43.3281-38.9218-19.3539-38.775-43.3281-38.775zm-289.7843,93.2656c21.8756,12.5019 60.5168,20.8562 104.575,20.8562s82.6993-8.3543 104.5749-20.8562c-17.0363,36.5952-57.4304,62.275-104.5749,62.275-47.1473,0-87.5815-25.6764-104.575-62.275zm-1.4688,65.3594-44.65,65.5062c46.6095,7.7285 97.3815,12.0438 150.6938,12.0438s104.0842-4.3153 150.6937-12.0438l-44.7969-65.5062c-6.0895,5.934-13.1047,11.2384-20.8562,16.0094 11.0047,9.3723 17.4775,16.6681 15.5687,18.0656-.3293.2436-.8469.253-1.6156.1463-3.8419-.5275-12.9697-5.3114-24.2344-12.4844-4.4552,2.2413-9.1281,4.3327-13.9532,6.1688 8.3824,12.3872 12.7848,21.5605 10.2813,22.6188-.2018.0901-.3077.1694-.5873.147-3.27-.2508-11.8049-7.6003-21.7375-18.6532-4.6994,1.3698-9.4474,2.4047-14.3937,3.3781 4.1326,14.4501 5.4041,24.9859 2.4969,25.5563-2.9361.5758-9.1881-9.1035-15.5688-23.3531-4.7751.5657-9.6084.8475-14.5406,1.0281-1.0904,15.1251-3.6967,25.85-6.7562,25.85s-5.6658-10.725-6.7562-25.85c-4.9323-.1802-9.7656-.4627-14.5407-1.0281-6.3807,14.2497-12.7794,23.9292-15.7156,23.3531-2.9073-.57-1.4889-11.1063 2.6438-25.5563-4.9464-.9735-9.8412-2.0083-14.5407-3.3781-9.9325,11.0529-18.1738,18.4026-21.4437,18.6532-.2796.0216-.6789-.0576-.8812-.147-2.5034-1.0582 1.8989-10.2315 10.2812-22.6188-4.8251-1.836-9.498-3.9274-13.9531-6.1688-12.3702,7.8776-22.0646,12.8386-25.1157,12.4844-.2774-.036-.4223-.0288-.5873-.1463-1.9088-1.3975 4.5641-8.6933 15.5688-18.0656-7.7515-4.771-14.9137-10.0751-21.0032-16.0094z"/></svg>

After

Width:  |  Height:  |  Size: 4.3 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 6.2 KiB

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="#fff" d="m256,21c-93.914,0-175.0468,55.0583-212.675,134.6844 24.2953-4.53 50.3943-8.2612 77.8433-11.1625 32.0958-38.7974 80.5457-63.45 134.8317-63.45s102.7354,24.6526 134.8308,63.45c27.377,2.8996 53.4395,6.6392 77.6971,11.1625-37.6254-79.6261-118.6148-134.6844-212.5279-134.6844zm0,84.1594c-83.3117,0-150.8409,67.5287-150.8409,150.8406s67.5291,150.8407 150.8409,150.8407 150.8404-67.5288 150.8404-150.8407-67.5291-150.8406-150.8404-150.8406zm0,22.6187c19.568,0 38.1917,4.3521 54.7841,12.1907l-30.4033,52.7281c-7.575-2.9202-15.7732-4.5532-24.3808-4.5532s-16.8062,1.633-24.3817,4.5532l-30.4029-52.5813c16.6328-7.8857 35.1536-12.3375 54.7846-12.3375zm-72.9971,22.7657 30.4029,52.7281c-12.791,10.329-21.7117,25.1753-24.3808,42.1531h-60.8067c3.2148-39.2867 24.1472-73.6216 54.7846-94.8812zm145.9938,0c30.635,21.2583 51.5679,55.5978 54.7841,94.8812h-60.8058c-2.6696-16.9778-11.5902-31.8241-24.3817-42.1531l30.4034-52.7281zm-227.95,24.0875c-25.0943,3.2147-48.5355,7.1416-69.7659,11.75-6.8042,21.9862-10.2807,45.3965-10.2807,69.6187s3.4766,47.6325 10.2807,69.6188c21.2304,4.6085 44.6716,8.5352 69.7659,11.75-12.7915-24.3075-19.975-51.9939-19.975-81.3688s7.1835-57.0612 19.975-81.3687zm309.9063,0c12.7915,24.3075 19.975,51.9939 19.975,81.3687s-7.1835,57.0612-19.975,81.3688c25.0073-3.2112 48.4227-7.1451 69.6188-11.75 6.8027-21.9862 10.4283-45.3965 10.4283-69.6188s-3.6256-47.6326-10.4283-69.6187c-21.1961-4.6049-44.6115-8.5388-69.6188-11.75zm-282.7346,91.9437h60.8067c2.6588,16.9107 11.5235,31.8293 24.2341,42.1532l-30.2563,52.7281c-30.6374-21.2597-51.5697-55.5946-54.7846-94.8813zm194.7567,0h60.8058c-3.2163,39.2835-24.1491,73.623-54.7841,94.8813l-30.2562-52.7282c12.7107-10.3239 21.5753-25.2425 24.2346-42.1532zm-91.3567,52.7282c7.5754,2.9202 15.7737,4.5531 24.3817,4.5531s16.8058-1.6329 24.3808-4.5531l30.4033,52.7281c-16.5924,7.8385-35.2162,12.1906-54.7841,12.1906-19.631,0-38.1517-4.4518-54.7846-12.3375l30.4029-52.5813zm-188.2933,37.0125c37.6282,79.6261 118.761,134.6844 212.675,134.6844s174.9026-55.0583 212.5279-134.6844c-24.2576,4.5233-50.3205,8.263-77.6971,11.1625-32.0954,38.7974-80.5453,63.45-134.8308,63.45s-102.7359-24.6526-134.8317-63.45c-27.449-2.9013-53.5481-6.6325-77.8433-11.1625z"/></svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="#fff" d="m187.9976,20.9999-50.6721,80.0288h-50.6721c-22.0576,0-39.9505,14.494-39.9505,32.5821v61.5606c-14.8069,3.8924-25.7029,17.7326-25.7029,34.534v225.3718c0,19.8506 15.1556,35.9146 34.075,35.9229h85.9221 .1457 81.3697 12.4841 41.8597 7.4908 86.5096 .1456 85.9226c18.9171,0 34.075-16.0722 34.075-35.9229v-225.3718c0-16.749-10.8203-30.5912-25.5567-34.534v-61.5606c0-18.0881-17.7462-32.5821-39.8034-32.5821h-51.1125l-50.6726-80.0288-56.2529,85.1338v359.0034h-23.3533v-359.0034zm0,95.5688c18.5039,0 33.4875,15.5659 33.4875,34.8343s-14.9836,34.9844-33.4875,34.9844-33.3413-15.716-33.3413-34.9844 14.8365-34.8343 33.3413-34.8343zm135.8596,0c18.5039,0 33.488,15.5659 33.488,34.8343s-14.9841,34.9844-33.488,34.9844-33.4874-15.716-33.4874-34.9844 14.9831-34.8343 33.4874-34.8343zm-222.5164,12.8379h30.55v64.5636h-70.5005v-31.9815c0-18.088 17.8934-32.5821 39.9505-32.5821zm278.7702,0h30.8438c22.0567,0 39.8034,14.494 39.8034,32.5821v31.9815h-70.6471zm-263.0549,90.9896h14.8346v244.2905h-14.8346c-18.917,0-34.075-16.0347-34.075-35.8854v-172.67c0-19.8506 15.158-35.7351 34.075-35.7351zm263.0549,0h14.8341c18.9194,0 34.075,15.8845 34.075,35.7351v172.67c0,19.8507-15.1556,35.8854-34.075,35.8854h-14.8341zm-192.1135,28.6029c18.5039,0 33.4875,15.7161 33.4875,34.9845s-14.9836,34.8343-33.4875,34.8343-33.3413-15.5659-33.3413-34.8343 14.8365-34.9845 33.3413-34.9845zm135.8596,0c18.5039,0 33.488,15.7161 33.488,34.9845s-14.9841,34.8343-33.488,34.8343-33.4874-15.5659-33.4874-34.8343 14.9831-34.9845 33.4874-34.9845zm-135.8596,132.5805c18.5039,0 33.4875,15.5659 33.4875,34.8343s-14.9836,34.8343-33.4875,34.8343-33.3413-15.5659-33.3413-34.8343 14.8365-34.8343 33.3413-34.8343zm135.8596,0c18.5039,0 33.488,15.5659 33.488,34.8343s-14.9841,34.8343-33.488,34.8343-33.4874-15.5659-33.4874-34.8343 14.9831-34.8343 33.4874-34.8343z"/></svg>

After

Width:  |  Height:  |  Size: 1.8 KiB

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="#fff" d="m255.9999,21c-47.4963,0-86.0688,33.0231-86.0688,73.7313 0,.1903-.0009.3978 0,.5873 8.4393-14.5063 26.844-26.1349 50.0846-32.1657v69.4719c-26.8257,6.4211-50.4869,19.8543-68.0034,37.8938-19.5229-16.9206-35.2905-38.3801-45.678-63.0094-.4418,5.354-.7344,10.8181-.7344,16.3031 0,31.8658 7.6868,61.7663 20.8562,87.3907-3.0714,8.3718-5.4368,17.0809-6.3156,26.1438-36.2483-10.0255-69.6791-23.8389-99.1407-40.8313 26.6965,43.2067 65.3839,78.4945 111.4782,101.3438 12.6995,23.7463 34.2452,43.1277 60.8058,55.225-95.8205,13.2012-165.9684,55.9361-165.9684,106.4845 0,10.9585 3.2571,21.4365 9.4,31.4312 .9451-49.3125 77.2053-90.1983 177.8655-99.1406-38.2194,7.3228-65.0654,24.3758-65.0654,44.3563 0,26.6407 47.6736,48.3219 106.4843,48.3219s106.4842-21.6812 106.4842-48.3219c0-19.9805-26.8459-37.0335-65.0654-44.3563 100.6604,8.9423 176.9212,49.8281 177.8655,99.1406 6.1434-9.9948 9.4-20.4727 9.4-31.4312 0-50.5192-69.937-93.2569-165.6751-106.4845 26.4718-12.0973 47.8395-31.4787 60.5125-55.225 46.1488-22.8474 84.7607-58.0987 111.4784-101.3438-29.4977,17.0147-62.9856,30.8028-99.2875,40.8313-.8766-9.0447-2.813-17.791-5.875-26.1438 13.1722-25.6244 20.7092-55.5249 20.7092-87.3907 0-5.485-.1506-10.9492-.5874-16.3031-10.4171,24.698-26.3727,46.2144-45.9717,63.1563-17.4582-18.0011-40.8148-31.4287-67.5625-37.8937v-69.6188c23.1664,6.0426 41.2237,17.6922 49.6438,32.1657 .002-.1895 0-.3978 0-.5873 0-40.7082-38.5715-73.7313-86.0688-73.7313zm.1456,122.4938c45.2304,0 81.9567,36.1552 81.9567,80.6344 0,34.8798-22.5012,64.4418-54.05,75.6406 7.1718-12.3427 11.6029-29.3406 11.6029-48.175 0-37.6688-17.7678-68.2969-39.6562-68.2969s-39.5092,30.6281-39.5092,68.2969c0,18.7459 4.1962,35.6995 11.3091,48.0281-31.2874-11.334-53.4625-40.7985-53.4625-75.4938 0-44.4792 36.5811-80.6344 81.8092-80.6344zm-.1456,282.7345c33.6778,0 60.9534,10.5779 60.9534,23.6469s-27.2755,23.6469-60.9534,23.6469-60.9534-10.5779-60.9534-23.6469 27.2755-23.6469 60.9534-23.6469z"/></svg>

After

Width:  |  Height:  |  Size: 2.0 KiB

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="#fff" d="m40.2404,21 356.1721,28.2001c35.5099,3.5756 61.6043,27.0637 64.4779,60.3656l28.7875,363.075c.902-4.0293 1.3221-8.3444 1.3221-12.6313v-378.6437c0-33.4102-28.764-60.3656-64.4779-60.3656h-386.2817zm-17.9182,18.3594c-.902,4.0293-1.3221,8.3445-1.3221,12.6313v378.6437c0,33.4103 28.764,60.3656 64.4779,60.3656h386.2817l-356.0251-28.2001c-35.5099-3.5756-61.7514-27.0637-64.625-60.3656l-28.7875-363.075zm233.6779,14.5406c-51.7315,0-103.4508,19.7315-142.9096,59.1907-78.9182,78.9183-78.9182,206.9005 0,285.8187s206.901,78.9183 285.8192,0 78.9182-206.9004 0-285.8187c-39.4593-39.4591-91.1781-59.1906-142.9096-59.1907zm32.7529,26.8781c38.5865.1319 75.0063,13.3186 102.0783,40.3906 61.8788,61.8791 51.6695,172.4626-22.7659,246.8969-74.4334,74.4343-185.0173,84.6448-246.8966,22.7656s-51.6695-172.3157 22.7659-246.75c41.869-41.8692 95.2074-63.472 144.8183-63.3031zm-32.7529,39.6563c-34.6861,7e-05-69.3053,13.3458-95.7626,39.8031-52.9145,52.9147-52.9145,138.6103 0,191.5249s138.6105,52.9147 191.525,0 52.9145-138.6103 0-191.5249c-26.4573-26.4574-61.0765-39.8032-95.7625-39.8031zm-22.0313,18.0656c33.2642-.1132 69.0115,14.3735 97.0841,42.4469 49.9084,49.9082 56.7642,123.8912 15.275,165.3813s-115.4734,34.78-165.3808-15.1282-56.7642-124.0381-15.275-165.5281c18.1519-18.1518 42.425-27.0838 68.2966-27.1719zm22.0313,44.0625c-18.8165,0-37.4943,7.2384-51.8471,21.5907-28.7048,28.7045-28.7048,75.1361 0,103.8406s74.9899,28.7046 103.6942,0 28.7048-75.1361 0-103.8406c-14.3514-14.3523-33.0307-21.5907-51.8471-21.5907zm11.8971,9.6938c14.0351.0504 27.3127,4.8407 37.1592,14.6875 22.5069,22.507 18.7013,62.6671-8.3716,89.7407s-67.2339,30.8789-89.7409,8.3719-18.7013-62.6671 8.3716-89.7407c15.2294-15.2289 34.5366-23.1208 52.5817-23.0594zm-11.8971,25.4094c-21.205,0-38.3346,17.1292-38.3346,38.3344s17.1296,38.3343 38.3346,38.3343c21.205,0 38.3346-17.1292 38.3346-38.3343s-17.1296-38.3344-38.3346-38.3344z"/></svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="#fff" d="m243.5608,495.721c-70.0559-.8487-137.1015-8.7687-199.3304-22.6308-3.2915-24.0388-6.3647-48.7475-8.9924-74.037h100.7143c24.2357,34.6434 63.0913,58.2908 107.6085,62.0472v34.6206zm24.8788,0v-34.6206c44.4865-3.76 83.2226-27.4283 107.4583-62.0472h100.8644c-2.6276,25.2895-5.7009,49.9982-8.9923,74.037-62.229,13.8621-129.2726,21.7821-199.3304,22.6308zm-12.4397-66.993c-62.6328,0-113.4532-50.8175-113.4532-113.4535s50.8205-113.4535 113.4532-113.4535c62.6381,0 113.3036,50.8175 113.3036,113.4535s-50.6655,113.4535-113.3036,113.4535zm0-24.7289c26.1934,0 47.3597-25.9634 47.3597-57.8508s-21.1664-57.7009-47.3597-57.7009-47.3597,25.8136-47.3597,57.7009 21.1668,57.8508 47.3597,57.8508zm-223.7594-35.8195c-2.8699-31.4435-5.2501-63.7091-7.0442-96.6678h90.9728c-4.3053,13.7932-6.5944,28.5516-6.5944,43.7628 0,18.6648 3.524,36.4898 9.8916,52.905h-87.2258zm360.1438,0c6.3685-16.4206 10.0412-34.2329 10.0412-52.905 0-15.2105-2.2896-29.9702-6.5944-43.7628h90.9723c-1.7903,32.9587-4.1739,65.2243-7.0438,96.6678h-87.3754zm-368.6862-127.5415c-1.3712-31.6641-2.2311-64.0805-2.5481-96.8176h469.7003c-.3162,32.7371-1.1793,65.1535-2.5476,96.8176h-106.41c-25.5042-42.9866-72.2793-71.7889-125.8928-71.7889-53.615,0-100.5368,28.7945-126.0425,71.7889h-106.2594zm-2.6982-127.5415c0-23.2545.35-46.1987.8997-68.9413 33.6093-8.4093 68.8027-14.9491 105.21-19.6332v88.5746h-106.1097zm130.8389,0v-91.4222c33.8524-3.4813 68.6291-5.3954 104.1611-5.3954 35.4826,0 70.2051,1.9241 104.012,5.3954v91.4222h-208.1731zm233.0514,0v-88.5746c36.4097,4.6841 71.5988,11.224 105.2109,19.6332 .5449,22.7426.8844,45.6868.8988,68.9413h-106.1097z"/></svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 22 KiB

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="#fff" d="m256,21c-129.7863,0-235,105.2131-235,235 0,30.4523 5.9084,59.5106 16.45,86.2156 16.4552-3.0814 33.5016-5.8968 51.2596-8.0781 31.3222-3.8476 61.4835-5.7986 89.0063-6.0219 82.5677-.6688 142.2784,14.1921 145.4063,39.6563 3.8897,31.6636-81.2019,68.4631-194.3154,85.775 36.661,23.6438 80.3254,37.4531 127.1933,37.4531 129.7886,0 235-105.2131 235-235 0-25.2711-4.0744-49.597-11.4558-72.4094-22.6248-.7553-46.6771-2.6754-71.5283-5.7282-125.2884-15.3901-223.4563-55.3479-219.2842-89.3 3.1264-25.4641 62.9852-40.3253 145.5529-39.6563 11.2673.0915 23.0826.4929 35.1029,1.175-33.6078-18.5385-72.2893-29.0813-113.3875-29.0813zm-191.0842,194.7563h54.05c9.6895,0 17.4784,6.8481 17.4784,15.275v39.5094c0,8.4268-7.7889,15.1281-17.4784,15.1281h-54.05c-9.6886,0-17.3312-6.7013-17.3312-15.1281v-39.5094c0-8.4268 7.6427-15.275 17.3312-15.275zm109.275,0h54.05c9.6895,0 17.625,6.8481 17.625,15.275v39.5094c0,8.4268-7.9355,15.1281-17.625,15.1281h-54.05c-9.6886,0-17.3313-6.7013-17.3313-15.1281v-39.5094c0-8.4268 7.6427-15.275 17.3313-15.275zm109.275,0h54.05c9.6895,0 17.625,6.8481 17.625,15.275v39.5094c0,8.4268-7.9355,15.1281-17.625,15.1281h-54.05c-9.6886,0-17.3313-6.7013-17.3313-15.1281v-39.5094c0-8.4268 7.6427-15.275 17.3313-15.275zm109.5688,0h54.05c9.6895,0 17.3312,6.8481 17.3312,15.275v39.5094c0,8.4268-7.6417,15.1281-17.3312,15.1281h-54.05c-9.6896,0-17.4779-6.7013-17.4779-15.1281v-39.5094c0-8.4268 7.7883-15.275 17.4779-15.275z"/></svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="#fff" d="m121.4625,21c-36.2845,0-67.3049,60.9301-80.0471,147.3156 9.697-12.6282 21.6806-20.1219 34.5159-20.1219 7.1445,0 13.7781,2.5382 20.1216,6.7562-3.2397-.7748-6.4602-1.175-9.8404-1.175-36.0537,0-65.2125,45.8025-65.2125,102.225s29.1588,102.225 65.2125,102.225c3.3802,0 6.6007-.3992 9.8404-1.175-6.3262,4.2001-13.0026,6.6094-20.1216,6.6094-12.8352,0-24.8184-7.4794-34.5159-20.1219 12.7549,86.3562 43.7824,147.4625 80.0471,147.4625 25.5469,0 48.5501-30.3326 64.3313-78.4313-15.7234-12.1947-29.4497-28.3592-40.3909-47.4406 26.3971,37.5767 66.1337,61.5407 110.5971,61.5407 44.1589,0 83.6121-23.673 110.0096-60.8062-10.8955,18.7514-24.4146,34.6769-39.95,46.7062 15.8197,48.0951 38.7886,78.4313 64.3308,78.4313 36.308,0 67.2786-61.248 80.0471-147.7563-9.7478,12.7955-21.5974,20.4156-34.5154,20.4156-7.1214,0-13.9378-2.4093-20.2692-6.6094 3.2449.776 6.6073,1.175 9.9875,1.175 36.0546,0 65.3596-45.8025 65.3596-102.225s-29.305-102.225-65.3596-102.225c-3.3803,0-6.7422.4-9.9875,1.175 6.3502-4.2181 13.1224-6.7562 20.2692-6.7562 12.9184,0 24.7676,7.6345 34.5154,20.4156-12.7549-86.5377-43.7199-147.6093-80.0471-147.6093-25.5426,0-48.511,30.2677-64.3308,78.2844 15.7229,12.1577 29.4389,28.2482 40.3904,47.2938-16.6201-23.5644-38.5856-41.6192-63.5971-51.8469 .0468,1.5499.1457,3.1296.1457,4.7 0,36.8964-12.4968,68.2737-30.1096,80.7813 12.3925-11.8126 20.8567-36.0195 20.8567-64.1844 0-39.7345-16.8612-71.9688-37.7471-71.9688s-37.7471,32.2343-37.7471,71.9688c0,28.1649 8.4642,52.3718 20.8567,64.1844-17.6128-12.5076-30.1096-43.8849-30.1096-80.7813 0-1.6195.0987-3.2493.1457-4.8469-25.1253,10.2685-47.0827,28.5697-63.7442,52.2875 10.9411-19.0815 24.6674-35.2459 40.3908-47.4406-15.7826-48.0971-38.7614-78.4312-64.3312-78.4312zm27.9063,162.7375c-29.7331,18.151-48.3216,43.8225-48.3216,72.2625s18.5885,54.1115 48.3216,72.2625c-34.0994-17.5804-55.6659-43.4122-55.6659-72.2625s21.5664-54.682 55.6659-72.2625zm213.2625,0c34.0994,17.5804 55.6658,43.4123 55.6658,72.2625s-21.5664,54.6821-55.6658,72.2625c29.7331-18.151 48.3216-43.8224 48.3216-72.2625s-18.5885-54.1115-48.3216-72.2625zm-106.6313,47.2938c60.6206,0 109.7154,21.9103 109.7154,48.9094s-49.0948,48.9094-109.7154,48.9094-109.7154-21.9103-109.7154-48.9094 49.0948-48.9094 109.7154-48.9094z"/></svg>

After

Width:  |  Height:  |  Size: 2.3 KiB

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="#fff" d="m96.2,21c-16.8979,0-30.4033,18.7524-30.4033,42.1532v81.9562h60.9533v-81.9562c0-23.4008-13.654-42.1532-30.55-42.1532zm79.9,0c-16.8979,0-30.4034,18.7524-30.4034,42.1532v81.9562h60.9534v-81.9562c0-23.4008-13.654-42.1532-30.55-42.1532zm79.9,0c-16.8979,0-30.55,18.7524-30.55,42.1532v81.9562h60.9529v-81.9562c0-23.4008-13.5073-42.1532-30.4029-42.1532zm79.9,0c-16.8979,0-30.55,18.7524-30.55,42.1532v81.9562h60.9529v-81.9562c0-23.4008-13.5073-42.1532-30.4029-42.1532zm79.7529,0c-16.8965,0-30.4028,18.7524-30.4028,42.1532v81.9562h60.9528v-81.9562c0-23.4008-13.6535-42.1532-30.55-42.1532zm-370.8596,138.9437c-13.1858,0-23.7932,10.6066-23.7932,23.7937v144.525c0,13.1871 10.6074,23.7937 23.7932,23.7937h422.4125c13.1882,0 23.7943-10.6066 23.7943-23.7937v-144.525c0-13.1871-10.606-23.7937-23.7943-23.7937h-422.4125zm40.2443,17.1844h341.925c10.6728,0 19.2403,8.6917 19.2403,19.5344v118.675c0,10.8428-8.5676,19.5344-19.2403,19.5344h-341.925c-10.6741,0-19.2409-8.6916-19.2409-19.5344v-118.675c0-10.8427 8.5667-19.5344 19.2409-19.5344zm53.1683,26.4375c-28.9576,0-52.2875,23.3302-52.2875,52.2875s23.3299,52.5812 52.2875,52.5812 52.4346-23.624 52.4346-52.5812-23.4765-52.2875-52.4346-52.2875zm117.6471,0c-28.9572,0-52.2875,23.3302-52.2875,52.2875s23.3303,52.5812 52.2875,52.5812 52.5813-23.624 52.5813-52.5812-23.6237-52.2875-52.5813-52.2875zm117.7938,0c-28.9576,0-52.2875,23.3302-52.2875,52.2875s23.3299,52.5812 52.2875,52.5812 52.4341-23.624 52.4341-52.5812-23.4765-52.2875-52.4341-52.2875zm-307.85,163.3251v81.9562c0,23.4007 13.505,42.1531 30.4033,42.1531s30.55-18.7524 30.55-42.1531v-81.9562h-60.9533zm79.9,0v81.9562c0,23.4007 13.505,42.1531 30.4034,42.1531s30.55-18.7524 30.55-42.1531v-81.9562h-60.9534zm79.7534,0v81.9562c0,23.4007 13.6521,42.1531 30.55,42.1531s30.4029-18.7524 30.4029-42.1531v-81.9562h-60.9529zm79.9,0v81.9562c0,23.4007 13.6521,42.1531 30.55,42.1531s30.4029-18.7524 30.4029-42.1531v-81.9562h-60.9529zm79.9,0v81.9562c0,23.4007 13.5064,42.1531 30.4028,42.1531s30.55-18.7524 30.55-42.1531v-81.9562h-60.9528z"/></svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="#fff" d="m210.287,20.9997c-95.5558,18.4904-170.817,93.7559-189.287,189.3473h163.1009c25.3227,0 45.638,20.1723 45.638,45.5032s-20.3153,45.8027-45.638,45.8027h-163.1009c18.4701,95.5914 93.7312,170.8569 189.287,189.3473v-163.1531c0-25.3307 20.3153-45.6529 45.6384-45.6529s45.7875,20.3222 45.7875,45.6529v163.1531c95.5553-18.4904 170.8174-93.7559 189.2871-189.3473h-162.9511c-25.3227,0-45.7879-20.4717-45.7879-45.8027s20.4652-45.5032 45.7879-45.5032h162.9511c-18.4696-95.5914-93.7312-170.8569-189.2866-189.3473v162.8537c0,25.3307-20.4652,45.8026-45.7879,45.8026s-45.6384-20.4719-45.6384-45.8026v-162.8537z"/></svg>

After

Width:  |  Height:  |  Size: 684 B

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="#fff" d="m21,21c0,85.0552 45.1233,159.5271 112.8,200.7782 11.7998-42.2279 44.8672-75.5397 86.95-87.6844v-113.0938h-199.75zm270.25,0v113.0938c42.0829,12.1447 75.1502,45.4565 86.95,87.6844 67.6767-41.251 112.8-115.7229 112.8-200.7782h-199.75zm-35.25,166.8501c-37.6381,0-68.1501,30.5118-68.1501,68.15s30.5119,68.15 68.1501,68.15 68.15-30.5118 68.15-68.15-30.5119-68.15-68.15-68.15zm-122.2001,102.3718c-67.6766,41.251-112.8,115.7229-112.8,200.7781h199.75v-113.0937c-42.0828-12.1447-75.1502-45.4565-86.95-87.6844zm244.4001,0c-11.7998,42.2279-44.8671,75.5397-86.95,87.6844v113.0937h199.75c0-85.0552-45.1232-159.5271-112.8-200.7781z"/></svg>

After

Width:  |  Height:  |  Size: 708 B

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="#fff" d="m167.875,21c-24.8127,0-45.5975,18.9868-50.9433,44.3562h-2.2494c-25.4646,0-45.9153,22.6998-45.9153,50.9656v3.6719h-8.7326c-3.4409,10.6928-6.4837,21.7527-9.1302,33.0469-.9227-.3603-1.9637-.5873-2.9112-.5873-14.8919,0-26.9931,46.3351-26.9931,103.5469s12.1011,103.5468 26.9931,103.5468c.9475,0 1.9885-.2277 2.9112-.5873 2.6475,11.2936 5.6926,22.3509 9.1302,33.0471h8.7326v3.6717c0,28.2658 20.4506,50.9658 45.9153,50.9658h2.2494c5.3458,25.3688 26.1306,44.3558 50.9433,44.3558 24.8164,0 45.6285-18.9828 50.9433-44.3558h74.3634c5.3152,25.373 26.1273,44.3558 50.9433,44.3558 24.8136,0 45.4937-18.987 50.8107-44.3558h2.3819c25.4646,0 45.9153-22.7 45.9153-50.9658v-3.6717h8.7326c3.4376-10.6948 6.4827-21.753 9.1302-33.0471 .9593.3906 1.9247.5873 2.9112.5873 14.8924,0 26.9931-46.335 26.9931-103.5468s-12.1006-103.5469-26.9931-103.5469c-.9865,0-1.9519.1967-2.9112.5873-2.6466-11.2946-5.6893-22.3549-9.1302-33.0469h-8.7326v-3.6719c0-28.2658-20.4506-50.9656-45.9153-50.9656h-2.3819c-5.3171-25.3695-25.9971-44.3562-50.8107-44.3562-24.816,0-45.6281,18.9823-50.9433,44.3562h-74.3634c-5.3148-25.3739-26.1268-44.3562-50.9433-44.3562zm6.8808,29.0813c14.2198,0 25.9346,12.8572 25.9346,28.6406s-11.7148,28.6407-25.9346,28.6407-25.5379-12.8572-25.5379-28.6407 11.3195-28.6406 25.5379-28.6406zm162.3559,0c14.2189,0 25.8025,12.8572 25.8025,28.6406s-11.5836,28.6407-25.8025,28.6407-25.8021-12.8572-25.8021-28.6407 11.5822-28.6406 25.8021-28.6406zm-117.1028,30.9906h71.9823c1.3973,30.17 24.1918,54.1969 52.1338,54.1969 27.4936,0 49.9526-23.2426 52.0017-52.7281 16.0068,4.5067 28.2165,19.1271 30.9626,37.4531h-16.1426c-13.2911,25.2999-38.2199,42.3-66.8218,42.3s-53.532-17.0002-66.8218-42.3h-42.7389c-13.2897,25.2915-38.0931,42.3-66.6893,42.3s-53.532-17.0002-66.8218-42.3h-16.1426c2.7392-18.2793 14.8825-32.9067 30.8306-37.4531 2.0595,29.4856 24.6412,52.7281 52.1338,52.7281 27.9433,0 50.7365-24.0269 52.1338-54.1969zm21.5688,100.7562v148.3437c-7.6521-.0288-15.1914-.0764-22.7593-.147v-148.05c7.5675-.0721 15.1072-.1196 22.7593-.147zm28.8448,0c7.6098.0288 15.0992.0764 22.6272.1463v148.0499c-7.528.0721-15.0174.1196-22.6272.147v-148.3437zm-80.4504.4403v147.4624c-7.6783-.1276-15.1805-.271-22.7588-.4403v-146.5812c7.5783-.1694 15.0805-.3135 22.7588-.4403zm132.056,0c7.637.1268 15.0865.2724 22.6263.4403v146.5812c-7.5398.1686-14.9893.3142-22.6263.4403v-147.4625zm-183.528,1.175v145.1125c-7.7098-.2299-15.1721-.6097-22.7588-.8812v-143.35c7.5867-.2717 15.0489-.6515 22.7588-.8812zm235,0c7.7418.2306 15.274.6082 22.8913.8812v143.35c-7.6173.2731-15.1495.6508-22.8913.8812v-145.1125zm-286.472,1.9094v141.2937c-11.1781-.4864-22.1629-1.0553-33.0805-1.6156-4.2873-18.3516-7.0129-42.4556-7.0129-69.0313s2.7256-50.6797 7.0129-69.0312c10.9176-.5607 21.9024-1.1292 33.0805-1.6157zm338.0766,0c11.1832.4864 22.1666,1.0533 33.08,1.6156 4.2878,18.3516 6.8808,42.4556 6.8808,69.0312s-2.593,50.6797-6.8808,69.0313c-10.9134.5621-21.8969,1.1288-33.08,1.6156v-141.2937zm-257.2295,164.3536c28.5967,0 53.3995,17.0088 66.6893,42.3h42.7389c13.2897-25.2996 38.2219-42.3 66.8218-42.3s53.5307,17.0003 66.8218,42.3h16.1426c-2.7462,18.3253-14.9558,32.9461-30.9626,37.4529-2.0492-29.4854-24.5081-52.7278-52.0017-52.7278-27.942,0-50.7365,24.0264-52.1338,54.1966h-71.9823c-1.3973-30.1702-24.1905-54.1966-52.1338-54.1966-27.4926,0-50.0743,23.2424-52.1338,52.7278-15.9481-4.5463-28.0914-19.1746-30.8306-37.4529h16.1426c13.2897-25.2996 38.2223-42.3 66.8218-42.3zm6.8808,54.9307c14.2198,0 25.9346,12.7103 25.9346,28.4942s-11.7148,28.6404-25.9346,28.6404-25.5379-12.8568-25.5379-28.6404 11.3195-28.4942 25.5379-28.4942zm162.3559,0c14.2189,0 25.8025,12.7103 25.8025,28.4942s-11.5836,28.6404-25.8025,28.6404-25.8021-12.8568-25.8021-28.6404 11.5832-28.4942 25.8021-28.4942z"/></svg>

After

Width:  |  Height:  |  Size: 3.7 KiB

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="#fff" d="m255.9285,21.0001c-51.6352,0-95.771,53.5334-114.1236,129.3097-22.4871-4.0324-46.0807,2.1065-66.0942,17.8672-17.4496,13.7735-31.929,34.4875-41.4197,58.901-9.4766,24.4066-13.9252,52.3005-13.2183,80.0995 1.543,55.6314 23.8643,108.9891 57.7222,142.6341 26.4642,26.3765 59.2769,40.9629 92.8264,41.1853 2.2362.0144 4.5153-.036 6.7563-.1513 27.2487-1.4565 54.0881-12.3856 77.551-31.7975 23.4445,19.374 50.3295,30.3424 77.551,31.7975 35.8544,1.8456 71.3535-12.8983 99.5822-41.0341 33.8584-33.645 56.3258-87.0027 57.8693-142.6341 .7077-27.7989-4.0364-55.6928-13.5125-80.0994-9.4874-24.4135-23.8219-45.1276-41.2726-58.901-20.0004-15.75-43.6029-21.8832-66.0942-17.8672-18.3531-75.7708-62.4907-129.3097-114.1231-129.3097zm0,64.2006c18.6566,0 33.7813,15.1117 33.7813,33.7659s-15.1246,33.9173-33.7813,33.9173-33.7818-15.2631-33.7818-33.9173 15.1256-33.7659 33.7818-33.7659zm-123.6702,71.62c2.6418-.0843 5.2851.098 7.9312.3027-4.3574,19.931-6.9959,41.189-7.4904,63.4436 15.9927,11.4847 30.5547,37.9791 36.7188,70.7115 5.6367,29.924 2.9178,57.673-5.7284,75.1026 16.136,30.5125 37.6893,52.9779 61.9822,63.2922-15.0818,11.4218-31.9652,18.6545-49.3505,21.0471-5.3815.753-10.8419,1.1057-16.3038.908-23.6603-.8513-47.5608-10.5875-67.7097-28.163-29.4539-25.7738-51.6027-69.8052-54.9322-117.6509-1.7315-23.9799.987-48.7335 8.3726-71.0144 7.3696-22.2722 19.5318-42.3362 34.8091-56.1756 15.0222-13.6433 33.2083-21.2137 51.701-21.804zm247.3403.1513c18.4762.6191 36.7131,8.0406 51.7005,21.6526 15.2768,13.8395 27.2906,33.9033 34.663,56.1756 7.3837,22.2809 10.1045,47.0345 8.3716,71.0144-3.3281,47.8457-25.4797,91.8772-54.9312,117.6509-21.7004,18.9269-47.6134,28.7129-72.9981,28.163-3.6265-.0778-7.2808-.4057-10.8688-.908-17.3227-2.3845-34.2715-9.5439-49.3509-20.896 24.4456-10.3603 45.817-33.081 61.9822-63.8973-8.4538-17.4592-11.0168-45.0046-5.4346-74.6486 6.1321-32.5563 20.3877-58.9761 36.2789-70.5601-.4857-22.3144-2.9718-43.6104-7.3442-63.5949 2.6404-.1989 5.2922-.24 7.9317-.1513zm-123.6702,8.7822c23.4403,0 42.4476,18.9593 42.4476,42.3966s-19.0073,42.3967-42.4476,42.3967-42.4476-18.9594-42.4476-42.3967 19.0078-42.3966 42.4476-42.3966zm-133.5115,70.4087c-16.9948.945-29.0681,33.466-27.025,72.5285s17.374,69.9915 34.3697,69.0457c16.9948-.9449 29.2157-33.4657 27.1717-72.5283s-17.5206-69.991-34.5163-69.0459zm267.0225,0c-16.9956-.9451-32.3262,29.9834-34.3697,69.0459s10.0302,71.5834 27.0254,72.5283c16.9953.9458 32.4728-29.9833 34.5163-69.0457s-10.1773-71.5835-27.1721-72.5285zm-133.511,27.5578c26.7886,0 48.6158,21.6677 48.6158,48.4533s-21.8273,48.6044-48.6158,48.6044-48.4692-21.819-48.4692-48.6044 21.6806-48.4533 48.4692-48.4533z"/></svg>

After

Width:  |  Height:  |  Size: 2.6 KiB

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="#fff" d="m149.2159,490.9841c-1.68-.0187-3.3389-.1782-4.994-.2919-28.9644-2.0529-54.896-14.2796-74.9104-31.9846-11.4043-10.1217-20.8324-21.9477-28.0547-34.3214s-12.439-25.2261-15.7165-38.1187c-4.0695-16.0962-5.1244-31.8544-4.2596-46.1514s3.763-27.2232 7.6379-38.4108c4.3705-12.5783 9.9156-22.8342 15.5696-30.9623s11.3506-14.2213 16.304-18.5482 9.1137-6.9427 12.1913-8.3248 5.1849-1.5341 5.8753-.5842 .0735,2.9649-1.4688,5.988-4.048,7.1186-7.0504,12.4141-6.5436,11.9307-9.8411,19.8626-6.4117,17.138-8.3724,27.7492c-1.7542,9.4313-2.5368,19.9528-1.9095,31.1084s2.6258,22.934 6.7566,34.4674c3.294,9.2479 7.983,18.492 13.9539,27.019s13.2681,16.3314 21.7387,22.7836c14.822,11.3456 33.8183,18.7192 53.4655,18.9864 17.9594.2947 37.1187-5.4052 53.0249-16.9417 12.8709-9.2785 23.892-22.7226 31.2861-38.4108-7.3488-24.4956-9.0103-51.2775-4.1128-77.5518 1-5.3127 2.153-10.6032 3.6721-15.7733-4.6074-9.5318-10.4491-18.3079-17.3322-25.5585-10.9894-12.0338-26.1316-20.9762-42.1555-30.086-16.8676-9.2757-35.2933-18.4282-53.0248-30.6702-18.9689-12.7931-36.1904-30.5287-47.884-52.8696-6.0615-11.8715-10.0622-25.058-11.4568-38.7029-1.4593-14.2856.3755-28.6803 5.2877-41.916 7.0413-18.2014 19.2172-31.8912 33.1956-40.3094 15.0836-9.032 31.2749-12.211 46.1213-10.9536 16.4257,1.4085 30.7534,7.5063 42.4492,15.6272 3.6524,2.5368 7.1366,5.2224 10.2819,8.0326 15.0224-16.27 36.5517-26.5808 60.5158-26.5808 24.0386,0 45.6344,10.3684 60.6627,26.7269 3.1505-2.8345 6.4535-5.6217 10.1349-8.1787 11.6958-8.1209 26.1705-14.2187 42.5961-15.6272 14.8465-1.2574 30.8908,1.9216 45.9744,10.9536 13.9785,8.4182 26.1543,22.108 33.1957,40.3094 4.9124,13.2356 6.8939,27.6304 5.4347,41.916-1.3947,13.6449-5.3954,26.8314-11.457,38.7029-11.6934,22.3408-29.0619,40.0764-48.0307,52.8696-17.7315,12.2421-36.0104,21.3945-52.8779,30.6702-16.0238,9.1098-31.166,18.0522-42.1555,30.086-6.9307,7.3007-12.8583,16.0948-17.4791,25.7045-.0216.0425.0216.1038 0,.1457 1.4804,5.0743 2.8381,10.2701 3.819,15.4811 4.8975,26.2743 3.2361,53.0563-4.1128,77.5518 7.3942,15.6881 18.4151,29.1322 31.2862,38.4108 15.9061,11.5364 34.9184,17.2367 52.8779,16.9417 19.6472-.2674 38.7903-7.6408 53.6123-18.9863 8.4706-6.4523 15.7678-14.2566 21.7387-22.7836s10.513-17.771 13.807-27.019c4.1308-11.5335 6.2762-23.3119 6.9035-34.4674s-.1549-21.6771-1.9095-31.1084c-1.9605-10.6112-5.2217-19.8173-8.5192-27.7492s-6.6919-14.5672-9.6942-19.8626-5.5061-9.391-7.0505-12.4141-2.1592-5.0381-1.4687-5.988 2.6507-.7979 5.7283.5842 7.238,3.9978 12.1914,8.3248 10.7968,10.4201 16.4509,18.5482 11.199,18.384 15.5695,30.9623c3.8751,11.1876 6.6263,24.1138 7.4911,38.4108s-.1895,30.0551-4.2596,46.1514c-3.2775,12.8926-8.4942,25.7449-15.7164,38.1187s-16.5035,24.1997-27.9079,34.3214c-20.0145,17.705-45.946,29.9317-74.9104,31.9846-26.4811,1.8258-54.5168-5.0666-79.17-21.6152-12.074-8.1382-23.1781-18.5082-32.6081-30.6702-9.4434,12.1963-20.6549,22.5143-32.755,30.6702-21.5716,14.4801-45.5938,21.588-69.035,21.9073-1.6744.0238-3.4609.0187-5.1409,0zm-7.9317-87.3371c-34.5823,0-62.7191-27.8309-62.7191-62.2167s28.1368-62.3627 62.7191-62.3627 62.5722,27.9769 62.5722,62.3627-27.99,62.2167-62.5722,62.2167zm229.5783,0c-34.5823,0-62.7191-27.8309-62.7191-62.2167s28.1368-62.3627 62.7191-62.3627 62.5722,27.9769 62.5722,62.3627-27.9899,62.2167-62.5722,62.2167zm-114.8626-31.1083c5.0432,0 9.1068-13.9155 9.1068-31.1084s-4.0636-31.1084-9.1068-31.1084-9.1068,13.9155-9.1068,31.1084 4.0636,31.1084 9.1068,31.1084zm0-128.8149c3.3085-4.3031 6.7122-8.41 10.4287-12.2681 17.4092-17.6164 36.6217-29.2705 54.4936-38.4108 18.5048-9.7693 35.6945-17.523 49.9402-26.8729 14.8187-10.0213 27.4192-20.9604 34.3707-34.0293 3.7538-6.7696 6.5035-13.8327 7.4909-20.7389 1.024-7.1376.7306-14.4377-1.175-20.4468-2.3521-8.3128-8.1848-15.7925-14.9821-20.8849-7.4235-5.6045-16.9582-8.4341-25.9982-8.7629-10.1015-.3769-20.1222,2.6624-28.936,7.1564-3.1006,1.5819-5.9995,3.4348-8.813,5.4038 3.4191,8.987 5.4348,18.7399 5.4348,28.9176 0,45.1314-36.8653,81.6411-82.2546,81.6411s-82.2546-36.5098-82.2546-81.6411c0-10.1777 2.0156-19.9306 5.4347-28.9176-2.7843-1.9425-5.6012-3.8402-8.6661-5.4038-8.8138-4.494-18.8345-7.5336-28.936-7.1564-9.04.329-18.5747,3.1584-25.9983,8.7629-6.7972,5.0925-12.63,12.5721-14.982,20.8849-1.9057,6.0091-2.199,13.3093-1.1751,20.4468 .9876,6.9062 3.7372,13.9693 7.491,20.7389 6.9515,13.0689 19.552,24.0081 34.3707,34.0293 14.2456,9.3499 31.4355,17.1036 49.9402,26.8729 17.8719,9.1403 36.9376,20.7944 54.3467,38.4108 3.6951,3.8357 7.1369,7.9922 10.4288,12.2681zm0-77.4057c20.8934,0 37.8958-16.9058 37.8958-37.6805s-17.0024-37.5345-37.8958-37.5345-37.8959,16.7597-37.8959,37.5345 17.0024,37.6805 37.8959,37.6805z"/></svg>

After

Width:  |  Height:  |  Size: 4.6 KiB

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="#fff" d="m144.2282,21.0001c-68.1947,0-123.2282,54.8865-123.2282,123.0813v43.3281h19.2406c6.7287,0 12.1906,5.8208 12.1906,13.0719v49.35c0,7.2511-5.4619,12.925-12.1906,12.925h-19.2406v27.9062h19.2406c6.7287,0 12.1906,5.6739 12.1906,12.925v49.4968c0,7.2512-5.4619,12.925-12.1906,12.925h-19.2406v1.9096c0,68.1947 55.0333,123.0808 123.2282,123.0808h223.6906c68.1948,0 123.0812-54.8861 123.0812-123.0808v-1.9096h-19.2406c-6.7287,0-12.1906-5.6738-12.1906-12.925v-49.4968c0-7.2511 5.4619-12.925 12.1906-12.925h19.2406v-27.9062h-19.2406c-6.7287,0-12.1906-5.6739-12.1906-12.925v-49.35c0-7.2511 5.4619-13.0719 12.1906-13.0719h19.2406v-43.3281c0-68.1947-54.8865-123.0813-123.0812-123.0813h-45.2375-133.2156-45.2375zm-8.8125,23.6469c-12.0307,13.0493-19.3875,30.4259-19.3875,49.6438v133.3625c0,40.6331 32.8043,73.4375 73.4375,73.4375h133.2156c40.6331,0 73.2906-32.8044 73.2906-73.4375v-133.3625c0-19.2334-7.3602-36.5911-19.3875-49.6438 32.8581,14.1689 55.8125,46.8827 55.8125,85.0406v167.8782c0,28.9831-13.1785,54.7629-33.9281,71.675 3.394,7.0533 5.4344,14.8271 5.4344,23.2063 0,26.9911-19.7978,49.2692-45.6782,53.1688 13.2485-7.8462 22.0313-22.3467 22.0313-38.9217 0-25.003-20.0881-45.0908-45.0906-45.0908h-158.3313c-25.0024,0-45.0907,20.0878-45.0907,45.0908 0,16.575 8.7828,31.0755 22.0313,38.9217-25.8804-3.8996-45.6782-26.1776-45.6782-53.1688 0-8.4266 2.004-16.2695 5.4344-23.3529-20.6996-16.9143-33.9281-42.6188-33.9281-71.5283v-167.8782c0-38.115 22.9721-70.8461 55.8125-85.0406zm70.6468,9.4h100.0219c30.5003,0 55.0781,24.5779 55.0781,55.0781v104.2813c0,30.5003-24.5778,55.0781-55.0781,55.0781h-100.0219c-30.5002,0-55.225-24.5778-55.225-55.0781v-104.2813c0-30.5002 24.7248-55.0781 55.225-55.0781zm49.9375,29.0812c-42.6153,0-77.1094,34.4941-77.1094,77.1094s34.4941,77.2563 77.1094,77.2563 77.1094-34.6409 77.1094-77.2563-34.4941-77.1094-77.1094-77.1094zm0,31.4313c25.2535,0 45.6782,20.4245 45.6782,45.6781s-20.4246,45.825-45.6782,45.825-45.6781-20.5715-45.6781-45.825 20.4246-45.6781 45.6781-45.6781zm-62.1281,261.4375h124.2563c6.7288,0 12.1906,5.4619 12.1906,12.1904s-5.4618,12.1909-12.1906,12.1909h-124.2563c-6.7288,0-12.1907-5.4619-12.1907-12.1909s5.4619-12.1904 12.1907-12.1904z"/></svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 9.4 KiB

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="#fff" d="m256,21c-102.2815,0-190.9789,55.171-235,136.0063 57.3298-50.356 141.3855-82.25 235-82.25 93.7272,0 177.6655,32.0823 235,82.5438-43.9785-80.9589-132.6227-136.3-235-136.3zm0,98.9938c-78.5341,0-146.709,31.9504-180.5094,78.725 44.0191-29.1381 108.63-47.5875 180.5094-47.5875 71.9658,0 136.4867,18.5353 180.5093,47.7344-33.7676-46.8462-101.9016-78.8719-180.5093-78.8719zm-62.1282,62.7156c-28.4595,0-51.5531,23.0936-51.5531,51.5531 0,2.3906.2724,4.7459.5873,7.05 3.4583-25.1005 24.9144-44.5031 50.9656-44.5031s47.5073,19.4026 50.9656,44.5031c.3149-2.3041.5873-4.6594.5873-7.05 0-28.4595-23.0936-51.5531-51.5531-51.5531zm124.2563,0c-28.4595,0-51.5531,23.0936-51.5531,51.5531 0,2.3906.2724,4.7459.5873,7.05 3.4583-25.1005 24.9144-44.5031 50.9656-44.5031s47.5074,19.4026 50.9657,44.5031c.3149-2.3041.5873-4.6594.5873-7.05 0-28.4595-23.0936-51.5531-51.5531-51.5531zm-115.7375,27.7594c-17.3526,0-31.1375,13.9317-31.1375,31.2844v55.6656c0,17.3526 13.7849,31.2844 31.1375,31.2844s31.4312-13.9317 31.4312-31.2844v-55.6656c0-17.3526-14.0785-31.2844-31.4312-31.2844zm107.2188,0c-17.3527,0-31.4313,13.9317-31.4313,31.2844v55.6656c0,17.3526 14.0786,31.2844 31.4313,31.2844s31.1375-13.9317 31.1375-31.2844v-55.6656c0-17.3526-13.7849-31.2844-31.1375-31.2844zm-107.2188,10.575c11.7186,0 21.4437,9.5783 21.4437,21.2969s-9.7251,21.15-21.4437,21.15-21.15-9.4314-21.15-21.15 9.4314-21.2969 21.15-21.2969zm107.2188,0c11.7185,0 21.15,9.5783 21.15,21.2969s-9.4315,21.15-21.15,21.15-21.1501-9.4314-21.1501-21.15 9.4315-21.2969 21.1501-21.2969zm126.8999,91.9437c-44.0226,29.1992-108.5435,47.7346-180.5093,47.7346-71.8794,0-136.4903-18.4499-180.5094-47.5877 33.8004,46.7742 101.9753,78.8719 180.5094,78.8719 78.6077,0 146.7417-32.1724 180.5093-79.0187zm54.4907,41.5654c-57.3345,50.4616-141.2728,82.5442-235,82.5442-93.6145,0-177.6703-31.8942-235-82.25 44.0211,80.8344 132.7185,136.1529 235,136.1529 102.3773,0 191.0215-55.4882 235-136.4471z"/></svg>

After

Width:  |  Height:  |  Size: 2.0 KiB

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="#fff" d="m43.0316,491c-4.4158,0-8.4547-1.4945-11.8968-3.8187-1.0229-.6904-2.0412-1.3496-2.9376-2.203-.2054-.1874-.3884-.3935-.5874-.5881-.1931-.1982-.4007-.382-.5881-.5874-.8566-.8932-1.5127-1.9148-2.203-2.9377-2.3242-3.4422-3.8187-7.481-3.8187-11.8969v-1.0281-54.1968l.0001-81.6625c8e-05-10.8124 8.0519-19.8189 18.8-21.7375l-.0002,138.9437c0,12.6659 10.2464,22.9124 22.9124,22.9124l138.9433-.0002c-1.9186,10.7481-10.925,18.8-21.7375,18.8001h-81.5153l-54.3436,8e-05-1.028,7e-05zm212.9681-.0002c-14.9942,0-27.1717-12.1776-27.1717-27.1719s12.1777-27.1719 27.1719-27.1719 27.1717,12.1776 27.1717,27.1718-12.1776,27.1719-27.1719,27.172zm75.9342-.0001c-10.8123,0-19.6982-8.0519-21.5905-18.8l138.9433-.0003c12.666,7e-05 22.9125-10.2464 22.9125-22.9124l.0001-138.9437c10.748,1.9184 18.8,10.9251 18.8,21.7374l-.0002,81.6625v54.1969 1.0282c-.0001,4.4158-1.4945,8.4547-3.8188,11.8968-.6904,1.0229-1.3496,2.0412-2.2031,2.9377-.1448.1513-.2918.2926-.4403.4403-.4345.4439-1.0036.766-1.469,1.1748-.6457.5412-1.2058,1.1419-1.9095,1.6154-.09.0649-.2018.0858-.2941.147-2.4504,1.6611-5.2401,2.829-8.225,3.3781-1.2626.2321-2.494.4403-3.8187.4403h-.8816l-54.1967,7e-05-81.8091,7e-05zm-258.9398-30.256c-11.9963,0-21.7375-9.7412-21.7374-21.7375l.0002-129.1032h47.1467c12.7967,0 23.0593,9.9829 23.0595,22.1779l-7e-05,58.4562 58.456-7e-05c12.1952,0 22.1781,10.4099 22.1781,23.2062v47.0001l-129.1029.0001zm236.9086-.0003 .0001-47.0001c0-12.7964 9.8361-23.2062 22.0313-23.2062l58.6029-.0002v-58.4563c0-12.1951 10.4098-22.1781 23.2062-22.1781l47-.0001-.0003,129.1032c0,11.9963-9.7412,21.7375-21.7374,21.7375l-129.1028.0002zm-53.9028-36.1312c-7.1026,0-12.9251-5.8224-12.9251-12.925s5.8225-12.7781 12.9252-12.7781 12.9249,5.6756 12.9251,12.778-5.8226,12.925-12.925,12.925zm0-40.0968c-9.298,0-18.5784-3.5973-25.703-10.7219l-92.0902-92.0905c-14.2491-14.2492-14.2491-37.157 0-51.4062l92.0905-92.091c14.2492-14.249 37.1569-14.249 51.406-4e-05l92.0903,92.0907c14.2492,14.2492 14.2492,37.157 0,51.4062l-92.0906,92.0908c-7.1245,7.1246-16.405,10.7219-25.703,10.7219zm-23.6466-82.8375 47.2936-.0002c12.2351,6e-05 22.0311-9.796 22.0311-22.0312l.0001-47.2938c0-12.2352-9.796-22.0313-22.0312-22.0313l-47.2935.0001c-12.2352,5e-05-22.0313,9.7962-22.0313,22.0313l-.0001,47.2937c0,12.2352 9.7961,22.0313 22.0313,22.0313zm-184.1808-18.506c-14.9943-.0001-27.1717-12.1776-27.1717-27.1718s12.1775-27.1719 27.1718-27.172 27.1718,12.1776 27.1717,27.1718-12.1773,27.1718-27.1718,27.172zm207.8276-.0003c-14.9944,0-27.1718-12.1775-27.1718-27.1718s12.1775-27.1719 27.1718-27.1719 27.1718,12.1775 27.1717,27.1719-12.1775,27.1718-27.1717,27.1719zm207.8274-.0003c-14.9942,0-27.1717-12.1775-27.1718-27.1718s12.1777-27.1719 27.1719-27.1719 27.1718,12.1776 27.1717,27.1718-12.1775,27.1719-27.1718,27.1719zm-363.6613-14.2464c-7.1027,0-12.7781-5.8224-12.778-12.9251s5.6755-12.925 12.778-12.9251 12.9249,5.8225 12.925,12.925-5.8223,12.925-12.925,12.925zm311.5208-.0004c-7.1024-4e-05-12.778-5.8224-12.7779-12.9251s5.6756-12.925 12.778-12.9251 12.9249,5.8224 12.9249,12.925-5.8225,12.925-12.925,12.9251zm-360.43-66.8277 .0002-129.1033c0-11.9963 9.7413-21.7375 21.7375-21.7375l129.1027-.0002v47.1472c-7e-05,12.7966-9.983,23.0596-22.178,23.0597l-58.4561,4e-05-7e-05,58.6029c0,12.1952-10.2627,22.0313-23.0593,22.0313l-47.1468,5e-05zm362.4864-.0005c-12.7963,0-23.2062-9.836-23.2061-22.0312v-58.6029l-58.6029,5e-05c-12.1951,0-22.0311-10.2629-22.0311-23.0596l.0001-47.147 129.1027-.0003c11.9962,0 21.7374,9.7412 21.7374,21.7375l-.0002,129.1033-46.9999,5e-05zm-374.3833-.4399c-10.5371-2.0494-18.3592-10.9199-18.3592-21.5906v-81.6626l.0002-54.3437v-.8816c0-1.3245.209-2.5563.4403-3.8188 .5491-2.985 1.717-5.7749 3.3782-8.225 .5232-.7717 1.1455-1.501 1.7628-2.2031 .3639-.4281.6349-.9185 1.0277-1.322 .1982-.1946.3827-.4005.5881-.5872 .8931-.8566 1.9148-1.5101 2.9377-2.2032 3.4423-2.3218 7.4811-3.8183 11.8969-3.8183h1.0281l54.3435-9e-05h81.5154c10.8124-.0001 19.8189,8.0514 21.7374,18.7999l-138.9433.0002c-12.6659-9e-05-22.9124,10.2455-22.9124,22.9125l-.0002,138.9435c-.1412-.0238-.3012.0238-.4403,0zm432.8394-.0007 .0002-138.9435c0-12.6669-10.2465-22.9125-22.9124-22.9125l-138.9433.0003c1.8923-10.7485 10.7781-18.8 21.5906-18.8l81.8091-.0002h54.1967 .8816c1.3246,5e-05 2.5562.2082 3.8187.4404 2.9849.5491 5.7747,1.7192 8.2249,3.3778 .091.0641.2018.0865.2941.1467 1.1248.7869 2.2652,1.6604 3.2311,2.6437l.1471.1467c1.0061,1.0428 1.8443,2.1523 2.6438,3.3784 1.661,2.4504 2.8289,5.24 3.378,8.225 .2321,1.2625.4404,2.4943.4404,3.8187v.8817l-.0002,54.3437v81.6626c0,10.8124-8.052,19.6983-18.7999,21.5906zm-216.1992-88.5652c-7.1026,0-12.925-5.8224-12.925-12.9251s5.8225-12.7779 12.925-12.7779 12.9249,5.6752 12.9249,12.7779-5.8225,12.9251-12.925,12.9251zm9e-05-37.7472c-14.9943,0-27.1718-12.1772-27.1718-27.1715s12.1776-27.1716 27.1718-27.1718 27.1718,12.1772 27.1718,27.1717-12.1776,27.1716-27.1718,27.1716z"/></svg>

After

Width:  |  Height:  |  Size: 4.8 KiB

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="#fff" d="m256,21.0001c-129.787,0-235,105.2131-235,235s105.2131,234.9997 235,234.9997 235-105.2128 235-234.9997-105.2131-235-235-235zm0,38.6281c44.6717,0 85.8324,14.9876 118.8219,40.0969l-33.6344,33.6344c-24.1492-16.8102-53.5224-26.5844-85.1875-26.5844s-61.0383,9.7742-85.1876,26.5844l-33.6344-33.6344c32.9894-25.1093 74.1502-40.0969 118.8219-40.0969zm-156.2751,77.55 33.6344,33.6344c-16.8102,24.1492-26.5844,53.5224-26.5844,85.1876s9.7742,61.0383 26.5844,85.1872l-33.6344,33.6347c-25.1093-33.0189-40.0969-74.1503-40.0969-118.8219s14.9876-85.8325 40.0969-118.8219zm312.5501,0c25.1093,32.9895 40.0969,74.1502 40.0969,118.8219s-14.9876,85.8029-40.0969,118.8219l-33.6344-33.6347c16.8102-24.1489 26.5844-53.522 26.5844-85.1872s-9.7742-61.0383-26.5844-85.1876l33.6344-33.6344zm-156.275,13.2188c58.3488,0 105.6031,47.2543 105.6031,105.6032s-47.2542,105.7498-105.6031,105.7498-105.6032-47.401-105.6032-105.7498 47.2542-105.6032 105.6032-105.6032zm0,51.2594c-29.9886,0-54.3438,24.3552-54.3438,54.3438s24.3551,54.3438 54.3438,54.3438 54.3437-24.3552 54.3437-54.3438-24.3552-54.3438-54.3437-54.3438zm-85.1876,176.9844c24.1492,16.81 53.5224,26.5841 85.1876,26.5841s61.0382-9.7741 85.1875-26.5841l33.7812,33.7812c-33.0026,25.175-74.2615,40.0971-118.9687,40.0971s-85.9662-14.9221-118.9688-40.0971l33.7812-33.7812z"/></svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="#fff" d="m100.4594,21c-43.8449,0-79.4594,33.3633-79.4594,74.3187 0,31.3387 20.8144,58.174 50.2313,69.0313v62.5687c0,.2477-.005.4885 0,.7344h-9.2531c-15.6733,0-28.2001,12.6736-28.2001,28.3469s12.5267,28.3469 28.2001,28.3469h9.2531c-.005.2458 0,.4868 0,.7344v62.7159c-29.4168,10.857-50.2313,37.5455-50.2313,68.8841 0,40.9553 35.6145,74.3187 79.4594,74.3187s79.4593-33.3634 79.4593-74.3187c0-31.3387-20.9603-58.0271-50.3781-68.8841v-62.7159c0-.2477.005-.4885 0-.7344h65.6532c-11.6382,12.9417-18.6532,29.6753-18.6532,47.881 0,31.3401 20.9612,58.0271 50.3781,68.8846v62.7154c0,15.0922 12.7781,27.1721 28.9344,27.1721s29.2281-12.0799 29.2281-27.1721v-62.7154c29.4169-10.8575 50.378-37.5445 50.378-68.8846 0-18.2057-7.0973-34.9393-18.7999-47.881h65.6531v.7344 62.7159c-29.417,10.857-50.2313,37.5455-50.2313,68.8841 0,40.9553 35.6145,74.3187 79.4594,74.3187s79.4594-33.3634 79.4594-74.3187c0-31.3387-20.9611-58.0271-50.3781-68.8841v-62.7159-.7344h9.3999c15.6734,0 28.2001-12.6736 28.2001-28.3469s-12.5267-28.3469-28.2001-28.3469h-9.3999v-.7344-62.5687c29.417-10.8573 50.3781-37.6926 50.3781-69.0313 0-40.9555-35.6145-74.3187-79.4594-74.3187s-79.4594,33.3633-79.4594,74.3187c0,31.3387 20.8143,58.174 50.2313,69.0313v62.5687 .7344h-65.6531c11.7026-12.9095 18.7999-29.5279 18.7999-47.7344 0-31.3387-20.9611-58.0271-50.378-68.8844v-62.8625c0-15.0916-13.0719-27.1719-29.2281-27.1719s-28.9344,12.0802-28.9344,27.1719v62.8625c-29.417,10.8573-50.3781,37.5457-50.3781,68.8844 0,18.2064 7.015,34.8249 18.6532,47.7344h-65.6532c.005-.2458 0-.4868 0-.7344v-62.5687c29.4178-10.8573 50.3781-37.6926 50.3781-69.0313 0-40.9555-35.6145-74.3187-79.4593-74.3187zm-28.2,35.6907c21.3077,0 38.6281,17.3205 38.6281,38.6281s-17.3204,38.4813-38.6281,38.4813-38.4813-17.1736-38.4813-38.4813 17.1736-38.6281 38.4813-38.6281zm367.1875,0c21.3076,0 38.6281,17.3205 38.6281,38.6281s-17.3205,38.4813-38.6281,38.4813-38.4813-17.1736-38.4813-38.4813 17.1737-38.6281 38.4813-38.6281zm-183.4469,102.8125c21.3077,0 38.6281,17.3205 38.6281,38.6281s-17.3204,38.4813-38.6281,38.4813-38.6282-17.1736-38.6282-38.4813 17.3205-38.6281 38.6282-38.6281zm0,115.7375c21.3077,0 38.6281,17.3205 38.6281,38.6281s-17.3204,38.4813-38.6281,38.4813-38.6282-17.1738-38.6282-38.4813 17.3205-38.6281 38.6282-38.6281zm-183.7406,102.9594c21.3077,0 38.6281,17.3204 38.6281,38.6279s-17.3204,38.4817-38.6281,38.4817-38.4813-17.1738-38.4813-38.4817 17.1736-38.6279 38.4813-38.6279zm367.1875,0c21.3076,0 38.6281,17.3204 38.6281,38.6279s-17.3205,38.4817-38.6281,38.4817-38.4813-17.1738-38.4813-38.4817 17.1737-38.6279 38.4813-38.6279z"/></svg>

After

Width:  |  Height:  |  Size: 2.6 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 6.5 KiB

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="#fff" d="m21,21v120.7313 103.8407h111.1844 68.2971v20.8562h-68.2971-111.1844v103.8409 120.7308h111.1844v-120.7308h68.2971 111.0376 68.2967v120.7308h111.1842v-120.7308-103.8409h-111.1842-68.2967v-20.8562h68.2967 111.1842v-103.8407-120.7313h-111.1842v120.7313h-68.2967-111.0376-68.2971v-120.7313h-111.1844zm139.2373,0v90.0344h191.3785v-90.0344h-191.3785zm0,379.9658v90.0342h191.3785v-90.0342h-191.3785z"/></svg>

After

Width:  |  Height:  |  Size: 483 B

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="#fff" d="m255.9996,20.9998c-64.0471,0-123.7054,11.1396-174.1933,30.4032 42.5627,9.362 97.1785,16.1072 156.8627,18.5063-65.7977-.4207-126.9636-3.8678-178.4531-9.5469-13.9421,6.3105-27.0964,13.3075-39.2159,20.8563 0,0 156.604,9.4 234.9996,9.4s235.0004-9.4 235.0004-9.4c-59.6482-37.1512-142.8327-60.2188-235.0004-60.2188zm-197.6935,79.0189c.9729,45.967 20.5938,94.674 52.1403,133.6564 38.1874-15.9698 89.3916-25.7032 145.5532-25.7032s107.2195,9.7334 145.407,25.7032c31.5069-38.9817 51.0225-87.6911 51.994-133.6564 0,0-131.6242,9.4-197.5473,9.4s-197.5472-9.4-197.5472-9.4zm109.4218,33.1938c14.9943,0 27.1721,12.178 27.1721,27.1719s-12.1778,27.1719-27.1721,27.1719-27.172-12.178-27.172-27.1719 12.1771-27.1719 27.172-27.1719zm88.2717,0c14.995,0 27.1721,12.178 27.1721,27.1719s-12.1771,27.1719-27.1721,27.1719c-14.9935,0-27.1713-12.178-27.1713-27.1719s12.1778-27.1719 27.1713-27.1719zm88.1254,0c14.9935,0 27.1721,12.178 27.1721,27.1719s-12.1786,27.1719-27.1721,27.1719-27.025-12.178-27.025-27.1719 12.0308-27.1719 27.025-27.1719zm-88.1254,89.8876c-62.9106,0-113.975,14.7491-113.975,32.9s51.0644,32.9001 113.975,32.9001 113.9758-14.7491 113.9758-32.9001-51.0644-32.9-113.9758-32.9zm-145.5532,55.2251c-31.5465,38.9824-51.1674,87.6892-52.1403,133.6566 0,0 131.6227-9.4 197.5472-9.4s197.5473,9.4 197.5473,9.4c-.9715-45.9656-20.4871-94.675-51.994-133.6566-38.1875,15.9697-89.2446,25.7032-145.407,25.7032s-107.3658-9.7334-145.5532-25.7032zm57.2815,46.4126c14.9943,0 27.1721,12.178 27.1721,27.1719s-12.1778,27.025-27.1721,27.025-27.172-12.0311-27.172-27.025 12.1771-27.1719 27.172-27.1719zm88.2717,0c14.995,0 27.1721,12.178 27.1721,27.1719s-12.1771,27.025-27.1721,27.025c-14.9935,0-27.1713-12.0311-27.1713-27.025s12.1778-27.1719 27.1713-27.1719zm88.1254,0c14.9935,0 27.1721,12.178 27.1721,27.1719s-12.1786,27.025-27.1721,27.025-27.025-12.0311-27.025-27.025 12.0308-27.1719 27.025-27.1719zm-88.1254,96.6441c-78.3956,0-234.9996,9.4-234.9996,9.4 59.6482,37.1512 142.8327,60.2183 234.9996,60.2183 64.0479,0 123.7062-11.1395 174.1941-30.403-42.5627-9.3619-97.0322-16.254-156.715-18.6529 65.7963.4209 126.8159,4.0143 178.3054,9.6933 13.9421-6.3102 27.0964-13.3071 39.2159-20.8558 0,0-156.604-9.4-235.0004-9.4z"/></svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="#fff" d="m256,21.0001c-33.4146,0-64.9629,8.4741-93.1187,23.5 1.7756,4.8026 2.7904,10.0023 2.7904,15.4219 0,24.5532-19.9496,44.5031-44.5029,44.5031-8.4764,0-16.3175-2.4928-23.0596-6.6094-7.8297,9.4362-15.0766,19.5149-21.4433,30.2563h89.1529c8.0821-44.703 43.0896-78.8538 85.6279-81.2219 1.5726-.0872 2.9658,0 4.5534,0 44.6547,0 81.812,34.9105 90.1813,81.2219h89.3c-6.3783-10.7594-13.591-20.8065-21.4437-30.2563-6.7408,4.1166-14.5832,6.6094-23.0592,6.6094-24.5542,0-44.5033-19.9499-44.5033-44.5031 0-5.4196 1.0143-10.6193 2.7909-15.4219-28.1869-15.0302-59.847-23.5-93.2659-23.5zm-134.8313,7.6375c-17.2988,0-31.2846,13.9855-31.2846,31.2844s13.9858,31.2843 31.2846,31.2843 31.2846-13.9855 31.2846-31.2843-13.9858-31.2844-31.2846-31.2844zm269.8096,0c-17.2993,0-31.2846,13.9855-31.2846,31.2844s13.9848,31.2843 31.2846,31.2843 31.2841-13.9855 31.2841-31.2843-13.9857-31.2844-31.2841-31.2844zm-134.9784,37.3062c-34.9624,0-64.0864,26.4624-72.1159,62.1282h144.3784c-8.028-35.6658-37.3001-62.1282-72.2625-62.1282zm-170.2284,80.3406c-4.2145,7.8625-7.8631,16.0802-11.1625,24.5281-31.3401,12.9493-53.6091,46.2302-53.6091,85.1876 0,38.8932 22.2032,72.0618 53.4624,85.0406 3.283,8.4412 6.9687,16.669 11.1625,24.5283h27.1716c-19.6709-31.0661-31.1375-68.8542-31.1375-109.5689 0-40.843 11.5023-78.6487 31.2846-109.7157zm313.1375,0c19.8749,31.0776 31.5784,68.848 31.5784,109.7157 0,40.7099-11.5484,78.5053-31.2842,109.5689h27.3183c4.2009-7.8593 7.8805-16.0872 11.1625-24.5283 31.2611-12.9788 53.3159-46.1475 53.3159-85.0406 0-39.0059-22.2085-72.2729-53.6092-85.1876-3.3149-8.4474-6.9376-16.6658-11.1625-24.5281zm-158.4779,8.5137c-11.216,0-20.4153,9.8634-20.4153,22.1781v188.5927h71.8216v-188.5927c0-12.3148-8.907-22.1781-20.1217-22.1781zm-83.7187,50.525c-11.2124,0-20.4159,9.8633-20.4159,22.1781v138.0678h71.9692v-138.0678c0-12.3148-9.0555-22.1781-20.2692-22.1781zm167.4375,0c-11.2118,0-20.4158,9.8633-20.4158,22.1781v138.0678h71.9692v-138.0678c0-12.3148-9.0555-22.1781-20.2692-22.1781zm-247.4841,178.6051c6.3662,10.7413 13.614,20.8201 21.4433,30.2563 6.7426-4.1167 14.5832-6.6097 23.0596-6.6097 24.5532,0 44.5029,19.9501 44.5029,44.5034 0,5.4196-1.0147,10.6196-2.7904,15.4216 28.1558,15.0268 59.7041,23.5 93.1187,23.5 33.4189,0 65.0786-8.4689 93.2659-23.5-1.7771-4.802-2.7909-10.0021-2.7909-15.4216 0-24.5533 19.9487-44.5034 44.5033-44.5034 8.476,0 16.3184,2.4929 23.0592,6.6097 7.8527-9.4499 15.0654-19.4971 21.4437-30.2563h-89.3c-8.3693,46.3114-45.5265,81.2216-90.1813,81.2216-1.5876,0-2.9802.0894-4.5534,0-42.5383-2.3674-77.5458-36.5185-85.6279-81.2216zm107.2183,0c8.03,35.6659 37.1535,62.1283 72.1159,62.1283s64.2345-26.4624 72.2625-62.1283zm-62.7154,36.8659c-17.2988,0-31.2846,13.9853-31.2846,31.2841s13.9858,31.2841 31.2846,31.2841 31.2846-13.9853 31.2846-31.2841-13.9858-31.2841-31.2846-31.2841zm269.8096,0c-17.3002,0-31.2846,13.9853-31.2846,31.2841s13.9848,31.2841 31.2846,31.2841 31.2841-13.9853 31.2841-31.2841-13.9862-31.2841-31.2841-31.2841z"/></svg>

After

Width:  |  Height:  |  Size: 2.9 KiB

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