docs, now in typescript and docusaurus v3

This commit is contained in:
Erik 2024-01-16 22:23:00 +02:00
commit 9e7e0a5cee
54 changed files with 15908 additions and 0 deletions

88
.eslintrc.json Normal file
View File

@ -0,0 +1,88 @@
{
"env": {
"node": true,
"browser": true,
"es2021": true
},
"extends": [
"eslint:recommended",
"plugin:@typescript-eslint/recommended",
"plugin:react/recommended",
"plugin:@docusaurus/recommended"
],
"parserOptions": {
"ecmaFeatures": {
"jsx": true
},
"ecmaVersion": 12,
"sourceType": "module"
},
"plugins": [
"react",
"@docusaurus"
],
"rules": {
"nonblock-statement-body-position": [
"warn",
"below"
],
"brace-style": [
"warn",
"allman"
],
"indent": ["warn", 4, {
"SwitchCase": 1
}],
"no-warning-comments": [1, {
"terms": ["todo", "fixme"]
}],
"prefer-arrow-callback": "warn",
"prefer-const": "warn",
"prefer-destructuring": "warn",
"prefer-object-spread": "error",
"prefer-promise-reject-errors": "warn",
"prefer-regex-literals": "warn",
"prefer-rest-params": "warn",
"prefer-spread": "warn",
"semi": "error",
"semi-spacing": "warn",
"semi-style": [
"warn",
"last"
],
"object-curly-spacing": [
"warn",
"always"
],
"array-bracket-newline": [
"warn",
"consistent"
],
"array-bracket-spacing": [
"warn",
"always",
{
"objectsInArrays": false,
"arraysInArrays": false
}
],
"comma-spacing": [
"warn",
{
"after": true,
"before": false
}
],
"comma-style": "warn",
"no-console": "warn",
"no-constant-binary-expression": "error",
"no-trailing-spaces": "warn",
"quotes": ["error" , "single"],
"guard-for-in": "warn",
"yoda": [
"warn",
"never"
],
"wrap-regex": "error"
}
}

28
.gitignore vendored Normal file
View File

