Compare commits

...

23 Commits

Author SHA1 Message Date
0b4b128a54 fix8 2026-01-16 15:24:05 +08:00
808d61784f fix7 2026-01-16 14:11:01 +08:00
4faf6f14c3 fix6 2026-01-16 14:05:37 +08:00
6eaec08a6d fix5 2026-01-15 20:11:29 +08:00
5e41d219d8 fix4 2026-01-14 15:06:59 +08:00
07bc8373cc fix3 2026-01-14 14:54:53 +08:00
801a973801 fix 2026-01-14 14:48:14 +08:00
7862d37545 fix 2026-01-14 14:37:42 +08:00
c91072f442 Luyus 2026-01-11 16:29:08 +08:00
79ef9e8afc 再再再次构建 2026-01-11 16:15:07 +08:00
0cf9b12db6 Luyus 2026-01-11 16:02:12 +08:00
ba6528bd4c 构建 2026-01-11 15:51:41 +08:00
3fbc4615ab Luyus 2026-01-11 15:31:40 +08:00
44dbc0b8b1 Luyus 2026-01-11 15:25:26 +08:00
f677ee261e Luyus 2026-01-11 15:19:12 +08:00
8da6e422df net 2026-01-11 14:26:40 +08:00
c239be0dcc 前后端连接问题修复 2026-01-11 14:10:12 +08:00
Luyus
9ef1cf11ec 增加compose部署 2026-01-04 17:00:25 +08:00
Nancy
d6417d8326 fix: 修改文件 2026-01-03 13:35:27 +08:00
Nancy
7e5cbed8ad fix: 修改ip 2026-01-03 13:31:11 +08:00
Nancy
a954e57c63 feat: 修改git文件 2026-01-03 13:23:41 +08:00
Nancy
66523af257 build: 打包dist 2026-01-02 00:43:29 +08:00
Nancy
f988312323 fix: 修改接口 2025-12-31 09:37:57 +08:00
184 changed files with 41532 additions and 66 deletions

29
.gitignore vendored
View File

@@ -1,15 +1,20 @@
.idea/
.web/
.tmp/
.node_modules/
node_modules
.DS_Store/
.DS_Store
src/.DS_Store
*/.DS_Store
web/
web
node_modules/
npm-debug.log*
yarn-debug.log*
yarn-error.log*
test/unit/coverage
test/e2e/reports
selenium-debug.log
# Editor directories and files
.idea
.vscode
*.suo
*.ntvs*
*.njsproj
*.sln
*.zip
web.zip
package-lock.json

16
Dockerfile Normal file
View File

@@ -0,0 +1,16 @@
FROM nginx:alpine
# 删除 nginx 默认配置
RUN rm /etc/nginx/conf.d/default.conf
# 创建配置文件
COPY nginx.conf /etc/nginx/conf.d/default.conf
# 将构建好的文件复制到 nginx
COPY web /usr/share/nginx/html
# 暴露端口
EXPOSE 80
# 启动 nginx
CMD ["nginx", "-g", "daemon off;"]

View File

@@ -1,7 +1,7 @@
//开发环境
module.exports = {
NODE_ENV: '"development"',
BASE_API: '"http://127.0.0.1"',
DOMAIN: '"http://localhost:8081"',
SOCKET_URL:'"ws://127.0.0.1:8326/"'
BASE_API: '""',
DOMAIN: '""',
SOCKET_URL: '"" + (window.location.protocol === "https:" ? "wss://" : "ws://") + window.location.host + "/ws"'
}

View File

