89 Commits

Author SHA1 Message Date
Chuyaoyuan 1832e29672 version
version
2023-08-17 20:22:12 +08:00
Chuyaoyuan 11ef997085 health & log
health & log
2023-08-07 20:22:24 +08:00
Chuyaoyuan bd1e67c481 banner
banner
2023-08-01 20:54:18 +08:00
Chuyaoyuan 81af4244e2 2.0 架构调整
2.0  架构调整
2023-07-31 22:52:46 +08:00
Chuyaoyuan 04b3213ced Merge pull request #2 from Chuyaoyuan/v1
Merge pull request #1 from Chuyaoyuan/master
2023-07-31 22:26:11 +08:00
Chuyaoyuan 6d08799cb8 Merge pull request #1 from Chuyaoyuan/master
v1 merge
2023-07-31 22:24:30 +08:00
Chuyaoyuan b92918b9e8 Update RestUserController.java
import提交
2023-07-31 22:20:31 +08:00
Chuyaoyuan e013de4241 logout 2022-12-03 09:15:09 +08:00
Chuyaoyuan 9daa370797 修改 2022-10-17 22:47:30 +08:00
Chuyaoyuan ebd614b2e4 修改 2022-09-27 16:04:19 +08:00
Chuyaoyuan 3a8b565db1 修改 2022-09-25 21:34:34 +08:00
Chuyaoyuan 001d6ff90c 修改 2022-09-11 16:11:39 +08:00
Chuyaoyuan f7441166e4 修改 2022-09-03 16:08:10 +08:00
Chuyaoyuan 136963e206 修改 2022-08-30 00:38:18 +08:00
Chuyaoyuan f4bc489bb6 修改 2022-08-29 10:59:44 +08:00
Chuyaoyuan d024e2ce19 修改 2022-08-24 08:48:00 +08:00
Chuyaoyuan 05121c7fec 修改 2022-08-05 00:23:53 +08:00
Chuyaoyuan c137677f71 修改 2022-08-05 00:22:54 +08:00
Chuyaoyuan 2414f5e4c9 修改 2022-07-29 09:17:07 +08:00
Chuyaoyuan a820c534d2 修改 2022-07-14 21:57:38 +08:00
Chuyaoyuan f48fb8a78d 修改 2022-07-07 22:08:35 +08:00
Chuyaoyuan f852c5c74b 修改 2022-06-28 23:57:05 +08:00
Chuyaoyuan d61e9e2351 修改 2022-06-19 22:25:58 +08:00
Chuyaoyuan 309ee6f7ad 修改 2022-06-13 21:24:56 +08:00
Chuyaoyuan 1c00b78fb8 修改 2022-06-13 21:24:34 +08:00
Chuyaoyuan e55cd8110d 修改 2022-06-08 23:08:05 +08:00
Chuyaoyuan 71099cb2ab 修改 2022-06-05 21:42:47 +08:00
Chuyaoyuan f1527975ea 修改 2022-06-05 21:40:39 +08:00
Chuyaoyuan ab0f2b74dd 修改 2022-05-25 22:32:31 +08:00
Chuyaoyuan 7de2f53abd 修改 2022-05-06 21:34:34 +08:00
Chuyaoyuan db9cd60424 修改 2022-05-04 22:18:59 +08:00
Chuyaoyuan adcc060a94 修改 2022-04-21 23:48:10 +08:00
Chuyaoyuan 3e59f8f617 修改 2022-04-18 23:05:11 +08:00
Chuyaoyuan 3a412f1a5c 调整
调整
2022-04-16 23:56:20 +08:00
Chuyaoyuan aec384d46f Create .gitignore
git
2022-04-14 20:53:38 +08:00
Chuyaoyuan 3a73101e34 Update RestUserController.java
输出
2022-04-12 23:59:20 +08:00
Chuyaoyuan 4cecab8931 修改 2021-04-15 16:40:22 +08:00
Chuyaoyuan 7e88420f54 更新 2021-04-15 16:24:05 +08:00
Chuyaoyuan 885bb6b77a 更新 2021-04-15 16:17:38 +08:00
yaoyuan2.chu 80e8e9f000 Update README.md
更新
2021-04-15 15:14:22 +08:00
yaoyuan2.chu ba5f8d1cfa Update README.md
更新
2021-04-15 15:08:02 +08:00
yaoyuan2.chu a7e9b239c5 Update README.md
更新
2021-04-15 14:20:58 +08:00
yaoyuan2.chu 8a597a0ef4 Create sync2gitee.yml
更新2
2021-04-15 14:05:06 +08:00
yaoyuan2.chu d39f8109e6 Delete auto-sync.yml
更新
2021-04-15 14:05:00 +08:00
yaoyuan2.chu e8ab10d926 Update README.md
更新
2021-04-15 13:56:55 +08:00
yaoyuan2.chu 8ce0b67688 Update README.md
更新说明
2021-04-15 11:52:01 +08:00
yaoyuan2.chu ebaa32cb0c Create auto-sync.yml
auto
2021-04-15 11:50:45 +08:00
yaoyuan2.chu 33042f2abc readme、后台管理等更新 2021-01-17 22:35:15 +08:00
yaoyuan2.chu ac4f045d03 格式化代码提交 2020-12-13 23:57:37 +08:00
yaoyuan2.chu 1e0fcfb6e2 页面优化 2020-11-30 00:09:38 +08:00
yaoyuan2.chu df3b826b3e 截图以及优化 2020-11-17 19:20:11 +08:00
yaoyuan2.chu 8d2f7b3042 mysql依赖修改 2020-11-17 19:19:11 +08:00
yaoyuan2.chu ae0650fac4 标签调整,优化 2020-11-11 23:39:08 +08:00
yaoyuan2.chu 16a0e65627 主题页调整 2020-11-09 23:35:13 +08:00
yaoyuan2.chu 3663f44989 模态框跟换为layx,代码优化,新建帖子时可新建标签 2020-11-09 23:25:33 +08:00
Chuyaoyuan d343255e09 本地代码提交 2020-10-14 11:29:36 +08:00
Chuyaoyuan c4da2f8ddd 添加readme 2020-10-14 11:26:45 +08:00
Chuyaoyuan 7e0b726b87 tj 2020-10-14 11:18:21 +08:00
Chuyaoyuan e75d47a834 Merge branch 'master' of https://gitee.com/chuyaoyuan/Jiscuss 2020-10-14 11:11:13 +08:00
Chuyaoyuan 4de42cbbad 清空 2020-10-14 11:03:05 +08:00
Chuyaoyuan fec14cb2ee add readme4.txt 2020-10-14 10:52:33 +08:00
Chuyaoyuan 1b032c02a4 清空 2020-10-14 10:45:17 +08:00
Chuyaoyuan 1ffbaf19a1 test 2020-10-14 10:41:01 +08:00
Chuyaoyuan f8d87a0298 清空 2020-10-14 10:39:24 +08:00
Chuyaoyuan 221c7d98b9 清空 2020-10-14 10:34:17 +08:00
Chuyaoyuan 69818cdd03 add readme2.txt 2020-10-14 10:06:01 +08:00
Chuyaoyuan 6b210915bf 清空 2020-10-14 09:59:42 +08:00
Chuyaoyuan f895e58ca3 代码提交 2020-10-10 00:59:35 +08:00
Chuyaoyuan 44ed9f88c6 新建标签相关 2020-09-27 17:42:59 +08:00
Chuyaoyuan fde1079d74 代码提交--标签相关 2020-09-27 17:35:31 +08:00
Chuyaoyuan ba3c813106 mysql驱动 2020-09-27 17:34:46 +08:00
Chuyaoyuan 00ab5b15a3 代码提交 2020-09-10 18:30:42 +08:00
Chuyaoyuan 8662dd44f0 评论优化 2020-09-10 18:29:42 +08:00
Chuyaoyuan d1e946a31f 回到首页 2020-09-10 17:09:34 +08:00
Chuyaoyuan d0154d9447 新增文件 2020-09-10 17:07:21 +08:00
Chuyaoyuan f70c890b4d 评论优化 2020-09-10 17:01:30 +08:00
Chuyaoyuan 96c065c0a2 代码提交 2020-08-31 22:04:08 +08:00
Chuyaoyuan e80c55d599 分页修改和评论获取 2020-08-17 17:42:34 +08:00
Chuyaoyuan 72c98ba2f8 代码提交 2020-08-14 17:44:21 +08:00
Chuyaoyuan e954bc59f2 代码提交分页 2020-08-13 17:47:55 +08:00
Chuyaoyuan 1c1cd6edb3 新建主题完善 2020-07-17 17:46:52 +08:00
Chuyaoyuan 06c48f8606 用户信息增强和基础controller 2020-07-16 17:35:33 +08:00
Chuyaoyuan 8b04c70a07 添加spring security 2020-07-15 19:05:21 +08:00
yaoyuan1.chu 852c3b2b61 整理代码jiscuss 2020-06-09 16:58:59 +08:00
yaoyuan1.chu 0dcc262f59 pom.xml 2020-03-14 16:43:57 +08:00
yaoyuan1.chu e5251becd4 0314提交 2020-03-14 16:43:12 +08:00
Chuyaoyuan 20fb9598c3 update README.en.md. 2020-01-13 10:57:25 +08:00
Chuyaoyuan aef4257f2c update README.md. 2020-01-13 10:56:52 +08:00
Chuyaoyuan 9a068aa1b7 Initial commit 2020-01-13 10:37:48 +08:00
12 changed files with 452 additions and 0 deletions
+39
View File
@@ -0,0 +1,39 @@
#Maven
target/
pom.xml.tag
pom.xml.releaseBackup
pom.xml.versionsBackup
release.properties
# Eclipse
.project
.classpath
.settings/
bin/
# IntelliJ
.idea
*.ipr
*.iml
*.iws
# NetBeans
nb-configuration.xml
# Visual Studio Code
.vscode
.factorypath
# OSX
.DS_Store
# Vim
*.swp
*.swo
# patch
*.orig
*.rej
# Local environment
.env
+21
View File
@@ -0,0 +1,21 @@
MIT License
Copyright (c) 2020 Yaoyuan Chu
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
+65
View File
@@ -0,0 +1,65 @@
中文   |   [English](./README.md)
<p align="center"><img src="https://s3.ax1x.com/2021/01/16/srNEa6.png" height="200" alt="logo"/></p>
<h1 align="center"> Jiscuss </h1>
<h3 align="center">基于java的简单论坛系统,Jiscuss = Java + Discuss。</h3>
---
<p align="center">
<a href="./LICENSE"><img src="https://img.shields.io/badge/License-MIT-blue" alt="License MIT"></a>
</p>
<p align="center">
<a href="https://github.com/chuyaoyuan/Jiscuss">Github 仓库</a> &nbsp; | &nbsp;
<a href="https://gitee.com/chuyaoyuan/Jiscuss">Gitee 仓库</a> &nbsp; | &nbsp;
<a href="http://demo.jiscuss.com/" target="_blank">在线体验</a>
</p>
# 预览(预留)
# 简介
基于JAVA 构建,官网:[[www.jiscuss.com]](http://www.jiscuss.com/)
# 在线体验
- [[DEMO地址]](http://demo.jiscuss.com/)
# 部署
## [一]、开发环境配置
```
// 需jdk 1.8以上,maven3以上。
```
## [二]、下载代码
```
// Github - https://gitee.com/chuyaoyuan/Jiscuss.git
// Gitee - https://github.com/Chuyaoyuan/Jiscuss.git
```
## [三]、运行启动(默认使用MYSQL数据库)
```
// 1、代码导入IDE
// 2、启动服务
// 4、访问地址
http://localhost
```
## [四]、开源协议
[MIT](https://opensource.org/licenses/MIT)
+92
View File
@@ -0,0 +1,92 @@
INFO 2023-08-07 20:18:44.163 [-main][*][o.noear.solon.Solon]:
App: Start loading
INFO 2023-08-07 20:18:44.175 [-Solon-executor-1][*][o.noear.solon.Solon]:
Logging: console {level=TRACE, enable=true}
INFO 2023-08-07 20:18:44.203 [-main][*][o.noear.solon.Solon]:
App: Plugin starting
INFO 2023-08-07 20:18:44.315 [-main][*][o.noear.solon.Solon]:
View: load: BeetlRender
INFO 2023-08-07 20:18:44.316 [-main][*][o.noear.solon.Solon]:
View: load: org.noear.solon.view.beetl.BeetlRender
INFO 2023-08-07 20:18:44.316 [-main][*][o.noear.solon.Solon]:
View: mapping: .htm=BeetlRender
INFO 2023-08-07 20:18:44.317 [-main][*][o.noear.solon.Solon]:
View: mapping: .btl=BeetlRender
INFO 2023-08-07 20:18:44.326 [-main][*][o.noear.solon.Solon]:
App: Bean scanning
INFO 2023-08-07 20:18:44.352 [-main][*][o.noear.solon.Solon]:
View: mapping: @json=StringSerializerRender#SnackSerializer
INFO 2023-08-07 20:18:44.352 [-main][*][o.noear.solon.Solon]:
View: mapping: @type_json=StringSerializerRender#SnackSerializer
INFO 2023-08-07 20:18:44.365 [-main][*][o.noear.solon.Solon]:
Connector:main: jlhttp: Started ServerConnector@{HTTP/1.1,[http/1.1]}{http://localhost:80}
INFO 2023-08-07 20:18:44.365 [-main][*][o.noear.solon.Solon]:
Server:main: jlhttp: Started (jlhttp 2.6/2.4.2) @10ms
INFO 2023-08-07 20:18:44.366 [-main][*][o.noear.solon.Solon]:
App: End loading elapsed=838ms pid=28784 v=2.4.2
INFO 2023-08-07 20:21:20.710 [-Thread-2][*][o.noear.solon.Solon]:
Server:main: jlhttp: Has Stopped (jlhttp 2.6/2.4.2)
INFO 2023-08-07 20:21:27.896 [-main][*][o.noear.solon.Solon]:
App: Start loading
INFO 2023-08-07 20:21:27.912 [-Solon-executor-1][*][o.noear.solon.Solon]:
Logging: console {level=TRACE, enable=true}
INFO 2023-08-07 20:21:27.946 [-main][*][o.noear.solon.Solon]:
App: Plugin starting
INFO 2023-08-07 20:21:28.195 [-main][*][o.noear.solon.Solon]:
View: load: BeetlRender
INFO 2023-08-07 20:21:28.198 [-main][*][o.noear.solon.Solon]:
View: load: org.noear.solon.view.beetl.BeetlRender
INFO 2023-08-07 20:21:28.198 [-main][*][o.noear.solon.Solon]:
View: mapping: .htm=BeetlRender
INFO 2023-08-07 20:21:28.198 [-main][*][o.noear.solon.Solon]:
View: mapping: .btl=BeetlRender
INFO 2023-08-07 20:21:28.213 [-main][*][o.noear.solon.Solon]:
App: Bean scanning
INFO 2023-08-07 20:21:28.260 [-main][*][o.noear.solon.Solon]:
View: mapping: @json=StringSerializerRender#SnackSerializer
INFO 2023-08-07 20:21:28.261 [-main][*][o.noear.solon.Solon]:
View: mapping: @type_json=StringSerializerRender#SnackSerializer
INFO 2023-08-07 20:21:28.282 [-main][*][o.noear.solon.Solon]:
Connector:main: jlhttp: Started ServerConnector@{HTTP/1.1,[http/1.1]}{http://localhost:80}
INFO 2023-08-07 20:21:28.283 [-main][*][o.noear.solon.Solon]:
Server:main: jlhttp: Started (jlhttp 2.6/2.4.2) @16ms
INFO 2023-08-07 20:21:28.285 [-main][*][o.noear.solon.Solon]:
App: End loading elapsed=1027ms pid=32548 v=2.4.2
INFO 2023-08-07 20:21:30.257 [-Thread-2][*][o.noear.solon.Solon]:
Server:main: jlhttp: Has Stopped (jlhttp 2.6/2.4.2)
INFO 2023-08-07 20:21:35.121 [-main][*][o.noear.solon.Solon]:
App: Start loading
INFO 2023-08-07 20:21:35.135 [-Solon-executor-1][*][o.noear.solon.Solon]:
Logging: console {level=TRACE, enable=true}
INFO 2023-08-07 20:21:35.160 [-main][*][o.noear.solon.Solon]:
App: Plugin starting
INFO 2023-08-07 20:21:35.266 [-main][*][o.noear.solon.Solon]:
View: load: BeetlRender
INFO 2023-08-07 20:21:35.266 [-main][*][o.noear.solon.Solon]:
View: load: org.noear.solon.view.beetl.BeetlRender
INFO 2023-08-07 20:21:35.266 [-main][*][o.noear.solon.Solon]:
View: mapping: .htm=BeetlRender
INFO 2023-08-07 20:21:35.266 [-main][*][o.noear.solon.Solon]:
View: mapping: .btl=BeetlRender
INFO 2023-08-07 20:21:35.275 [-main][*][o.noear.solon.Solon]:
App: Bean scanning
INFO 2023-08-07 20:21:35.312 [-main][*][o.noear.solon.Solon]:
View: mapping: @json=StringSerializerRender#SnackSerializer
INFO 2023-08-07 20:21:35.312 [-main][*][o.noear.solon.Solon]:
View: mapping: @type_json=StringSerializerRender#SnackSerializer
INFO 2023-08-07 20:21:35.330 [-main][*][o.noear.solon.Solon]:
Connector:main: jlhttp: Started ServerConnector@{HTTP/1.1,[http/1.1]}{http://localhost:80}
INFO 2023-08-07 20:21:35.331 [-main][*][o.noear.solon.Solon]:
Server:main: jlhttp: Started (jlhttp 2.6/2.4.2) @14ms
INFO 2023-08-07 20:21:35.332 [-main][*][o.noear.solon.Solon]:
App: End loading elapsed=796ms pid=29432 v=2.4.2
INFO 2023-08-07 20:21:40.308 [-jlhttp-1][*][c.j.c.DemoController]:
test
INFO 2023-08-07 20:21:42.146 [-jlhttp-1][*][c.j.c.DemoController]:
test
INFO 2023-08-07 20:21:42.929 [-jlhttp-1][*][c.j.c.DemoController]:
test
INFO 2023-08-07 20:21:43.975 [-jlhttp-1][*][c.j.c.DemoController]:
test
INFO 2023-08-07 20:21:51.555 [-Thread-2][*][o.noear.solon.Solon]:
Server:main: jlhttp: Has Stopped (jlhttp 2.6/2.4.2)
+68
View File
@@ -0,0 +1,68 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.yaoyuan</groupId>
<artifactId>jiscuss</artifactId>
<version>2.0</version>
<packaging>jar</packaging>
<parent>
<groupId>org.noear</groupId>
<artifactId>solon-parent</artifactId>
<version>2.4.3</version>
<relativePath />
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
</properties>
<dependencies>
<dependency>
<groupId>org.noear</groupId>
<artifactId>solon-api</artifactId>
</dependency>
<dependency>
<groupId>org.noear</groupId>
<artifactId>solon.auth</artifactId>
</dependency>
<dependency>
<groupId>org.noear</groupId>
<artifactId>solon.view.beetl</artifactId>
</dependency>
<dependency>
<groupId>org.noear</groupId>
<artifactId>solon.banner</artifactId>
</dependency>
<dependency>
<groupId>org.noear</groupId>
<artifactId>solon.logging.logback</artifactId>
</dependency>
<dependency>
<groupId>org.noear</groupId>
<artifactId>solon.health.detector</artifactId>
</dependency>
</dependencies>
<build>
<finalName>${project.artifactId}</finalName>
<plugins>
<plugin>
<groupId>org.noear</groupId>
<artifactId>solon-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
+18
View File
@@ -0,0 +1,18 @@
package com.jiscuss;
import com.jiscuss.dso.AuthProcessorImpl;
import org.noear.solon.annotation.Bean;
import org.noear.solon.annotation.Configuration;
import org.noear.solon.auth.AuthUtil;
/**
* @author cyy 2023/7/12 created
*/
@Configuration
public class Config {
@Bean
public void authAdapter(){
AuthUtil.adapter()
.processor(new AuthProcessorImpl());
}
}
+15
View File
@@ -0,0 +1,15 @@
package com.jiscuss;
import org.noear.solon.Solon;
import org.noear.solon.annotation.SolonMain;
/**
* @author cyy 2023/7/12 created
*/
@SolonMain
public class JiscussApp {
public static void main(String[] args) {
Solon.start(JiscussApp.class, args)
.onError(e -> e.printStackTrace());
}
}
@@ -0,0 +1,27 @@
package com.jiscuss.controller;
import org.noear.solon.annotation.Controller;
import org.noear.solon.annotation.Mapping;
import org.noear.solon.core.handle.ModelAndView;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* @author cyy 2023/7/12 created
*/
@Controller
public class DemoController {
static Logger log = LoggerFactory.getLogger(DemoController.class);
@Mapping("/")
public Object test(){
log.info("test");
ModelAndView model = new ModelAndView("index.htm");
model.put("title","jiscuss");
model.put("message","你好 jiscuss!");
return model;
}
}
@@ -0,0 +1,36 @@
package com.jiscuss.dso;
import org.noear.solon.auth.AuthProcessorBase;
import java.util.ArrayList;
import java.util.List;
/**
* @author cyy 2023/7/12 created
*/
public class AuthProcessorImpl extends AuthProcessorBase {
@Override
public boolean verifyLogined() {
return true;
}
@Override
protected List<String> getPermissions() {
List<String> list = new ArrayList<>();
list.add("user:add");
list.add("user:demo");
return list;
}
@Override
protected List<String> getRoles() {
List<String> list = new ArrayList<>();
list.add("admin1");
list.add("admin2");
return list;
}
}
@@ -0,0 +1,55 @@
<html>
<head>
<title>${title}</title>
</head>
<body>
jiscss::${message}
<table>
<tr>
<td>权限(user:add</td>
<td>
<#authPermissions name="user:add">
</#authPermissions>
</td>
</tr>
<tr>
<td>权限(user:del</td><td>
<#authPermissions name="user:del">
</#authPermissions>
</td>
</tr>
<tr>
<td>权限(user:clear</td><td>
<#authPermissions name="user:clear">
</#authPermissions>
</td>
</tr>
<tr>
<td>角色(admin1</td><td>
<#authRoles name="admin1">
</#authRoles>
</td>
</tr>
<tr>
<td>角色(admin2</td><td>
<#authRoles name="admin2">
</#authRoles>
</td>
</tr>
<tr>
<td>角色(admin3</td><td>
<#authRoles name="admin3">
</#authRoles>
</td>
</tr>
</table>
</body>
</html>
+8
View File
@@ -0,0 +1,8 @@
server.port: 80
solon.app:
name: jiscuss
group: jiscuss
# 可选: *,disk,cpu,jvm,memory,os,qps
solon.health.detector: "*"
+8
View File
@@ -0,0 +1,8 @@
_ _
| (_)
| |_ ___ ___ _ _ ___ ___
_ | | / __|/ __| | | / __/ __|
| |__| | \__ \ (__| |_| \__ \__ \
\____/|_|___/\___|\__,_|___/___/
=========================================================
:: Solon :: (v${solon.version})