@ -0,0 +1,28 @@
# Dependencies
/node_modules
# Production
/build
# Generated files
.docusaurus
.cache-loader
# Misc
.DS_Store
.env.local
.env.development.local
.env.test.local
.env.production.local
npm-debug.log*
yarn-debug.log*
yarn-error.log*
.yarn/*
!.yarn/cache
!.yarn/patches
!.yarn/plugins
!.yarn/releases
!.yarn/sdks
!.yarn/versions

3
.yarnrc.yml Normal file
View File

@ -0,0 +1,3 @@
nodeLinker: node-modules
npmRegistryServer: "https://registry.corgi.wtf"

41
README.md Normal file
View File

@ -0,0 +1,41 @@
# Website
This website is built using [Docusaurus](https://docusaurus.io/), a modern static website generator.
### Installation
```
$ yarn
```
### Local Development
```
$ yarn start
```
This command starts a local development server and opens up a browser window. Most changes are reflected live without having to restart the server.
### Build
```
$ yarn build
```
This command generates static content into the `build` directory and can be served using any static contents hosting service.
### Deployment
Using SSH:
```
$ USE_SSH=true yarn deploy
```
Not using SSH:
```
$ GIT_USER=<Your GitHub username> yarn deploy
```
If you are using GitHub pages for hosting, this command is a convenient way to build the website and push to the `gh-pages` branch.

3
babel.config.js Normal file
View File

@ -0,0 +1,3 @@
module.exports = {
presets: [require.resolve('@docusaurus/core/lib/babel/preset')],
};

101
blog/2022-07-24.md Normal file
View File

@ -0,0 +1,101 @@
---
title: Galactic with slash commands
author: navy
description: Covering the changes with the bot in its first major update in a while.
tags: [slash commands, update, v3]
#image: https://i.imgur.com/xzB8BTV.jpg
# draft: true
# slug: slash-commands
---
#
# A long time coming
This update has been in the works for a while now, probably around 2 years now, I've honestly lost track.
Needless to say, **a lot** has been updated and changed. Initially this rewrite was meant to be as close to the Galactic you all know from before with some major under-the-hood changes and improvements to make it easier to work with.
Unfortunately midway through development of V3, Discord decided that how bots interact on the platform will change on a somewhat fundamental level. This obviously threw some major wrenches in development.
Personally not the biggest fan of this change. Typing in commands with their respective options feels clunkier now and makes some of the commands look odd.
# The changes
## Permissions
In case you are not familiar with the slash commands yet, they introduced client-sided permission controls for commands. Basically server administrators can now define who can see and run certain commands.
This has some benefits and drawbacks. Firstly the bot defines some default permissions which prohibits normal users from running moderation commands, it sets these based on the permissions that you can see when running `/help component:<command>`.
**If you already use Discord based permissions (i.e. you don't use permission types `grant` or `both`) for the bot this changes nothing for you**
The drawback to this system would be present for those servers that would rather not grant the moderator role any permissions and would rather do permission control through the bot, to bypass this limitation you'd have to permit a role to use the commands, admittedly not a difficult thing to do.
To do this, go to `Server Settings` -> `Integrations` -> `Galactic` -> `Command Permissions`, click add roles and add whichever roles you want to be able to run commands that are behind permissions and make sure to click on the checkmark.
**The bot still does its own permissions checks!**
## Commands
Commands have seen some relatively minor changes to them. This should be most if not all of them.
- Moderation and Moderator (log viewing) are now merged into one History command.
- Tempban is now a subfunctionality of Ban, essentially instead of `/tempban` you now use `/ban` with a time.
- Same as above with Hardban, instead of `/hardban` you now use `/ban` with the days option.
- Reason is now Edit (has been for a while technically, albeit with an alias). Allows editing of more than just the reason.
- Avatar allows for viewing of server and global avatars depending on which option you use, `member` for the server avatar and `user` for the global one.
- Poll and Option are now one command with an option to specify the amount of questions.
- Roleadd and Roleremove are now one command `/roles add|remove`.
- User is now under `/info` with a couple of other structures.
- Grant, Revoke and Perms are now under `/permissions grant|revoke|list|show`. To see granted permissions use `/permissions show`, the list subcommand is used to display grantable permissions.
- Guild is now Server.
- Settings is now split into multiple categories, see below for details.
**Some unused or redundant commands have been removed.**
## Settings
- The modmail setting and functionality has been removed in favour of a [standalone bot](https://github.com/GalacticBot/modmail).
- Enable & Disable are now under `/administration commands enable|disable` for better clarity.
- Description has been moved under `/administration indexing` (TODO)
- Killitwithfire is now dehoist (TODO)
- Lockdown setting has been removed (unsure if final, may make a return)
- Various options from the `-settings moderation` setting have been moved under other settings, the `silent` option is now `/administration silent`, `dmlogs` is now under `/logging dminfraction`, `anonymous` is now both under `/logging dminfraction` and `/logging moderation` to allow for more versatility.
- Mutetype, Muterole and Createmute are all under `/moderation mute` now.
- Mute has a new type option for type 3, which uses the new timeouts. This is now the default, but role based mutes are still available.
- Prefix has been removed, unless I get confirmation from discord that prefix based commands are permitted.
- Selfrole is still available as a command, but now has additional functionality of having a message component based select menu option.
- Staffrole and Staffrule are now both under `/moderation staff`.
- New error logging setting under `/logging errors`. This allows you to receive error messages for configuration based errors, e.g. if the bot doesn't have the necessary permissions to delete messages, or moderate someone.
### The command(s)
Out of all command interactions, settings have seen the most change. The most obvious one being that they no longer reside under a `/settings` command, rather are now listed on a module level.
So basically any logging related settings will be under `/logging`, moderation related ones under `/moderation` and so on. The one exception is `/settings list`.
Certain common options have also seen a more standardised naming change. So for instance **roleignore** is now called **bypass** and **channelignore** is now called simply **ignore**.
This is not a change I wanted to implement, however, due to the limitations imposed by slash commands, this had to be done. The short explanation for this is that the size of the command definition payload was too big for discord (thanks discord, very cool).
Viewing current settings has also changed. Instead of viewing current settings as a whole, they are now displayed on a per setting basis through for instance `/moderation wordfilter`.
### Options
The most fundamental change to altering settings is in how options that contain lists are altered. Unfortunately due to how limiting slash commands are this has to be done in a somewhat clunky way of defining a `method` option with a `list` option.
So for instance if you want to add a role to the bypass list for word filtering you'd use `/moderation wordfilter method:add list:bypass` which then triggers a prompt.
The one exception to this is settings where only one option contains a list of values, so for instance to make roles grantable, you'd use `/moderation grantable roles:add`, which triggers a prompt.
**Options with single value configurations will have their own options**
### Filtering
The actual available options in settings should be about the same as the old version.
The most notable change here would be the addition of the `actions` option to filter settings.
This is new functionality to automate actions based on filter triggers. Basically you can now properly issue warnings, mutes etc based on filtering instead of the janky solution the old version had which entirely relied on modpoints being set.
Actions allow you to automatically issue infractions to varying degrees of specificity. You can for instance issue bans for specific words, mutes for words that appear in the explicit match list and warnings for generic (any) triggers.
This new system doesn't require modpoints but easily integrates with them and therefore with the automated infraction escalation.
In addition to this, wordfilter and linkfilter are now separated into more lists to allow for more nuanced actions. The wordfilter has also seen an addition of a regex* filter list which both allows for user defined regex as well as presets.
The linkfilter has seen the option for a greylist added to it, natively this has no functional difference to the blacklist, both have the messages deleted, this is purely to allow for more nuanced actions, so you can ban for a specific group of links and just delete another.
There is now also a new filtering-but-not-filtering setting called wordwatcher. Functionally this simply flags messages with certain keywords in them. This setting can use the same subset of regex as the word filter.
Actions for this setting don't do anything by themselves, rather they're treated as quick action buttons that are attached to the flags.
The wordwatcher is not the only new addition, there is now also a mention filtering setting. It allows you to filter out messages that contain too many mentions. While I'm not telling you how to do your configuration, I would recommend pairing this up with some kind of action.
<sub>*To be precise, the bot supports a subset of regex, specifically the following characters: <code>? ( ) | . [ ] -</code>. Any other characters are escaped and treated as normal characters.</sub>
## Logging & Automoderation
While no fundamental changes to automoderation (filtering) have occurred, they have been improved under the hood, on top of the additional filter lists and actions. The reason logging and automoderation are under the same heading here is because they now work together, in the sense that if a message is filtered, that is now reflected in the message logs, this includes whether the user was sanctioned based on an action for a filter or message flag.
# Finally
There have been **a lot** of changes since the previous bot and I'm sure I've missed some. If something here is unclear or you think should be documented clearer, please reach out in the support server.
Depending on how dilligently I feel like writing, some of the documentation may be a bit of a work in progress by the time this is released.

50
blog/2022-07-27.md Normal file
View File

@ -0,0 +1,50 @@
---
title: Galactic QA experimental text commands
authors: navy
description: QA Bot Text Commands update
tags: [update, qa, text commands]
---
:::caution
This feature is completely fresh code, meaning it likely contains some bugs, inconsistencies or other issues. If you run into issues I likely already have received an error notification, but feel free to tell me about it in the support server.
**In the event that the bot doesn't error out, as in the command goes through, but the output does not match expectations let me know!**
:::
:::tip
To enable text based commands use `/administration textcommands enabled:true`
:::
After the release of the slash commands version of the bot I began working on bringing back text based commands in a manner that is completely compatible with the slash commands codewise, that is to say, I don't have to maintain different pieces of code for commands invoked through text or interactions. Any command that works with slash commands works fully with text commands. The opposite may not always remain true (as in, text commands offer more versatility for me as a developer, so a more complex command may have certain options limited to text commands), but for now they all work interchangeably. All commands work with either system.
## Command Structure
:::note **Note that while this command structure is similar to the old bot's, it's not 1:1.**
In some instances, such as some settings, the name of the option isn't required unless the option is a flag, see the setting's help prompt for which options are flags.
:::
Text based commands follow the same structure as slash commands, as in
`/command subcommandgroup subcommand options`
The primary difference is in how options are parsed. While slash commands make distinguishing where one option ends and another starts very easy, text commands are a bit trickier in that regard, there is no clear delimiter for where one ends and another starts. This is why some options are defined as flags (as in they are prefixed with --). You can check which options are parsed as flags with the `/help` command. Non-flag options will try to parse their expected value from the command directly (i.e. there's no need to prefix it with the option's name).
### Option Parsing
Take for instance the ban command, it expects at least the users option, and for this example we'll also give it a time and point value, so the command structure is
`-ban <USERS> [TIME] [POINTS] [REASON]` - The order of these is completely arbitrary, but all values for one option need to be consecutive.
Our actual command would then look like
`-ban @user @user2 2w 3p broke a rule` - This works as intended, the users are parsed the same way they would when passing the users option in the slash command version. **Keep in mind that moderation commands require a strict user resolveable, that is to say an ID, complete tag or a mention.**
If you instead were to do something like this then
`-ban @user 2w 3p broke a rule @user2` - This would still work, as a user is successfully parsed, but the 2nd user will become a part of the reason as it was not given consecutively after the first user.
How about this then?
`-ban some @user reason 2w 3p` - This would error out due to an unrecognised option. Why? Because you've now split the reason string into two by putting the only user resolveable in the string, remember, values belonging to one option must be consecutively given.
### Flag Parsing
Some flags don't require an explicit value, their presence provides the value. This is typically an option for some boolean type flags, as in, the flag being present in the command implies a truthy value. Flags that allow this indicate this in the help prompt. For other values, the previously mentioned remains true, if the flag expects multiple values they need to be given consecutively.
### Multi-word Values
Sometimes a value you want to pass consists of multiple words, for instance a username that contains a space, in instances like this you need to surround it in quotes for the bot to interpret it as one value.
**This is also the case for string type flags!** (again this is due to a lack of clear delimiters)

5
blog/authors.yml Normal file
View File

@ -0,0 +1,5 @@
navy:
name: Navy.gif
title: Developer
url: https://corgi.wtf
image_url: https://i.imgur.com/xzB8BTV.jpg

View File

@ -0,0 +1,55 @@
---
id: admin
title: Administration commands
sidebar_label: Administration
---
# Administrative Commands
| Name | Description |
|--------------------------------|----------------------------------------------------------------------------------------------|
| Administration (settings) | Command for modifying administrative settings |
| [Import](#import) | Import data from old versions of the bot, or the test branch. |
| Logging (settings) | Command for modifying logging settings. |
| Moderation (settings) | Command for modifying moderation settings. |
| [Modstats](#modstats) | Displays statistics related to moderation. |
| [Permissions](#permissions) | Manage permissions. |
| Settings | Lists all available settings. |
| Utility (settings) | Command for modifying utility settings. |
## The setttings commands
See the respective setting pages for information about them.
## Import
### Modlogs
`version`: The bot version from which to import.
`overwrite`: Whether any new modlogs on the current bot should be written over by the imported logs, or if they should be bumped up.
### Settings
`version`: The bot version from which to import.
## Modstats
`after`: Count statistics for actions after this date.
`before`: Count statistics for actions before this date.
## Permissions
### Grant
`channel`: Limits the grant to a channel.
`role`: Role that is granted the permission.
`member`: Member who is granted the permission.
`permission`: The permission to grant.
### Revoke
`channel`: The channel in which to revoke.
`role`: Role from which to revoke the permission.
`member`: Member from whom to revoke the permission.
`permission`: The permission to revoke.
### List
Lists the grantable permissions.
### Reset
`channel`: Reset permissions that are granted in the given channel.
`role`: The role for which to reset permissions.
`member`: The member for whom to reset permissions.
### Show
`channel`: Display grants in the given channel.
`role`: Display grants for the role.
`member`: Display grants for the member.
`permission`: Display roles or members that have the given permission.

View File

@ -0,0 +1,28 @@
---
id: info
title: Information commands
sidebar_label: Information
---
# Information Commands
The information commands are used for help with the bot and general information about the bot and its features.
| Name | Description |
|--------------------------------|----------------------------------------------------------------------------------------------|
| [Commands](##commands) | List commands on the bot. |
| Server | Display information about the server. |
| [Help](#help) | Display a generic help message or display command or setting help. |
| [Info](#info) | Display information about a user, role or channel. |
| Privacy | Display the bot's privacy policy. |
## Commands
`module`: Filters commands by module, e.g. 'moderation'.
## Help
`component`: Display the help message for a command or setting, if a setting and command share name use the type to specify, e.g. 'setting:grantable', 'command:grantable'.
## Info
`user`: Displays information about the given user.
`role`: Displays information about the given role.
`channel`: Displays information about the given channel.

157
docs/commands/moderation.md Normal file
View File

@ -0,0 +1,157 @@
---
id: mod
title: Moderation commands
sidebar_label: Moderation
---
# Moderation Commands
Commands for moderating and managing users in a server.
---
:::caution
Moderation commands require exact user matching, i.e. you must pass something that can only resolve to one specific user (tag, ID or mention).
:::
| Name | Description |
|--------------------------------|----------------------------------------------------------------------------------------------|
| [Ban](#ban) | Bans the user(s), optionally for a given time. |
| [Case](#case) | Display infraction information. |
| [Dehoist](#infraction-commands)| Remove hoisting characters from a user's display name. |
| [Edit](#edit) | Edit an infraction. |
| [History](#history) | Display a user's moderation history, can also be used to display a moderator's actions. |
| [Kick](#infraction-commands) | Kick given user(s). |
| [Lockdown](#lockdown) | Lockdown given channel(s), optionally for a given duration |
| [Modtimers](#modtimers) | Display active timed infractions. |
| [Mute](#mute) | Mute given user(s). |
| [Nickname](#nickname) | Change user(s) nickame(s). |
| [Note](#infraction-commands) | Add a note to user(s) moderation history. |
| [Prune](#prune) | Remove several messages from a channel at once. |
| [Resolve](#resolve) | Resolve a case. Undoes the action taken, i.e. will unban a banned user if a ban is resolved. |
| [Roles](#roles) | Manage user(s) roles. |
| [Slowmode](#slowmode) | Change the slowmode in channel(s). |
| [Softban](#softban) | Remove user(s) from the server, removing their recent messages. |
| [Staff](#staff) | Used to allow users summon moderators through a role. |
| [Unban](#unban) | Unbans user(s). |
| [Unlockdown](#unlockdown) | Lifts lockdown(s). |
| [Unmute](#unmute) | Lifts user(s) mute. |
| [Unresolve](#unresolve) | Unresolves the case and reapplies the actions. |
| [Warn](#infraction-commands) | Warns the given user(s). |
## Infraction commands
Most of the infraction commands share these base options. Any deviations from these will be noted below.
`users`: The users to issue infractions to.
`points`: Only applicable when moderation points are enabled, assigns the given number of points to the infraction.
`expiration`: How long the points are relevant.
`force`: Only applicable when automatic infraction escalation is enabled, bypasses said escalation.
`silent`: Whether the bot should DM the receiver (defaults to whatever the DM log setting is).
`reason`: Reason for the infraction.
`prune`: Amount of messages to prune from the user in the channel the infraction is given in.
Additional options will be denoted with a plus (+) sign, a missing option will be denoted with a minus (-) sign.
The commands **dehoist**, **kick**, **note** and **warn** only use these default options.
### Ban
\+ `duration`: How long the ban should last.
\+ `days`: How many days worth of messages to delete (same option discord provides when using the built in ban).
### Lockdown
\- `users`, `points`, `expiration`, `force`, `silent`
\+ `channels`: The channels to lockdown.
\+ `duration`: How long the lockdown should last.
### Mute
\+ `duration`: How long the mute should last.
### Nickname
\+ `name`: The new nickname to issue.
### Prune
\+ `channels`: The channels in which to prune messages.
\+ `amount`: Amount of messages to look through.
**Note that the actual amount of messages deleted may deviate from the amount if a user is specified. This only defines how many messages to filter through!**
\+ `bots`: Limit to messages sent by bots.
\+ `humans`: Limit to messages sent by regular users.
\+ `contains`: Limit to messages containing the given text.
\+ `startswith`: Limit to messages starting with the given text.
\+ `endswith`: Limit to messages ending with the given text.
\+ `text`: Limit to messages only containing text.
\+ `invites`: Limit to messages only containing invites.
\+ `links`: Limit to messages only containing links.
\+ `emojis`: Limit to messages only containing emojis.
\+ `after`: Limit to messages after a specific message.
\+ `before`: Limit to messages before a specific message.
\+ `logic`: Which logic type to combine options with, defaults to OR.
### Roles
\- `points`, `expiration`, `force`
\+ `duration`: Optional duration for the addition/removal of roles.
\+ `roles`: Which roles to give/take.
### Slowmode
\- `users`, `points`, `expiration`, `force`, `silent`
\+ `limit`: The slowmode to set.
\+ `channels`: The channels in which to set the slowmode, defaults to the one the command is ran in.
### Softban
\+ `days`: How many days worth of messages to delete (same option discord provides when using the built in ban).
### Unban
\- `points`, `expiration`, `force`, `prune`
### Unlockdown
\- `users`, `points`, `expiration`, `force`, `prune`, `silent`
\+ `channels`: The channels to lockdown.
### Unmute
\- `points`, `expiration`, `prune`, `force`
---
## Other
Generic moderation related commands.
### Case
`id`: The infraction ID of the case to display.
`export`: Print out the JSON formatted infraction.
`verbose`: Display additional information.
`changes`: Display changes done to the infraction.
### Edit
`case`: Which infraction to edit.
`reason`: New reason to assign. Respond with "long" to give a lengthier reason than the response box allows.
`points`: New point value to assign.
`expiration`: New expiration for the points.
`duration`: New duration for the infraction if the infraction supports durations.
### History
`before`: Infractions from before the given date.
`after`: Infractions after the given date.
`verbose`: Display a more verbose output.
`oldest`: Display oldest infractions first.
`export`: Print out the JSON formatted history (limited to server admins).
`private`: DMs the history.
`type`: Filter by infraction type.
`pagesize`: How many infractions to show per page. Defaults to 5.
`page`: Which page to view.
`user`: Filter by receiver.
`moderator`: Filter by moderator.
`channel`: Filter by channel (for infractions like lockdown & slowmode).
### Modtimers
List cases with active timers, e.g. timed mutes, bans etc.
No options.
### Resolve
`case`: The infraction ID to resolve.
`reason`: Reason for resolving.
`notify`: Attempts to notify the user that their infraction has been resolved.
### Staff
Command for normal users to summon staff. Configured with `/moderation staff`.
No options.
### Unresolve
`case`: The infraction ID to resolve.
`reason`: Reason for resolving.

48
docs/commands/utility.md Normal file
View File

@ -0,0 +1,48 @@
---
id: util
title: Utility commands
sidebar_label: Utility
---
# Utility Commands
| Name | Description |
|-------------------------------|------------------------------------------------------------------------------|
| [Avatar](#avatar) | Display a user's global or server avatar. |
| Grantable | List roles that can be managed with the role management command. |
| Ping | Generic ping command. |
| [Poll](#poll) | Start a poll. |
| [Remind](#remind) | Set a reminder. |
| [Selfrole](#selfrole) | Give yourself a role. |
## Avatar
`size`: The image resolution.
`format`: The image format.
`user`: User whose global avatar to display.
`member`: User whose server avatar to display.
---
## Poll
### Create
`choices`: Amount of choices in the poll.
`channel`: Channel in which to post the poll.
`duration`: How long should the poll run for.
### Delete / End
`message`: The ID of the poll message. Only works with timed polls.
---
## Remind
### Create
`in`: How long until the reminder should be sent.
`reminder`: What to remind you with.
### Delete / List
Will prompt you for additional input.
---
## Selfrole
### Clear
Clear your self-assignable roles.
### List
List roles you can assign to yourself.
### Add / Remove
`roles`: The roles to add or remove.

56
docs/faq.md Normal file
View File

@ -0,0 +1,56 @@
---
id: faq
title: Frequently Asked Questions
sidebar_label: FAQ
---
This document is a collection of questions that get asked rather frequently and is updated whenever necessary. If your question isn't answered here or something is still unclear, please start a thread in the support forum in the server.
## Can I revert to the old (text) commands?
See [this article](./tutorials/TextCommands)
## Mods can't see slash command
See [this article](./tutorials/InitialSetup.md#permissions)
## How do I enable/disable x setting?
This is done using the `enabled` option. With text commandds you can use `--enabled` and `--enabled false`.
**Example**
`/moderation wordfilter enabled:False`
`-moderation wordfilter --enabled false`
## Emojis aren't working
This is an issue with how permissions work with webhooks (slash commands are webhooks under the hood).
Unfortunately there isn't anything *I* can do to remedy that, however, you can enable the use of external emojis for the everyone role, which should fix the issue.
If that isn't an option, consider using the text commands instead, they seem to work fine with emojis.
## How do I add x to y filter?
For most settings whenever the setting has multiple lists (e.g. blacklist, greylist, ignore, bypass, etc.) you choose the list with the `list:` option. This option is always accompanied by the `method:` option to select what you're doing to the list, that is to say if you're adding you use `method:add`. For some settings that only have one or two lists the method will be named as the list, for instance `/administration protection roles:add`.
**Example**
To add words to the explicit list of the wordfilter, run the following command:
`/moderation wordfilter method:add list:explicit` or
`-moderation wordfilter add explicit`
These will prompt you to respond with the words to add.
## How do I grant a mods permissions?
Granting permissions is only necessary if you use the permission type `grant`.
To grant a role permissions to use commands use `/permissions grant role:<role..> permission:<permission..>`
Use `/permissions list` to display all available permissions. To display granted permissions use `/permissions show`.
**Example**
To grant the role "moderators" permissions to use the moderation commands, run the following:
`/permissions grant role:moderators permission:module:moderation`
## Bot saying missing permissions even though I granted permissions
Make sure to check the permission type with `/administration permissions`.
## Mute isn't working
Check the mute type with `/moderation mute`.
Some types of mutes don't always work with the way you've configured your permissions. Try changing to a different type and run the create on the existing role to have the bot check its permissions.
If neither of these options solve your issue, try using type 3 (uses discord timeouts).
## Missing tempban and hardban
Tempban is now under the ban command, simply add a duration to the ban.
Same with hardban, except use the option days, which tells discord to delete x amount of days worth of messages from the user.

7
docs/premium.md Normal file
View File

@ -0,0 +1,7 @@
---
id: premium
title: Premium subscriptions
sidebar_label: Premium
---
# TBD

11
docs/privacy.md Normal file
View File

@ -0,0 +1,11 @@
---
id: privacy
title: Privacy Policy
sidebar_label: Privacy Policy
---
Galactic (stable) and Galactic Canary (testing) bots collect and store IDs in moderation logs and configuration. Message content is only ever stored by the bot when it is obvious from the use case to do so (typically this would be a configuration for something like a template message). Message content is not stored outside of the bot's working memory and never leaves the Discord context (except for the aforementioned case). Any message logs are purely based on output in channels at this time.
This text will be updated according should this ever change.
If the bot was to ever start collecting any data that is not absolutely necessary for its core functionality it will be opt-in.

View File

@ -0,0 +1,54 @@
---
id: admin-settings
title: Administrative settings
sidebar_label: Administration
---
# Administrative settings
Admin settings
Configured with `/administration [setting]`
| Name | Description |
|-------------------------------------|----------------------------------------------------------------------------------------------|
| [Commands](#commands) | Enable and disable commands. |
| [Ignore Channels](#ignore-channels) | Ignore commands in given channels. |
| [Permission Type](#permission-type) | What to base command privileges on. |
| [Protection](#protection) | How to determine immunity from moderation on. |
| [Silent](#silent) | Disable inline moderation responses. |
## Commands
`/administration commands enable|disable|list [options]`
Used to enable and disable commands in the server. With slash commands this can be done via the integration management in the Discord server settings.
**Options**
`commands`: The commands to disable. Applicable to enable & disable.
## Ignore Channels
`/administration ignore [options]`
Used to tell the bot in which channels to ignore commands. The bypass list lets roles bypass the ignore. This is also something you can achieve through the integration management in the Discord server settings.
**Options**
`list`: Which list to modify.
`method`: How to modify the given list.
## Permission Type
`/administration permissions [option]`
Used to tell the bot which permissions to use when evaluating if a user is privileged to run a command. If the commands are not visible for users who are supposed to have permissions to run them, ensure they have permission to use them in the integrations tab in the Discord server settings.
**Option**
`type`: Choices are discord, grant, both.
## Protection
`/administration protection [options]`
Used to tell the bot how to determine if a moderator is able to run a moderation command on a user.
**Options**
`type`: Choices are role, position.
`roles`: How to modify the roles list used for the role protection type.
## Silent
`/administration silent [option]`
Toggle whether the bot responds in the channel the command is ran in.
**Option**
`enabled`: Toggle enable state

97
docs/settings/logging.md Normal file
View File

@ -0,0 +1,97 @@
---
id: logging-settings
title: Logging settings
sidebar_label: Logging
---
# Logging settings
Logging settings
Configured with `/logging [setting]`
| Name | Description |
|-------------------------------------|----------------------------------------------------------------------------------------------|
| [DM Infractions](#dm-infractions) | Which if any infractions are sent to the recipient's DMs. |
| [Errors](#errors) | Logging of runtime issues you can remedy with configuration or editing permissions. |
| [Members](#members) | Member joins and leaves. |
| [Messages](#messages) | Logging of messages. |
| [Moderation](#moderation) | Which infractions if any are logged to a chosen channel. |
| [Nicknames](#nicknames) | Logging of nickname changes. |
| [Voice Channels](#voice-channels) | Logging of voice channel joins and leaves. |
## DM Infractions
`/logging dminfraction [options]`
Configure which infractions are sent to the infraction target in DMs.
**Options**
`message`: The message to send with the infraction.
`infraction`: The infraction for which to modify the message.
`infractions`: Modify the list of infractions to send DMs for.
`enabled`: Toggle enable state.
`anonymous`: Whether to replace the moderator's username with the bot's in the DM.
## Errors
`/logging errors [options]`
Log configuration related errors to a channel. These are issues you can typically remedy with additional configuration.
**Options**
`channel`: Channel into which log errors.
`enabled`: Toggle enable state.
## Members
`/logging members [options]`
Log member joins and leaves.
Supports the following template tags:
| Tag | Description |
|---------------|---------------------------|
| `{mention}` | mentions the user |
| `{tag}` | username#discriminator |
| `{username}` | username |
| `{guildsize}` | member count of the server|
| `{guildname}` | name of the server |
| `{accage}` | age of the account |
| `{id}` | ID of the account |
**Options**
`enabled`: Toggle enable state.
`channel`: Channel where to log.
`join`: Join message.
`leave`: Leave message.
## Messages
`/logging messages [options]`
Log messages.
**Options**
`channel`: Channel where to log.
`enabled`: Toggle enable state.
`attachments`: Whether to log images. Premium option.
`method`: How to modify the list.
`list`: Which list to modify.
## Moderation
`/logging moderation [options]`
Log moderation actions.
**Options**
`channel`: Channel where to log.
`enabled`: Toggle enable state.
`infraction`: Modify which infractions to log in the channel, does not affect which infractions are logged in the database.
`anonymous`: Whether to replace the moderator's username with the bot's in the log.
## Nicknames
`/logging nicknames [options]`
Log member nickname changes.
**Options**
`channel`: Channel where to log.
`enabled`: Toggle enable state.
## Voice Channels
`/logging voice [options]`
Log voice channel joins and leaves.
**Options**
`channel`: Channel where to log.
`enabled`: Toggle enable state.

148
docs/settings/moderation.md Normal file
View File

@ -0,0 +1,148 @@
---
id: moderation-settings
title: Moderation settings
sidebar_label: Moderation
---
# Moderation settings
Moderation settings
Configured with `/moderation [setting]`
| Name | Description |
|---------------------------------------------|----------------------------------------------------------------------------------------------|
| [Automod](#automatic-infraction-escalation) | Automated infraction escalation. |
| [Grantable Roles](#grantable-roles) | Roles grantable through <code>/roles add\|remove </code> |
| [Invite Filter](#invite-filter) | Filter unwanted server invites. |
| [Link Filter](#link-filter) | Filter unwanted links based on domain. |
| [Mention Filter](#mention-filter) | Limit how many people a user can mention in a message, best used together with actions. |
| [Moderation Points](#moderation-points) | Define infraction severity and expiration, used by automod to escalate infractions. |
| [Mute](#mute) | Set up how muting works with the bot. |
| [Staff](#staff) | Define the role used by the staff command and its accompanying message. |
| [Word Filter](#word-filter) | Filter messages for prohibited words. |
| [Word Watcher](#word-watcher) | Highlight messages containing keywords to a channel. |
## Automatic Infraction Escalation
`/moderation automod [options]`
Configure automatic infraction escalation. This setting is to be used together with the modpoints option, which the bot uses to determine the escalation.
**Options**
`enabled`: Toggle enable state.
`useprevious`: Whether the bot should use the previous threshold infraction if a new threshold has not been passed.
`threshold`: Escalation point threshold. The given infraction will be used if the user's total point value exceeds this limit.
`infraction`: Which infraction to escalate to at the given threshold.
`length`: Duration for the infraction if the given infraction supports a duration.
## Grantable Roles
`/moderation grantable [options]`
Define the roles that can be granted to users through the `/roles add|remove` command.
**Options**
`enabled`: Toggle enable state.
`roles`: Method choice.
## Invite Filter
`/moderation invitefilter [options]`
Filter Discord invites. You can allow invites to certain servers by adding the server ID to the whitelist.
**Options**
`method`: Method choice.
`list`: Which list to modify.
`enabled`: Toggle enable state.
`silent`: Silently delete invites.
**Action Triggers**
The invite filter currently only has generic action triggers (cannot be specified).
## Link Filter
`/moderation linkfilter [options]`
Filter links on a domain basis. The filter has 3 filter lists (blacklist, greylist and whitelist). Functionally the black and greylist are the same, they exist to enable different actions for domains in each list, e.g. bans for blacklisted links and warnings for greylisted links. In whitelist mode the bot will still use the black and greylists, but any domains not in any of the lists will still be deleted.
**Options**
`method`: Method choice.
`list`: Which list to modify.
`enabled`: Toggle enable state.
`silent`: Silently delete links.
`whitelist`: Toggle whitelist mode.
**Action Triggers**
Link filter triggers can be one of the lists or a domain.
## Mention Filter
`/moderation mentionfilter [options]`
Filter out messages with excessive mentions. This filter is best used together with actions.
**Options**
`method`: Method choice.
`list`: Which list to modify.
`enabled`: Toggle enable state.
`silent`: Silently delete invites.
`unique`: Multiple mentions for the same person count as one mention.
`limit`: How many mentions in a message to triggert the filter.
**Action Triggers**
The mention filter supports different actions based on the amount of mentions in the message.
## Moderation Points
`/moderation modpoints [options]`
Configure infraction severity points and their expirations. Used to determine automatic infraction escalation.
**Options**
`points`: The point value to assign to the given infraction.
`expire`: How long it takes for an infraction's points to expire and no longer counted towards escalations.
`infraction`: Which infraction to assign the given points to.
`enabled`: Toggle enable state.
`multiplier`: Use points as a multiplier for the expiration, i.e. `final expiration = expiration * points`.
`associate`: Associate a word with the given points. If the word is present in the reason said point value will be used.
## Mute
`/moderation mute [options]`
Assign or create a mute role.
__Mute Types__
**`0`:** Mutes only add/remove the muted role.
**`1`:** Mutes remove all roles except for the muted role.
**`2`:** Mutes remove all roles, does not require a muted role.
**`3`:** Uses the built-in timeout feature to mute. *(default)*
**Options**
`create`: Name of the role to create. If an existing role is given the bot will ensure its permissions are in order.
`role`: The role to use for muting.
`default`: The default duration for a mute. Only used if permanent mutes are disabled.
`permanent`: Whether to allow permanent mutes.
`type`: Which type of mute to use.
## Staff
`/moderation staff [options]`
Configure the role and message used for the `/staff` command.
**Options**
`role`: Which role to use.
`rule`: Text to be displayed with the prompt.
`enabled`: Toggle enable state.
## Word Filter
`/moderation wordfilter [options]`
Filter out messages that contain prohibited words or phrases. Consists of 3 filter lists, explicit, fuzzy, and regex.
The explict list looks for explicit matches, no bypass checking (does normalise text, i.e. emoji letters are treated as normal letters).
The fuzzy list does some bypass checking, may sometimes run into false positives.
The regex filter supports a subset of regex (`? ( ) | . [ ] -`). The regex list requires some understanding of how regex works, if you don't know how regex works but would like to utilise the list, you can add presets to it. Currently availalbe presets are `profanity`, `obscenity` and `slurs`.
Use the whitelist to counteract any false positives you may run into.
**Options**
`method`: How to modify the list.
`list`: Which list to modify.
`enabled`: Toggle enable state.
`silent`: Toggle silent mode.
**Action Triggers**
The word filter triggers can be any of the filter lists or specific words from any of the filters.
## Word Watcher
`/moderation wordwatcher [options]`
Flag messages containing keywords. Supports having 5 quick actions under the flag message.
**Options**
`method`: How to modify the list.
`list`: Which list to modify.
`channel`: The channel in which to output the flags.

60
docs/settings/utility.md Normal file
View File

@ -0,0 +1,60 @@
---
id: util-settings
title: Utility settings
sidebar_label: Utility
---
# Utility settings
Utility settings
Configured with `/utility [setting]`
| Name | Description |
|-------------------------------------|----------------------------------------------------------------------------------------------|
| [Auto Role](#auto-role) | Automatically give new members a role. |
| [Self Role](#self-role) | Let users give themselves roles. |
| [Sticky Role](#sticky-role-premium) | Roles that should stick to members that leave and rejoin. |
| [Welcomer](#welcomer) | A message sent to new users upon join. |
## Auto Role
`/utility autorole [options]`
Used to define which roles a new member should be given upon join.
**Options**
`roles`: Method choice.
`enabled`: Toggle enable state.
## Self Role
`/utility selfrole [options]`
Let your users select roles themselves. Can be configured to use a dropdown menu.
Defines the roles for `/selfrole`.
**Options**
`roles`: Method choice.
`channel`: If given, will post a message with a dropdown menu in the channel for users to select roles through.
`text`: Text to display with the dropdown menu.
## Sticky Role [Premium]
Configure the roles that should persist on users through leaves & rejoins.
**Options**
`roles`: Method choice.
`enabled`: Toggle enable state.
## Welcomer
Set a message that is sent to new members upon joining.
Supports the following template tags:
| Tag | Description |
|---------------|---------------------------|
| `{mention}` | mentions the user |
| `{tag}` | username#discriminator |
| `{username}` | username |
| `{guildsize}` | member count of the server|
| `{guildname}` | name of the server |
| `{accage}` | age of the account |
| `{id}` | ID of the account |
**Options**
`message`: The message to send.
`enabled`: Toggle enable state.

72
docs/start.md Normal file
View File

@ -0,0 +1,72 @@
---
id: getting-started
title: Getting started with Galactic
sidebar_label: Getting started
slug: /
---
**TL; DR**
Advanced moderation bot for servers of any size.
:::caution WIP
Be aware that the documentation is still in its early stages and prone to lacking in explanations and documentation. Everything is being worked on, especially the bot, which makes keeping the documentation up to date a challenge.
I have plans for a more streamlined documentation pipeline, which would make the documentation more consistent and easier to keep up to date with the bot.
If you wish to contribute to the documentation, see our [github page](https://github.com/Navy-gif/galactic-docs) for further information.
:::
### Introduction - What is Galactic?
Galactic is a powerful moderation bot for servers of all sizes. Galactic also provides some utility features on top of moderation. Everything on the bot serves some kind of purpose, though not everything may be applicable for your needs and as such some features can be turned off per server.
### Features
As Galactic is a moderation bot at its core, it naturally has a bunch of moderation commands. This is accompanied by moderation logging and making sure the user is aware of the infraction (provided the configuration is set correctly). The bot allows for fairly extensive configuration for you to tailor it to your server's needs.
Galactic also has some premium features that build on top of the existing features, such as attachment logs for message logging. All core moderation features will always remain free for everyone.
### Documentation notation
:::caution
Some sections may be out of date or a WIP, so this notation may not always be present.
:::
**Optional** arguments are denoted by being encapsulated in brackets `[ ]` - means that the command will run either with default values or show usage prompt.
**Required** arguments are denoted by less and greater than `< >` - means that the command will not run and return an error.
**Infinite** arguments (ones you can list several) are denoted by `..` after the argument. Ex `<argument..>` - means you can pass more than one argument.
**Alternatives** are denoted by being separated by a `|`.
**Actual values** that you can use in a command are denoted by being surrounded by single quotes `' '`.
### Arguments
:::info
This only applies to text commands, as slash commands are parsed on the client and are parsed differently.
:::
The bot splits arguments by space unless specified otherwise. To pass an argument that contains spaces you have to encapsulate it in quotes, though some exceptions may exist.
**Ex:**
`-grant "rolename that contains spaces" <permission>`
<!-- **Typically** if the argument is at the end of a command it won't require quotes. -->
### Command and setting aliases
:::caution
Aliases are not available yet, as text commands weren't a priority for the slash command version.
Consider this part outdated.
:::
Most commands and settings have some kind of aliases associated with them, some of which change the behaviour of the command or setting.
For instance the **mute setting** has a `createmute` (`-settings createmute <rolename>`) alias, which changes the behaviour to be identical to `-settings mute create <rolename>`.
In v3 of Galactic, the ban commands (tempban, hardban & ban) will all be one command with flag support for the behaviour of the other ban commands. In this instance aliasing is also used for the flags,
i.e. `-softban @user reason` **will be identical to** `-ban @user --soft reason`.
### Syntax
`{prefix}command arguments`
### Versions
**V1**
__No longer active, only V3 is active at this time__
V1 is the original Galactic Bot, still running on its old code from its early days. It currently has a blue profile picture and is serving the largest amount of servers of the three bots.
**V2**
__No longer active, only V3 is active at this time__
V2 is the second generation of Galactic. While being a more modern version of the bot, it had some design flaws that needed amending. As such we're now working on the 3rd generation. V2 uses an orange profile picture and is running on a client called GalacticTest.
**V3**
V3 is the third and hopefully final generation of Galactic. It is currently deployed on all of the bot user accounts.

17
docs/terms.md Normal file
View File

@ -0,0 +1,17 @@
---
id: terms
title: Terms of Use
sidebar_label: Terms of Use
---
These terms dictate the condition under which the Bots' (GalacticBot, GalacticTest, Galactic QA) services are provided to you. By using the bot you agree to the following:
- You will use the bot in good faith.
- You will not use the Bots for illicit or harmful activities.
- You will not use the Bots to harass users.
- You will not abuse the Bots' API or any APIs it uses should a vulnerability enable such behaviour.
Also note that there are absolutely no guarantees of service uptime or availability, as this is a hobby project. That is not to say that I won't do my best to keep it up and running.
Any egregious violations of reasonable conduct (as arbitrarily decided by the Developer(s)) will be met with revokation of access to use.
Reporting abuse of the bot can be done through the support server, invite link down below in the footer.

44
docs/tutorials/Filters.md Normal file
View File

@ -0,0 +1,44 @@
---
id: Filters
title: Filters
sidebar_label: Filters
---
All of the various filters on the bot support automated moderation actions for filter events. Some filters, such as the word filter allow for extensive configuration, allowing for word specific triggers.
Configuring the filters is fairly simple through the step-by-step prompts. To start the prompts issue the relevant option for the filter, i.e. `/moderation <filter> list:actions method:add`.
Sometimes the bot takes a few seconds to delete filtered messages, this is intentional as it is done to alleviate rate limiting issues. In turn if someone is spamming filtered content, the bot will remove all of it in batches.
:::caution NOTE
Depending on the server configuration, some prompts will not display. For instance, the mod points prompt will not display unless you have them enabled!
:::
All of the filters share most of the prompts, however, each filter implements its own trigger. See the relevant filter documentation for further reference.
- [Word Filter](../settings/moderation-settings#word-filter)
- [Invite Filter](../settings/moderation-settings#invite-filter)
- [Link Filter](../settings/moderation-settings#link-filter)
- [Mention Filter](../settings/moderation-settings#mention-filter)
## Setting up automated actions
Beginning the process of setting up automated actions begins with `/moderation <filter> list:actions method:add` or `-moderation <filter> actions add`.
The bot will prompt you with selecting which type of infraction it should issue for the trigger. Valid infractions are `warn, mute, kick, ban and softban`.
![Action prompt](../../static/img/action_prompt.png)
Temporary bans can be given by assigning a time to the ban, similar to mutes.
![Timer prompt](../../static/img/timer_prompt.png)
If you have moderation points enabled the bot will also prompt you for an amount of points.
![Points prompt](../../static/img/modpoints_prompt.png)
If points are given, the bot will also prompt for expiration of the points.
![Points expiration prompt](../../static/img/modpoints_expiration_prompt.png)
If automod is enabled, the bot will ask if the action should be forced, equivalent of using the `--force` flag when using a command.
![Force prompt](../../static/img/force_prompt.png)
Finally before the trigger itself, the bot will ask whether the user's recent messages should be pruned.
![Prune prompt](../../static/img/prune_prompt.png)
The last prompt is the bot asking for the triggers, if necessary. These are covered in the relevant filter documentation pages.

View File

@ -0,0 +1,85 @@
---
id: InitialSetup
title: Initial Configuration
sidebar_label: Initial Configuration
sidebar_position: 1
---
## Getting started with Galactic configration
This article is meant to get you started with the basic configuration of the bot with the essential settings for moderation purposes. Remember that the bot is just a tool for your moderation team and ultimately the moderators are responsible for moderation. The purpose of the bot is to streamline your work and complement Discord's features.
:::caution Permissions heads-up!
Keep in mind that, even though the bot may have some bugs here and there, the most basic features are thoroughly tested and generally bug-free. If you're experiencing issues, make sure that you've configured your server permissions right! The bot can't perform certain actions if it lacks the permissions to do so. Generally the bot will tell you if it is missing a permission.
:::
:::tip Text based commands
Even though slash commands are now the default, text commands are still available. You'll just have to enable them through `/administration textcommands enabled:True`.
See [Text Commands](./TextCommands) for more on those.
You may also be interested in changing the prefix, which you can do with `/administration textcommands prefix:-`.
You can also use a mention instead, `@Galactic administration textcommands -`
:::
## Basic configuration - the essentials
As far as this bot goes, essential configurations are permissions and logging. If you already have a properly setup moderator role with the relevant permissions, the bot should work out of the box with minimal configuration, as by default the bot will check the role permissions of a user.
The bot also provides logging functionality for various things. The most essential of which are infraction logs and message logs, though there are a few more which you can configure as you see fit. The bot will keep track of all infractions even if you don't configure a moderation log channel, you just have to query for them with the `history` command.
### Permissions
:::caution Missing slash commands?
Moderators not able to see all the moderation commands when trying to type out a slash command?
This can be remedied by going into `Server Settings > Integrations > Galactic > Command Permissions`, click on `Add roles or members` and add your moderator role and click `Allow`.
Anyone with the role should now be able to see all of the bot's commands.
:::
The bot can be set to operate in 3 different permission modes:
- `discord` Only discord-based permissions work with bot commands.
- `grant` Only grantable permissions from the bot work with bot commands. (requires you to set everything up yourself)
- `both` Both discord-based and grantable permissions work with bot commands. Having either a discord permission or a granted permission will let you run the command. (default)
Changing [Permission Types](../settings/admin-settings#permission-type) is as simple as using `/administration permissions type:<type>`
To find out the necessary permissions for each command, run `/help component:<command>`. Discord based permissions will look like `BanMembers`, while a granted permission will look like `command:ban`.
Users with insufficient permissions will receive an error message stating that they are missing a permission.
Granting permissions to users and roles is done with the `grant` command.
The syntax is `/permissions grant <role..|user..> <permission..>`, where permsission is either a module or a command.
**Ex:** `/permissions grant role:"moderation team" permission:"module:moderation command:activity"`
:::note
Only users that the bot considers administrators will be able to use the grant command. Administrators are users who have the `Administrator` or `ManageGuild` permissions on Discord.
:::
***
While strictly not a permission setting, you may want to block normal users from using commands in every channel. This is something you can configure with the [ignore setting](../settings/admin-settings#ignore-channels). Make sure to add your moderator role to the bypass list, otherwise the bot will ignore them too!
For slash commands this can be achieved in the integration settings by denying the everyone role permissions to the commands.
***
### Logging
The bot offers several types of logs, though not everybody will need all of them. The most pertient logs as far as this guide goes are message and moderation logging.
:::note
Logging in this context means that the bot simply sends a log in a designated channel. The only things the bot stores in its database are infraction logs, and in some cases message attachments. Attachment logging is a paid feature and the entries are regularly swept.
:::
Message logs can be configured with `/logging messages channel:#channel`. Make sure the bot has necessary permissions to manage webhooks in the channel you wish to use as a log. If you have channels you wish not to have logged, you can exclude them with `/logging messages list:ignore method:add`, which will prompt you to respond with channels to ignore. You can do the same with roles with `/logging messages list:bypass method:add`.
Moderation logs are configured in a similar fashion, with `/logging moderation channel:#channel`. Again, make sure the bot has the necessary permissions in the channel, in this case `SendMessages` and `EmbedLinks`. If you wish to exclude certain infraction types from being logged you can do so with `/logging moderation infractions:remove`, which will prompt you to respond with which infractions to remove.
:::tip
While not entirely necessary, I would highly recommend enabling error logging with `/logging errors`.
This will allow you to track issues you can resolve that may occur otherwise silently, e.g. automoderation issues with permissions.
It will also give heads up for potentially suspicious links that fail domain validation, but are formed like a valid url otherwise.
:::
**Relevant links:**
[Moderation log setting](../settings/logging-settings#moderation)
[Message log setting](../settings/logging-settings#messages)
### Mute
Setting up mute functionality is easily done with the [mute setting](../settings/moderation-settings#mute). If you already have an existing mute role, you can designate it as the role the bot should use with `/moderation mute role:"role name"`. If you don't have an existing role and don't want to manually create it, you can have the bot do it for you with `/moderation mute create:"role name"`.
## More settings and advanced configuration
The bot offers more complex features as well, such as filters and various other logs. To learn about filters see the guide on [filters](./Filters).

View File

@ -0,0 +1,33 @@
---
id: Moderation
title: Moderation introduction
sidebar_label: Moderation
---
**Galactic Bot** offers extensive moderation tools for servers, small and large, ranging from simple warnings and notes to mutes and tempbans. One of our more recent additions is automod. While not necessarily being a true automod in and of itself, it'll keep track of moderation escalation for you with some configuration. Automod utilizes configurable modpoints and thresholds, for more information about automod see `/moderation modpoints` and `/moderation automod`. To further complement the automated infraction escalation, the various filters can be configured to work in conjunction with the escalations.
**Galactic's** moderation commands can be viewed by using `/commands module:moderation`.
Arguments that don't follow a strict pattern can be put anywhere **in the command**. Such arguments are flags (and points, though they don't follow the same syntax as flags, more on that in a bit). For now there aren't many flags used by the moderation utility, though more may come in the future. The flags currently in use are `--force` and `--expires <time>`, which are used to guide and override the automod.
## Flags
`--force` is the flag used to bypass automod, i.e. if you think automod will change your infraction due to a threshold being exceeded pass the `--force` flag to override.
**Ex:** `-warn @user 2pts obnoxious --force` - this would force the infraction to be a warning even if the points issued would cause the total amount of points to exceed a threshold.
`--expire <time>` is the flag used to tell the automod that a custom infraction expiration time should be used instead of the defined modpoints expiration value.
**Ex:** `-warn @user 2pts obnoxious --expires 2d` - This tells the system that the infraction will expire in 2 days, instead of whatever was configured in the setting.
`--silent` is the flag used to tell the bot not to DM the infraction the user if the bot otherwise was configured to do so.
**Ex:** `-ban @user really obnoxious --silent` - with default configuration the bot would DM the user when removed from the server, passing the --silent flag will stop the bot from doing so.
## Points
Points are the point values defined either when running the command or in the modpoints setting. Issuing points is fairly simple, as they get picked up from anywhere in the reason, so long they follow the correct format. Points follow this pattern: `integer value points|point|pts|pt|p`. Any point values that exceed 100 will default to 100, and any point values that go below 0 will default to 0.
**Ex:** `-warn @user obnoxious 2 points`
## Infraction history
Infraction history will always be logged to the bot's database regardless of text channel output. As such GalacticBot provides tools to search logs and filter them to some extent with flags, such as `--filter warn` or `--exclude mute`.
When viewing a user's infraction history, the total amount of **unresolved infractions** is shown with the total amount of infractions in brackets, and if modpoints are enabled, their unexpired points as well. This does not mean that the infractions are not displayed in their history!
## NOTE
All flags and points will be parsed **out of the reason**, meaning that when issuing them they will not show up in the reason for the infraction. Points will be displayed in the infraction if the modpoints system is enabled and flags don't need to be displayed anywhere.

View File

@ -0,0 +1,50 @@
---
id: TextCommands
title: Text Based Commands
sidebar_label: Text Commands
sidebar_position: 2
---
:::caution
Note that in the future there may be options or commands that only work with text based commands due to increased complexity that cannot be implemented with slash commands in a satisfactory manner, but for now all commands are interchangeable.
:::
## Enabling
To enable text based commands use `/administration textcommands enabled:true`. This same command also allows you to change the prefix by appending the prefix option to it.
## Command Structure
:::note **Note that while this command structure is similar to the old bot's, it's not 1:1.**
In some instances, such as some settings, the name of the option isn't required unless the option is a flag, see the setting's help prompt for which options are flags.
:::
Text based commands follow the same structure as slash commands, as in
`/command subcommandgroup subcommand options`
The primary difference is in how options are parsed. While slash commands make distinguishing where one option ends and another starts very easy, text commands are a bit trickier in that regard, there is no clear delimiter for where one ends and another starts. This is why some options are defined as flags (as in they are prefixed with --). You can check which options are parsed as flags with the `/help` command. Non-flag options will try to parse their expected value from the command directly (i.e. there's no need to prefix it with the option's name).
:::tip
When using text commands, you don't need to give the option name, just the value.
Ex. `/warn users:user#1234 reason:some reason` is just `-warn user#1234 some reason`.
:::
### Option Parsing
Take for instance the ban command, it expects at least the users option, and for this example we'll also give it a time and point value, so the command structure is
`-ban <USERS> [TIME] [POINTS] [REASON]` - The order of these is completely arbitrary, but all values for one option need to be consecutive.
Our actual command would then look like
`-ban @user @user2 2w 3p broke a rule` - This works as intended, the users are parsed the same way they would when passing the users option in the slash command version. **Keep in mind that moderation commands require a strict user resolveable, that is to say an ID, complete tag or a mention.**
If you instead were to do something like this then
`-ban @user 2w 3p broke a rule @user2` - This would still work, as a user is successfully parsed, but the 2nd user will become a part of the reason as it was not given consecutively after the first user.
How about this then?
`-ban some @user reason 2w 3p` - This would error out due to an unrecognised option. Why? Because you've now split the reason string into two by putting the only user resolveable in the string, remember, values belonging to one option must be consecutively given.
### Flag Parsing
Some flags don't require an explicit value, their presence provides the value. This is typically an option for some boolean type flags, as in, the flag being present in the command implies a truthy value. Flags that allow this indicate this in the help prompt. For other values, the previously mentioned remains true, if the flag expects multiple values they need to be given consecutively.
### Multi-word Values
Sometimes a value you want to pass consists of multiple words, for instance a username that contains a space, in instances like this you need to surround it in quotes for the bot to interpret it as one value.
**This is also the case for string type flags!** (again this is due to a lack of clear delimiters)

135
docusaurus.config.ts Normal file
View File

@ -0,0 +1,135 @@
import {themes as prismThemes} from 'prism-react-renderer';
import type {Config} from '@docusaurus/types';
import type * as Preset from '@docusaurus/preset-classic';
const config: Config = {
title: 'Galactic Bot',
tagline: 'Advanced moderation bot for your Discord server',
favicon: 'img/favicon.ico',
// Set the production url of your site here
url: 'https://galactic.corgi.wtf',
// Set the /<baseUrl>/ pathname under which your site is served
// For GitHub pages deployment, it is often '/<projectName>/'
baseUrl: '/docs',
// GitHub pages deployment config.
// If you aren't using GitHub pages, you don't need these.
// organizationName: 'Galactic', // Usually your GitHub org/user name.
// projectName: 'docusaurus', // Usually your repo name.
onBrokenLinks: 'throw',
onBrokenMarkdownLinks: 'warn',
// Even if you don't use internationalization, you can use this field to set
// useful metadata like html lang. For example, if your site is Chinese, you
// may want to replace "en" with "zh-Hans".
i18n: {
defaultLocale: 'en',
locales: ['en'],
},
presets: [
[
'classic',
{
docs: {
sidebarPath: './sidebars.ts',
// Please change this to your repo.
// Remove this to remove the "edit this page" links.
editUrl:
'https://git.corgi.wtf/Galactic/docs.git',
routeBasePath: '/pages'
},
blog: {
showReadingTime: true,
// Please change this to your repo.
// Remove this to remove the "edit this page" links.
// editUrl:
// 'https://github.com/facebook/docusaurus/tree/main/packages/create-docusaurus/templates/shared/',
routeBasePath: '/changelog'
},
theme: {
customCss: './src/css/custom.css',
},
} satisfies Preset.Options,
],
],
themeConfig: {
// Replace with your project's social card
image: 'img/docusaurus-social-card.jpg',
navbar: {
title: 'Galactic Bot',
logo: {
alt: 'My Site Logo',
src: 'img/logo.svg',
},
items: [
{
type: 'docSidebar',
sidebarId: 'docs',
position: 'left',
label: 'Docs',
},
{to: '/changelog', label: 'Changelog', position: 'left'},
{
label: 'Dashboard',
href: 'https://galactic.corgi.wtf/dashboard',
target: '_self'
},
],
},
footer: {
style: 'dark',
links: [
{
title: 'Docs',
items: [
{
label: 'Initial setup',
to: 'pages/tutorials/InitialSetup',
},
{
label: 'Moderation intro',
to: 'pages/tutorials/Moderation'
}
],
},
{
title: 'Community',
items: [
{
label: 'Discord',
href: 'https://discordapp.com/invite/WDCTKGp',
},
],
},
{
title: 'More',
items: [
{
label: 'Change Log',
to: '/changes',
},
{
label: 'Invite',
href: 'https://discordapp.com/oauth2/authorize?&client_id=179805777492574208&scope=bot&permissions=8',
},
{
label: 'Repository',
href: 'https://git.corgi.wtf/galactic/docs'
}
],
},
],
copyright: `Copyright © ${new Date().getFullYear()} Galactic Bot. Built with Docusaurus.`,
},
prism: {
theme: prismThemes.github,
darkTheme: prismThemes.dracula,
},
} satisfies Preset.ThemeConfig,
};
export default config;

55
package.json Normal file
View File

@ -0,0 +1,55 @@
{
"name": "docs",
"version": "0.0.0",
"private": true,
"scripts": {
"docusaurus": "docusaurus",
"start": "docusaurus start",
"build": "docusaurus build",
"swizzle": "docusaurus swizzle",
"deploy": "docusaurus deploy",
"clear": "docusaurus clear",
"serve": "docusaurus serve",
"write-translations": "docusaurus write-translations",
"write-heading-ids": "docusaurus write-heading-ids",
"typecheck": "tsc"
},
"dependencies": {
"@docusaurus/core": "3.1.0",
"@docusaurus/preset-classic": "3.1.0",
"@mdx-js/react": "^3.0.0",
"@types/react": "^18.2.48",
"@typescript-eslint/eslint-plugin": "^6.19.0",
"@typescript-eslint/parser": "^6.19.0",
"clsx": "^2.0.0",
"eslint": "^8.56.0",
"eslint-plugin-react": "^7.33.2",
"prism-react-renderer": "^2.3.0",
"react": "^18.0.0",
"react-dom": "^18.0.0"
},
"devDependencies": {
"@docusaurus/eslint-plugin": "^3.1.0",
"@docusaurus/module-type-aliases": "3.1.0",
"@docusaurus/tsconfig": "3.1.0",
"@docusaurus/types": "3.1.0",
"@types/eslint": "^8",
"typescript": "~5.2.2"
},
"browserslist": {
"production": [
">0.5%",
"not dead",
"not op_mini all"
],
"development": [
"last 3 chrome version",
"last 3 firefox version",
"last 5 safari version"
]
},
"engines": {
"node": ">=18.0"
},
"packageManager": "yarn@4.0.2"
}

53
sidebars.ts Normal file
View File

@ -0,0 +1,53 @@
import type { SidebarsConfig } from '@docusaurus/plugin-content-docs';
/**
* Creating a sidebar enables you to:
- create an ordered group of docs
- render a sidebar for each doc of that group
- provide next/previous navigation
The sidebars can be generated from the filesystem, or explicitly defined here.
Create as many sidebars as you want.
*/
const sidebars: SidebarsConfig = {
// By default, Docusaurus generates a sidebar from the docs folder structure
// docs: [{type: 'autogenerated', dirName: '.'}],
docs: [
'getting-started',
'faq',
{
type: 'category',
label: 'Guides',
items: [{ type: 'autogenerated', dirName: 'tutorials' }],
},
{
type: 'category',
label: 'Commands',
items: [{ type: 'autogenerated', dirName: 'commands' }]
},
{
type: 'category',
label: 'Settings',
items: [{ type: 'autogenerated', dirName: 'settings' }]
},
'premium',
'terms',
'privacy'
]
// But you can create a sidebar manually
/*
tutorialSidebar: [
'intro',
'hello',
{
type: 'category',
label: 'Tutorial',
items: ['tutorial-basics/create-a-document'],
},
],
*/
};
export default sidebars;