@@ -13,7 +13,7 @@ module.exports = {
index: path.resolve(__dirname, '../web/index.html'),
assetsRoot: path.resolve(__dirname, '../web'),
assetsSubDirectory: 'static',
assetsPublicPath: '',
assetsPublicPath: '/',
productionSourceMap: true,
// Gzip off by default as many popular static hosts such as
// Surge or Netlify already gzip all static assets for you.

View File

@@ -1,7 +1,7 @@
//测试环境
//生产环境
module.exports = {
NODE_ENV: '"production"',
BASE_API:'"http://47.75.125.96"',
DOMAIN: '"http://47.75.125.96"',
SOCKET_URL:'"ws://47.75.47.120:8326"'
BASE_API: '""',
DOMAIN: '""',
SOCKET_URL: '"" + (window.location.protocol === "https:" ? "wss://" : "ws://") + window.location.host + "/ws"'
}

BIN
dist/coin-portal-dist.tar.gz vendored Normal file

Binary file not shown.

28
docker-compose.yml Normal file
View File

@@ -0,0 +1,28 @@
# 此文件已废弃
# 前端容器已整合到 coin-exchange-new/docker-compose.yml 中
# 请使用后端的 docker-compose.yml 进行部署
version: '3.8'
services:
coin-portal:
build:
context: .
dockerfile: Dockerfile
container_name: coin-portal
ports:
- "10081:80"
restart: unless-stopped
networks:
- coin-network
healthcheck:
test: ["CMD", "wget", "--quiet", "--tries=1", "--spider", "http://localhost/index.html"]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
networks:
coin-network:
name: coin-network
external: true

29
nginx.conf Normal file
View File

@@ -0,0 +1,29 @@
server {
listen 80;
server_name _;
root /usr/share/nginx/html;
index index.html index.htm;
# 处理 Vue Router 的历史模式
location / {
try_files $uri $uri/ /index.html;
}
# 静态资源缓存
location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf|eot)$ {
expires 30d;
add_header Cache-Control "public, immutable";
}
# 禁用缓存 index.html
location = /index.html {
expires -1;
add_header Cache-Control "no-cache, no-store, must-revalidate";
}
# Gzip 压缩
gzip on;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml;
gzip_min_length 1024;
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.7 KiB

After

Width:  |  Height:  |  Size: 5.8 KiB

View File

@@ -351,10 +351,13 @@
async getFavoriteData() {
this.userFavorites = [];
let item = await tradeApi.serverFavorite(this.token);
item.data[0].markets.map(v => {
this.userFavorites.push(v.symbol.toLowerCase());
});
return item.data;
if(item.data && item.data.length > 0 && item.data[0].markets) {
item.data[0].markets.map(v => {
this.userFavorites.push(v.symbol.toLowerCase());
});
return item.data;
}
return [];
},
_getDocuments() {
homeApi.getDoucments().then(res => {
@@ -435,9 +438,18 @@
this.$socket.subscribe(this.subscribePath(market), 'market-area');
this.$socket.on('market-area', (data) => {
// console.log("市场订阅",data.markets)
if (data.markets) {
let i = this.activeIndex;
this.marketList[i].markets = data.markets;
try {
let markets = data.markets;
// 如果是字符串,尝试解析
if(typeof markets === 'string') {
markets = JSON.parse(markets);
}
if (markets && Array.isArray(markets)) {
let i = this.activeIndex;
this.marketList[i].markets = markets;
}
} catch(e) {
console.error('解析市场数据失败:', e, data);
}
});
},

View File

@@ -57,7 +57,7 @@
</router-link>
</el-popover>
</div>
<p class="footer-bottom">© 2020 尚学堂 All Rights Reserved</p>
<p class="footer-bottom">© 2025 大白菜团队</p>
<!--<div class="share-container">
<img :src="scanQrcodeSrc" alt="" class="scan-qrcode" v-show="showQrcode" ref="scanQrcode">

View File

@@ -279,7 +279,7 @@
<li v-for="(list,index) in tradesData" :key="index+list.time" :class="list.type=='1' ? 'b' : 's' "
@click="depthBidsClick(list.price, list.volume)">
<span class="number-font">
<i>{{list.time}}</i>
<i>{{formatTime(list.created)}}</i>
</span>
<span v-html="formatNumber(list.price,currentMarket.priceScale)" class="number-font" style="text-align: center"></span>
<!--<i>128500</i>.00-->
@@ -403,7 +403,12 @@
turnoverTbData: [], //成交记录
entrustTbData: [], //委托定单
//深度数据
depthsData: {},
depthsData: {
asks: [],
bids: [],
price: 0,
cnyPrice: 0
},
domWidth: 0,
asksDepth: 0,
@@ -479,6 +484,9 @@
})
},
mounted() {
console.log('🚀 trade组件已挂载');
console.log('🔌 WebSocket状态:', this.$socket ? '已连接' : '未连接');
console.log('📱 channels对象:', this.$socket ? this.$socket.channels : 'N/A');
this._getMarkList();
this.symbol = this.$route.query.symbol
},
@@ -494,7 +502,9 @@
async _getDepth(){
let symbol = this.currentMarket.symbol;
let mergeDepth = this.chooseMergeDepth;
console.log('📊 初始化获取深度数据:', symbol, mergeDepth);
let res = await tradeApi.getDepth(symbol,mergeDepth)
console.log('📊 API返回的深度数据:', res.data);
this.depthsData = res.data
this.processDepthData()
},
@@ -599,8 +609,13 @@
async handleClick(tab) {
if(tab.label === '自选') {
let item = await this.getFavoriteData();
this.marketList[tab.index].markets = item[0].markets;
this.subscribeAllMarkets()
if(item && item.length > 0) {
this.marketList[tab.index].markets = item[0].markets;
this.subscribeAllMarkets()
} else {
// 没有自选市场,显示空列表
this.marketList[tab.index].markets = [];
}
}else{
this.activeIndex = parseInt(tab.index);
this.subscribeMarkets(this.activeName);
@@ -610,10 +625,13 @@
async getFavoriteData () {
this.userFavorites = [];
let item = await tradeApi.serverFavorite(this.token);
item.data[0].markets.map(v=>{
this.userFavorites.push(v.symbol.toLowerCase());
});
return item.data;
if(item.data && item.data.length > 0 && item.data[0].markets) {
item.data[0].markets.map(v=>{
this.userFavorites.push(v.symbol.toLowerCase());
});
return item.data;
}
return [];
},
isNumber(val) {
var regPos = /^\d+(\.\d+)?$/; //非负浮点数
@@ -652,9 +670,14 @@
// },
marketChange(currentMarket) {
this.currentMarket = currentMarket;
console.log("marketChange", currentMarket);
console.log("📍 marketChange", currentMarket);
this.switchMarketListDropdown = false;
this.timeStp = new Date().getTime();
// 先取消之前的订阅
this.unsubscribeDepths();
this.unsubscribeTrades();
//依赖marketId
this._getUserAccount(this.currentMarket.symbol);
this._serverGetTurnoverOrderList();
@@ -663,9 +686,11 @@
this.subscribeEntrust();
this.subscribeTurnover();
// 先获取初始数据
this._getDepth()
this._getTrades()
// 订阅实时更新
this.subscribeDepths();
this.subscribeTrades();
@@ -926,6 +951,21 @@
}
return '<i class="test">' + result[0] + '</i>' + result[1];
},
formatTime(dateStr) {
if (!dateStr) return '';
// 处理 "2018-08-02 11:23:45" 格式
if (typeof dateStr === 'string' && dateStr.indexOf(' ') > -1) {
return dateStr.split(' ')[1]; // 返回 "11:23:45"
}
// 处理 Date 对象
if (dateStr instanceof Date) {
let hours = dateStr.getHours().toString().padStart(2, '0');
let minutes = dateStr.getMinutes().toString().padStart(2, '0');
let seconds = dateStr.getSeconds().toString().padStart(2, '0');
return `${hours}:${minutes}:${seconds}`;
}
return dateStr;
},
turnoverPageChange(currentPage) {
this.turnoverPageQuery.page = currentPage
this._serverGetTurnoverOrderList()
@@ -1016,18 +1056,57 @@
let symbol = this.currentMarket.symbol.toLowerCase();
let mergeDepth = this.chooseMergeDepth;
console.log('📊 订阅深度数据:', symbol, mergeDepth);
this.$socket.subscribe(`market.${symbol}.depth.${mergeDepth}`, 'market-depth');
this.$socket.on('market-depth', (data) => {
this.depthsData = data.tick;
if(kline && kline.contentWindow) {
kline.contentWindow.set_current_depth(this.depthsData);
console.log('📊 收到深度数据原始:', data);
// 处理双层 JSON 字符串
try {
let parsedData = null;
if(data.result) {
console.log('📊 数据格式: data.result');
let result = JSON.parse(data.result);
if(result.tick) {
parsedData = JSON.parse(result.tick);
}
} else if(data.tick) {
console.log('📊 数据格式: data.tick');
parsedData = typeof data.tick === 'string' ? JSON.parse(data.tick) : data.tick;
} else if(data.body) {
console.log('📊 数据格式: data.body');
let body = typeof data.body === 'string' ? JSON.parse(data.body) : data.body;
parsedData = body;
}
if(parsedData) {
console.log('📊 解析后的深度数据:', parsedData);
this.depthsData = parsedData;
// 更新K线
let klineIframe = kline || document.getElementById('kline-win');
if(this.depthsData && klineIframe && klineIframe.contentWindow) {
klineIframe.contentWindow.set_current_depth(this.depthsData);
}
this.processDepthData()
} else {
console.warn('📊 无法解析深度数据,原始数据:', data);
}
} catch(e) {
console.error('📊 解析深度数据失败:', e, data);
}
this.processDepthData()
})
},
processDepthData(){
console.log('📊 处理深度数据开始:', this.depthsData);
if(!this.depthsData || !this.depthsData.asks || !this.depthsData.bids) {
console.warn('📊 深度数据为空或格式错误', this.depthsData);
return;
}
let {asks, bids} = this.depthsData;
console.log('📊 asks数量:', asks.length, 'bids数量:', bids.length);
let {priceScale, buyFeeRate, sellFeeRate,numScale} = this.currentMarket;
if(this.currentBuyItem.price === '' && bids.length > 0 && this.currentBuyItem.canBuyAmount === '') {
let {buyAmount} = this.userAccount;

View File

@@ -268,39 +268,37 @@
});
},
// 正面
handleUploadSuccess1(response) {
const { status,uri } = response
if(status === "OK"){
this.ruleForm.imageUrl1 = uploadApi.aliyunFileUrl + uri
}
handleUploadSuccess1(response, file) {
// OSS直接上传模式无callback
const key = this.uploadData.key
const fileUrl = 'https://coin-exchange117.oss-cn-shanghai.aliyuncs.com/'
this.ruleForm.imageUrl1 = fileUrl + key
},
// 反面
handleUploadSuccess2(response) {
const { status,uri } = response
if(status === "OK"){
this.ruleForm.imageUrl2 = uploadApi.aliyunFileUrl + uri
}
handleUploadSuccess2(response, file) {
const key = this.uploadData.key
const fileUrl = 'https://coin-exchange117.oss-cn-shanghai.aliyuncs.com/'
this.ruleForm.imageUrl2 = fileUrl + key
},
// 手持
handleUploadSuccess3(response) {
const { status,uri } = response
if(status === "OK"){
this.ruleForm.imageUrl3 = uploadApi.aliyunFileUrl + uri
}
handleUploadSuccess3(response, file) {
const key = this.uploadData.key
const fileUrl = 'https://coin-exchange117.oss-cn-shanghai.aliyuncs.com/'
this.ruleForm.imageUrl3 = fileUrl + key
},
async beforeUpload(){
let res = await uploadApi.getPreUpload()
if(res.data){
let preUploadData = res.data
let {dir,policy,signature,callback,accessid,host} = preUploadData
let {dir,policy,signature,accessid,host} = preUploadData
this.uploadHost = host
this.uploadData.name=signature
this.uploadData.key=`${dir}${new Date().getTime()}.jpg`
this.uploadData.policy=policy
this.uploadData.OSSAccessKeyId=accessid
this.uploadData.success_action_status=200
this.uploadData.callback=callback
// 移除callback参数避免OSS回调失败 (CallbackFailed 307)
// this.uploadData.callback=callback
this.uploadData.signature=signature
}else{
return Promise.reject()

View File

@@ -1,9 +1,6 @@
window.config={
// 测试环境服务器地址
socketServer:'ws://127.0.0.1:8326/',
ajaxServer: 'http://127.0.0.1',
// 生产环境服务器地址
//socketServer:'ws://103.71.178.73:8326/',
//ajaxServer: 'http://103.71.178.73/v2/s'
window.config = {
// 生产环境服务器地址 - 通过 nginx 统一入口
socketServer: (window.location.protocol === 'https:' ? 'wss://' : 'ws://') + window.location.host + '/ws/',
ajaxServer: '' // 使用相对路径,通过 nginx 反向代理到网关
}

BIN
web/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.4 KiB

14
web/index.html Normal file
View File

@@ -0,0 +1,14 @@
<!DOCTYPE html><html><head><meta charset=utf-8><meta http-equiv=X-UA-Compatible content="IE=edge,chrome=1"><meta name=keywords content=""><meta name=description content=""><title></title><script src=/static/config.js></script><link rel="shortcut icon" href=/favicon.ico><link href=/static/css/app.3dfc0e9d76a62ce89f8bcdc13c74fe6e.css rel=stylesheet></head><body><div id=app></div><script>//初始化智齿咨询组件实例
// var zhiManager = (getzhiSDKInstance());
// //再调用load方法
// zhiManager.on("load", function() {
// zhiManager.initBtnDOM();
// });
// zhiManager.set('location', 3);
// zhiManager.set('vertical', 100);</script><script>// var _hmt = _hmt || [];
// (function() {
// var hm = document.createElement("script");
// hm.src = "https://hm.baidu.com/hm.js?b4837d50cf55e64e8da2130f1ae8e997";
// var s = document.getElementsByTagName("script")[0];
// s.parentNode.insertBefore(hm, s);
// })();</script><script type=text/javascript src=/static/js/manifest.c794ec0a047d2c19e443.js></script><script type=text/javascript src=/static/js/vendor.0d306d721fa4eca4e4ea.js></script><script type=text/javascript src=/static/js/app.6040d417623130efbb8e.js></script></body></html>

6
web/static/config.js Normal file
View File

@@ -0,0 +1,6 @@
window.config = {
// 生产环境服务器地址 - 通过 nginx 统一入口
socketServer: (window.location.protocol === 'https:' ? 'wss://' : 'ws://') + window.location.host + '/ws/',
ajaxServer: '' // 使用相对路径,通过 nginx 反向代理到网关
}

11
web/static/css/animate.min.css vendored Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

304
web/static/css/bootstrap-vue.css vendored Normal file
View File

@@ -0,0 +1,304 @@
/* workaround for https://github.com/bootstrap-vue/bootstrap-vue/issues/1560 */
/* source: _input-group.scss */
.input-group > .input-group-prepend > .b-dropdown > .btn,
.input-group > .input-group-append:not(:last-child) > .b-dropdown > .btn,
.input-group > .input-group-append:last-child > .b-dropdown:not(:last-child):not(.dropdown-toggle) > .btn {
border-top-right-radius: 0;
border-bottom-right-radius: 0;
}
.input-group > .input-group-append > .b-dropdown > .btn,
.input-group > .input-group-prepend:not(:first-child) > .b-dropdown > .btn,
.input-group > .input-group-prepend:first-child > .b-dropdown:not(:first-child) > .btn {
border-top-left-radius: 0;
border-bottom-left-radius: 0;
}
/* Special styling for type=range and type=color input */
input.form-control[type="range"],
input.form-control[type="color"] {
height: 2.25rem;
}
input.form-control.form-control-sm[type="range"],
input.form-control.form-control-sm[type="color"] {
height: 1.9375rem;
}
input.form-control.form-control-lg[type="range"],
input.form-control.form-control-lg[type="color"] {
height: 3rem;
}
/* Less padding on type=color */
input.form-control[type="color"] {
padding: 0.25rem 0.25rem;
}
input.form-control.form-control-sm[type="color"] {
padding: 0.125rem 0.125rem;
}
/* Add support for fixed layout table */
table.b-table.b-table-fixed {
table-layout: fixed;
}
/* Busy table styling */
table.b-table[aria-busy='false'] {
opacity: 1;
}
table.b-table[aria-busy='true'] {
opacity: 0.6;
}
/* Sort styling */
table.b-table > thead > tr > th,
table.b-table > tfoot > tr > th {
position: relative;
}
table.b-table > thead > tr > th.sorting,
table.b-table > tfoot > tr > th.sorting {
padding-right: 1.5em;
cursor: pointer;
}
table.b-table > thead > tr > th.sorting::before,
table.b-table > thead > tr > th.sorting::after,
table.b-table > tfoot > tr > th.sorting::before,
table.b-table > tfoot > tr > th.sorting::after {
position: absolute;
bottom: 0;
display: block;
opacity: 0.4;
padding-bottom: inherit;
font-size: inherit;
line-height: 180%;
}
table.b-table > thead > tr > th.sorting::before,
table.b-table > tfoot > tr > th.sorting::before {
right: 0.75em;
content: '\2191';
}
table.b-table > thead > tr > th.sorting::after,
table.b-table > tfoot > tr > th.sorting::after {
right: 0.25em;
content: '\2193';
}
table.b-table > thead > tr > th.sorting_asc::after,
table.b-table > thead > tr > th.sorting_desc::before,
table.b-table > tfoot > tr > th.sorting_asc::after,
table.b-table > tfoot > tr > th.sorting_desc::before {
opacity: 1;
}
/* Stacked table layout */
/* Derived from http://blog.adrianroselli.com/2017/11/a-responsive-accessible-table.html */
/* Always stacked */
table.b-table.b-table-stacked {
width: 100%;
}
table.b-table.b-table-stacked,
table.b-table.b-table-stacked > tbody,
table.b-table.b-table-stacked > tbody > tr,
table.b-table.b-table-stacked > tbody > tr > td,
table.b-table.b-table-stacked > tbody > tr > th,
table.b-table.b-table-stacked > caption {
display: block;
}
/* Hide stuff we can't deal with, or shouldn't show */
table.b-table.b-table-stacked > thead,
table.b-table.b-table-stacked > tfoot,
table.b-table.b-table-stacked > tbody > tr.b-table-top-row,
table.b-table.b-table-stacked > tbody > tr.b-table-bottom-row {
display: none;
}
/* inter-row top border */
table.b-table.b-table-stacked > tbody > tr > :first-child {
border-top-width: 0.4rem;
}
/* convert TD/TH contents to "cells". Caveat: child elements become cells! */
table.b-table.b-table-stacked > tbody > tr > [data-label] {
display: grid;
grid-template-columns: 40% auto;
grid-gap: 0.25rem 1rem;
}
/* generate row cell "heading" */
table.b-table.b-table-stacked > tbody > tr > [data-label]::before {
content: attr(data-label);
display: inline;
text-align: right;
overflow-wrap: break-word;
font-weight: bold;
font-style: normal;
}
@media all and (max-width: 575.99px) {
/* Under SM */
table.b-table.b-table-stacked-sm {
width: 100%;
}
table.b-table.b-table-stacked-sm,
table.b-table.b-table-stacked-sm > tbody,
table.b-table.b-table-stacked-sm > tbody > tr,
table.b-table.b-table-stacked-sm > tbody > tr > td,
table.b-table.b-table-stacked-sm > tbody > tr > th,
table.b-table.b-table-stacked-sm > caption {
display: block;
}
/* hide stuff we can't deal with, or shouldn't show */
table.b-table.b-table-stacked-sm > thead,
table.b-table.b-table-stacked-sm > tfoot,
table.b-table.b-table-stacked-sm > tbody > tr.b-table-top-row,
table.b-table.b-table-stacked-sm > tbody > tr.b-table-bottom-row {
display: none;
}
/* inter-row top border */
table.b-table.b-table-stacked-sm > tbody > tr > :first-child {
border-top-width: 0.4rem;
}
/* convert TD/TH contents to "cells". Caveat: child elements become cells! */
table.b-table.b-table-stacked-sm > tbody > tr > [data-label] {
display: grid;
grid-template-columns: 40% auto;
grid-gap: 0.25rem 1rem;
}
/* generate row cell "heading" */
table.b-table.b-table-stacked-sm > tbody > tr > [data-label]::before {
content: attr(data-label);
display: inline;
text-align: right;
overflow-wrap: break-word;
font-weight: bold;
font-style: normal;
}
}
@media all and (max-width: 767.99px) {
/* under MD */
table.b-table.b-table-stacked-md {
width: 100%;
}
table.b-table.b-table-stacked-md,
table.b-table.b-table-stacked-md > tbody,
table.b-table.b-table-stacked-md > tbody > tr,
table.b-table.b-table-stacked-md > tbody > tr > td,
table.b-table.b-table-stacked-md > tbody > tr > th,
table.b-table.b-table-stacked-md > caption {
display: block;
}
/* hide stuff we can't deal with, or shouldn't show */
table.b-table.b-table-stacked-md > thead,
table.b-table.b-table-stacked-md > tfoot,
table.b-table.b-table-stacked-md > tbody > tr.b-table-top-row,
table.b-table.b-table-stacked-md > tbody > tr.b-table-bottom-row {
display: none;
}
/* inter-row top border */
table.b-table.b-table-stacked-md > tbody > tr > :first-child {
border-top-width: 0.4rem;
}
/* convert TD/TH contents to "cells". Caveat: child elements become cells! */
table.b-table.b-table-stacked-md > tbody > tr > [data-label] {
display: grid;
grid-template-columns: 40% auto;
grid-gap: 0.25rem 1rem;
}
/* generate row cell "heading" */
table.b-table.b-table-stacked-md > tbody > tr > [data-label]::before {
content: attr(data-label);
display: inline;
text-align: right;
overflow-wrap: break-word;
font-weight: bold;
font-style: normal;
}
}
@media all and (max-width: 991.99px) {
/* under LG */
table.b-table.b-table-stacked-lg {
width: 100%;
}
table.b-table.b-table-stacked-lg,
table.b-table.b-table-stacked-lg > tbody,
table.b-table.b-table-stacked-lg > tbody > tr,
table.b-table.b-table-stacked-lg > tbody > tr > td,
table.b-table.b-table-stacked-lg > tbody > tr > th,
table.b-table.b-table-stacked-lg > caption {
display: block;
}
/* hide stuff we can't deal with, or shouldn't show */
table.b-table.b-table-stacked-lg > thead,
table.b-table.b-table-stacked-lg > tfoot,
table.b-table.b-table-stacked-lg > tbody > tr.b-table-top-row,
table.b-table.b-table-stacked-lg > tbody > tr.b-table-bottom-row {
display: none;
}
/* inter-row top border */
table.b-table.b-table-stacked-lg > tbody > tr > :first-child {
border-top-width: 0.4rem;
}
/* convert TD/TH contents to "cells". Caveat: child elements become cells! */
table.b-table.b-table-stacked-lg > tbody > tr > [data-label] {
display: grid;
grid-template-columns: 40% auto;
grid-gap: 0.25rem 1rem;
}
/* generate row cell "heading" */
table.b-table.b-table-stacked-lg > tbody > tr > [data-label]::before {
content: attr(data-label);
display: inline;
text-align: right;
overflow-wrap: break-word;
font-weight: bold;
font-style: normal;
}
}
@media all and (max-width: 1199.99px) {
/* under XL */
table.b-table.b-table-stacked-xl {
width: 100%;
}
table.b-table.b-table-stacked-xl,
table.b-table.b-table-stacked-xl > tbody,
table.b-table.b-table-stacked-xl > tbody > tr,
table.b-table.b-table-stacked-xl > tbody > tr > td,
table.b-table.b-table-stacked-xl > tbody > tr > th,
table.b-table.b-table-stacked-xl > caption {
display: block;
}
/* hide stuff we can't deal with, or shouldn't show */
table.b-table.b-table-stacked-xl > thead,
table.b-table.b-table-stacked-xl > tfoot,
table.b-table.b-table-stacked-xl > tbody > tr.b-table-top-row,
table.b-table.b-table-stacked-xl > tbody > tr.b-table-bottom-row {
display: none;
}
/* inter-row top border */
table.b-table.b-table-stacked-xl > tbody > tr > :first-child {
border-top-width: 0.4rem;
}
/* convert TD/TH contents to "cells". Caveat: child elements become cells! */
table.b-table.b-table-stacked-xl > tbody > tr > [data-label] {
display: grid;
grid-template-columns: 40% auto;
grid-gap: 0.25rem 1rem;
}
/* generate row cell "heading" */
table.b-table.b-table-stacked-xl > tbody > tr > [data-label]::before {
content: attr(data-label);
display: inline;
text-align: right;
overflow-wrap: break-word;
font-weight: bold;
font-style: normal;
}
}
/* Details row styling */
table.b-table > tbody > tr.b-table-details > td {
border-top: none;
}

9426
web/static/css/bootstrap.css vendored Normal file

File diff suppressed because it is too large Load Diff

6
web/static/css/bootstrap.min.css vendored Normal file

File diff suppressed because one or more lines are too long

8891
web/static/css/bootstrap.scss vendored Normal file

File diff suppressed because it is too large Load Diff

1260
web/static/css/kline.css Normal file

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 398 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 229 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 153 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 98 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 83 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 127 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 301 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 538 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 71 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 276 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 100 KiB

BIN
web/static/img/coincalf.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 139 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 503 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

BIN
web/static/img/load-pix.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

View File

@@ -0,0 +1,32 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
<svg xmlns="http://www.w3.org/2000/svg">
<metadata>Generated by IcoMoon</metadata>
<defs>
<font id="music-icon" horiz-adv-x="1024">
<font-face units-per-em="1024" ascent="960" descent="-64" />
<missing-glyph horiz-adv-x="1024" />
<glyph unicode="&#x20;" horiz-adv-x="512" d="" />
<glyph unicode="&#xe900;" glyph-name="ok" d="M127.956 507.942c-17.12 0-33.184-6.508-45.28-18.335-24.928-24.405-24.928-64.080 0-88.516l252.128-246.494c24.192-23.654 66.304-23.654 90.496 0l512.064 500.622c12.096 11.827 18.752 27.566 18.752 44.274s-6.656 32.447-18.752 44.242c-24.192 23.654-66.336 23.654-90.528 0l-444.16-434.258c-12.512-12.203-32.768-12.203-45.248 0l-184.224 180.13c-12.096 11.827-28.16 18.335-45.248 18.335zM380.052 73.683c-34.208 0-66.336 13.016-90.496 36.671l-252.128 246.525c-49.92 48.811-49.888 128.191 0 176.97 48.352 47.278 132.608 47.309 181.024 0l161.6-158.009 421.536 412.169c48.352 47.278 132.704 47.278 181.024 0 24.192-23.654 37.504-55.068 37.504-88.516 0-33.417-13.312-64.862-37.504-88.485l-512.064-500.654c-24.16-23.654-56.288-36.671-90.496-36.671z" />
<glyph unicode="&#xe901;" glyph-name="no" d="M127.923 896.002c-17.104 0-33.153-6.656-45.237-18.751-24.936-24.959-24.936-65.534 0-90.493l316.148-316.15c6.010-5.984 9.367-14.144 9.367-22.623s-3.357-16.639-9.367-22.623l-316.116-316.118c-24.968-24.959-24.968-65.566 0-90.525 24.169-24.159 66.337-24.159 90.506 0l316.148 316.118c12.5 12.512 32.769 12.512 45.237 0l316.116-316.086c24.201-24.159 66.337-24.127 90.538 0 24.936 24.959 24.936 65.566 0 90.525l-316.116 316.086c-12.5 12.512-12.5 32.767 0 45.247l316.116 316.118c12.085 12.096 18.734 28.159 18.734 45.279 0 17.087-6.65 33.151-18.734 45.247-24.201 24.159-66.337 24.191-90.538 0l-316.148-316.118c-12.5-12.512-32.737-12.512-45.237 0l-316.116 316.118c-12.116 12.096-28.165 18.751-45.301 18.751zM127.987-64c-34.176 0-66.337 13.312-90.538 37.471-49.905 49.918-49.905 131.132 0 181.018l293.513 293.495-293.545 293.527c-49.905 49.918-49.873 131.1 0 180.986 24.201 24.191 56.33 37.503 90.506 37.503 34.208 0 66.337-13.312 90.538-37.503l293.513-293.495 293.513 293.495c24.169 24.191 56.331 37.503 90.506 37.503 34.208 0 66.369-13.312 90.506-37.503 24.201-24.159 37.5-56.318 37.5-90.493 0-34.207-13.299-66.366-37.5-90.525l-293.481-293.495 293.481-293.463c49.905-49.886 49.905-131.1 0-181.018-24.169-24.159-56.33-37.503-90.538-37.503-34.176 0-66.305 13.344-90.474 37.503l-293.481 293.463-293.513-293.495c-24.169-24.159-56.331-37.471-90.506-37.471z" />
<glyph unicode="&#xe902;" glyph-name="add" d="M614.4 550.4v409.6h-204.8v-409.6h-409.6v-204.8h409.6v-409.6h204.8v409.6h409.6v204.8z" />
<glyph unicode="&#xe903;" glyph-name="play-mini" d="M512-64c-282.77 0-512 229.23-512 512s229.23 512 512 512c282.77 0 512-229.23 512-512s-229.23-512-512-512zM512 4.267c245.067 0 443.733 198.666 443.733 443.733s-198.666 443.733-443.733 443.733c-245.067 0-443.733-198.666-443.733-443.733s198.666-443.733 443.733-443.733zM447.317 371.852v152.296l152.42-76.148-152.42-76.148zM429.635 604.452c-0.32 0.16-0.639 0.128-0.927 0.256-1.95 0.895-4.093 1.183-6.235 1.694-2.078 0.48-4.093 1.183-6.139 1.247-0.352 0-0.671 0.192-1.023 0.192-1.631 0-3.038-0.703-4.636-0.959-2.238-0.32-4.412-0.511-6.523-1.279-2.014-0.767-3.709-1.982-5.468-3.101-1.695-1.055-3.421-1.95-4.892-3.261-1.759-1.598-2.974-3.58-4.316-5.53-0.863-1.247-2.046-2.142-2.782-3.548-0.16-0.32-0.128-0.639-0.256-0.959-0.895-1.918-1.151-3.996-1.631-6.106-0.512-2.11-1.215-4.124-1.279-6.266 0-0.352-0.192-0.607-0.192-0.959v-255.744c0-0.352 0.192-0.639 0.192-0.959 0.064-2.142 0.767-4.156 1.279-6.298 0.48-2.078 0.767-4.156 1.631-6.074 0.128-0.32 0.096-0.671 0.256-0.959 1.503-3.037 3.517-5.626 5.723-7.928 0.48-0.48 1.055-0.799 1.567-1.247 2.27-2.078 4.796-3.772 7.482-5.083 0.959-0.416 1.854-0.831 2.878-1.215 3.485-1.279 7.13-2.174 10.903-2.206h0.096c0.064 0 0.128 0.032 0.192 0.032 4.764 0.032 9.177 1.247 13.237 3.133 0.256 0.128 0.576 0.064 0.863 0.192l255.952 127.872c10.839 5.435 17.682 16.496 17.682 28.611s-6.842 23.177-17.682 28.611l-255.952 127.84z" />
<glyph unicode="&#xe904;" glyph-name="playlist" d="M128-27.429c-30.281 0-54.857 24.576-54.857 54.857s24.576 54.857 54.857 54.857h768c30.281 0 54.857-24.576 54.857-54.857s-24.576-54.857-54.857-54.857h-768zM530.286 265.143c-30.281 0-54.857 24.576-54.857 54.857s24.576 54.857 54.857 54.857h402.286c30.281 0 54.857-24.576 54.857-54.857s-24.576-54.857-54.857-54.857h-402.286zM969.143 557.714h-292.571c-30.281 0-54.857 24.576-54.857 54.857v0c0 30.281 24.576 54.857 54.857 54.857h292.571c30.281 0 54.857-24.576 54.857-54.857v0c0-30.281-24.576-54.857-54.857-54.857zM135.007 360.934c-54.455 26.368-77.275 92.123-50.907 146.578 26.368 54.418 92.123 77.275 146.578 50.907 54.455-26.405 77.275-92.16 50.907-146.578-26.368-54.455-92.123-77.275-146.578-50.907v0zM749.115 793.172c8.411 17.445 1.134 38.4-16.274 46.848l-164.608 79.762c-18.139 8.777-39.973 1.207-48.786-16.933l-174.482-360.192c-22.894 44.873-63.415 81.262-119.735 94.903-70.875 17.152-147.931-11.045-190.391-70.327-73.362-102.473-25.563-244.407 93.586-282.185 87.515-27.794 181.87 18.322 221.915 100.974l220.306 454.693 131.621-63.781c17.445-8.448 38.4-1.17 46.848 16.238z" />
<glyph unicode="&#xe905;" glyph-name="music" d="M725.333 152.958c-50.408 0-91.429 41.767-91.429 93.091s41.021 93.091 91.429 93.091c50.408 0 91.429-41.767 91.429-93.091s-41.021-93.091-91.429-93.091v0zM451.048 780.98l365.714 106.806v-59.082l-365.714-106.806v59.082zM298.667 28.836c-50.408 0-91.429 41.767-91.429 93.091s41.021 93.091 91.429 93.091c50.408 0 91.429-41.767 91.429-93.091s-41.021-93.091-91.429-93.091v0zM877.714 928.963c0 9.744-4.51 18.897-12.13 24.793-7.619 5.834-17.493 7.758-26.728 5.027l-426.667-124.587c-13.074-3.817-22.095-15.981-22.095-29.82v-559.104c-25.539 19.704-56.99 31.806-91.429 31.806-84.023 0-152.381-69.601-152.381-155.152s68.358-155.152 152.381-155.152c84.023 0 152.381 69.601 152.381 155.152v535.428l365.714 106.744v-394.705c-25.539 19.704-56.99 31.806-91.429 31.806-84.023 0-152.381-69.601-152.381-155.152s68.358-155.152 152.381-155.152c84.023 0 152.381 69.601 152.381 155.152v682.915z" />
<glyph unicode="&#xe906;" glyph-name="Search" d="M861.867 149.333l-217.6 217.6c34.133 42.667 55.467 98.133 55.467 162.133 0 149.333-119.467 268.8-268.8 268.8s-268.8-119.467-268.8-268.8 119.467-268.8 268.8-268.8c59.733 0 115.2 21.333 162.133 55.467l213.333-213.333 55.467 46.933zM209.067 529.067c0 119.467 98.133 217.6 221.867 217.6s221.867-98.133 221.867-221.867-98.133-221.867-221.867-221.867-221.867 102.4-221.867 226.133z" />
<glyph unicode="&#xe907;" glyph-name="clear" d="M618.66 82.286v0c-19.609 0-35.556 16.384-35.556 36.571v475.429c0 20.187 15.947 36.571 35.556 36.571 19.662 0 35.556-16.384 35.556-36.571v-475.429c0-20.187-15.893-36.571-35.556-36.571zM405.326 82.286v0c-19.609 0-35.556 16.384-35.556 36.571v475.429c0 20.187 15.947 36.571 35.556 36.571 19.662 0 35.556-16.384 35.556-36.571v-475.429c0-20.187-15.893-36.571-35.556-36.571zM227.548 9.143v731.429h568.889v-731.429h-568.889zM423.104 813.714v73.143h177.778v-73.143h-177.778zM903.104 813.714h-231.111v109.714c0 20.187-15.893 36.571-35.556 36.571h-248.889c-19.609 0-35.556-16.384-35.556-36.571v-109.714h-231.093c-19.627 0-35.573-16.384-35.573-36.571s15.947-36.571 35.573-36.571h35.538v-768c0-20.187 15.947-36.571 35.556-36.571h640c19.644 0 35.556 16.384 35.556 36.571v768h35.556c19.644 0 35.556 16.384 35.556 36.571s-15.911 36.571-35.556 36.571v0z" />
<glyph unicode="&#xe908;" glyph-name="close" d="M592.457 448l409.6-409.6-80.457-80.457-409.6 409.6-409.6-409.6-80.457 80.457 409.6 409.6-409.6 409.6 80.457 80.457 409.6-409.6 402.286 409.6 87.771-80.457z" />
<glyph unicode="&#xe909;" glyph-name="like" d="M718.769 861.538c-19.057 0-34.462-15.439-34.462-34.462s15.404-34.462 34.462-34.462c76.022 0 137.846-61.824 137.846-137.846 0-19.023 15.404-34.462 34.462-34.462s34.462 15.439 34.462 34.462c0 113.999-92.736 206.769-206.769 206.769zM512-30.602c-302.434 150.046-482.462 405.233-482.462 685.371 0 152.010 123.682 275.692 275.692 275.692 55.621 0 109.484-17.162 155.146-48.453-53.484-60.756-86.223-140.155-86.223-227.239 0-19.023 15.439-34.462 34.462-34.462s34.462 15.439 34.462 34.462c0 82.053 36.254 155.663 93.322 206.183 5.307 4.721 10.786 9.167 16.404 13.44 1.241 0.93 2.516 1.895 3.791 2.791 5.479 4.032 11.097 7.823 16.852 11.407 1.585 0.999 3.17 1.964 4.79 2.929 5.548 3.308 11.234 6.444 16.99 9.374 1.999 0.999 4.032 1.93 6.065 2.929 5.514 2.585 11.097 5.1 16.783 7.306 2.516 0.999 5.1 1.895 7.65 2.826 5.342 1.93 10.718 3.791 16.197 5.376 3.239 0.93 6.548 1.723 9.856 2.55 4.894 1.241 9.856 2.516 14.853 3.481 4.514 0.862 9.132 1.447 13.75 2.102 3.929 0.551 7.857 1.241 11.82 1.654 8.753 0.827 17.61 1.344 26.57 1.344 152.010 0 275.692-123.682 275.692-275.692 0-280.138-180.027-535.326-482.462-685.371z" />
<glyph unicode="&#xe90a;" glyph-name="not-like" d="M704 832c-17.696 0-32-14.336-32-32s14.304-32 32-32c70.592 0 128-57.408 128-128 0-17.664 14.304-32 32-32s32 14.336 32 32c0 105.856-86.112 192-192 192zM512 3.584c-280.832 139.328-448 376.288-448 636.416 0 141.152 114.848 256 256 256 51.648 0 101.664-15.936 144.064-44.992-49.664-56.416-80.064-130.144-80.064-211.008 0-17.664 14.336-32 32-32s32 14.336 32 32c0 76.192 33.664 144.544 86.656 191.456 4.928 4.384 10.016 8.512 15.232 12.48 1.152 0.864 2.336 1.76 3.52 2.592 5.088 3.744 10.304 7.264 15.648 10.592 1.472 0.928 2.944 1.824 4.448 2.72 5.152 3.072 10.432 5.984 15.776 8.704 1.856 0.928 3.744 1.792 5.632 2.72 5.12 2.4 10.304 4.736 15.584 6.784 2.336 0.928 4.736 1.76 7.104 2.624 4.96 1.792 9.952 3.52 15.040 4.992 3.008 0.864 6.080 1.6 9.152 2.368 4.544 1.152 9.152 2.336 13.792 3.232 4.192 0.8 8.48 1.344 12.768 1.952 3.648 0.512 7.296 1.152 10.976 1.536 8.128 0.768 16.352 1.248 24.672 1.248 141.152 0 256-114.848 256-256 0-260.128-167.168-497.088-448-636.416zM704 960c-9.888 0-19.712-0.576-29.504-1.504-3.584-0.32-7.104-0.864-10.688-1.312-5.984-0.736-11.936-1.632-17.824-2.72-4.352-0.8-8.64-1.696-12.896-2.656-4.896-1.12-9.76-2.432-14.656-3.776-4.608-1.28-9.216-2.528-13.76-4-4.096-1.344-8.096-2.944-12.16-4.48-10.688-4-21.12-8.48-31.2-13.536-2.048-1.024-4.096-1.888-6.080-2.944-5.344-2.816-10.496-5.952-15.648-9.056-2.848-1.696-5.696-3.36-8.48-5.184-5.024-3.2-9.824-6.624-14.624-10.080-1.472-1.088-3.008-2.016-4.48-3.104-55.328 41.664-122.528 64.352-192 64.352-176.448 0-320-143.552-320-320 0-289.632 186.24-551.616 498.176-700.864 4.384-2.080 9.088-3.136 13.824-3.136s9.44 1.056 13.824 3.136c311.936 149.248 498.176 411.232 498.176 700.864 0 176.448-143.552 320-320 320z" />
<glyph unicode="&#xe90b;" glyph-name="pause" d="M997.27 396.234c-17.554 2.974-34.212-8.601-37.282-26.027-37.729-214.642-224.649-370.451-444.375-370.451-248.822 0-451.217 201.053-451.217 448.148s202.396 448.148 451.217 448.148c219.725 0 406.646-155.841 444.439-370.451 3.070-17.394 19.824-28.968 37.282-26.027 17.522 3.069 29.224 19.632 26.187 37.026-43.229 245.305-256.847 423.4-507.907 423.4-284.313 0-515.613-229.733-515.613-512.096s231.3-512.096 515.613-512.096c251.060 0 464.678 178.095 507.843 423.432 3.038 17.394-8.697 33.924-26.187 36.994v0zM383.628 582.556v-255.752c0-17.647 14.29-31.937 31.969-31.937 17.647 0 31.969 14.29 31.969 31.937v255.752c0 17.679-14.322 31.969-31.969 31.969-17.679 0-31.969-14.29-31.969-31.969zM639.381 326.803v255.752c0 17.679-14.322 31.969-31.969 31.969-17.679 0-31.969-14.29-31.969-31.969v-255.752c0-17.647 14.29-31.937 31.969-31.937 17.647 0 31.969 14.29 31.969 31.937z" />
<glyph unicode="&#xe90c;" glyph-name="play" d="M447.317 371.742v152.324l152.42-76.162-152.42-76.162zM429.635 604.385c-0.32 0.16-0.639 0.128-0.927 0.256-1.95 0.895-4.093 1.183-6.235 1.695-2.078 0.48-4.093 1.183-6.139 1.247-0.352 0-0.671 0.192-1.023 0.192-1.631 0-3.038-0.703-4.636-0.959-2.238-0.32-4.412-0.512-6.523-1.279-2.014-0.767-3.709-1.982-5.468-3.101-1.695-1.055-3.421-1.95-4.892-3.261-1.759-1.599-2.974-3.581-4.316-5.531-0.863-1.247-2.046-2.142-2.782-3.549-0.16-0.32-0.128-0.639-0.256-0.959-0.895-1.918-1.151-3.997-1.631-6.107-0.512-2.11-1.215-4.125-1.279-6.267 0-0.352-0.192-0.608-0.192-0.959v-255.792c0-0.352 0.192-0.639 0.192-0.959 0.064-2.142 0.767-4.157 1.279-6.299 0.48-2.078 0.767-4.157 1.631-6.075 0.128-0.32 0.096-0.671 0.256-0.959 1.503-3.038 3.517-5.627 5.723-7.93 0.48-0.48 1.055-0.799 1.567-1.247 2.27-2.078 4.796-3.773 7.482-5.084 0.959-0.416 1.854-0.831 2.878-1.215 3.485-1.279 7.13-2.174 10.903-2.206 5.052 0.064 9.464 1.279 13.525 3.165 0.256 0.128 256.815 128.088 256.815 128.088 10.839 5.436 17.682 16.499 17.682 28.617s-6.842 23.181-17.682 28.617l-255.952 127.864zM997.27 396.234c-17.554 2.974-34.212-8.601-37.282-26.027-37.729-214.642-224.649-370.451-444.375-370.451-248.822 0-451.217 201.053-451.217 448.148s202.396 448.148 451.217 448.148c219.725 0 406.646-155.841 444.439-370.451 3.070-17.394 19.824-28.968 37.282-26.027 17.522 3.069 29.224 19.632 26.187 37.026-43.229 245.305-256.847 423.4-507.907 423.4-284.313 0-515.613-229.733-515.613-512.096s231.3-512.096 515.613-512.096c251.060 0 464.678 178.095 507.843 423.432 3.038 17.394-8.697 33.924-26.187 36.994v0z" />
<glyph unicode="&#xe90d;" glyph-name="prev" d="M508.387 960c-251.092 0-464.678-178.063-507.907-423.4-3.038-17.394 8.633-33.956 26.187-36.994 17.394-2.91 34.212 8.601 37.25 25.995 37.793 214.641 224.745 370.451 444.47 370.451 248.822 0 451.217-201.020 451.217-448.147 0-247.095-202.395-448.115-451.217-448.115-219.725 0-406.645 155.809-444.406 370.451-3.070 17.362-19.76 29-37.25 25.995-17.522-3.038-29.224-19.6-26.187-36.994 43.165-245.336 256.751-423.4 507.843-423.4 284.313 0 515.613 229.701 515.613 512.063s-231.3 512.095-515.613 512.095v0zM704.484 524.067v-152.324l-152.292 76.162 152.292 76.162zM448.724 371.743l-152.324 76.162 152.324 76.162v-152.324zM512.48 576.792c-0.064 2.11-0.799 4.157-1.279 6.235-0.512 2.078-0.767 4.221-1.663 6.171-0.128 0.256-0.096 0.608-0.256 0.927-0.671 1.407-1.886 2.302-2.782 3.549-1.343 1.95-2.558 3.901-4.285 5.5-1.471 1.343-3.197 2.206-4.86 3.293-1.791 1.087-3.485 2.334-5.5 3.070-2.11 0.767-4.285 0.959-6.523 1.311-1.599 0.256-2.974 0.927-4.636 0.927-0.352 0-0.671-0.192-0.991-0.192-2.078-0.032-4.061-0.767-6.171-1.247s-4.285-0.767-6.203-1.663c-0.288-0.128-0.639-0.096-0.959-0.256l-255.76-127.896c-10.839-5.436-17.682-16.499-17.682-28.617s6.842-23.149 17.682-28.585l255.76-127.896c0.288-0.128 0.608-0.064 0.895-0.224 4.061-1.854 8.473-3.101 13.205-3.133 0.064 0 0.128-0.032 0.192-0.032h0.064c3.805 0.032 7.45 0.959 10.967 2.238 0.991 0.384 1.886 0.767 2.814 1.215 2.718 1.343 5.212 3.006 7.514 5.052 0.48 0.48 1.087 0.767 1.535 1.247 2.238 2.302 4.221 4.924 5.723 7.93 0.16 0.32 0.128 0.671 0.256 0.927 0.895 1.95 1.151 4.061 1.663 6.139 0.48 2.11 1.215 4.157 1.279 6.267 0 0.352 0.192 0.639 0.192 0.959v76.162l209.494-104.747c0.288-0.128 0.608-0.064 0.863-0.224 4.061-1.854 8.473-3.101 13.205-3.133 0.064 0 0.128-0.032 0.192-0.032h0.064c3.805 0.032 7.482 0.959 10.967 2.238 0.991 0.384 1.918 0.767 2.846 1.215 2.718 1.343 5.212 3.006 7.482 5.052 0.512 0.48 1.087 0.767 1.567 1.247 2.206 2.302 4.221 4.924 5.723 7.93 0.16 0.32 0.128 0.671 0.256 0.927 0.895 1.95 1.151 4.061 1.631 6.139 0.512 2.11 1.215 4.157 1.279 6.267 0 0.352 0.192 0.639 0.192 0.959v255.792c0 0.352-0.192 0.639-0.192 0.991-0.064 2.11-0.767 4.157-1.279 6.235-0.48 2.078-0.735 4.221-1.631 6.171-0.128 0.256-0.096 0.608-0.256 0.927-0.703 1.407-1.918 2.27-2.782 3.517-1.343 1.982-2.558 3.933-4.316 5.531-1.471 1.343-3.165 2.206-4.796 3.261-1.823 1.119-3.549 2.366-5.563 3.101-2.078 0.767-4.284 0.959-6.459 1.311-1.599 0.256-3.038 0.927-4.7 0.927-0.32 0-0.639-0.192-0.991-0.192-2.078-0.032-4.093-0.767-6.171-1.247-2.11-0.48-4.253-0.767-6.203-1.663-0.288-0.128-0.608-0.096-0.927-0.256l-209.494-104.747v76.13c0 0.352-0.192 0.639-0.192 0.991v0z" />
<glyph unicode="&#xe90e;" glyph-name="loop" d="M967.026 400.994c-17.098 2.917-33.389-8.316-36.399-25.166-36.926-207.934-219.415-358.834-434.393-358.834-214.512 0-396.971 150.9-433.835 358.803-3.010 16.849-19.301 28.113-36.399 25.197-17.067-2.948-28.486-19.084-25.538-35.84 42.139-237.63 250.663-410.096 496.268-410.096 245.077 0 453.601 172.466 495.833 410.065 0.31 1.8 0.465 3.631 0.465 5.399 0 14.739-10.736 27.834-26.003 30.472zM25.994 514.064c17.098-2.948 33.389 8.316 36.399 25.166 36.926 207.934 219.415 358.834 434.393 358.834 214.512 0 396.971-150.9 433.835-358.803 3.010-16.849 19.27-28.144 36.368-25.197 15.298 2.638 26.034 15.732 26.034 30.472 0 1.769-0.155 3.568-0.465 5.368-42.139 237.63-250.663 410.096-496.268 410.096-245.077 0-453.601-172.466-495.833-410.065-2.917-17.16 8.471-32.923 25.538-35.871zM668.765 621.608l61.874-41.829-61.874-41.86v83.689zM623.182 451.438c4.561-2.482 9.588-3.693 14.615-3.693 6.020 0 12.009 1.769 17.16 5.275l148.697 100.6c8.626 5.834 13.777 15.67 13.777 26.159 0 10.519-5.151 20.325-13.777 26.159l-148.697 100.538c-9.495 6.423-21.721 7.044-31.775 1.552-10.054-5.461-16.353-16.105-16.353-27.71v-70.128h-296.526c-51.355 0-93.091-41.736-93.091-93.091v-219.136c0-51.324 41.736-93.091 93.091-93.091h356.848c51.324 0 93.091 41.767 93.091 93.091v39.75c0 17.16-13.902 31.030-31.030 31.030-17.16 0-31.030-13.871-31.030-31.030v-39.75c0-17.129-13.933-31.030-31.030-31.030h-356.848c-17.129 0-31.030 13.902-31.030 31.030v219.136c0 17.129 13.902 31.030 31.030 31.030h296.526v-68.98c0-11.574 6.299-22.249 16.353-27.71v0zM488.607 506.436c-6.554-7.1-14.746-13.38-24.576-19.388-9.83-5.461-18.842-9.284-27.58-11.469v-29.491c18.022 5.188 33.041 13.38 44.783 24.576v-159.198h29.764v194.97h-22.391z" />
<glyph unicode="&#xe90f;" glyph-name="sequence" d="M967.026 400.994c-17.098 2.917-33.389-8.316-36.399-25.166-36.926-207.934-219.415-358.834-434.393-358.834-214.512 0-396.971 150.9-433.835 358.803-3.010 16.849-19.301 28.113-36.399 25.197-17.067-2.948-28.486-19.084-25.538-35.84 42.139-237.63 250.663-410.096 496.268-410.096 245.077 0 453.601 172.466 495.833 410.065 0.31 1.8 0.465 3.631 0.465 5.399 0 14.739-10.736 27.834-26.003 30.472zM25.994 514.064c17.098-2.948 33.389 8.316 36.399 25.166 36.926 207.934 219.415 358.834 434.393 358.834 214.512 0 396.971-150.9 433.835-358.803 3.010-16.849 19.27-28.144 36.368-25.197 15.298 2.638 26.034 15.732 26.034 30.472 0 1.769-0.155 3.568-0.465 5.368-42.139 237.63-250.663 410.096-496.268 410.096-245.077 0-453.601-172.466-495.833-410.065-2.917-17.16 8.471-32.923 25.538-35.871zM668.765 621.608l61.874-41.829-61.874-41.86v83.689zM623.182 451.438c4.561-2.482 9.588-3.693 14.615-3.693 6.020 0 12.009 1.769 17.16 5.275l148.697 100.6c8.626 5.834 13.777 15.67 13.777 26.159 0 10.519-5.151 20.325-13.777 26.159l-148.697 100.538c-9.495 6.423-21.721 7.044-31.775 1.552-10.054-5.461-16.353-16.105-16.353-27.71v-70.128h-296.526c-51.355 0-93.091-41.736-93.091-93.091v-219.136c0-51.324 41.736-93.091 93.091-93.091h356.848c51.324 0 93.091 41.767 93.091 93.091v39.75c0 17.16-13.902 31.030-31.030 31.030-17.16 0-31.030-13.871-31.030-31.030v-39.75c0-17.129-13.933-31.030-31.030-31.030h-356.848c-17.129 0-31.030 13.902-31.030 31.030v219.136c0 17.129 13.902 31.030 31.030 31.030h296.526v-68.98c0-11.574 6.299-22.249 16.353-27.71v0z" />
<glyph unicode="&#xe910;" glyph-name="random" d="M703.621 554.519v86.388l63.801-43.178-63.801-43.21zM842.709 624.731l-153.326 103.781c-9.791 6.63-22.397 7.271-32.764 1.602-10.367-5.637-16.862-16.624-16.862-28.604v-64.863h-63.865c-105.652 0-191.626-87.317-191.626-194.653 0-71.589-57.273-129.79-127.665-129.79h-31.996c-17.63 0-31.932-14.51-31.932-32.447s14.302-32.447 31.932-32.447h31.996c105.62 0 191.562 87.317 191.562 194.685 0 71.557 57.273 129.758 127.729 129.758h63.865v-77.867c0-11.98 6.495-22.966 16.862-28.604 4.703-2.595 9.887-3.844 15.070-3.844 6.207 0 12.383 1.826 17.694 5.445l153.326 103.845c8.895 6.022 14.206 16.176 14.206 27.002 0 10.859-5.311 20.98-14.206 27.002v0zM224.604 571.752h31.996c18.878 0 37.724-4.644 56.026-13.837 4.543-2.306 9.375-3.363 14.11-3.363 11.807 0 23.101 6.63 28.669 18.066 7.839 16.048 1.344 35.522-14.462 43.466-27.197 13.645-55.546 20.564-84.342 20.564h-31.996c-17.63 0-31.932-14.51-31.932-32.447s14.302-32.447 31.932-32.447v0zM703.621 329.437l63.801-43.21-63.801-43.178v86.388zM656.618 153.811c4.703-2.562 9.887-3.812 15.070-3.812 6.207 0 12.383 1.826 17.694 5.445l153.326 103.781c8.895 6.022 14.206 16.144 14.206 27.002 0 10.826-5.311 20.98-14.206 27.002l-153.326 103.845c-9.791 6.662-22.397 7.271-32.764 1.634s-16.862-16.656-16.862-28.636v-77.867h-63.865c-18.91 0-37.756 4.677-56.122 13.837-15.87 7.944-34.94 1.377-42.747-14.734-7.839-16.048-1.312-35.49 14.494-43.434 27.197-13.645 55.578-20.564 84.374-20.564h63.865v-64.863c0-11.98 6.495-22.966 16.862-28.636v0zM997.219 396.318c-17.63 3.043-34.428-8.552-37.532-25.977-38.076-214.608-226.278-370.407-447.916-370.407-221.191 0-409.361 155.799-447.372 370.407-3.104 17.361-19.87 29.020-37.5 25.977-17.63-3.011-29.405-19.699-26.365-36.996 43.451-245.262 258.466-423.322 511.717-423.322 252.707 0 467.754 178.060 511.301 423.29 0.288 1.89 0.448 3.78 0.448 5.573 0 15.247-11.071 28.764-26.781 31.454v0zM26.803 499.682c17.63-3.043 34.428 8.552 37.532 25.945 38.076 214.64 226.278 370.439 447.916 370.439 221.191 0 409.361-155.799 447.372-370.407 3.104-17.361 19.87-29.020 37.5-25.977 15.742 2.691 26.813 16.208 26.813 31.454 0 1.794-0.128 3.684-0.448 5.509-43.451 245.294-258.466 423.354-511.717 423.354-252.739 0-467.754-178.060-511.301-423.322-3.008-17.681 8.735-33.985 26.333-36.996v0z" />
<glyph unicode="&#xe911;" glyph-name="back" d="M707.458 897.939c-17.399 0-33.755-6.454-46.071-18.184l-381.794-351.635c-18.050-17.222-28.248-40.588-28.248-65.443 0-24.886 10.198-48.252 28.639-65.846l381.37-350.394c24.632-23.459 67.542-23.459 92.174 0 12.316 11.729 19.093 27.276 19.093 43.846s-6.777 32.178-19.093 43.908l-277.955 262.578c-18.539 17.656-28.737 41.022-28.737 65.908 0 24.855 10.198 48.221 28.639 65.815l278.118 263.54c12.251 11.667 19.028 27.276 19.028 43.846s-6.777 32.147-19.093 43.877c-12.316 11.729-28.672 18.184-46.071 18.184zM707.458-33.808c-34.797 0-67.542 12.909-92.174 36.368l-52.326 49.835-328.555 300.094c-31.279 29.758-48.221 68.732-48.221 110.189s16.943 80.4 47.732 109.692l381.794 351.635c24.241 23.087 56.953 35.995 91.75 35.995 34.83 0 67.542-12.909 92.141-36.368 24.632-23.428 38.186-54.613 38.186-87.754s-13.554-64.357-38.186-87.785l-278.118-263.54c-6.093-5.803-9.481-13.591-9.481-21.876s3.389-16.105 9.546-21.938l277.955-262.578c24.73-23.552 38.284-54.737 38.284-87.878s-13.554-64.326-38.186-87.754c-24.599-23.428-57.344-36.336-92.141-36.336z" />
<glyph unicode="&#xe912;" glyph-name="mine" d="M736 339.394c-17.664 0-32-13.902-32-31.030s14.336-31.030 32-31.030c123.52 0 224-97.435 224-217.212 0-17.098-14.368-31.030-32-31.030h-832c-17.632 0-32 13.933-32 31.030 0 119.777 100.48 217.212 224 217.212 17.664 0 32 13.902 32 31.030s-14.336 31.030-32 31.030c-158.784 0-288-125.3-288-279.273 0-51.324 43.072-93.091 96-93.091h832c52.928 0 96 41.767 96 93.091 0 153.972-129.216 279.273-288 279.273zM512 897.939c123.488 0 224-125.269 224-279.273 0-153.972-100.48-279.273-224-279.273-123.488 0-224 125.3-224.032 279.273 0 154.003 100.512 279.273 224.032 279.273zM512 277.333c158.784 0 288 153.135 288 341.333s-129.216 341.333-288 341.333c-78.304 0-151.488-36.399-206.048-102.524-52.864-64.109-81.952-148.914-81.952-238.809 0-188.199 129.216-341.333 288-341.333z" />
<glyph unicode="&#xe913;" glyph-name="next" d="M515.613-64.159c251.092 0 464.678 178.063 507.907 423.4 3.038 17.394-8.633 33.956-26.187 36.994-17.394 2.91-34.212-8.601-37.25-25.995-37.793-214.641-224.745-370.451-444.47-370.451-248.822 0-451.217 201.020-451.217 448.147 0 247.095 202.395 448.115 451.217 448.115 219.725 0 406.645-155.809 444.406-370.451 3.070-17.362 19.76-29 37.25-25.995 17.522 3.038 29.224 19.6 26.187 36.994-43.165 245.336-256.751 423.4-507.843 423.4-284.313 0-515.613-229.701-515.613-512.063s231.3-512.095 515.613-512.095v0zM319.516 371.775v152.324l152.292-76.162-152.292-76.162zM575.276 524.099l152.324-76.162-152.324-76.162v152.324zM511.52 319.049c0.064-2.11 0.799-4.157 1.279-6.235 0.512-2.078 0.767-4.221 1.663-6.171 0.128-0.256 0.096-0.608 0.256-0.927 0.671-1.407 1.886-2.302 2.782-3.549 1.343-1.95 2.558-3.901 4.285-5.5 1.471-1.343 3.197-2.206 4.86-3.293 1.791-1.087 3.485-2.334 5.5-3.070 2.11-0.767 4.285-0.959 6.523-1.311 1.599-0.256 2.974-0.927 4.636-0.927 0.352 0 0.671 0.192 0.991 0.192 2.078 0.032 4.061 0.767 6.171 1.247s4.285 0.767 6.203 1.663c0.288 0.128 0.639 0.096 0.959 0.256l255.76 127.896c10.839 5.436 17.682 16.499 17.682 28.617s-6.842 23.149-17.682 28.585l-255.76 127.896c-0.288 0.128-0.608 0.064-0.895 0.224-4.061 1.854-8.473 3.101-13.205 3.133-0.064 0-0.128 0.032-0.192 0.032h-0.064c-3.805-0.032-7.45-0.959-10.967-2.238-0.991-0.384-1.886-0.767-2.814-1.215-2.718-1.343-5.212-3.006-7.514-5.052-0.48-0.48-1.087-0.767-1.535-1.247-2.238-2.302-4.221-4.924-5.723-7.93-0.16-0.32-0.128-0.671-0.256-0.927-0.895-1.95-1.151-4.061-1.663-6.139-0.48-2.11-1.215-4.157-1.279-6.267 0-0.352-0.192-0.639-0.192-0.959v-76.162l-209.494 104.747c-0.288 0.128-0.608 0.064-0.863 0.224-4.061 1.854-8.473 3.101-13.205 3.133-0.064 0-0.128 0.032-0.192 0.032h-0.064c-3.805-0.032-7.482-0.959-10.967-2.238-0.991-0.384-1.918-0.767-2.846-1.215-2.718-1.343-5.212-3.006-7.482-5.052-0.512-0.48-1.087-0.767-1.567-1.247-2.206-2.302-4.221-4.924-5.723-7.93-0.16-0.32-0.128-0.671-0.256-0.927-0.895-1.95-1.151-4.061-1.631-6.139-0.512-2.11-1.215-4.157-1.279-6.267 0-0.352-0.192-0.639-0.192-0.959v-255.792c0-0.352 0.192-0.639 0.192-0.991 0.064-2.11 0.767-4.157 1.279-6.235 0.48-2.078 0.735-4.221 1.631-6.171 0.128-0.256 0.096-0.608 0.256-0.927 0.703-1.407 1.918-2.27 2.782-3.517 1.343-1.982 2.558-3.933 4.316-5.531 1.471-1.343 3.165-2.206 4.796-3.261 1.823-1.119 3.549-2.366 5.563-3.101 2.078-0.767 4.284-0.959 6.459-1.311 1.599-0.256 3.038-0.927 4.7-0.927 0.32 0 0.639 0.192 0.991 0.192 2.078 0.032 4.093 0.767 6.171 1.247 2.11 0.48 4.253 0.767 6.203 1.663 0.288 0.128 0.608 0.096 0.927 0.256l209.494 104.747v-76.13c0-0.352 0.192-0.639 0.192-0.991v0z" />
<glyph unicode="&#xe914;" glyph-name="dismiss" d="M512-64c-282.77 0-512 229.23-512 512s229.23 512 512 512c282.77 0 512-229.23 512-512s-229.23-512-512-512zM504.902 500.353l-203.647 203.647-45.255-45.255 203.647-203.647-203.647-203.647 45.255-45.255 203.647 203.647 203.647-203.647 45.255 45.255-203.647 203.647 203.647 203.647-45.255 45.255-203.647-203.647z" />
<glyph unicode="&#xe915;" glyph-name="pause-mini" d="M512 960c-281.6 0-512-230.4-512-512s230.4-512 512-512 512 230.4 512 512c0 281.6-230.4 512-512 512zM512 5.12c-245.76 0-442.88 199.68-442.88 442.88s197.12 442.88 442.88 442.88 442.88-197.12 442.88-442.88-197.12-442.88-442.88-442.88zM601.6 606.72c-17.92 0-30.72-15.36-30.72-30.72v-256c0-17.92 15.36-30.72 30.72-30.72 17.92 0 30.72 15.36 30.72 30.72v256c0 17.92-12.8 30.72-30.72 30.72zM422.4 606.72c-17.92 0-30.72-15.36-30.72-30.72v-256c0-17.92 15.36-30.72 30.72-30.72 17.92 0 30.72 15.36 30.72 30.72v256c0 17.92-12.8 30.72-30.72 30.72z" />
</font></defs></svg>

After

Width:  |  Height:  |  Size: 26 KiB

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

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