View File

@ -0,0 +1,77 @@
import React from 'react';
import clsx from 'clsx';
import Heading from '@theme/Heading';
import styles from './styles.module.css';
import useBaseUrl from '@docusaurus/useBaseUrl';
type FeatureItem = {
title: string;
Svg?: React.ComponentType<React.ComponentProps<'svg'>>;
imageUrl?: string
description: JSX.Element;
};
const FeatureList: FeatureItem[] = [{
title: 'Easy to Use',
imageUrl: '/img/undraw_docusaurus_mountain.svg',
description: (
<>
Galactic Bot, despite being advanced, is easy to use
while allowing for more complexity and nuance to moderation.
</>
),
},
{
title: 'Powerful',
imageUrl: '/img/Rocket.svg',
description: (
<>
The Bot has several features crucial for server moderation built into it.
On top of moderation commands, the Bot provides logging services and certain automation.
</>
),
},
{
title: 'Powered by Node.js',
imageUrl: 'https://nodejs.org/static/images/logo.svg',
description: (
<>
Galactic Bot is built in Node.js using the Discord.js library. The Bot also utilizises
MongoDB and MariaDB for data storage.
</>
),
},];
function Feature({ title, Svg, imageUrl, description }: FeatureItem)
{
let imgUrl = null;
if(imageUrl)
imgUrl = useBaseUrl(imageUrl);
return <div className={clsx('col col--4')}>
<div className="text--center">
{Svg && <Svg className={styles.featureSvg} role="img" />}
{
imgUrl && (<img className={styles.featureSvg} src={imgUrl} alt={title} />)
}
</div>
<div className="text--center padding-horiz--md">
<Heading as="h3">{title}</Heading>
<p>{description}</p>
</div>
</div>;
}
export default function HomepageFeatures(): JSX.Element
{
return (
<section className={styles.features}>
<div className="container">
<div className="row">
{FeatureList.map((props, idx) => (
<Feature key={idx} {...props} />
))}
</div>
</div>
</section>
);
}

View File

@ -0,0 +1,11 @@
.features {
display: flex;
align-items: center;
padding: 2rem 0;
width: 100%;
}
.featureSvg {
height: 200px;
width: 200px;
}

30
src/css/custom.css Normal file
View File

@ -0,0 +1,30 @@
/**
* Any CSS included here will be global. The classic template
* bundles Infima by default. Infima is a CSS framework designed to
* work well for content-centric websites.
*/
/* You can override the default Infima variables here. */
:root {
--ifm-color-primary: #2e8555;
--ifm-color-primary-dark: #29784c;
--ifm-color-primary-darker: #277148;
--ifm-color-primary-darkest: #205d3b;
--ifm-color-primary-light: #33925d;
--ifm-color-primary-lighter: #359962;
--ifm-color-primary-lightest: #3cad6e;
--ifm-code-font-size: 95%;
--docusaurus-highlighted-code-line-bg: rgba(0, 0, 0, 0.1);
}
/* For readability concerns, you should choose a lighter palette in dark mode. */
[data-theme='dark'] {
--ifm-color-primary: #25c2a0;
--ifm-color-primary-dark: #21af90;
--ifm-color-primary-darker: #1fa588;
--ifm-color-primary-darkest: #1a8870;
--ifm-color-primary-light: #29d5b0;
--ifm-color-primary-lighter: #32d8b4;
--ifm-color-primary-lightest: #4fddbf;
--docusaurus-highlighted-code-line-bg: rgba(0, 0, 0, 0.3);
}

View File

@ -0,0 +1,23 @@
/**
* CSS files with the .module.css suffix will be treated as CSS modules
* and scoped locally.
*/
.heroBanner {
padding: 4rem 0;
text-align: center;
position: relative;
overflow: hidden;
}
@media screen and (max-width: 996px) {
.heroBanner {
padding: 2rem;
}
}
.buttons {
display: flex;
align-items: center;
justify-content: center;
}

46
src/pages/index.tsx Normal file
View File

@ -0,0 +1,46 @@
import React from 'react';
import clsx from 'clsx';
import Link from '@docusaurus/Link';
import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
import Layout from '@theme/Layout';
import HomepageFeatures from '@site/src/components/HomepageFeatures';
import Heading from '@theme/Heading';
import styles from './index.module.css';
function HomepageHeader()
{
const { siteConfig } = useDocusaurusContext();
return (
<header className={clsx('hero hero--primary', styles.heroBanner)}>
<div className="container">
<Heading as="h1" className="hero__title">
{siteConfig.title}
</Heading>
<p className="hero__subtitle">{siteConfig.tagline}</p>
<div className={styles.buttons}>
<Link
className="button button--secondary button--lg"
to="pages">
Get started with Galactic
</Link>
</div>
</div>
</header>
);
}
export default function Home(): JSX.Element
{
const { siteConfig } = useDocusaurusContext();
return (
<Layout
title={`Hello from ${siteConfig.title}`}
description="Description will go into a meta tag in <head />">
<HomepageHeader />
<main>
<HomepageFeatures />
</main>
</Layout>
);
}

View File

@ -0,0 +1,7 @@
---
title: Markdown page example
---
# Markdown page example
You don't need React to write simple standalone pages.

0
static/.nojekyll Normal file
View File

BIN
static/img/GBotTest.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 104 KiB

1
static/img/GBotTest.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 155 KiB

BIN
static/img/Rocket.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

662
static/img/Rocket.svg Normal file
View File

@ -0,0 +1,662 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="800px" height="800px" viewBox="0 0 800 800" enable-background="new 0 0 800 800" xml:space="preserve"> <image id="image0" width="800" height="800" x="0" y="0"
href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAyAAAAMgCAYAAADbcAZoAAAABGdBTUEAALGPC/xhBQAAACBjSFJN
AAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABmJLR0QA/wD/AP+gvaeTAAAA
CXBIWXMAAA7DAAAOwwHHb6hkAACAAElEQVR42uzde5xkd13n/9epqr7OTKYnM0km92ESIECABCKg
ZiGj0YRBMJG4ouKKK66orKur/lYX/amr/nB1XfSH+0OF1VVYZTVugkCAFQlguENuhFxIMrlN5n7p
nr7V9ZzfH6dO16Wru6tvderyej4ene46XVV9qtLTXe/+fD7fbxBFEZIkSZLUCZm0T0CSJEnS4DCA
SJIkSeoYA4gkSZKkjjGASJIkSeoYA4gkSZKkjjGASJIkSeoYA4gkSZKkjjGASJIkSeoYA4gkSZKk
jjGASJIkSeoYA4gkSZKkjjGASJIkSeoYA4gkSZKkjjGASJIkSeoYA4gkSZKkjjGASJIkSeoYA4gk
SZKkjjGASJIkSeoYA4gkSZKkjjGASJIkSeoYA4gkSZKkjjGASJIkSeoYA4gkSZKkjjGASJIkSeoY
A4gkSZKkjjGASJIkSeoYA4gkSZKkjjGASJIkSeoYA4gkSZKkjjGASJIkSeoYA4gkSZKkjjGASJIk
SeoYA4gkSZKkjjGASJIkSeoYA4gkSZKkjjGASJIkSeoYA4gkSZKkjjGASJIkSeoYA4gkSZKkjjGA
SJIkSeoYA4gkSZKkjjGASJIkSeoYA4gkSZKkjjGASJIkSeoYA4gkSZKkjjGASJIkSeoYA4gkSZKk
jjGASJIkSeoYA4gkSZKkjjGASJIkSeoYA4gkSZKkjjGASJIkSeoYA4gkSZKkjjGASJIkSeoYA4gk
SZKkjjGASJIkSeoYA4gkSZKkjjGASJIkSeoYA4gkSZKkjjGASJIkSeoYA4gkSZKkjjGASJIkSeoY
A4gkSZKkjjGASJIkSeoYA4gkSZKkjjGASJIkSeoYA4gkSZKkjjGASJIkSeoYA4gkSZKkjjGASJIk
SeoYA4gkSZKkjjGASJIkSeoYA4gkSZKkjjGASJIkSeoYA4gkSZKkjjGASJIkSeoYA4gkSZKkjjGA
SJIkSeoYA4gkSZKkjjGASJIkSeoYA4gkSZKkjjGASJIkSeoYA4gkSZKkjjGASJIkSeoYA4gkSZKk
jjGASJIkSeoYA4gkSZKkjjGASJIkSeoYA4gkSZKkjjGASJIkSeoYA4gkSZKkjjGASJIkSeoYA4gk
SZKkjjGASJIkSeoYA4gkSZKkjjGASJIkSeoYA4gkSZKkjjGASJIkSeoYA4gkSZKkjjGASJIkSeoY
A4gkSZKkjjGASJIkSeoYA4gkSZKkjjGASJIkSeoYA4gkSZKkjjGASJIkSeoYA4gkSZKkjjGASJIk
SeoYA4gkSZKkjjGASJIkSeoYA4gkSZKkjjGASJIkSeoYA4gkSZKkjjGASJIkSeoYA4gkSZKkjjGA
SJIkSeoYA4gkSZKkjjGASJIkSeoYA4gkSZKkjjGASJIkSeoYA4gkSZKkjjGASJIkSeoYA4gkSZKk
jjGASJIkSeoYA4gkSZKkjjGASJIkSeoYA4gkSZKkjjGASJIkSeoYA4gkSZKkjjGASJIkSeoYA4gk
SZKkjjGASJIkSeoYA4gkSZKkjjGASJIkSeoYA4gkSZKkjjGASJIkSeoYA4gkSZKkjjGASJIkSeoY
A4gkSZKkjjGASJIkSeoYA4gkSZKkjjGASJIkSeoYA4gkSZKkjjGASJIkSeoYA4gkSZKkjjGASJIk
SeoYA4gkSZKkjjGASJIkSeoYA4gkSZKkjjGASJIkSeoYA4gkSZKkjjGASJIkSeoYA4gkSZKkjjGA
SJIkSeoYA4gkSZKkjjGASJIkSeoYA4gkSZKkjjGASJIkSeoYA4gkSZKkjjGASJIkSeoYA4gkSZKk
jjGASJIkSeoYA4gkSZKkjjGASJIkSeoYA4gkSZKkjjGASJIkSeoYA4gkSZKkjjGASJIkSeoYA4gk
SZKkjjGASJIkSeoYA4gkSZKkjjGASJIkSeoYA4gkSZKkjjGASJIkSeoYA4gkSZKkjjGASJIkSeoY
A4gkSZKkjjGASJIkSeoYA4gkSZKkjjGASJIkSeoYA4gkSZKkjjGASJIkSeoYA4gkSZKkjjGASJIk
SeoYA4gkSZKkjjGASJIkSeoYA4gkSZKkjjGASJIkSeoYA4gkSZKkjjGASJIkSeoYA4gkSZKkjjGA
SJIkSeoYA4gkSZKkjjGASJIkSeoYA4gkSZKkjjGASJIkSeoYA4gkSZKkjjGASJIkSeoYA4gkSZKk
jjGASJIkSeoYA4gkSZKkjjGASJIkSeoYA4gkSZKkjjGASJIkSeoYA4gkSZKkjjGASJIkSeoYA4gk
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" />
</svg>

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

BIN
static/img/docusaurus.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

BIN
static/img/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 121 KiB

BIN
static/img/force_prompt.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

1
static/img/logo.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

BIN
static/img/prune_prompt.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

BIN
static/img/timer_prompt.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

View File

@ -0,0 +1,171 @@
<svg xmlns="http://www.w3.org/2000/svg" width="1088" height="687.962" viewBox="0 0 1088 687.962">
<title>Easy to Use</title>
<g id="Group_12" data-name="Group 12" transform="translate(-57 -56)">
<g id="Group_11" data-name="Group 11" transform="translate(57 56)">
<path id="Path_83" data-name="Path 83" d="M1017.81,560.461c-5.27,45.15-16.22,81.4-31.25,110.31-20,38.52-54.21,54.04-84.77,70.28a193.275,193.275,0,0,1-27.46,11.94c-55.61,19.3-117.85,14.18-166.74,3.99a657.282,657.282,0,0,0-104.09-13.16q-14.97-.675-29.97-.67c-15.42.02-293.07,5.29-360.67-131.57-16.69-33.76-28.13-75-32.24-125.27-11.63-142.12,52.29-235.46,134.74-296.47,155.97-115.41,369.76-110.57,523.43,7.88C941.15,276.621,1036.99,396.031,1017.81,560.461Z" transform="translate(-56 -106.019)" fill="#3f3d56"/>
<path id="Path_84" data-name="Path 84" d="M986.56,670.771c-20,38.52-47.21,64.04-77.77,80.28a193.272,193.272,0,0,1-27.46,11.94c-55.61,19.3-117.85,14.18-166.74,3.99a657.3,657.3,0,0,0-104.09-13.16q-14.97-.675-29.97-.67-23.13.03-46.25,1.72c-100.17,7.36-253.82-6.43-321.42-143.29L382,283.981,444.95,445.6l20.09,51.59,55.37-75.98L549,381.981l130.2,149.27,36.8-81.27L970.78,657.9l14.21,11.59Z" transform="translate(-56 -106.019)" fill="#f2f2f2"/>
<path id="Path_85" data-name="Path 85" d="M302,282.962l26-57,36,83-31-60Z" opacity="0.1"/>
<path id="Path_86" data-name="Path 86" d="M610.5,753.821q-14.97-.675-29.97-.67L465.04,497.191Z" transform="translate(-56 -106.019)" opacity="0.1"/>
<path id="Path_87" data-name="Path 87" d="M464.411,315.191,493,292.962l130,150-132-128Z" opacity="0.1"/>
<path id="Path_88" data-name="Path 88" d="M908.79,751.051a193.265,193.265,0,0,1-27.46,11.94L679.2,531.251Z" transform="translate(-56 -106.019)" opacity="0.1"/>
<circle id="Ellipse_11" data-name="Ellipse 11" cx="3" cy="3" r="3" transform="translate(479 98.962)" fill="#f2f2f2"/>
<circle id="Ellipse_12" data-name="Ellipse 12" cx="3" cy="3" r="3" transform="translate(396 201.962)" fill="#f2f2f2"/>
<circle id="Ellipse_13" data-name="Ellipse 13" cx="2" cy="2" r="2" transform="translate(600 220.962)" fill="#f2f2f2"/>
<circle id="Ellipse_14" data-name="Ellipse 14" cx="2" cy="2" r="2" transform="translate(180 265.962)" fill="#f2f2f2"/>
<circle id="Ellipse_15" data-name="Ellipse 15" cx="2" cy="2" r="2" transform="translate(612 96.962)" fill="#f2f2f2"/>
<circle id="Ellipse_16" data-name="Ellipse 16" cx="2" cy="2" r="2" transform="translate(736 192.962)" fill="#f2f2f2"/>
<circle id="Ellipse_17" data-name="Ellipse 17" cx="2" cy="2" r="2" transform="translate(858 344.962)" fill="#f2f2f2"/>
<path id="Path_89" data-name="Path 89" d="M306,121.222h-2.76v-2.76h-1.48v2.76H299V122.7h2.76v2.759h1.48V122.7H306Z" fill="#f2f2f2"/>
<path id="Path_90" data-name="Path 90" d="M848,424.222h-2.76v-2.76h-1.48v2.76H841V425.7h2.76v2.759h1.48V425.7H848Z" fill="#f2f2f2"/>
<path id="Path_91" data-name="Path 91" d="M1144,719.981c0,16.569-243.557,74-544,74s-544-57.431-544-74,243.557,14,544,14S1144,703.413,1144,719.981Z" transform="translate(-56 -106.019)" fill="#3f3d56"/>
<path id="Path_92" data-name="Path 92" d="M1144,719.981c0,16.569-243.557,74-544,74s-544-57.431-544-74,243.557,14,544,14S1144,703.413,1144,719.981Z" transform="translate(-56 -106.019)" opacity="0.1"/>
<ellipse id="Ellipse_18" data-name="Ellipse 18" cx="544" cy="30" rx="544" ry="30" transform="translate(0 583.962)" fill="#3f3d56"/>
<path id="Path_93" data-name="Path 93" d="M624,677.981c0,33.137-14.775,24-33,24s-33,9.137-33-24,33-96,33-96S624,644.844,624,677.981Z" transform="translate(-56 -106.019)" fill="#ff6584"/>
<path id="Path_94" data-name="Path 94" d="M606,690.66c0,15.062-6.716,10.909-15,10.909s-15,4.153-15-10.909,15-43.636,15-43.636S606,675.6,606,690.66Z" transform="translate(-56 -106.019)" opacity="0.1"/>
<rect id="Rectangle_97" data-name="Rectangle 97" width="92" height="18" rx="9" transform="translate(489 604.962)" fill="#2f2e41"/>
<rect id="Rectangle_98" data-name="Rectangle 98" width="92" height="18" rx="9" transform="translate(489 586.962)" fill="#2f2e41"/>
<path id="Path_95" data-name="Path 95" d="M193,596.547c0,55.343,34.719,100.126,77.626,100.126" transform="translate(-56 -106.019)" fill="#3f3d56"/>
<path id="Path_96" data-name="Path 96" d="M270.626,696.673c0-55.965,38.745-101.251,86.626-101.251" transform="translate(-56 -106.019)" fill="#6c63ff"/>
<path id="Path_97" data-name="Path 97" d="M221.125,601.564c0,52.57,22.14,95.109,49.5,95.109" transform="translate(-56 -106.019)" fill="#6c63ff"/>
<path id="Path_98" data-name="Path 98" d="M270.626,696.673c0-71.511,44.783-129.377,100.126-129.377" transform="translate(-56 -106.019)" fill="#3f3d56"/>
<path id="Path_99" data-name="Path 99" d="M254.3,697.379s11.009-.339,14.326-2.7,16.934-5.183,17.757-1.395,16.544,18.844,4.115,18.945-28.879-1.936-32.19-3.953S254.3,697.379,254.3,697.379Z" transform="translate(-56 -106.019)" fill="#a8a8a8"/>
<path id="Path_100" data-name="Path 100" d="M290.716,710.909c-12.429.1-28.879-1.936-32.19-3.953-2.522-1.536-3.527-7.048-3.863-9.591l-.368.014s.7,8.879,4.009,10.9,19.761,4.053,32.19,3.953c3.588-.029,4.827-1.305,4.759-3.2C294.755,710.174,293.386,710.887,290.716,710.909Z" transform="translate(-56 -106.019)" opacity="0.2"/>
<path id="Path_101" data-name="Path 101" d="M777.429,633.081c0,38.029,23.857,68.8,53.341,68.8" transform="translate(-56 -106.019)" fill="#3f3d56"/>
<path id="Path_102" data-name="Path 102" d="M830.769,701.882c0-38.456,26.623-69.575,59.525-69.575" transform="translate(-56 -106.019)" fill="#6c63ff"/>
<path id="Path_103" data-name="Path 103" d="M796.755,636.528c0,36.124,15.213,65.354,34.014,65.354" transform="translate(-56 -106.019)" fill="#6c63ff"/>
<path id="Path_104" data-name="Path 104" d="M830.769,701.882c0-49.139,30.773-88.9,68.8-88.9" transform="translate(-56 -106.019)" fill="#3f3d56"/>
<path id="Path_105" data-name="Path 105" d="M819.548,702.367s7.565-.233,9.844-1.856,11.636-3.562,12.2-.958,11.368,12.949,2.828,13.018-19.844-1.33-22.119-2.716S819.548,702.367,819.548,702.367Z" transform="translate(-56 -106.019)" fill="#a8a8a8"/>
<path id="Path_106" data-name="Path 106" d="M844.574,711.664c-8.54.069-19.844-1.33-22.119-2.716-1.733-1.056-2.423-4.843-2.654-6.59l-.253.01s.479,6.1,2.755,7.487,13.579,2.785,22.119,2.716c2.465-.02,3.317-.9,3.27-2.2C847.349,711.159,846.409,711.649,844.574,711.664Z" transform="translate(-56 -106.019)" opacity="0.2"/>
<path id="Path_107" data-name="Path 107" d="M949.813,724.718s11.36-1.729,14.5-4.591,16.89-7.488,18.217-3.667,19.494,17.447,6.633,19.107-30.153,1.609-33.835-.065S949.813,724.718,949.813,724.718Z" transform="translate(-56 -106.019)" fill="#a8a8a8"/>
<path id="Path_108" data-name="Path 108" d="M989.228,734.173c-12.86,1.659-30.153,1.609-33.835-.065-2.8-1.275-4.535-6.858-5.2-9.45l-.379.061s1.833,9.109,5.516,10.783,20.975,1.725,33.835.065c3.712-.479,4.836-1.956,4.529-3.906C993.319,732.907,991.991,733.817,989.228,734.173Z" transform="translate(-56 -106.019)" opacity="0.2"/>
<path id="Path_109" data-name="Path 109" d="M670.26,723.9s9.587-1.459,12.237-3.875,14.255-6.32,15.374-3.095,16.452,14.725,5.6,16.125-25.448,1.358-28.555-.055S670.26,723.9,670.26,723.9Z" transform="translate(-56 -106.019)" fill="#a8a8a8"/>
<path id="Path_110" data-name="Path 110" d="M703.524,731.875c-10.853,1.4-25.448,1.358-28.555-.055-2.367-1.076-3.827-5.788-4.39-7.976l-.32.051s1.547,7.687,4.655,9.1,17.7,1.456,28.555.055c3.133-.4,4.081-1.651,3.822-3.3C706.977,730.807,705.856,731.575,703.524,731.875Z" transform="translate(-56 -106.019)" opacity="0.2"/>
<path id="Path_111" data-name="Path 111" d="M178.389,719.109s7.463-1.136,9.527-3.016,11.1-4.92,11.969-2.409,12.808,11.463,4.358,12.553-19.811,1.057-22.23-.043S178.389,719.109,178.389,719.109Z" transform="translate(-56 -106.019)" fill="#a8a8a8"/>
<path id="Path_112" data-name="Path 112" d="M204.285,725.321c-8.449,1.09-19.811,1.057-22.23-.043-1.842-.838-2.979-4.506-3.417-6.209l-.249.04s1.2,5.984,3.624,7.085,13.781,1.133,22.23.043c2.439-.315,3.177-1.285,2.976-2.566C206.973,724.489,206.1,725.087,204.285,725.321Z" transform="translate(-56 -106.019)" opacity="0.2"/>
<path id="Path_113" data-name="Path 113" d="M439.7,707.337c0,30.22-42.124,20.873-93.7,20.873s-93.074,9.347-93.074-20.873,42.118-36.793,93.694-36.793S439.7,677.117,439.7,707.337Z" transform="translate(-56 -106.019)" opacity="0.1"/>
<path id="Path_114" data-name="Path 114" d="M439.7,699.9c0,30.22-42.124,20.873-93.7,20.873s-93.074,9.347-93.074-20.873S295.04,663.1,346.616,663.1,439.7,669.676,439.7,699.9Z" transform="translate(-56 -106.019)" fill="#3f3d56"/>
</g>
<g id="docusaurus_keytar" transform="translate(312.271 493.733)">
<path id="Path_40" data-name="Path 40" d="M99,52h91.791V89.153H99Z" transform="translate(5.904 -14.001)" fill="#fff" fill-rule="evenodd"/>
<path id="Path_41" data-name="Path 41" d="M24.855,163.927A21.828,21.828,0,0,1,5.947,153a21.829,21.829,0,0,0,18.908,32.782H46.71V163.927Z" transform="translate(-3 -4.634)" fill="#3ecc5f" fill-rule="evenodd"/>
<path id="Path_42" data-name="Path 42" d="M121.861,61.1l76.514-4.782V45.39A21.854,21.854,0,0,0,176.52,23.535H78.173L75.441,18.8a3.154,3.154,0,0,0-5.464,0l-2.732,4.732L64.513,18.8a3.154,3.154,0,0,0-5.464,0l-2.732,4.732L53.586,18.8a3.154,3.154,0,0,0-5.464,0L45.39,23.535c-.024,0-.046,0-.071,0l-4.526-4.525a3.153,3.153,0,0,0-5.276,1.414l-1.5,5.577-5.674-1.521a3.154,3.154,0,0,0-3.863,3.864L26,34.023l-5.575,1.494a3.155,3.155,0,0,0-1.416,5.278l4.526,4.526c0,.023,0,.046,0,.07L18.8,48.122a3.154,3.154,0,0,0,0,5.464l4.732,2.732L18.8,59.05a3.154,3.154,0,0,0,0,5.464l4.732,2.732L18.8,69.977a3.154,3.154,0,0,0,0,5.464l4.732,2.732L18.8,80.9a3.154,3.154,0,0,0,0,5.464L23.535,89.1,18.8,91.832a3.154,3.154,0,0,0,0,5.464l4.732,2.732L18.8,102.76a3.154,3.154,0,0,0,0,5.464l4.732,2.732L18.8,113.687a3.154,3.154,0,0,0,0,5.464l4.732,2.732L18.8,124.615a3.154,3.154,0,0,0,0,5.464l4.732,2.732L18.8,135.542a3.154,3.154,0,0,0,0,5.464l4.732,2.732L18.8,146.469a3.154,3.154,0,0,0,0,5.464l4.732,2.732L18.8,157.4a3.154,3.154,0,0,0,0,5.464l4.732,2.732L18.8,168.324a3.154,3.154,0,0,0,0,5.464l4.732,2.732A21.854,21.854,0,0,0,45.39,198.375H176.52a21.854,21.854,0,0,0,21.855-21.855V89.1l-76.514-4.782a11.632,11.632,0,0,1,0-23.219" transform="translate(-1.681 -17.226)" fill="#3ecc5f" fill-rule="evenodd"/>
<path id="Path_43" data-name="Path 43" d="M143,186.71h32.782V143H143Z" transform="translate(9.984 -5.561)" fill="#3ecc5f" fill-rule="evenodd"/>
<path id="Path_44" data-name="Path 44" d="M196.71,159.855a5.438,5.438,0,0,0-.7.07c-.042-.164-.081-.329-.127-.493a5.457,5.457,0,1,0-5.4-9.372q-.181-.185-.366-.367a5.454,5.454,0,1,0-9.384-5.4c-.162-.046-.325-.084-.486-.126a5.467,5.467,0,1,0-10.788,0c-.162.042-.325.08-.486.126a5.457,5.457,0,1,0-9.384,5.4,21.843,21.843,0,1,0,36.421,21.02,5.452,5.452,0,1,0,.7-10.858" transform="translate(10.912 -6.025)" fill="#44d860" fill-rule="evenodd"/>
<path id="Path_45" data-name="Path 45" d="M153,124.855h32.782V103H153Z" transform="translate(10.912 -9.271)" fill="#3ecc5f" fill-rule="evenodd"/>
<path id="Path_46" data-name="Path 46" d="M194.855,116.765a2.732,2.732,0,1,0,0-5.464,2.811,2.811,0,0,0-.349.035c-.022-.082-.04-.164-.063-.246a2.733,2.733,0,0,0-1.052-5.253,2.7,2.7,0,0,0-1.648.566q-.09-.093-.184-.184a2.7,2.7,0,0,0,.553-1.633,2.732,2.732,0,0,0-5.245-1.07,10.928,10.928,0,1,0,0,21.031,2.732,2.732,0,0,0,5.245-1.07,2.7,2.7,0,0,0-.553-1.633q.093-.09.184-.184a2.7,2.7,0,0,0,1.648.566,2.732,2.732,0,0,0,1.052-5.253c.023-.081.042-.164.063-.246a2.814,2.814,0,0,0,.349.035" transform="translate(12.767 -9.377)" fill="#44d860" fill-rule="evenodd"/>
<path id="Path_47" data-name="Path 47" d="M65.087,56.891a2.732,2.732,0,0,1-2.732-2.732,8.2,8.2,0,0,0-16.391,0,2.732,2.732,0,0,1-5.464,0,13.659,13.659,0,0,1,27.319,0,2.732,2.732,0,0,1-2.732,2.732" transform="translate(0.478 -15.068)" fill-rule="evenodd"/>
<path id="Path_48" data-name="Path 48" d="M103,191.347h65.565a21.854,21.854,0,0,0,21.855-21.855V93H124.855A21.854,21.854,0,0,0,103,114.855Z" transform="translate(6.275 -10.199)" fill="#ffff50" fill-rule="evenodd"/>
<path id="Path_49" data-name="Path 49" d="M173.216,129.787H118.535a1.093,1.093,0,1,1,0-2.185h54.681a1.093,1.093,0,0,1,0,2.185m0,21.855H118.535a1.093,1.093,0,1,1,0-2.186h54.681a1.093,1.093,0,0,1,0,2.186m0,21.855H118.535a1.093,1.093,0,1,1,0-2.185h54.681a1.093,1.093,0,0,1,0,2.185m0-54.434H118.535a1.093,1.093,0,1,1,0-2.185h54.681a1.093,1.093,0,0,1,0,2.185m0,21.652H118.535a1.093,1.093,0,1,1,0-2.186h54.681a1.093,1.093,0,0,1,0,2.186m0,21.855H118.535a1.093,1.093,0,1,1,0-2.186h54.681a1.093,1.093,0,0,1,0,2.186M189.585,61.611c-.013,0-.024-.007-.037-.005-3.377.115-4.974,3.492-6.384,6.472-1.471,3.114-2.608,5.139-4.473,5.078-2.064-.074-3.244-2.406-4.494-4.874-1.436-2.835-3.075-6.049-6.516-5.929-3.329.114-4.932,3.053-6.346,5.646-1.5,2.762-2.529,4.442-4.5,4.364-2.106-.076-3.225-1.972-4.52-4.167-1.444-2.443-3.112-5.191-6.487-5.1-3.272.113-4.879,2.606-6.3,4.808-1.5,2.328-2.552,3.746-4.551,3.662-2.156-.076-3.27-1.65-4.558-3.472-1.447-2.047-3.077-4.363-6.442-4.251-3.2.109-4.807,2.153-6.224,3.954-1.346,1.709-2.4,3.062-4.621,2.977a1.093,1.093,0,0,0-.079,2.186c3.3.11,4.967-1.967,6.417-3.81,1.286-1.635,2.4-3.045,4.582-3.12,2.1-.09,3.091,1.218,4.584,3.327,1.417,2,3.026,4.277,6.263,4.394,3.391.114,5.022-2.42,6.467-4.663,1.292-2,2.406-3.734,4.535-3.807,1.959-.073,3.026,1.475,4.529,4.022,1.417,2.4,3.023,5.121,6.324,5.241,3.415.118,5.064-2.863,6.5-5.5,1.245-2.282,2.419-4.437,4.5-4.509,1.959-.046,2.981,1.743,4.492,4.732,1.412,2.79,3.013,5.95,6.365,6.071l.185,0c3.348,0,4.937-3.36,6.343-6.331,1.245-2.634,2.423-5.114,4.444-5.216Z" transform="translate(7.109 -13.11)" fill-rule="evenodd"/>
<path id="Path_50" data-name="Path 50" d="M83,186.71h43.71V143H83Z" transform="translate(4.42 -5.561)" fill="#3ecc5f" fill-rule="evenodd"/>
<g id="Group_8" data-name="Group 8" transform="matrix(0.966, -0.259, 0.259, 0.966, 109.327, 91.085)">
<rect id="Rectangle_3" data-name="Rectangle 3" width="92.361" height="36.462" rx="2" transform="translate(0 0)" fill="#d8d8d8"/>
<g id="Group_2" data-name="Group 2" transform="translate(1.531 23.03)">
<rect id="Rectangle_4" data-name="Rectangle 4" width="5.336" height="5.336" rx="1" transform="translate(16.797 0)" fill="#4a4a4a"/>
<rect id="Rectangle_5" data-name="Rectangle 5" width="5.336" height="5.336" rx="1" transform="translate(23.12 0)" fill="#4a4a4a"/>
<rect id="Rectangle_6" data-name="Rectangle 6" width="5.336" height="5.336" rx="1" transform="translate(29.444 0)" fill="#4a4a4a"/>
<rect id="Rectangle_7" data-name="Rectangle 7" width="5.336" height="5.336" rx="1" transform="translate(35.768 0)" fill="#4a4a4a"/>
<rect id="Rectangle_8" data-name="Rectangle 8" width="5.336" height="5.336" rx="1" transform="translate(42.091 0)" fill="#4a4a4a"/>
<rect id="Rectangle_9" data-name="Rectangle 9" width="5.336" height="5.336" rx="1" transform="translate(48.415 0)" fill="#4a4a4a"/>
<rect id="Rectangle_10" data-name="Rectangle 10" width="5.336" height="5.336" rx="1" transform="translate(54.739 0)" fill="#4a4a4a"/>
<rect id="Rectangle_11" data-name="Rectangle 11" width="5.336" height="5.336" rx="1" transform="translate(61.063 0)" fill="#4a4a4a"/>
<rect id="Rectangle_12" data-name="Rectangle 12" width="5.336" height="5.336" rx="1" transform="translate(67.386 0)" fill="#4a4a4a"/>
<path id="Path_51" data-name="Path 51" d="M1.093,0H14.518a1.093,1.093,0,0,1,1.093,1.093V4.243a1.093,1.093,0,0,1-1.093,1.093H1.093A1.093,1.093,0,0,1,0,4.243V1.093A1.093,1.093,0,0,1,1.093,0ZM75,0H88.426a1.093,1.093,0,0,1,1.093,1.093V4.243a1.093,1.093,0,0,1-1.093,1.093H75a1.093,1.093,0,0,1-1.093-1.093V1.093A1.093,1.093,0,0,1,75,0Z" transform="translate(0 0)" fill="#4a4a4a" fill-rule="evenodd"/>
</g>
<g id="Group_3" data-name="Group 3" transform="translate(1.531 10.261)">
<path id="Path_52" data-name="Path 52" d="M1.093,0H6.218A1.093,1.093,0,0,1,7.31,1.093V4.242A1.093,1.093,0,0,1,6.218,5.335H1.093A1.093,1.093,0,0,1,0,4.242V1.093A1.093,1.093,0,0,1,1.093,0Z" transform="translate(0 0)" fill="#4a4a4a" fill-rule="evenodd"/>
<rect id="Rectangle_13" data-name="Rectangle 13" width="5.336" height="5.336" rx="1" transform="translate(8.299 0)" fill="#4a4a4a"/>
<rect id="Rectangle_14" data-name="Rectangle 14" width="5.336" height="5.336" rx="1" transform="translate(14.623 0)" fill="#4a4a4a"/>
<rect id="Rectangle_15" data-name="Rectangle 15" width="5.336" height="5.336" rx="1" transform="translate(20.947 0)" fill="#4a4a4a"/>
<rect id="Rectangle_16" data-name="Rectangle 16" width="5.336" height="5.336" rx="1" transform="translate(27.271 0)" fill="#4a4a4a"/>
<rect id="Rectangle_17" data-name="Rectangle 17" width="5.336" height="5.336" rx="1" transform="translate(33.594 0)" fill="#4a4a4a"/>
<rect id="Rectangle_18" data-name="Rectangle 18" width="5.336" height="5.336" rx="1" transform="translate(39.918 0)" fill="#4a4a4a"/>
<rect id="Rectangle_19" data-name="Rectangle 19" width="5.336" height="5.336" rx="1" transform="translate(46.242 0)" fill="#4a4a4a"/>
<rect id="Rectangle_20" data-name="Rectangle 20" width="5.336" height="5.336" rx="1" transform="translate(52.565 0)" fill="#4a4a4a"/>
<rect id="Rectangle_21" data-name="Rectangle 21" width="5.336" height="5.336" rx="1" transform="translate(58.888 0)" fill="#4a4a4a"/>
<rect id="Rectangle_22" data-name="Rectangle 22" width="5.336" height="5.336" rx="1" transform="translate(65.212 0)" fill="#4a4a4a"/>
<rect id="Rectangle_23" data-name="Rectangle 23" width="5.336" height="5.336" rx="1" transform="translate(71.536 0)" fill="#4a4a4a"/>
<rect id="Rectangle_24" data-name="Rectangle 24" width="5.336" height="5.336" rx="1" transform="translate(77.859 0)" fill="#4a4a4a"/>
<rect id="Rectangle_25" data-name="Rectangle 25" width="5.336" height="5.336" rx="1" transform="translate(84.183 0)" fill="#4a4a4a"/>
</g>
<g id="Group_4" data-name="Group 4" transform="translate(91.05 9.546) rotate(180)">
<path id="Path_53" data-name="Path 53" d="M1.093,0H6.219A1.093,1.093,0,0,1,7.312,1.093v3.15A1.093,1.093,0,0,1,6.219,5.336H1.093A1.093,1.093,0,0,1,0,4.243V1.093A1.093,1.093,0,0,1,1.093,0Z" transform="translate(0 0)" fill="#4a4a4a" fill-rule="evenodd"/>
<rect id="Rectangle_26" data-name="Rectangle 26" width="5.336" height="5.336" rx="1" transform="translate(8.299 0)" fill="#4a4a4a"/>
<rect id="Rectangle_27" data-name="Rectangle 27" width="5.336" height="5.336" rx="1" transform="translate(14.623 0)" fill="#4a4a4a"/>
<rect id="Rectangle_28" data-name="Rectangle 28" width="5.336" height="5.336" rx="1" transform="translate(20.947 0)" fill="#4a4a4a"/>
<rect id="Rectangle_29" data-name="Rectangle 29" width="5.336" height="5.336" rx="1" transform="translate(27.271 0)" fill="#4a4a4a"/>
<rect id="Rectangle_30" data-name="Rectangle 30" width="5.336" height="5.336" rx="1" transform="translate(33.594 0)" fill="#4a4a4a"/>
<rect id="Rectangle_31" data-name="Rectangle 31" width="5.336" height="5.336" rx="1" transform="translate(39.918 0)" fill="#4a4a4a"/>
<rect id="Rectangle_32" data-name="Rectangle 32" width="5.336" height="5.336" rx="1" transform="translate(46.242 0)" fill="#4a4a4a"/>
<rect id="Rectangle_33" data-name="Rectangle 33" width="5.336" height="5.336" rx="1" transform="translate(52.565 0)" fill="#4a4a4a"/>
<rect id="Rectangle_34" data-name="Rectangle 34" width="5.336" height="5.336" rx="1" transform="translate(58.889 0)" fill="#4a4a4a"/>
<rect id="Rectangle_35" data-name="Rectangle 35" width="5.336" height="5.336" rx="1" transform="translate(65.213 0)" fill="#4a4a4a"/>
<rect id="Rectangle_36" data-name="Rectangle 36" width="5.336" height="5.336" rx="1" transform="translate(71.537 0)" fill="#4a4a4a"/>
<rect id="Rectangle_37" data-name="Rectangle 37" width="5.336" height="5.336" rx="1" transform="translate(77.86 0)" fill="#4a4a4a"/>
<rect id="Rectangle_38" data-name="Rectangle 38" width="5.336" height="5.336" rx="1" transform="translate(84.183 0)" fill="#4a4a4a"/>
<rect id="Rectangle_39" data-name="Rectangle 39" width="5.336" height="5.336" rx="1" transform="translate(8.299 0)" fill="#4a4a4a"/>
<rect id="Rectangle_40" data-name="Rectangle 40" width="5.336" height="5.336" rx="1" transform="translate(14.623 0)" fill="#4a4a4a"/>
<rect id="Rectangle_41" data-name="Rectangle 41" width="5.336" height="5.336" rx="1" transform="translate(20.947 0)" fill="#4a4a4a"/>
<rect id="Rectangle_42" data-name="Rectangle 42" width="5.336" height="5.336" rx="1" transform="translate(27.271 0)" fill="#4a4a4a"/>
<rect id="Rectangle_43" data-name="Rectangle 43" width="5.336" height="5.336" rx="1" transform="translate(33.594 0)" fill="#4a4a4a"/>
<rect id="Rectangle_44" data-name="Rectangle 44" width="5.336" height="5.336" rx="1" transform="translate(39.918 0)" fill="#4a4a4a"/>
<rect id="Rectangle_45" data-name="Rectangle 45" width="5.336" height="5.336" rx="1" transform="translate(46.242 0)" fill="#4a4a4a"/>
<rect id="Rectangle_46" data-name="Rectangle 46" width="5.336" height="5.336" rx="1" transform="translate(52.565 0)" fill="#4a4a4a"/>
<rect id="Rectangle_47" data-name="Rectangle 47" width="5.336" height="5.336" rx="1" transform="translate(58.889 0)" fill="#4a4a4a"/>
<rect id="Rectangle_48" data-name="Rectangle 48" width="5.336" height="5.336" rx="1" transform="translate(65.213 0)" fill="#4a4a4a"/>
<rect id="Rectangle_49" data-name="Rectangle 49" width="5.336" height="5.336" rx="1" transform="translate(71.537 0)" fill="#4a4a4a"/>
<rect id="Rectangle_50" data-name="Rectangle 50" width="5.336" height="5.336" rx="1" transform="translate(77.86 0)" fill="#4a4a4a"/>
<rect id="Rectangle_51" data-name="Rectangle 51" width="5.336" height="5.336" rx="1" transform="translate(84.183 0)" fill="#4a4a4a"/>
</g>
<g id="Group_6" data-name="Group 6" transform="translate(1.531 16.584)">
<path id="Path_54" data-name="Path 54" d="M1.093,0h7.3A1.093,1.093,0,0,1,9.485,1.093v3.15A1.093,1.093,0,0,1,8.392,5.336h-7.3A1.093,1.093,0,0,1,0,4.243V1.094A1.093,1.093,0,0,1,1.093,0Z" transform="translate(0 0)" fill="#4a4a4a" fill-rule="evenodd"/>
<g id="Group_5" data-name="Group 5" transform="translate(10.671 0)">
<rect id="Rectangle_52" data-name="Rectangle 52" width="5.336" height="5.336" rx="1" fill="#4a4a4a"/>
<rect id="Rectangle_53" data-name="Rectangle 53" width="5.336" height="5.336" rx="1" transform="translate(6.324 0)" fill="#4a4a4a"/>
<rect id="Rectangle_54" data-name="Rectangle 54" width="5.336" height="5.336" rx="1" transform="translate(12.647 0)" fill="#4a4a4a"/>
<rect id="Rectangle_55" data-name="Rectangle 55" width="5.336" height="5.336" rx="1" transform="translate(18.971 0)" fill="#4a4a4a"/>
<rect id="Rectangle_56" data-name="Rectangle 56" width="5.336" height="5.336" rx="1" transform="translate(25.295 0)" fill="#4a4a4a"/>
<rect id="Rectangle_57" data-name="Rectangle 57" width="5.336" height="5.336" rx="1" transform="translate(31.619 0)" fill="#4a4a4a"/>
<rect id="Rectangle_58" data-name="Rectangle 58" width="5.336" height="5.336" rx="1" transform="translate(37.942 0)" fill="#4a4a4a"/>
<rect id="Rectangle_59" data-name="Rectangle 59" width="5.336" height="5.336" rx="1" transform="translate(44.265 0)" fill="#4a4a4a"/>
<rect id="Rectangle_60" data-name="Rectangle 60" width="5.336" height="5.336" rx="1" transform="translate(50.589 0)" fill="#4a4a4a"/>
<rect id="Rectangle_61" data-name="Rectangle 61" width="5.336" height="5.336" rx="1" transform="translate(56.912 0)" fill="#4a4a4a"/>
<rect id="Rectangle_62" data-name="Rectangle 62" width="5.336" height="5.336" rx="1" transform="translate(63.236 0)" fill="#4a4a4a"/>
</g>
<path id="Path_55" data-name="Path 55" d="M1.094,0H8A1.093,1.093,0,0,1,9.091,1.093v3.15A1.093,1.093,0,0,1,8,5.336H1.093A1.093,1.093,0,0,1,0,4.243V1.094A1.093,1.093,0,0,1,1.093,0Z" transform="translate(80.428 0)" fill="#4a4a4a" fill-rule="evenodd"/>
</g>
<g id="Group_7" data-name="Group 7" transform="translate(1.531 29.627)">
<rect id="Rectangle_63" data-name="Rectangle 63" width="5.336" height="5.336" rx="1" transform="translate(0 0)" fill="#4a4a4a"/>
<rect id="Rectangle_64" data-name="Rectangle 64" width="5.336" height="5.336" rx="1" transform="translate(6.324 0)" fill="#4a4a4a"/>
<rect id="Rectangle_65" data-name="Rectangle 65" width="5.336" height="5.336" rx="1" transform="translate(12.647 0)" fill="#4a4a4a"/>
<rect id="Rectangle_66" data-name="Rectangle 66" width="5.336" height="5.336" rx="1" transform="translate(18.971 0)" fill="#4a4a4a"/>
<path id="Path_56" data-name="Path 56" d="M1.093,0H31.515a1.093,1.093,0,0,1,1.093,1.093V4.244a1.093,1.093,0,0,1-1.093,1.093H1.093A1.093,1.093,0,0,1,0,4.244V1.093A1.093,1.093,0,0,1,1.093,0ZM34.687,0h3.942a1.093,1.093,0,0,1,1.093,1.093V4.244a1.093,1.093,0,0,1-1.093,1.093H34.687a1.093,1.093,0,0,1-1.093-1.093V1.093A1.093,1.093,0,0,1,34.687,0Z" transform="translate(25.294 0)" fill="#4a4a4a" fill-rule="evenodd"/>
<rect id="Rectangle_67" data-name="Rectangle 67" width="5.336" height="5.336" rx="1" transform="translate(66.003 0)" fill="#4a4a4a"/>
<rect id="Rectangle_68" data-name="Rectangle 68" width="5.336" height="5.336" rx="1" transform="translate(72.327 0)" fill="#4a4a4a"/>
<rect id="Rectangle_69" data-name="Rectangle 69" width="5.336" height="5.336" rx="1" transform="translate(84.183 0)" fill="#4a4a4a"/>
<path id="Path_57" data-name="Path 57" d="M5.336,0V1.18A1.093,1.093,0,0,1,4.243,2.273H1.093A1.093,1.093,0,0,1,0,1.18V0Z" transform="translate(83.59 2.273) rotate(180)" fill="#4a4a4a"/>
<path id="Path_58" data-name="Path 58" d="M5.336,0V1.18A1.093,1.093,0,0,1,4.243,2.273H1.093A1.093,1.093,0,0,1,0,1.18V0Z" transform="translate(78.255 3.063)" fill="#4a4a4a"/>
</g>
<rect id="Rectangle_70" data-name="Rectangle 70" width="88.927" height="2.371" rx="1.085" transform="translate(1.925 1.17)" fill="#4a4a4a"/>
<rect id="Rectangle_71" data-name="Rectangle 71" width="4.986" height="1.581" rx="0.723" transform="translate(4.1 1.566)" fill="#d8d8d8" opacity="0.136"/>
<rect id="Rectangle_72" data-name="Rectangle 72" width="4.986" height="1.581" rx="0.723" transform="translate(10.923 1.566)" fill="#d8d8d8" opacity="0.136"/>
<rect id="Rectangle_73" data-name="Rectangle 73" width="4.986" height="1.581" rx="0.723" transform="translate(16.173 1.566)" fill="#d8d8d8" opacity="0.136"/>
<rect id="Rectangle_74" data-name="Rectangle 74" width="4.986" height="1.581" rx="0.723" transform="translate(21.421 1.566)" fill="#d8d8d8" opacity="0.136"/>
<rect id="Rectangle_75" data-name="Rectangle 75" width="4.986" height="1.581" rx="0.723" transform="translate(26.671 1.566)" fill="#d8d8d8" opacity="0.136"/>
<rect id="Rectangle_76" data-name="Rectangle 76" width="4.986" height="1.581" rx="0.723" transform="translate(33.232 1.566)" fill="#d8d8d8" opacity="0.136"/>
<rect id="Rectangle_77" data-name="Rectangle 77" width="4.986" height="1.581" rx="0.723" transform="translate(38.48 1.566)" fill="#d8d8d8" opacity="0.136"/>
<rect id="Rectangle_78" data-name="Rectangle 78" width="4.986" height="1.581" rx="0.723" transform="translate(43.73 1.566)" fill="#d8d8d8" opacity="0.136"/>
<rect id="Rectangle_79" data-name="Rectangle 79" width="4.986" height="1.581" rx="0.723" transform="translate(48.978 1.566)" fill="#d8d8d8" opacity="0.136"/>
<rect id="Rectangle_80" data-name="Rectangle 80" width="4.986" height="1.581" rx="0.723" transform="translate(55.54 1.566)" fill="#d8d8d8" opacity="0.136"/>
<rect id="Rectangle_81" data-name="Rectangle 81" width="4.986" height="1.581" rx="0.723" transform="translate(60.788 1.566)" fill="#d8d8d8" opacity="0.136"/>
<rect id="Rectangle_82" data-name="Rectangle 82" width="4.986" height="1.581" rx="0.723" transform="translate(66.038 1.566)" fill="#d8d8d8" opacity="0.136"/>
<rect id="Rectangle_83" data-name="Rectangle 83" width="4.986" height="1.581" rx="0.723" transform="translate(72.599 1.566)" fill="#d8d8d8" opacity="0.136"/>
<rect id="Rectangle_84" data-name="Rectangle 84" width="4.986" height="1.581" rx="0.723" transform="translate(77.847 1.566)" fill="#d8d8d8" opacity="0.136"/>
<rect id="Rectangle_85" data-name="Rectangle 85" width="4.986" height="1.581" rx="0.723" transform="translate(83.097 1.566)" fill="#d8d8d8" opacity="0.136"/>
</g>
<path id="Path_59" data-name="Path 59" d="M146.71,159.855a5.439,5.439,0,0,0-.7.07c-.042-.164-.081-.329-.127-.493a5.457,5.457,0,1,0-5.4-9.372q-.181-.185-.366-.367a5.454,5.454,0,1,0-9.384-5.4c-.162-.046-.325-.084-.486-.126a5.467,5.467,0,1,0-10.788,0c-.162.042-.325.08-.486.126a5.457,5.457,0,1,0-9.384,5.4,21.843,21.843,0,1,0,36.421,21.02,5.452,5.452,0,1,0,.7-10.858" transform="translate(6.275 -6.025)" fill="#44d860" fill-rule="evenodd"/>
<path id="Path_60" data-name="Path 60" d="M83,124.855h43.71V103H83Z" transform="translate(4.42 -9.271)" fill="#3ecc5f" fill-rule="evenodd"/>
<path id="Path_61" data-name="Path 61" d="M134.855,116.765a2.732,2.732,0,1,0,0-5.464,2.811,2.811,0,0,0-.349.035c-.022-.082-.04-.164-.063-.246a2.733,2.733,0,0,0-1.052-5.253,2.7,2.7,0,0,0-1.648.566q-.09-.093-.184-.184a2.7,2.7,0,0,0,.553-1.633,2.732,2.732,0,0,0-5.245-1.07,10.928,10.928,0,1,0,0,21.031,2.732,2.732,0,0,0,5.245-1.07,2.7,2.7,0,0,0-.553-1.633q.093-.09.184-.184a2.7,2.7,0,0,0,1.648.566,2.732,2.732,0,0,0,1.052-5.253c.023-.081.042-.164.063-.246a2.811,2.811,0,0,0,.349.035" transform="translate(7.202 -9.377)" fill="#44d860" fill-rule="evenodd"/>
<path id="Path_62" data-name="Path 62" d="M143.232,42.33a2.967,2.967,0,0,1-.535-.055,2.754,2.754,0,0,1-.514-.153,2.838,2.838,0,0,1-.471-.251,4.139,4.139,0,0,1-.415-.339,3.2,3.2,0,0,1-.338-.415A2.7,2.7,0,0,1,140.5,39.6a2.968,2.968,0,0,1,.055-.535,3.152,3.152,0,0,1,.152-.514,2.874,2.874,0,0,1,.252-.47,2.633,2.633,0,0,1,.753-.754,2.837,2.837,0,0,1,.471-.251,2.753,2.753,0,0,1,.514-.153,2.527,2.527,0,0,1,1.071,0,2.654,2.654,0,0,1,.983.4,4.139,4.139,0,0,1,.415.339,4.019,4.019,0,0,1,.339.415,2.786,2.786,0,0,1,.251.47,2.864,2.864,0,0,1,.208,1.049,2.77,2.77,0,0,1-.8,1.934,4.139,4.139,0,0,1-.415.339,2.722,2.722,0,0,1-1.519.459m21.855-1.366a2.789,2.789,0,0,1-1.935-.8,4.162,4.162,0,0,1-.338-.415,2.7,2.7,0,0,1-.459-1.519,2.789,2.789,0,0,1,.8-1.934,4.139,4.139,0,0,1,.415-.339,2.838,2.838,0,0,1,.471-.251,2.752,2.752,0,0,1,.514-.153,2.527,2.527,0,0,1,1.071,0,2.654,2.654,0,0,1,.983.4,4.139,4.139,0,0,1,.415.339,2.79,2.79,0,0,1,.8,1.934,3.069,3.069,0,0,1-.055.535,2.779,2.779,0,0,1-.153.514,3.885,3.885,0,0,1-.251.47,4.02,4.02,0,0,1-.339.415,4.138,4.138,0,0,1-.415.339,2.722,2.722,0,0,1-1.519.459" transform="translate(9.753 -15.532)" fill-rule="evenodd"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 31 KiB

View File

@ -0,0 +1,170 @@
<svg xmlns="http://www.w3.org/2000/svg" width="1041.277" height="554.141" viewBox="0 0 1041.277 554.141">
<title>Powered by React</title>
<g id="Group_24" data-name="Group 24" transform="translate(-440 -263)">
<g id="Group_23" data-name="Group 23" transform="translate(439.989 262.965)">
<path id="Path_299" data-name="Path 299" d="M1040.82,611.12q-1.74,3.75-3.47,7.4-2.7,5.67-5.33,11.12c-.78,1.61-1.56,3.19-2.32,4.77-8.6,17.57-16.63,33.11-23.45,45.89A73.21,73.21,0,0,1,942.44,719l-151.65,1.65h-1.6l-13,.14-11.12.12-34.1.37h-1.38l-17.36.19h-.53l-107,1.16-95.51,1-11.11.12-69,.75H429l-44.75.48h-.48l-141.5,1.53-42.33.46a87.991,87.991,0,0,1-10.79-.54h0c-1.22-.14-2.44-.3-3.65-.49a87.38,87.38,0,0,1-51.29-27.54C116,678.37,102.75,655,93.85,629.64q-1.93-5.49-3.6-11.12C59.44,514.37,97,380,164.6,290.08q4.25-5.64,8.64-11l.07-.08c20.79-25.52,44.1-46.84,68.93-62,44-26.91,92.75-34.49,140.7-11.9,40.57,19.12,78.45,28.11,115.17,30.55,3.71.24,7.42.42,11.11.53,84.23,2.65,163.17-27.7,255.87-47.29,3.69-.78,7.39-1.55,11.12-2.28,66.13-13.16,139.49-20.1,226.73-5.51a189.089,189.089,0,0,1,26.76,6.4q5.77,1.86,11.12,4c41.64,16.94,64.35,48.24,74,87.46q1.37,5.46,2.37,11.11C1134.3,384.41,1084.19,518.23,1040.82,611.12Z" transform="translate(-79.34 -172.91)" fill="#f2f2f2"/>
<path id="Path_300" data-name="Path 300" d="M576.36,618.52a95.21,95.21,0,0,1-1.87,11.12h93.7V618.52Zm-78.25,62.81,11.11-.09V653.77c-3.81-.17-7.52-.34-11.11-.52ZM265.19,618.52v11.12h198.5V618.52ZM1114.87,279h-74V191.51q-5.35-2.17-11.12-4V279H776.21V186.58c-3.73.73-7.43,1.5-11.12,2.28V279H509.22V236.15c-3.69-.11-7.4-.29-11.11-.53V279H242.24V217c-24.83,15.16-48.14,36.48-68.93,62h-.07v.08q-4.4,5.4-8.64,11h8.64V618.52h-83q1.66,5.63,3.6,11.12h79.39v93.62a87,87,0,0,0,12.2,2.79c1.21.19,2.43.35,3.65.49h0a87.991,87.991,0,0,0,10.79.54l42.33-.46v-97H498.11v94.21l11.11-.12V629.64H765.09V721l11.12-.12V629.64H1029.7v4.77c.76-1.58,1.54-3.16,2.32-4.77q2.63-5.45,5.33-11.12,1.73-3.64,3.47-7.4v-321h76.42Q1116.23,284.43,1114.87,279ZM242.24,618.52V290.08H498.11V618.52Zm267,0V290.08H765.09V618.52Zm520.48,0H776.21V290.08H1029.7Z" transform="translate(-79.34 -172.91)" opacity="0.1"/>
<path id="Path_301" data-name="Path 301" d="M863.09,533.65v13l-151.92,1.4-1.62.03-57.74.53-1.38.02-17.55.15h-.52l-106.98.99L349.77,551.4h-.15l-44.65.42-.48.01-198.4,1.82v-15l46.65-28,93.6-.78,2-.01.66-.01,2-.03,44.94-.37,2.01-.01.64-.01,2-.01L315,509.3l.38-.01,35.55-.3h.29l277.4-2.34,6.79-.05h.68l5.18-.05,37.65-.31,2-.03,1.85-.02h.96l11.71-.09,2.32-.03,3.11-.02,9.75-.09,15.47-.13,2-.02,3.48-.02h.65l74.71-.64Z" fill="#65617d"/>
<path id="Path_302" data-name="Path 302" d="M863.09,533.65v13l-151.92,1.4-1.62.03-57.74.53-1.38.02-17.55.15h-.52l-106.98.99L349.77,551.4h-.15l-44.65.42-.48.01-198.4,1.82v-15l46.65-28,93.6-.78,2-.01.66-.01,2-.03,44.94-.37,2.01-.01.64-.01,2-.01L315,509.3l.38-.01,35.55-.3h.29l277.4-2.34,6.79-.05h.68l5.18-.05,37.65-.31,2-.03,1.85-.02h.96l11.71-.09,2.32-.03,3.11-.02,9.75-.09,15.47-.13,2-.02,3.48-.02h.65l74.71-.64Z" opacity="0.2"/>
<path id="Path_303" data-name="Path 303" d="M375.44,656.57v24.49a6.13,6.13,0,0,1-3.5,5.54,6,6,0,0,1-2.5.6l-34.9.74a6,6,0,0,1-2.7-.57,6.12,6.12,0,0,1-3.57-5.57V656.57Z" transform="translate(-79.34 -172.91)" fill="#3f3d56"/>
<path id="Path_304" data-name="Path 304" d="M375.44,656.57v24.49a6.13,6.13,0,0,1-3.5,5.54,6,6,0,0,1-2.5.6l-34.9.74a6,6,0,0,1-2.7-.57,6.12,6.12,0,0,1-3.57-5.57V656.57Z" transform="translate(-79.34 -172.91)" opacity="0.1"/>
<path id="Path_305" data-name="Path 305" d="M377.44,656.57v24.49a6.13,6.13,0,0,1-3.5,5.54,6,6,0,0,1-2.5.6l-34.9.74a6,6,0,0,1-2.7-.57,6.12,6.12,0,0,1-3.57-5.57V656.57Z" transform="translate(-79.34 -172.91)" fill="#3f3d56"/>
<rect id="Rectangle_137" data-name="Rectangle 137" width="47.17" height="31.5" transform="translate(680.92 483.65)" fill="#3f3d56"/>
<rect id="Rectangle_138" data-name="Rectangle 138" width="47.17" height="31.5" transform="translate(680.92 483.65)" opacity="0.1"/>
<rect id="Rectangle_139" data-name="Rectangle 139" width="47.17" height="31.5" transform="translate(678.92 483.65)" fill="#3f3d56"/>
<path id="Path_306" data-name="Path 306" d="M298.09,483.65v4.97l-47.17,1.26v-6.23Z" opacity="0.1"/>
<path id="Path_307" data-name="Path 307" d="M460.69,485.27v168.2a4,4,0,0,1-3.85,3.95l-191.65,5.1h-.05a4,4,0,0,1-3.95-3.95V485.27a4,4,0,0,1,3.95-3.95h191.6a4,4,0,0,1,3.95,3.95Z" transform="translate(-79.34 -172.91)" fill="#65617d"/>
<path id="Path_308" data-name="Path 308" d="M265.19,481.32v181.2h-.05a4,4,0,0,1-3.95-3.95V485.27a4,4,0,0,1,3.95-3.95Z" transform="translate(-79.34 -172.91)" opacity="0.1"/>
<path id="Path_309" data-name="Path 309" d="M194.59,319.15h177.5V467.4l-177.5,4Z" fill="#39374d"/>
<path id="Path_310" data-name="Path 310" d="M726.09,483.65v6.41l-47.17-1.26v-5.15Z" opacity="0.1"/>
<path id="Path_311" data-name="Path 311" d="M867.69,485.27v173.3a4,4,0,0,1-4,3.95h0L672,657.42a4,4,0,0,1-3.85-3.95V485.27a4,4,0,0,1,3.95-3.95H863.7a4,4,0,0,1,3.99,3.95Z" transform="translate(-79.34 -172.91)" fill="#65617d"/>
<path id="Path_312" data-name="Path 312" d="M867.69,485.27v173.3a4,4,0,0,1-4,3.95h0V481.32h0a4,4,0,0,1,4,3.95Z" transform="translate(-79.34 -172.91)" opacity="0.1"/>
<path id="Path_313" data-name="Path 313" d="M775.59,319.15H598.09V467.4l177.5,4Z" fill="#39374d"/>
<path id="Path_314" data-name="Path 314" d="M663.19,485.27v168.2a4,4,0,0,1-3.85,3.95l-191.65,5.1h0a4,4,0,0,1-4-3.95V485.27a4,4,0,0,1,3.95-3.95h191.6A4,4,0,0,1,663.19,485.27Z" transform="translate(-79.34 -172.91)" fill="#65617d"/>
<path id="Path_315" data-name="Path 315" d="M397.09,319.15h177.5V467.4l-177.5,4Z" fill="#4267b2"/>
<path id="Path_316" data-name="Path 316" d="M863.09,533.65v13l-151.92,1.4-1.62.03-57.74.53-1.38.02-17.55.15h-.52l-106.98.99L349.77,551.4h-.15l-44.65.42-.48.01-198.4,1.82v-15l202.51-1.33h.48l40.99-.28h.19l283.08-1.87h.29l.17-.01h.47l4.79-.03h1.46l74.49-.5,4.4-.02.98-.01Z" opacity="0.1"/>
<circle id="Ellipse_111" data-name="Ellipse 111" cx="51.33" cy="51.33" r="51.33" transform="translate(435.93 246.82)" fill="#fbbebe"/>
<path id="Path_317" data-name="Path 317" d="M617.94,550.07s-99.5,12-90,0c3.44-4.34,4.39-17.2,4.2-31.85-.06-4.45-.22-9.06-.45-13.65-1.1-22-3.75-43.5-3.75-43.5s87-41,77-8.5c-4,13.13-2.69,31.57.35,48.88.89,5.05,1.92,10,3,14.7a344.66,344.66,0,0,0,9.65,33.92Z" transform="translate(-79.34 -172.91)" fill="#fbbebe"/>
<path id="Path_318" data-name="Path 318" d="M585.47,546c11.51-2.13,23.7-6,34.53-1.54,2.85,1.17,5.47,2.88,8.39,3.86s6.12,1.22,9.16,1.91c10.68,2.42,19.34,10.55,24.9,20s8.44,20.14,11.26,30.72l6.9,25.83c6,22.45,12,45.09,13.39,68.3a2437.506,2437.506,0,0,1-250.84,1.43c5.44-10.34,11-21.31,10.54-33s-7.19-23.22-4.76-34.74c1.55-7.34,6.57-13.39,9.64-20.22,8.75-19.52,1.94-45.79,17.32-60.65,6.92-6.68,17-9.21,26.63-8.89,12.28.41,24.85,4.24,37,6.11C555.09,547.48,569.79,548.88,585.47,546Z" transform="translate(-79.34 -172.91)" fill="#ff6584"/>
<path id="Path_319" data-name="Path 319" d="M716.37,657.17l-.1,1.43v.1l-.17,2.3-1.33,18.51-1.61,22.3-.46,6.28-1,13.44v.17l-107,1-175.59,1.9v.84h-.14v-1.12l.45-14.36.86-28.06.74-23.79.07-2.37a10.53,10.53,0,0,1,11.42-10.17c4.72.4,10.85.89,18.18,1.41l3,.22c42.33,2.94,120.56,6.74,199.5,2,1.66-.09,3.33-.19,5-.31,12.24-.77,24.47-1.76,36.58-3a10.53,10.53,0,0,1,11.6,11.23Z" transform="translate(-79.34 -172.91)" opacity="0.1"/>
<path id="Path_320" data-name="Path 320" d="M429.08,725.44v-.84l175.62-1.91,107-1h.3v-.17l1-13.44.43-6,1.64-22.61,1.29-17.9v-.44a10.617,10.617,0,0,0-.11-2.47.3.3,0,0,0,0-.1,10.391,10.391,0,0,0-2-4.64,10.54,10.54,0,0,0-9.42-4c-12.11,1.24-24.34,2.23-36.58,3-1.67.12-3.34.22-5,.31-78.94,4.69-157.17.89-199.5-2l-3-.22c-7.33-.52-13.46-1-18.18-1.41a10.54,10.54,0,0,0-11.24,8.53,11,11,0,0,0-.18,1.64l-.68,22.16L429.54,710l-.44,14.36v1.12Z" transform="translate(-79.34 -172.91)" fill="#3f3d56"/>
<path id="Path_321" data-name="Path 321" d="M716.67,664.18l-1.23,15.33-1.83,22.85-.46,5.72-1,12.81-.06.64v.17h0l-.15,1.48.11-1.48h-.29l-107,1-175.65,1.9v-.28l.49-14.36,1-28.06.64-18.65A6.36,6.36,0,0,1,434.3,658a6.25,6.25,0,0,1,3.78-.9c2.1.17,4.68.37,7.69.59,4.89.36,10.92.78,17.94,1.22,13,.82,29.31,1.7,48,2.42,52,2,122.2,2.67,188.88-3.17,3-.26,6.1-.55,9.13-.84a6.26,6.26,0,0,1,3.48.66,5.159,5.159,0,0,1,.86.54,6.14,6.14,0,0,1,2,2.46,3.564,3.564,0,0,1,.25.61A6.279,6.279,0,0,1,716.67,664.18Z" transform="translate(-79.34 -172.91)" opacity="0.1"/>
<path id="Path_322" data-name="Path 322" d="M377.44,677.87v3.19a6.13,6.13,0,0,1-3.5,5.54l-40.1.77a6.12,6.12,0,0,1-3.57-5.57v-3Z" transform="translate(-79.34 -172.91)" opacity="0.1"/>
<path id="Path_323" data-name="Path 323" d="M298.59,515.57l-52.25,1V507.9l52.25-1Z" fill="#3f3d56"/>
<path id="Path_324" data-name="Path 324" d="M298.59,515.57l-52.25,1V507.9l52.25-1Z" opacity="0.1"/>
<path id="Path_325" data-name="Path 325" d="M300.59,515.57l-52.25,1V507.9l52.25-1Z" fill="#3f3d56"/>
<path id="Path_326" data-name="Path 326" d="M758.56,679.87v3.19a6.13,6.13,0,0,0,3.5,5.54l40.1.77a6.12,6.12,0,0,0,3.57-5.57v-3Z" transform="translate(-79.34 -172.91)" opacity="0.1"/>
<path id="Path_327" data-name="Path 327" d="M678.72,517.57l52.25,1V509.9l-52.25-1Z" opacity="0.1"/>
<path id="Path_328" data-name="Path 328" d="M676.72,517.57l52.25,1V509.9l-52.25-1Z" fill="#3f3d56"/>
<path id="Path_329" data-name="Path 329" d="M534.13,486.79c.08,7-3.16,13.6-5.91,20.07a163.491,163.491,0,0,0-12.66,74.71c.73,11,2.58,22,.73,32.9s-8.43,21.77-19,24.9c17.53,10.45,41.26,9.35,57.76-2.66,8.79-6.4,15.34-15.33,21.75-24.11a97.86,97.86,0,0,1-13.31,44.75A103.43,103.43,0,0,0,637,616.53c4.31-5.81,8.06-12.19,9.72-19.23,3.09-13-1.22-26.51-4.51-39.5a266.055,266.055,0,0,1-6.17-33c-.43-3.56-.78-7.22.1-10.7,1-4.07,3.67-7.51,5.64-11.22,5.6-10.54,5.73-23.3,2.86-34.88s-8.49-22.26-14.06-32.81c-4.46-8.46-9.3-17.31-17.46-22.28-5.1-3.1-11-4.39-16.88-5.64l-25.37-5.43c-5.55-1.19-11.26-2.38-16.87-1.51-9.47,1.48-16.14,8.32-22,15.34-4.59,5.46-15.81,15.71-16.6,22.86-.72,6.59,5.1,17.63,6.09,24.58,1.3,9,2.22,6,7.3,11.52C532,478.05,534.07,482,534.13,486.79Z" transform="translate(-79.34 -172.91)" fill="#3f3d56"/>
</g>
<g id="docusaurus_keytar" transform="translate(670.271 615.768)">
<path id="Path_40" data-name="Path 40" d="M99,52h43.635V69.662H99Z" transform="translate(-49.132 -33.936)" fill="#fff" fill-rule="evenodd"/>
<path id="Path_41" data-name="Path 41" d="M13.389,158.195A10.377,10.377,0,0,1,4.4,153a10.377,10.377,0,0,0,8.988,15.584H23.779V158.195Z" transform="translate(-3 -82.47)" fill="#3ecc5f" fill-rule="evenodd"/>
<path id="Path_42" data-name="Path 42" d="M66.967,38.083l36.373-2.273V30.615A10.389,10.389,0,0,0,92.95,20.226H46.2l-1.3-2.249a1.5,1.5,0,0,0-2.6,0L41,20.226l-1.3-2.249a1.5,1.5,0,0,0-2.6,0l-1.3,2.249-1.3-2.249a1.5,1.5,0,0,0-2.6,0l-1.3,2.249-.034,0-2.152-2.151a1.5,1.5,0,0,0-2.508.672L25.21,21.4l-2.7-.723a1.5,1.5,0,0,0-1.836,1.837l.722,2.7-2.65.71a1.5,1.5,0,0,0-.673,2.509l2.152,2.152c0,.011,0,.022,0,.033l-2.249,1.3a1.5,1.5,0,0,0,0,2.6l2.249,1.3-2.249,1.3a1.5,1.5,0,0,0,0,2.6L20.226,41l-2.249,1.3a1.5,1.5,0,0,0,0,2.6l2.249,1.3-2.249,1.3a1.5,1.5,0,0,0,0,2.6l2.249,1.3-2.249,1.3a1.5,1.5,0,0,0,0,2.6l2.249,1.3-2.249,1.3a1.5,1.5,0,0,0,0,2.6l2.249,1.3-2.249,1.3a1.5,1.5,0,0,0,0,2.6l2.249,1.3-2.249,1.3a1.5,1.5,0,0,0,0,2.6l2.249,1.3-2.249,1.3a1.5,1.5,0,0,0,0,2.6l2.249,1.3-2.249,1.3a1.5,1.5,0,0,0,0,2.6l2.249,1.3-2.249,1.3a1.5,1.5,0,0,0,0,2.6l2.249,1.3-2.249,1.3a1.5,1.5,0,0,0,0,2.6l2.249,1.3A10.389,10.389,0,0,0,30.615,103.34H92.95A10.389,10.389,0,0,0,103.34,92.95V51.393L66.967,49.12a5.53,5.53,0,0,1,0-11.038" transform="translate(-9.836 -17.226)" fill="#3ecc5f" fill-rule="evenodd"/>
<path id="Path_43" data-name="Path 43" d="M143,163.779h15.584V143H143Z" transform="translate(-70.275 -77.665)" fill="#3ecc5f" fill-rule="evenodd"/>
<path id="Path_44" data-name="Path 44" d="M173.779,148.389a2.582,2.582,0,0,0-.332.033c-.02-.078-.038-.156-.06-.234a2.594,2.594,0,1,0-2.567-4.455q-.086-.088-.174-.175a2.593,2.593,0,1,0-4.461-2.569c-.077-.022-.154-.04-.231-.06a2.6,2.6,0,1,0-5.128,0c-.077.02-.154.038-.231.06a2.594,2.594,0,1,0-4.461,2.569,10.384,10.384,0,1,0,17.314,9.992,2.592,2.592,0,1,0,.332-5.161" transform="translate(-75.08 -75.262)" fill="#44d860" fill-rule="evenodd"/>
<path id="Path_45" data-name="Path 45" d="M153,113.389h15.584V103H153Z" transform="translate(-75.08 -58.444)" fill="#3ecc5f" fill-rule="evenodd"/>
<path id="Path_46" data-name="Path 46" d="M183.389,108.944a1.3,1.3,0,1,0,0-2.6,1.336,1.336,0,0,0-.166.017c-.01-.039-.019-.078-.03-.117a1.3,1.3,0,0,0-.5-2.5,1.285,1.285,0,0,0-.783.269q-.043-.044-.087-.087a1.285,1.285,0,0,0,.263-.776,1.3,1.3,0,0,0-2.493-.509,5.195,5.195,0,1,0,0,10,1.3,1.3,0,0,0,2.493-.509,1.285,1.285,0,0,0-.263-.776q.044-.043.087-.087a1.285,1.285,0,0,0,.783.269,1.3,1.3,0,0,0,.5-2.5c.011-.038.02-.078.03-.117a1.337,1.337,0,0,0,.166.017" transform="translate(-84.691 -57.894)" fill="#44d860" fill-rule="evenodd"/>
<path id="Path_47" data-name="Path 47" d="M52.188,48.292a1.3,1.3,0,0,1-1.3-1.3,3.9,3.9,0,0,0-7.792,0,1.3,1.3,0,1,1-2.6,0,6.493,6.493,0,0,1,12.987,0,1.3,1.3,0,0,1-1.3,1.3" transform="translate(-21.02 -28.41)" fill-rule="evenodd"/>
<path id="Path_48" data-name="Path 48" d="M103,139.752h31.168a10.389,10.389,0,0,0,10.389-10.389V93H113.389A10.389,10.389,0,0,0,103,103.389Z" transform="translate(-51.054 -53.638)" fill="#ffff50" fill-rule="evenodd"/>
<path id="Path_49" data-name="Path 49" d="M141.1,94.017H115.106a.519.519,0,1,1,0-1.039H141.1a.519.519,0,0,1,0,1.039m0,10.389H115.106a.519.519,0,1,1,0-1.039H141.1a.519.519,0,0,1,0,1.039m0,10.389H115.106a.519.519,0,1,1,0-1.039H141.1a.519.519,0,0,1,0,1.039m0-25.877H115.106a.519.519,0,1,1,0-1.039H141.1a.519.519,0,0,1,0,1.039m0,10.293H115.106a.519.519,0,1,1,0-1.039H141.1a.519.519,0,0,1,0,1.039m0,10.389H115.106a.519.519,0,1,1,0-1.039H141.1a.519.519,0,0,1,0,1.039m7.782-47.993c-.006,0-.011,0-.018,0-1.605.055-2.365,1.66-3.035,3.077-.7,1.48-1.24,2.443-2.126,2.414-.981-.035-1.542-1.144-2.137-2.317-.683-1.347-1.462-2.876-3.1-2.819-1.582.054-2.344,1.451-3.017,2.684-.715,1.313-1.2,2.112-2.141,2.075-1-.036-1.533-.938-2.149-1.981-.686-1.162-1.479-2.467-3.084-2.423-1.555.053-2.319,1.239-2.994,2.286-.713,1.106-1.213,1.781-2.164,1.741-1.025-.036-1.554-.784-2.167-1.65-.688-.973-1.463-2.074-3.062-2.021a3.815,3.815,0,0,0-2.959,1.879c-.64.812-1.14,1.456-2.2,1.415a.52.52,0,0,0-.037,1.039,3.588,3.588,0,0,0,3.05-1.811c.611-.777,1.139-1.448,2.178-1.483,1-.043,1.47.579,2.179,1.582.674.953,1.438,2.033,2.977,2.089,1.612.054,2.387-1.151,3.074-2.217.614-.953,1.144-1.775,2.156-1.81.931-.035,1.438.7,2.153,1.912.674,1.141,1.437,2.434,3.006,2.491,1.623.056,2.407-1.361,3.09-2.616.592-1.085,1.15-2.109,2.14-2.143.931-.022,1.417.829,2.135,2.249.671,1.326,1.432,2.828,3.026,2.886l.088,0c1.592,0,2.347-1.6,3.015-3.01.592-1.252,1.152-2.431,2.113-2.479Z" transform="translate(-55.378 -38.552)" fill-rule="evenodd"/>
<path id="Path_50" data-name="Path 50" d="M83,163.779h20.779V143H83Z" transform="translate(-41.443 -77.665)" fill="#3ecc5f" fill-rule="evenodd"/>
<g id="Group_8" data-name="Group 8" transform="matrix(0.966, -0.259, 0.259, 0.966, 51.971, 43.3)">
<rect id="Rectangle_3" data-name="Rectangle 3" width="43.906" height="17.333" rx="2" transform="translate(0 0)" fill="#d8d8d8"/>
<g id="Group_2" data-name="Group 2" transform="translate(0.728 10.948)">
<rect id="Rectangle_4" data-name="Rectangle 4" width="2.537" height="2.537" rx="1" transform="translate(7.985 0)" fill="#4a4a4a"/>
<rect id="Rectangle_5" data-name="Rectangle 5" width="2.537" height="2.537" rx="1" transform="translate(10.991 0)" fill="#4a4a4a"/>
<rect id="Rectangle_6" data-name="Rectangle 6" width="2.537" height="2.537" rx="1" transform="translate(13.997 0)" fill="#4a4a4a"/>
<rect id="Rectangle_7" data-name="Rectangle 7" width="2.537" height="2.537" rx="1" transform="translate(17.003 0)" fill="#4a4a4a"/>
<rect id="Rectangle_8" data-name="Rectangle 8" width="2.537" height="2.537" rx="1" transform="translate(20.009 0)" fill="#4a4a4a"/>
<rect id="Rectangle_9" data-name="Rectangle 9" width="2.537" height="2.537" rx="1" transform="translate(23.015 0)" fill="#4a4a4a"/>
<rect id="Rectangle_10" data-name="Rectangle 10" width="2.537" height="2.537" rx="1" transform="translate(26.021 0)" fill="#4a4a4a"/>
<rect id="Rectangle_11" data-name="Rectangle 11" width="2.537" height="2.537" rx="1" transform="translate(29.028 0)" fill="#4a4a4a"/>
<rect id="Rectangle_12" data-name="Rectangle 12" width="2.537" height="2.537" rx="1" transform="translate(32.034 0)" fill="#4a4a4a"/>
<path id="Path_51" data-name="Path 51" d="M.519,0H6.9A.519.519,0,0,1,7.421.52v1.5a.519.519,0,0,1-.519.519H.519A.519.519,0,0,1,0,2.017V.519A.519.519,0,0,1,.519,0ZM35.653,0h6.383a.519.519,0,0,1,.519.519v1.5a.519.519,0,0,1-.519.519H35.652a.519.519,0,0,1-.519-.519V.519A.519.519,0,0,1,35.652,0Z" transform="translate(0 0)" fill="#4a4a4a" fill-rule="evenodd"/>
</g>
<g id="Group_3" data-name="Group 3" transform="translate(0.728 4.878)">
<path id="Path_52" data-name="Path 52" d="M.519,0H2.956a.519.519,0,0,1,.519.519v1.5a.519.519,0,0,1-.519.519H.519A.519.519,0,0,1,0,2.017V.519A.519.519,0,0,1,.519,0Z" transform="translate(0 0)" fill="#4a4a4a" fill-rule="evenodd"/>
<rect id="Rectangle_13" data-name="Rectangle 13" width="2.537" height="2.537" rx="1" transform="translate(3.945 0)" fill="#4a4a4a"/>
<rect id="Rectangle_14" data-name="Rectangle 14" width="2.537" height="2.537" rx="1" transform="translate(6.951 0)" fill="#4a4a4a"/>
<rect id="Rectangle_15" data-name="Rectangle 15" width="2.537" height="2.537" rx="1" transform="translate(9.958 0)" fill="#4a4a4a"/>
<rect id="Rectangle_16" data-name="Rectangle 16" width="2.537" height="2.537" rx="1" transform="translate(12.964 0)" fill="#4a4a4a"/>
<rect id="Rectangle_17" data-name="Rectangle 17" width="2.537" height="2.537" rx="1" transform="translate(15.97 0)" fill="#4a4a4a"/>
<rect id="Rectangle_18" data-name="Rectangle 18" width="2.537" height="2.537" rx="1" transform="translate(18.976 0)" fill="#4a4a4a"/>
<rect id="Rectangle_19" data-name="Rectangle 19" width="2.537" height="2.537" rx="1" transform="translate(21.982 0)" fill="#4a4a4a"/>
<rect id="Rectangle_20" data-name="Rectangle 20" width="2.537" height="2.537" rx="1" transform="translate(24.988 0)" fill="#4a4a4a"/>
<rect id="Rectangle_21" data-name="Rectangle 21" width="2.537" height="2.537" rx="1" transform="translate(27.994 0)" fill="#4a4a4a"/>
<rect id="Rectangle_22" data-name="Rectangle 22" width="2.537" height="2.537" rx="1" transform="translate(31 0)" fill="#4a4a4a"/>
<rect id="Rectangle_23" data-name="Rectangle 23" width="2.537" height="2.537" rx="1" transform="translate(34.006 0)" fill="#4a4a4a"/>
<rect id="Rectangle_24" data-name="Rectangle 24" width="2.537" height="2.537" rx="1" transform="translate(37.012 0)" fill="#4a4a4a"/>
<rect id="Rectangle_25" data-name="Rectangle 25" width="2.537" height="2.537" rx="1" transform="translate(40.018 0)" fill="#4a4a4a"/>
</g>
<g id="Group_4" data-name="Group 4" transform="translate(43.283 4.538) rotate(180)">
<path id="Path_53" data-name="Path 53" d="M.519,0H2.956a.519.519,0,0,1,.519.519v1.5a.519.519,0,0,1-.519.519H.519A.519.519,0,0,1,0,2.017V.519A.519.519,0,0,1,.519,0Z" transform="translate(0 0)" fill="#4a4a4a" fill-rule="evenodd"/>
<rect id="Rectangle_26" data-name="Rectangle 26" width="2.537" height="2.537" rx="1" transform="translate(3.945 0)" fill="#4a4a4a"/>
<rect id="Rectangle_27" data-name="Rectangle 27" width="2.537" height="2.537" rx="1" transform="translate(6.951 0)" fill="#4a4a4a"/>
<rect id="Rectangle_28" data-name="Rectangle 28" width="2.537" height="2.537" rx="1" transform="translate(9.958 0)" fill="#4a4a4a"/>
<rect id="Rectangle_29" data-name="Rectangle 29" width="2.537" height="2.537" rx="1" transform="translate(12.964 0)" fill="#4a4a4a"/>
<rect id="Rectangle_30" data-name="Rectangle 30" width="2.537" height="2.537" rx="1" transform="translate(15.97 0)" fill="#4a4a4a"/>
<rect id="Rectangle_31" data-name="Rectangle 31" width="2.537" height="2.537" rx="1" transform="translate(18.976 0)" fill="#4a4a4a"/>
<rect id="Rectangle_32" data-name="Rectangle 32" width="2.537" height="2.537" rx="1" transform="translate(21.982 0)" fill="#4a4a4a"/>
<rect id="Rectangle_33" data-name="Rectangle 33" width="2.537" height="2.537" rx="1" transform="translate(24.988 0)" fill="#4a4a4a"/>
<rect id="Rectangle_34" data-name="Rectangle 34" width="2.537" height="2.537" rx="1" transform="translate(27.994 0)" fill="#4a4a4a"/>
<rect id="Rectangle_35" data-name="Rectangle 35" width="2.537" height="2.537" rx="1" transform="translate(31.001 0)" fill="#4a4a4a"/>
<rect id="Rectangle_36" data-name="Rectangle 36" width="2.537" height="2.537" rx="1" transform="translate(34.007 0)" fill="#4a4a4a"/>
<rect id="Rectangle_37" data-name="Rectangle 37" width="2.537" height="2.537" rx="1" transform="translate(37.013 0)" fill="#4a4a4a"/>
<rect id="Rectangle_38" data-name="Rectangle 38" width="2.537" height="2.537" rx="1" transform="translate(40.018 0)" fill="#4a4a4a"/>
<rect id="Rectangle_39" data-name="Rectangle 39" width="2.537" height="2.537" rx="1" transform="translate(3.945 0)" fill="#4a4a4a"/>
<rect id="Rectangle_40" data-name="Rectangle 40" width="2.537" height="2.537" rx="1" transform="translate(6.951 0)" fill="#4a4a4a"/>
<rect id="Rectangle_41" data-name="Rectangle 41" width="2.537" height="2.537" rx="1" transform="translate(9.958 0)" fill="#4a4a4a"/>
<rect id="Rectangle_42" data-name="Rectangle 42" width="2.537" height="2.537" rx="1" transform="translate(12.964 0)" fill="#4a4a4a"/>
<rect id="Rectangle_43" data-name="Rectangle 43" width="2.537" height="2.537" rx="1" transform="translate(15.97 0)" fill="#4a4a4a"/>
<rect id="Rectangle_44" data-name="Rectangle 44" width="2.537" height="2.537" rx="1" transform="translate(18.976 0)" fill="#4a4a4a"/>
<rect id="Rectangle_45" data-name="Rectangle 45" width="2.537" height="2.537" rx="1" transform="translate(21.982 0)" fill="#4a4a4a"/>
<rect id="Rectangle_46" data-name="Rectangle 46" width="2.537" height="2.537" rx="1" transform="translate(24.988 0)" fill="#4a4a4a"/>
<rect id="Rectangle_47" data-name="Rectangle 47" width="2.537" height="2.537" rx="1" transform="translate(27.994 0)" fill="#4a4a4a"/>
<rect id="Rectangle_48" data-name="Rectangle 48" width="2.537" height="2.537" rx="1" transform="translate(31.001 0)" fill="#4a4a4a"/>
<rect id="Rectangle_49" data-name="Rectangle 49" width="2.537" height="2.537" rx="1" transform="translate(34.007 0)" fill="#4a4a4a"/>
<rect id="Rectangle_50" data-name="Rectangle 50" width="2.537" height="2.537" rx="1" transform="translate(37.013 0)" fill="#4a4a4a"/>
<rect id="Rectangle_51" data-name="Rectangle 51" width="2.537" height="2.537" rx="1" transform="translate(40.018 0)" fill="#4a4a4a"/>
</g>
<g id="Group_6" data-name="Group 6" transform="translate(0.728 7.883)">
<path id="Path_54" data-name="Path 54" d="M.519,0h3.47a.519.519,0,0,1,.519.519v1.5a.519.519,0,0,1-.519.519H.519A.519.519,0,0,1,0,2.017V.52A.519.519,0,0,1,.519,0Z" transform="translate(0 0)" fill="#4a4a4a" fill-rule="evenodd"/>
<g id="Group_5" data-name="Group 5" transform="translate(5.073 0)">
<rect id="Rectangle_52" data-name="Rectangle 52" width="2.537" height="2.537" rx="1" transform="translate(0 0)" fill="#4a4a4a"/>
<rect id="Rectangle_53" data-name="Rectangle 53" width="2.537" height="2.537" rx="1" transform="translate(3.006 0)" fill="#4a4a4a"/>
<rect id="Rectangle_54" data-name="Rectangle 54" width="2.537" height="2.537" rx="1" transform="translate(6.012 0)" fill="#4a4a4a"/>
<rect id="Rectangle_55" data-name="Rectangle 55" width="2.537" height="2.537" rx="1" transform="translate(9.018 0)" fill="#4a4a4a"/>
<rect id="Rectangle_56" data-name="Rectangle 56" width="2.537" height="2.537" rx="1" transform="translate(12.025 0)" fill="#4a4a4a"/>
<rect id="Rectangle_57" data-name="Rectangle 57" width="2.537" height="2.537" rx="1" transform="translate(15.031 0)" fill="#4a4a4a"/>
<rect id="Rectangle_58" data-name="Rectangle 58" width="2.537" height="2.537" rx="1" transform="translate(18.037 0)" fill="#4a4a4a"/>
<rect id="Rectangle_59" data-name="Rectangle 59" width="2.537" height="2.537" rx="1" transform="translate(21.042 0)" fill="#4a4a4a"/>
<rect id="Rectangle_60" data-name="Rectangle 60" width="2.537" height="2.537" rx="1" transform="translate(24.049 0)" fill="#4a4a4a"/>
<rect id="Rectangle_61" data-name="Rectangle 61" width="2.537" height="2.537" rx="1" transform="translate(27.055 0)" fill="#4a4a4a"/>
<rect id="Rectangle_62" data-name="Rectangle 62" width="2.537" height="2.537" rx="1" transform="translate(30.061 0)" fill="#4a4a4a"/>
</g>
<path id="Path_55" data-name="Path 55" d="M.52,0H3.8a.519.519,0,0,1,.519.519v1.5a.519.519,0,0,1-.519.519H.519A.519.519,0,0,1,0,2.017V.52A.519.519,0,0,1,.519,0Z" transform="translate(38.234 0)" fill="#4a4a4a" fill-rule="evenodd"/>
</g>
<g id="Group_7" data-name="Group 7" transform="translate(0.728 14.084)">
<rect id="Rectangle_63" data-name="Rectangle 63" width="2.537" height="2.537" rx="1" transform="translate(0 0)" fill="#4a4a4a"/>
<rect id="Rectangle_64" data-name="Rectangle 64" width="2.537" height="2.537" rx="1" transform="translate(3.006 0)" fill="#4a4a4a"/>
<rect id="Rectangle_65" data-name="Rectangle 65" width="2.537" height="2.537" rx="1" transform="translate(6.012 0)" fill="#4a4a4a"/>
<rect id="Rectangle_66" data-name="Rectangle 66" width="2.537" height="2.537" rx="1" transform="translate(9.018 0)" fill="#4a4a4a"/>
<path id="Path_56" data-name="Path 56" d="M.519,0H14.981A.519.519,0,0,1,15.5.519v1.5a.519.519,0,0,1-.519.519H.519A.519.519,0,0,1,0,2.018V.519A.519.519,0,0,1,.519,0Zm15.97,0h1.874a.519.519,0,0,1,.519.519v1.5a.519.519,0,0,1-.519.519H16.489a.519.519,0,0,1-.519-.519V.519A.519.519,0,0,1,16.489,0Z" transform="translate(12.024 0)" fill="#4a4a4a" fill-rule="evenodd"/>
<rect id="Rectangle_67" data-name="Rectangle 67" width="2.537" height="2.537" rx="1" transform="translate(31.376 0)" fill="#4a4a4a"/>
<rect id="Rectangle_68" data-name="Rectangle 68" width="2.537" height="2.537" rx="1" transform="translate(34.382 0)" fill="#4a4a4a"/>
<rect id="Rectangle_69" data-name="Rectangle 69" width="2.537" height="2.537" rx="1" transform="translate(40.018 0)" fill="#4a4a4a"/>
<path id="Path_57" data-name="Path 57" d="M2.537,0V.561a.519.519,0,0,1-.519.519H.519A.519.519,0,0,1,0,.561V0Z" transform="translate(39.736 1.08) rotate(180)" fill="#4a4a4a"/>
<path id="Path_58" data-name="Path 58" d="M2.537,0V.561a.519.519,0,0,1-.519.519H.519A.519.519,0,0,1,0,.561V0Z" transform="translate(37.2 1.456)" fill="#4a4a4a"/>
</g>
<rect id="Rectangle_70" data-name="Rectangle 70" width="42.273" height="1.127" rx="0.564" transform="translate(0.915 0.556)" fill="#4a4a4a"/>
<rect id="Rectangle_71" data-name="Rectangle 71" width="2.37" height="0.752" rx="0.376" transform="translate(1.949 0.744)" fill="#d8d8d8" opacity="0.136"/>
<rect id="Rectangle_72" data-name="Rectangle 72" width="2.37" height="0.752" rx="0.376" transform="translate(5.193 0.744)" fill="#d8d8d8" opacity="0.136"/>
<rect id="Rectangle_73" data-name="Rectangle 73" width="2.37" height="0.752" rx="0.376" transform="translate(7.688 0.744)" fill="#d8d8d8" opacity="0.136"/>
<rect id="Rectangle_74" data-name="Rectangle 74" width="2.37" height="0.752" rx="0.376" transform="translate(10.183 0.744)" fill="#d8d8d8" opacity="0.136"/>
<rect id="Rectangle_75" data-name="Rectangle 75" width="2.37" height="0.752" rx="0.376" transform="translate(12.679 0.744)" fill="#d8d8d8" opacity="0.136"/>
<rect id="Rectangle_76" data-name="Rectangle 76" width="2.37" height="0.752" rx="0.376" transform="translate(15.797 0.744)" fill="#d8d8d8" opacity="0.136"/>
<rect id="Rectangle_77" data-name="Rectangle 77" width="2.37" height="0.752" rx="0.376" transform="translate(18.292 0.744)" fill="#d8d8d8" opacity="0.136"/>
<rect id="Rectangle_78" data-name="Rectangle 78" width="2.37" height="0.752" rx="0.376" transform="translate(20.788 0.744)" fill="#d8d8d8" opacity="0.136"/>
<rect id="Rectangle_79" data-name="Rectangle 79" width="2.37" height="0.752" rx="0.376" transform="translate(23.283 0.744)" fill="#d8d8d8" opacity="0.136"/>
<rect id="Rectangle_80" data-name="Rectangle 80" width="2.37" height="0.752" rx="0.376" transform="translate(26.402 0.744)" fill="#d8d8d8" opacity="0.136"/>
<rect id="Rectangle_81" data-name="Rectangle 81" width="2.37" height="0.752" rx="0.376" transform="translate(28.897 0.744)" fill="#d8d8d8" opacity="0.136"/>
<rect id="Rectangle_82" data-name="Rectangle 82" width="2.37" height="0.752" rx="0.376" transform="translate(31.393 0.744)" fill="#d8d8d8" opacity="0.136"/>
<rect id="Rectangle_83" data-name="Rectangle 83" width="2.37" height="0.752" rx="0.376" transform="translate(34.512 0.744)" fill="#d8d8d8" opacity="0.136"/>
<rect id="Rectangle_84" data-name="Rectangle 84" width="2.37" height="0.752" rx="0.376" transform="translate(37.007 0.744)" fill="#d8d8d8" opacity="0.136"/>
<rect id="Rectangle_85" data-name="Rectangle 85" width="2.37" height="0.752" rx="0.376" transform="translate(39.502 0.744)" fill="#d8d8d8" opacity="0.136"/>
</g>
<path id="Path_59" data-name="Path 59" d="M123.779,148.389a2.583,2.583,0,0,0-.332.033c-.02-.078-.038-.156-.06-.234a2.594,2.594,0,1,0-2.567-4.455q-.086-.088-.174-.175a2.593,2.593,0,1,0-4.461-2.569c-.077-.022-.154-.04-.231-.06a2.6,2.6,0,1,0-5.128,0c-.077.02-.154.038-.231.06a2.594,2.594,0,1,0-4.461,2.569,10.384,10.384,0,1,0,17.314,9.992,2.592,2.592,0,1,0,.332-5.161" transform="translate(-51.054 -75.262)" fill="#44d860" fill-rule="evenodd"/>
<path id="Path_60" data-name="Path 60" d="M83,113.389h20.779V103H83Z" transform="translate(-41.443 -58.444)" fill="#3ecc5f" fill-rule="evenodd"/>
<path id="Path_61" data-name="Path 61" d="M123.389,108.944a1.3,1.3,0,1,0,0-2.6,1.338,1.338,0,0,0-.166.017c-.01-.039-.019-.078-.03-.117a1.3,1.3,0,0,0-.5-2.5,1.285,1.285,0,0,0-.783.269q-.043-.044-.087-.087a1.285,1.285,0,0,0,.263-.776,1.3,1.3,0,0,0-2.493-.509,5.195,5.195,0,1,0,0,10,1.3,1.3,0,0,0,2.493-.509,1.285,1.285,0,0,0-.263-.776q.044-.043.087-.087a1.285,1.285,0,0,0,.783.269,1.3,1.3,0,0,0,.5-2.5c.011-.038.02-.078.03-.117a1.335,1.335,0,0,0,.166.017" transform="translate(-55.859 -57.894)" fill="#44d860" fill-rule="evenodd"/>
<path id="Path_62" data-name="Path 62" d="M141.8,38.745a1.41,1.41,0,0,1-.255-.026,1.309,1.309,0,0,1-.244-.073,1.349,1.349,0,0,1-.224-.119,1.967,1.967,0,0,1-.2-.161,1.52,1.52,0,0,1-.161-.2,1.282,1.282,0,0,1-.218-.722,1.41,1.41,0,0,1,.026-.255,1.5,1.5,0,0,1,.072-.244,1.364,1.364,0,0,1,.12-.223,1.252,1.252,0,0,1,.358-.358,1.349,1.349,0,0,1,.224-.119,1.309,1.309,0,0,1,.244-.073,1.2,1.2,0,0,1,.509,0,1.262,1.262,0,0,1,.468.192,1.968,1.968,0,0,1,.2.161,1.908,1.908,0,0,1,.161.2,1.322,1.322,0,0,1,.12.223,1.361,1.361,0,0,1,.1.5,1.317,1.317,0,0,1-.379.919,1.968,1.968,0,0,1-.2.161,1.346,1.346,0,0,1-.223.119,1.332,1.332,0,0,1-.5.1m10.389-.649a1.326,1.326,0,0,1-.92-.379,1.979,1.979,0,0,1-.161-.2,1.282,1.282,0,0,1-.218-.722,1.326,1.326,0,0,1,.379-.919,1.967,1.967,0,0,1,.2-.161,1.351,1.351,0,0,1,.224-.119,1.308,1.308,0,0,1,.244-.073,1.2,1.2,0,0,1,.509,0,1.262,1.262,0,0,1,.468.192,1.967,1.967,0,0,1,.2.161,1.326,1.326,0,0,1,.379.919,1.461,1.461,0,0,1-.026.255,1.323,1.323,0,0,1-.073.244,1.847,1.847,0,0,1-.119.223,1.911,1.911,0,0,1-.161.2,1.967,1.967,0,0,1-.2.161,1.294,1.294,0,0,1-.722.218" transform="translate(-69.074 -26.006)" fill-rule="evenodd"/>
</g>
<g id="React-icon" transform="translate(906.3 541.56)">
<path id="Path_330" data-name="Path 330" d="M263.668,117.179c0-5.827-7.3-11.35-18.487-14.775,2.582-11.4,1.434-20.477-3.622-23.382a7.861,7.861,0,0,0-4.016-1v4a4.152,4.152,0,0,1,2.044.466c2.439,1.4,3.5,6.724,2.672,13.574-.2,1.685-.52,3.461-.914,5.272a86.9,86.9,0,0,0-11.386-1.954,87.469,87.469,0,0,0-7.459-8.965c5.845-5.433,11.332-8.41,15.062-8.41V78h0c-4.931,0-11.386,3.514-17.913,9.611-6.527-6.061-12.982-9.539-17.913-9.539v4c3.712,0,9.216,2.959,15.062,8.356a84.687,84.687,0,0,0-7.405,8.947,83.732,83.732,0,0,0-11.4,1.972c-.412-1.793-.717-3.532-.932-5.2-.843-6.85.2-12.175,2.618-13.592a3.991,3.991,0,0,1,2.062-.466v-4h0a8,8,0,0,0-4.052,1c-5.039,2.9-6.168,11.96-3.568,23.328-11.153,3.443-18.415,8.947-18.415,14.757,0,5.828,7.3,11.35,18.487,14.775-2.582,11.4-1.434,20.477,3.622,23.382a7.882,7.882,0,0,0,4.034,1c4.931,0,11.386-3.514,17.913-9.611,6.527,6.061,12.982,9.539,17.913,9.539a8,8,0,0,0,4.052-1c5.039-2.9,6.168-11.96,3.568-23.328C256.406,128.511,263.668,122.988,263.668,117.179Zm-23.346-11.96c-.663,2.313-1.488,4.7-2.421,7.083-.735-1.434-1.506-2.869-2.349-4.3-.825-1.434-1.7-2.833-2.582-4.2C235.517,104.179,237.974,104.645,240.323,105.219Zm-8.212,19.1c-1.4,2.421-2.833,4.716-4.321,6.85-2.672.233-5.379.359-8.1.359-2.708,0-5.415-.126-8.069-.341q-2.232-3.2-4.339-6.814-2.044-3.523-3.73-7.136c1.112-2.4,2.367-4.805,3.712-7.154,1.4-2.421,2.833-4.716,4.321-6.85,2.672-.233,5.379-.359,8.1-.359,2.708,0,5.415.126,8.069.341q2.232,3.2,4.339,6.814,2.044,3.523,3.73,7.136C234.692,119.564,233.455,121.966,232.11,124.315Zm5.792-2.331c.968,2.4,1.793,4.805,2.474,7.136-2.349.574-4.823,1.058-7.387,1.434.879-1.381,1.757-2.8,2.582-4.25C236.4,124.871,237.167,123.419,237.9,121.984ZM219.72,141.116a73.921,73.921,0,0,1-4.985-5.738c1.614.072,3.263.126,4.931.126,1.685,0,3.353-.036,4.985-.126A69.993,69.993,0,0,1,219.72,141.116ZM206.38,130.555c-2.546-.377-5-.843-7.352-1.417.663-2.313,1.488-4.7,2.421-7.083.735,1.434,1.506,2.869,2.349,4.3S205.5,129.192,206.38,130.555ZM219.63,93.241a73.924,73.924,0,0,1,4.985,5.738c-1.614-.072-3.263-.126-4.931-.126-1.686,0-3.353.036-4.985.126A69.993,69.993,0,0,1,219.63,93.241ZM206.362,103.8c-.879,1.381-1.757,2.8-2.582,4.25-.825,1.434-1.6,2.869-2.331,4.3-.968-2.4-1.793-4.805-2.474-7.136C201.323,104.663,203.8,104.179,206.362,103.8Zm-16.227,22.449c-6.348-2.708-10.454-6.258-10.454-9.073s4.106-6.383,10.454-9.073c1.542-.663,3.228-1.255,4.967-1.811a86.122,86.122,0,0,0,4.034,10.92,84.9,84.9,0,0,0-3.981,10.866C193.38,127.525,191.694,126.915,190.134,126.252Zm9.647,25.623c-2.439-1.4-3.5-6.724-2.672-13.574.2-1.686.52-3.461.914-5.272a86.9,86.9,0,0,0,11.386,1.954,87.465,87.465,0,0,0,7.459,8.965c-5.845,5.433-11.332,8.41-15.062,8.41A4.279,4.279,0,0,1,199.781,151.875Zm42.532-13.663c.843,6.85-.2,12.175-2.618,13.592a3.99,3.99,0,0,1-2.062.466c-3.712,0-9.216-2.959-15.062-8.356a84.689,84.689,0,0,0,7.405-8.947,83.731,83.731,0,0,0,11.4-1.972A50.194,50.194,0,0,1,242.313,138.212Zm6.9-11.96c-1.542.663-3.228,1.255-4.967,1.811a86.12,86.12,0,0,0-4.034-10.92,84.9,84.9,0,0,0,3.981-10.866c1.775.556,3.461,1.165,5.039,1.829,6.348,2.708,10.454,6.258,10.454,9.073C259.67,119.994,255.564,123.562,249.216,126.252Z" fill="#61dafb"/>
<path id="Path_331" data-name="Path 331" d="M320.8,78.4Z" transform="translate(-119.082 -0.328)" fill="#61dafb"/>
<circle id="Ellipse_112" data-name="Ellipse 112" cx="8.194" cy="8.194" r="8.194" transform="translate(211.472 108.984)" fill="#61dafb"/>
<path id="Path_332" data-name="Path 332" d="M520.5,78.1Z" transform="translate(-282.975 -0.082)" fill="#61dafb"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 35 KiB

View File

@ -0,0 +1,40 @@
<svg xmlns="http://www.w3.org/2000/svg" width="1129" height="663" viewBox="0 0 1129 663">
<title>Focus on What Matters</title>
<circle cx="321" cy="321" r="321" fill="#f2f2f2" />
<ellipse cx="559" cy="635.49998" rx="514" ry="27.50002" fill="#3f3d56" />
<ellipse cx="558" cy="627" rx="460" ry="22" opacity="0.2" />
<rect x="131" y="152.5" width="840" height="50" fill="#3f3d56" />
<path d="M166.5,727.3299A21.67009,21.67009,0,0,0,188.1701,749H984.8299A21.67009,21.67009,0,0,0,1006.5,727.3299V296h-840Z" transform="translate(-35.5 -118.5)" fill="#3f3d56" />
<path d="M984.8299,236H188.1701A21.67009,21.67009,0,0,0,166.5,257.6701V296h840V257.6701A21.67009,21.67009,0,0,0,984.8299,236Z" transform="translate(-35.5 -118.5)" fill="#3f3d56" />
<path d="M984.8299,236H188.1701A21.67009,21.67009,0,0,0,166.5,257.6701V296h840V257.6701A21.67009,21.67009,0,0,0,984.8299,236Z" transform="translate(-35.5 -118.5)" opacity="0.2" />
<circle cx="181" cy="147.5" r="13" fill="#3f3d56" />
<circle cx="217" cy="147.5" r="13" fill="#3f3d56" />
<circle cx="253" cy="147.5" r="13" fill="#3f3d56" />
<rect x="168" y="213.5" width="337" height="386" rx="5.33505" fill="#606060" />
<rect x="603" y="272.5" width="284" height="22" rx="5.47638" fill="#2e8555" />
<rect x="537" y="352.5" width="416" height="15" rx="5.47638" fill="#2e8555" />
<rect x="537" y="396.5" width="416" height="15" rx="5.47638" fill="#2e8555" />
<rect x="537" y="440.5" width="416" height="15" rx="5.47638" fill="#2e8555" />
<rect x="537" y="484.5" width="416" height="15" rx="5.47638" fill="#2e8555" />
<rect x="865" y="552.5" width="88" height="26" rx="7.02756" fill="#3ecc5f" />
<path d="M1088.60287,624.61594a30.11371,30.11371,0,0,0,3.98291-15.266c0-13.79652-8.54358-24.98081-19.08256-24.98081s-19.08256,11.18429-19.08256,24.98081a30.11411,30.11411,0,0,0,3.98291,15.266,31.248,31.248,0,0,0,0,30.53213,31.248,31.248,0,0,0,0,30.53208,31.248,31.248,0,0,0,0,30.53208,30.11408,30.11408,0,0,0-3.98291,15.266c0,13.79652,8.54353,24.98081,19.08256,24.98081s19.08256-11.18429,19.08256-24.98081a30.11368,30.11368,0,0,0-3.98291-15.266,31.248,31.248,0,0,0,0-30.53208,31.248,31.248,0,0,0,0-30.53208,31.248,31.248,0,0,0,0-30.53213Z" transform="translate(-35.5 -118.5)" fill="#3f3d56" />
<ellipse cx="1038.00321" cy="460.31783" rx="19.08256" ry="24.9808" fill="#3f3d56" />
<ellipse cx="1038.00321" cy="429.78574" rx="19.08256" ry="24.9808" fill="#3f3d56" />
<path d="M1144.93871,339.34489a91.61081,91.61081,0,0,0,7.10658-10.46092l-50.141-8.23491,54.22885.4033a91.566,91.566,0,0,0,1.74556-72.42605l-72.75449,37.74139,67.09658-49.32086a91.41255,91.41255,0,1,0-150.971,102.29805,91.45842,91.45842,0,0,0-10.42451,16.66946l65.0866,33.81447-69.40046-23.292a91.46011,91.46011,0,0,0,14.73837,85.83669,91.40575,91.40575,0,1,0,143.68892,0,91.41808,91.41808,0,0,0,0-113.02862Z" transform="translate(-35.5 -118.5)" fill="#3ecc5f" fill-rule="evenodd" />
<path d="M981.6885,395.8592a91.01343,91.01343,0,0,0,19.56129,56.51431,91.40575,91.40575,0,1,0,143.68892,0C1157.18982,436.82067,981.6885,385.60008,981.6885,395.8592Z" transform="translate(-35.5 -118.5)" opacity="0.1" />
<path d="M365.62,461.43628H477.094v45.12043H365.62Z" transform="translate(-35.5 -118.5)" fill="#fff" fill-rule="evenodd" />
<path d="M264.76252,608.74122a26.50931,26.50931,0,0,1-22.96231-13.27072,26.50976,26.50976,0,0,0,22.96231,39.81215H291.304V608.74122Z" transform="translate(-35.5 -118.5)" fill="#3ecc5f" fill-rule="evenodd" />
<path d="M384.17242,468.57061l92.92155-5.80726V449.49263a26.54091,26.54091,0,0,0-26.54143-26.54143H331.1161l-3.31768-5.74622a3.83043,3.83043,0,0,0-6.63536,0l-3.31768,5.74622-3.31767-5.74622a3.83043,3.83043,0,0,0-6.63536,0l-3.31768,5.74622L301.257,417.205a3.83043,3.83043,0,0,0-6.63536,0L291.304,422.9512c-.02919,0-.05573.004-.08625.004l-5.49674-5.49541a3.8293,3.8293,0,0,0-6.4071,1.71723l-1.81676,6.77338L270.607,424.1031a3.82993,3.82993,0,0,0-4.6912,4.69253l1.84463,6.89148-6.77072,1.81411a3.8315,3.8315,0,0,0-1.71988,6.40975l5.49673,5.49673c0,.02787-.004.05574-.004.08493l-5.74622,3.31768a3.83043,3.83043,0,0,0,0,6.63536l5.74621,3.31768L259.0163,466.081a3.83043,3.83043,0,0,0,0,6.63536l5.74622,3.31768-5.74622,3.31767a3.83043,3.83043,0,0,0,0,6.63536l5.74622,3.31768-5.74622,3.31768a3.83043,3.83043,0,0,0,0,6.63536l5.74622,3.31768-5.74622,3.31767a3.83043,3.83043,0,0,0,0,6.63536l5.74622,3.31768-5.74622,3.31768a3.83043,3.83043,0,0,0,0,6.63536l5.74622,3.31768-5.74622,3.31768a3.83042,3.83042,0,0,0,0,6.63535l5.74622,3.31768-5.74622,3.31768a3.83043,3.83043,0,0,0,0,6.63536l5.74622,3.31768L259.0163,558.976a3.83042,3.83042,0,0,0,0,6.63535l5.74622,3.31768-5.74622,3.31768a3.83043,3.83043,0,0,0,0,6.63536l5.74622,3.31768-5.74622,3.31768a3.83042,3.83042,0,0,0,0,6.63535l5.74622,3.31768-5.74622,3.31768a3.83043,3.83043,0,0,0,0,6.63536l5.74622,3.31768A26.54091,26.54091,0,0,0,291.304,635.28265H450.55254A26.5409,26.5409,0,0,0,477.094,608.74122V502.5755l-92.92155-5.80727a14.12639,14.12639,0,0,1,0-28.19762" transform="translate(-35.5 -118.5)" fill="#3ecc5f" fill-rule="evenodd" />
<path d="M424.01111,635.28265h39.81214V582.19979H424.01111Z" transform="translate(-35.5 -118.5)" fill="#3ecc5f" fill-rule="evenodd" />
<path d="M490.36468,602.10586a6.60242,6.60242,0,0,0-.848.08493c-.05042-.19906-.09821-.39945-.15393-.59852A6.62668,6.62668,0,1,0,482.80568,590.21q-.2203-.22491-.44457-.44589a6.62391,6.62391,0,1,0-11.39689-6.56369c-.1964-.05575-.39414-.10218-.59056-.15262a6.63957,6.63957,0,1,0-13.10086,0c-.1964.05042-.39414.09687-.59056.15262a6.62767,6.62767,0,1,0-11.39688,6.56369,26.52754,26.52754,0,1,0,44.23127,25.52756,6.6211,6.6211,0,1,0,.848-13.18579" transform="translate(-35.5 -118.5)" fill="#44d860" fill-rule="evenodd" />
<path d="M437.28182,555.65836H477.094V529.11693H437.28182Z" transform="translate(-35.5 -118.5)" fill="#3ecc5f" fill-rule="evenodd" />
<path d="M490.36468,545.70532a3.31768,3.31768,0,0,0,0-6.63536,3.41133,3.41133,0,0,0-.42333.04247c-.02655-.09953-.04911-.19907-.077-.29859a3.319,3.319,0,0,0-1.278-6.37923,3.28174,3.28174,0,0,0-2.00122.68742q-.10947-.11346-.22294-.22295a3.282,3.282,0,0,0,.67149-1.98265,3.31768,3.31768,0,0,0-6.37-1.2992,13.27078,13.27078,0,1,0,0,25.54082,3.31768,3.31768,0,0,0,6.37-1.2992,3.282,3.282,0,0,0-.67149-1.98265q.11347-.10947.22294-.22294a3.28174,3.28174,0,0,0,2.00122.68742,3.31768,3.31768,0,0,0,1.278-6.37923c.02786-.0982.05042-.19907.077-.29859a3.41325,3.41325,0,0,0,.42333.04246" transform="translate(-35.5 -118.5)" fill="#44d860" fill-rule="evenodd" />
<path d="M317.84538,466.081a3.31768,3.31768,0,0,1-3.31767-3.31768,9.953,9.953,0,1,0-19.90608,0,3.31768,3.31768,0,1,1-6.63535,0,16.58839,16.58839,0,1,1,33.17678,0,3.31768,3.31768,0,0,1-3.31768,3.31768" transform="translate(-35.5 -118.5)" fill-rule="evenodd" />
<path d="M370.92825,635.28265h79.62429A26.5409,26.5409,0,0,0,477.094,608.74122v-92.895H397.46968a26.54091,26.54091,0,0,0-26.54143,26.54143Z" transform="translate(-35.5 -118.5)" fill="#ffff50" fill-rule="evenodd" />
<path d="M457.21444,556.98543H390.80778a1.32707,1.32707,0,0,1,0-2.65414h66.40666a1.32707,1.32707,0,0,1,0,2.65414m0,26.54143H390.80778a1.32707,1.32707,0,1,1,0-2.65414h66.40666a1.32707,1.32707,0,0,1,0,2.65414m0,26.54143H390.80778a1.32707,1.32707,0,1,1,0-2.65414h66.40666a1.32707,1.32707,0,0,1,0,2.65414m0-66.10674H390.80778a1.32707,1.32707,0,0,1,0-2.65414h66.40666a1.32707,1.32707,0,0,1,0,2.65414m0,26.29459H390.80778a1.32707,1.32707,0,0,1,0-2.65414h66.40666a1.32707,1.32707,0,0,1,0,2.65414m0,26.54143H390.80778a1.32707,1.32707,0,0,1,0-2.65414h66.40666a1.32707,1.32707,0,0,1,0,2.65414M477.094,474.19076c-.01592,0-.0292-.008-.04512-.00663-4.10064.13934-6.04083,4.24132-7.75274,7.86024-1.78623,3.78215-3.16771,6.24122-5.43171,6.16691-2.50685-.09024-3.94007-2.92222-5.45825-5.91874-1.74377-3.44243-3.73438-7.34667-7.91333-7.20069-4.04227.138-5.98907,3.70784-7.70631,6.857-1.82738,3.35484-3.07084,5.39455-5.46887,5.30033-2.55727-.09289-3.91619-2.39536-5.48877-5.06013-1.75306-2.96733-3.77951-6.30359-7.8775-6.18946-3.97326.13669-5.92537,3.16507-7.64791,5.83912-1.82207,2.82666-3.09872,4.5492-5.52725,4.447-2.61832-.09289-3.9706-2.00388-5.53522-4.21611-1.757-2.4856-3.737-5.299-7.82308-5.16231-3.88567.13271-5.83779,2.61434-7.559,4.80135-1.635,2.07555-2.9116,3.71846-5.61218,3.615a1.32793,1.32793,0,1,0-.09555,2.65414c4.00377.134,6.03154-2.38873,7.79257-4.6275,1.562-1.9853,2.91027-3.69855,5.56441-3.78879,2.55594-.10882,3.75429,1.47968,5.56707,4.04093,1.7212,2.43385,3.67465,5.19416,7.60545,5.33616,4.11789.138,6.09921-2.93946,7.8536-5.66261,1.56861-2.43385,2.92221-4.53461,5.50734-4.62352,2.37944-.08892,3.67466,1.79154,5.50072,4.885,1.72121,2.91557,3.67069,6.21865,7.67977,6.36463,4.14709.14332,6.14965-3.47693,7.89475-6.68181,1.51155-2.77092,2.93814-5.38791,5.46621-5.4755,2.37944-.05573,3.62025,2.11668,5.45558,5.74622,1.71459,3.388,3.65875,7.22591,7.73019,7.37321l.22429.004c4.06614,0,5.99571-4.08074,7.70364-7.68905,1.51154-3.19825,2.94211-6.21069,5.3972-6.33411Z" transform="translate(-35.5 -118.5)" fill-rule="evenodd" />
<path d="M344.38682,635.28265h53.08286V582.19979H344.38682Z" transform="translate(-35.5 -118.5)" fill="#3ecc5f" fill-rule="evenodd" />
<path d="M424.01111,602.10586a6.60242,6.60242,0,0,0-.848.08493c-.05042-.19906-.09821-.39945-.15394-.59852A6.62667,6.62667,0,1,0,416.45211,590.21q-.2203-.22491-.44458-.44589a6.62391,6.62391,0,1,0-11.39689-6.56369c-.1964-.05575-.39413-.10218-.59054-.15262a6.63957,6.63957,0,1,0-13.10084,0c-.19641.05042-.39414.09687-.59055.15262a6.62767,6.62767,0,1,0-11.39689,6.56369,26.52755,26.52755,0,1,0,44.2313,25.52756,6.6211,6.6211,0,1,0,.848-13.18579" transform="translate(-35.5 -118.5)" fill="#44d860" fill-rule="evenodd" />
<path d="M344.38682,555.65836h53.08286V529.11693H344.38682Z" transform="translate(-35.5 -118.5)" fill="#3ecc5f" fill-rule="evenodd" />
<path d="M410.74039,545.70532a3.31768,3.31768,0,1,0,0-6.63536,3.41133,3.41133,0,0,0-.42333.04247c-.02655-.09953-.04911-.19907-.077-.29859a3.319,3.319,0,0,0-1.278-6.37923,3.28174,3.28174,0,0,0-2.00122.68742q-.10947-.11346-.22294-.22295a3.282,3.282,0,0,0,.67149-1.98265,3.31768,3.31768,0,0,0-6.37-1.2992,13.27078,13.27078,0,1,0,0,25.54082,3.31768,3.31768,0,0,0,6.37-1.2992,3.282,3.282,0,0,0-.67149-1.98265q.11347-.10947.22294-.22294a3.28174,3.28174,0,0,0,2.00122.68742,3.31768,3.31768,0,0,0,1.278-6.37923c.02786-.0982.05042-.19907.077-.29859a3.41325,3.41325,0,0,0,.42333.04246" transform="translate(-35.5 -118.5)" fill="#44d860" fill-rule="evenodd" />
<path d="M424.01111,447.8338a3.60349,3.60349,0,0,1-.65028-.06636,3.34415,3.34415,0,0,1-.62372-.18579,3.44679,3.44679,0,0,1-.572-.30522,5.02708,5.02708,0,0,1-.50429-.4114,3.88726,3.88726,0,0,1-.41007-.50428,3.27532,3.27532,0,0,1-.55737-1.84463,3.60248,3.60248,0,0,1,.06636-.65027,3.82638,3.82638,0,0,1,.18447-.62373,3.48858,3.48858,0,0,1,.30656-.57064,3.197,3.197,0,0,1,.91436-.91568,3.44685,3.44685,0,0,1,.572-.30523,3.344,3.344,0,0,1,.62372-.18578,3.06907,3.06907,0,0,1,1.30053,0,3.22332,3.22332,0,0,1,1.19436.491,5.02835,5.02835,0,0,1,.50429.41139,4.8801,4.8801,0,0,1,.41139.50429,3.38246,3.38246,0,0,1,.30522.57064,3.47806,3.47806,0,0,1,.25215,1.274A3.36394,3.36394,0,0,1,426.36,446.865a5.02708,5.02708,0,0,1-.50429.4114,3.3057,3.3057,0,0,1-1.84463.55737m26.54143-1.65884a3.38754,3.38754,0,0,1-2.35024-.96877,5.04185,5.04185,0,0,1-.41007-.50428,3.27532,3.27532,0,0,1-.55737-1.84463,3.38659,3.38659,0,0,1,.96744-2.34892,5.02559,5.02559,0,0,1,.50429-.41139,3.44685,3.44685,0,0,1,.572-.30523,3.3432,3.3432,0,0,1,.62373-.18579,3.06952,3.06952,0,0,1,1.30052,0,3.22356,3.22356,0,0,1,1.19436.491,5.02559,5.02559,0,0,1,.50429.41139,3.38792,3.38792,0,0,1,.96876,2.34892,3.72635,3.72635,0,0,1-.06636.65026,3.37387,3.37387,0,0,1-.18579.62373,4.71469,4.71469,0,0,1-.30522.57064,4.8801,4.8801,0,0,1-.41139.50429,5.02559,5.02559,0,0,1-.50429.41139,3.30547,3.30547,0,0,1-1.84463.55737" transform="translate(-35.5 -118.5)" fill-rule="evenodd" />
</svg>

After

Width:  |  Height:  |  Size: 12 KiB

8
tsconfig.json Normal file
View File

@ -0,0 +1,8 @@
{
// This file is not used in compilation. It is here just for a nice editor experience.
"extends": "@docusaurus/tsconfig",
"compilerOptions": {
"baseUrl": ".",
"skipLibCheck": true
},
}

13077
yarn.lock Normal file

File diff suppressed because it is too large Load Diff