@abtnode/blocklet-services 1.8.25 → 1.8.27

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/api/index.js +5 -2
  2. package/api/middlewares/check-running.js +1 -1
  3. package/api/routes/blocklet.js +1 -1
  4. package/api/routes/env.js +1 -1
  5. package/api/services/auth/index.js +27 -7
  6. package/api/services/dashboard/index.js +153 -0
  7. package/api/services/static.js +8 -6
  8. package/api/util/index.js +6 -1
  9. package/build/asset-manifest.json +27 -17
  10. package/build/index.html +1 -1
  11. package/build/static/css/738.18a3eb84.chunk.css +2 -0
  12. package/build/static/css/738.18a3eb84.chunk.css.map +1 -0
  13. package/build/static/js/123.fd74ee54.chunk.js +2 -0
  14. package/build/static/js/123.fd74ee54.chunk.js.map +1 -0
  15. package/build/static/js/203.9033bd1d.chunk.js +2 -0
  16. package/build/static/js/203.9033bd1d.chunk.js.map +1 -0
  17. package/build/static/js/301.aff37b48.chunk.js +2 -0
  18. package/build/static/js/301.aff37b48.chunk.js.map +1 -0
  19. package/build/static/js/628.78b77407.chunk.js +2 -0
  20. package/build/static/js/628.78b77407.chunk.js.map +1 -0
  21. package/build/static/js/662.a7f2c44c.chunk.js +2 -0
  22. package/build/static/js/662.a7f2c44c.chunk.js.map +1 -0
  23. package/build/static/js/737.9a5b1e7b.chunk.js +2 -0
  24. package/build/static/js/737.9a5b1e7b.chunk.js.map +1 -0
  25. package/build/static/js/738.35e5be1f.chunk.js +3 -0
  26. package/build/static/js/738.35e5be1f.chunk.js.LICENSE.txt +68 -0
  27. package/build/static/js/738.35e5be1f.chunk.js.map +1 -0
  28. package/build/static/js/868.04c225a9.chunk.js +2 -0
  29. package/build/static/js/868.04c225a9.chunk.js.map +1 -0
  30. package/build/static/js/924.7980ec5c.chunk.js +2 -0
  31. package/build/static/js/924.7980ec5c.chunk.js.map +1 -0
  32. package/build/static/js/931.4448ec5d.chunk.js +3 -0
  33. package/build/static/js/931.4448ec5d.chunk.js.LICENSE.txt +10 -0
  34. package/build/static/js/931.4448ec5d.chunk.js.map +1 -0
  35. package/build/static/js/972.4befe3c8.chunk.js +2 -0
  36. package/build/static/js/972.4befe3c8.chunk.js.map +1 -0
  37. package/build/static/js/main.d9131f59.js +3 -0
  38. package/build/static/js/{main.199e60e9.js.LICENSE.txt → main.d9131f59.js.LICENSE.txt} +1 -1
  39. package/build/static/js/main.d9131f59.js.map +1 -0
  40. package/package.json +30 -26
  41. package/build/static/js/199.71b6a290.chunk.js +0 -2
  42. package/build/static/js/199.71b6a290.chunk.js.map +0 -1
  43. package/build/static/js/244.6bfddb66.chunk.js +0 -2
  44. package/build/static/js/244.6bfddb66.chunk.js.map +0 -1
  45. package/build/static/js/400.c6e11e32.chunk.js +0 -2
  46. package/build/static/js/400.c6e11e32.chunk.js.map +0 -1
  47. package/build/static/js/532.df6be59f.chunk.js +0 -2
  48. package/build/static/js/532.df6be59f.chunk.js.map +0 -1
  49. package/build/static/js/575.137f8200.chunk.js +0 -2
  50. package/build/static/js/575.137f8200.chunk.js.map +0 -1
  51. package/build/static/js/597.6e6ef8c5.chunk.js +0 -2
  52. package/build/static/js/597.6e6ef8c5.chunk.js.map +0 -1
  53. package/build/static/js/737.93eeec19.chunk.js +0 -2
  54. package/build/static/js/737.93eeec19.chunk.js.map +0 -1
  55. package/build/static/js/main.199e60e9.js +0 -3
  56. package/build/static/js/main.199e60e9.js.map +0 -1
package/api/index.js CHANGED
@@ -13,7 +13,7 @@ const moment = require('dayjs');
13
13
  const minimatch = require('minimatch');
14
14
 
15
15
  const { WELLKNOWN_SERVICE_PATH_PREFIX, NODE_SERVICES_PREFIX, EVENTS } = require('@abtnode/constant');
16
- const { BlockletEvents } = require('@blocklet/meta/lib/constants');
16
+ const { BlockletEvents } = require('@blocklet/constant');
17
17
  const normalizePathPrefix = require('@abtnode/util/lib/normalize-path-prefix');
18
18
  const createInvite = require('@abtnode/auth/lib/invitation');
19
19
  const eventHub =
@@ -28,6 +28,7 @@ const { init: initStates } = require('./state/index');
28
28
  const { init: initNotification } = require('./services/notification');
29
29
  const { init: initAuth } = require('./services/auth');
30
30
  const StaticService = require('./services/static');
31
+ const { init: initDashboard } = require('./services/dashboard');
31
32
  const createEnvRoutes = require('./routes/env');
32
33
  const createBlockletRoutes = require('./routes/blocklet');
33
34
  const createConnectRelayRoutes = require('./routes/connect/relay');
@@ -76,8 +77,9 @@ module.exports = function createServer(node, serverOptions = {}) {
76
77
 
77
78
  initStates(options.dataDir);
78
79
 
79
- const { middlewares: authMiddlewares, routes: authRoutes } = initAuth({ node, options });
80
+ const { middlewares: authMiddlewares, routes: authRoutes, ensureWsUser } = initAuth({ node, options });
80
81
  const notificationService = initNotification({ node, options });
82
+ const dashboardService = initDashboard({ node, ensureWsUser });
81
83
 
82
84
  // Proxy engine
83
85
  const proxy = httpProxy.createProxyServer({
@@ -293,6 +295,7 @@ module.exports = function createServer(node, serverOptions = {}) {
293
295
 
294
296
  // Notification
295
297
  notificationService.attach(wsRouter);
298
+ dashboardService.attachWsServer(wsRouter);
296
299
 
297
300
  // Only for Development
298
301
  StaticService.attachDevProxy({ wsRouter, proxy });
@@ -1,4 +1,4 @@
1
- const { BlockletStatus } = require('@blocklet/meta/lib/constants');
1
+ const { BlockletStatus } = require('@blocklet/constant');
2
2
  const getBlockletNotRunningTemplate = require('@abtnode/router-templates/lib/blocklet-not-running');
3
3
  const getBlockletMaintenanceTemplate = require('@abtnode/router-templates/lib/blocklet-maintenance');
4
4
 
@@ -22,7 +22,7 @@ const {
22
22
  createUserPassport,
23
23
  } = require('@abtnode/auth/lib/passport');
24
24
 
25
- const { BlockletStatus } = require('@blocklet/meta/lib/constants');
25
+ const { BlockletStatus } = require('@blocklet/constant');
26
26
 
27
27
  const checkAdminPermission = require('../middlewares/check-admin-permission');
28
28
  const { PREFIXES } = require('../util/constants');
package/api/routes/env.js CHANGED
@@ -1,6 +1,6 @@
1
1
  const get = require('lodash/get');
2
2
  const { NODE_SERVICES, WELLKNOWN_SERVICE_PATH_PREFIX } = require('@abtnode/constant');
3
- const { BLOCKLET_CONFIGURABLE_KEY } = require('@blocklet/meta/lib/constants');
3
+ const { BLOCKLET_CONFIGURABLE_KEY } = require('@blocklet/constant');
4
4
 
5
5
  module.exports = {
6
6
  init(server, node, opts) {
@@ -13,7 +13,7 @@ const {
13
13
  WELLKNOWN_SERVICE_PATH_PREFIX,
14
14
  USER_AVATAR_URL_PREFIX,
15
15
  } = require('@abtnode/constant');
16
- const { BLOCKLET_MODES } = require('@blocklet/meta/lib/constants');
16
+ const { BLOCKLET_MODES } = require('@blocklet/constant');
17
17
  const { setUserInfoHeaders } = require('@abtnode/auth/lib/auth');
18
18
 
19
19
  const initJwt = require('../../libs/jwt');
@@ -32,6 +32,18 @@ const createSessionRoutes = require('./session');
32
32
  const createPassportRoutes = require('./passport');
33
33
  const { getRedirectUrl } = require('../../util');
34
34
 
35
+ const getTokenFromWsConnect = (req) => {
36
+ const { searchParams } = new URL(req.url, `http://${req.headers.host || 'unknown'}`);
37
+ return searchParams.get('token');
38
+ };
39
+
40
+ const isDevWsConnect = async (req) => {
41
+ const blocklet = await req.getBlocklet();
42
+ const devUrls = ['/sockjs-node', '/ws'];
43
+ const mode = get(blocklet, 'mode');
44
+ return mode === BLOCKLET_MODES.DEVELOPMENT && devUrls.includes(req.url);
45
+ };
46
+
35
47
  const init = ({ node, options }) => {
36
48
  /**
37
49
  * set user info to req.user
@@ -150,16 +162,23 @@ const init = ({ node, options }) => {
150
162
  routes.createPassportRoutes = createPassportRoutes;
151
163
  routes.createSessionRoutes = createSessionRoutes;
152
164
 
165
+ const ensureWsUser = async (req) => {
166
+ const token = getTokenFromWsConnect(req);
167
+
168
+ // ignore some dev path in dev mode
169
+ if (await isDevWsConnect(req)) {
170
+ return;
171
+ }
172
+
173
+ await ensureUser({ req, token });
174
+ };
175
+
153
176
  // auth middleware for websocket connect
154
177
  middlewares.ensureWsAuth = async (req, socket, head, next) => {
155
- const { searchParams } = new URL(req.url, `http://${req.headers.host || 'unknown'}`);
156
- const token = searchParams.get('token');
178
+ const token = getTokenFromWsConnect(req);
157
179
 
158
180
  // ignore some dev path in dev mode
159
- const blocklet = await req.getBlocklet();
160
- const devUrls = ['/sockjs-node', '/ws'];
161
- const mode = get(blocklet, 'mode');
162
- if (mode === BLOCKLET_MODES.DEVELOPMENT && devUrls.includes(req.url)) {
181
+ if (await isDevWsConnect(req)) {
163
182
  next();
164
183
  return;
165
184
  }
@@ -213,6 +232,7 @@ const init = ({ node, options }) => {
213
232
  return {
214
233
  middlewares,
215
234
  routes,
235
+ ensureWsUser,
216
236
  };
217
237
  };
218
238
 
@@ -0,0 +1,153 @@
1
+ const get = require('lodash/get');
2
+ const { WsServer } = require('@arcblock/ws');
3
+ const { WELLKNOWN_SERVICE_PATH_PREFIX, ROLES } = require('@abtnode/constant');
4
+ const { createStreamLogManager, getLogFiles } = require('@abtnode/util/lib/log');
5
+ const { BlockletEvents } = require('@blocklet/constant');
6
+ const eventHub =
7
+ process.env.NODE_ENV === 'test' ? require('@arcblock/event-hub/single') : require('@arcblock/event-hub');
8
+
9
+ // eslint-disable-next-line global-require
10
+ const logger = require('@abtnode/logger')(`${require('../../../package.json').name}:ws`);
11
+
12
+ function createWebsocketServer(node, ensureWsUser) {
13
+ const wsServer = new WsServer({
14
+ broadcastEventName: '@abtnode/blocklet-services:dashboard',
15
+
16
+ logger,
17
+
18
+ authenticate: async (req, cb) => {
19
+ const { searchParams } = new URL(req.url, `http://${req.headers.host || 'unknown'}`);
20
+
21
+ const token = searchParams.get('token');
22
+ if (!token) {
23
+ cb(new Error('token not found'), null);
24
+ return;
25
+ }
26
+
27
+ await ensureWsUser(req);
28
+
29
+ if (!req.user) {
30
+ cb(new Error('user not found'), null);
31
+ return;
32
+ }
33
+
34
+ if (![ROLES.OWNER, ROLES.ADMIN].includes(req.user.role)) {
35
+ cb(new Error('user does not have permission'), null);
36
+ return;
37
+ }
38
+
39
+ const teamDid = req.getBlockletDid();
40
+
41
+ cb(null, { did: req.user.did, teamDid });
42
+ },
43
+
44
+ hooks: {
45
+ authenticateJoinChannel: ({ topic: channel, socket }) => {
46
+ const [blockletDid] = channel.split('/');
47
+ if (get(socket, 'authInfo.teamDid') !== blockletDid) {
48
+ throw new Error("You cannot join other blocklet's channel");
49
+ }
50
+ },
51
+
52
+ receiveMessage: ({ socket, topic, event, payload }) => {
53
+ wsServer.emit(`${topic}/${event}`, { socket, topic, event, payload });
54
+ },
55
+ },
56
+ });
57
+
58
+ Object.values(BlockletEvents).forEach((name) => {
59
+ eventHub.on(name, (data) => {
60
+ const did = get(data, 'meta.did');
61
+ const eventName = `${did}/${name}`;
62
+ wsServer.broadcast(eventName, eventName, data, { noCluster: true });
63
+ });
64
+ });
65
+
66
+ const streamLogManager = createStreamLogManager({
67
+ onGetLogFiles: (name) => getLogFiles({ name, node }),
68
+ onLog: ({ topic, level, logFiles, data }) => {
69
+ const arr = topic.split('-');
70
+ const blockletDid = arr[arr.length - 1];
71
+
72
+ const blockletTopic = `${blockletDid}/${topic}`;
73
+
74
+ wsServer.broadcast(
75
+ blockletTopic,
76
+ blockletTopic,
77
+ { level, logFiles, data },
78
+ { enableLog: false, noCluster: true }
79
+ );
80
+ },
81
+ });
82
+
83
+ eventHub.on(BlockletEvents.removed, (data) => {
84
+ try {
85
+ const { did } = data.meta;
86
+ const logName = `blocklet-${did}`;
87
+ logger.info('destroy blocklet log stream', { name: logName });
88
+ streamLogManager.destroy(logName);
89
+ } catch (error) {
90
+ logger.error('destroy blocklet log stream error', { error });
91
+ }
92
+ });
93
+
94
+ const emitter = node.getSysInfoEmitter(5000);
95
+ emitter.on('info', (info) => {
96
+ wsServer.broadcast('system.info', 'system.info', info, { enableLog: false, noCluster: true });
97
+ });
98
+
99
+ const onChannelEvent = async (eventName, { socket, topic: blockletTopic }) => {
100
+ const [, ...tmpTopic] = blockletTopic.split('/');
101
+ const topic = tmpTopic.join('/');
102
+ const [type, ...names] = topic.split('.');
103
+
104
+ if (type === 'log') {
105
+ const name = names.join('.');
106
+ if (eventName === 'channel.join') {
107
+ streamLogManager.add(name, topic, (level, data, logFiles) => {
108
+ wsServer.send(socket, blockletTopic, blockletTopic, { level, data, logFiles }, { enableLog: false });
109
+ });
110
+ }
111
+
112
+ if (eventName === 'channel.destroy') {
113
+ streamLogManager.destroy(name);
114
+ }
115
+ }
116
+
117
+ if (type === 'system') {
118
+ if (eventName === 'channel.join') {
119
+ emitter.startPolling();
120
+ logger.info('start system info polling');
121
+ node.getSysInfo().then((info) => {
122
+ wsServer.send(socket, topic, topic, info, { enableLog: false });
123
+ });
124
+ }
125
+
126
+ if (eventName === 'channel.destroy') {
127
+ logger.info('stop system info polling');
128
+ emitter.stopPolling();
129
+ }
130
+ }
131
+ };
132
+
133
+ ['channel.join', 'channel.leave', 'channel.destroy'].forEach((name) => {
134
+ wsServer.on(name, (payload) => onChannelEvent(name, payload));
135
+ });
136
+
137
+ return wsServer;
138
+ }
139
+
140
+ const init = ({ node, ensureWsUser }) => {
141
+ const dashboardWsServer = createWebsocketServer(node, ensureWsUser);
142
+
143
+ return {
144
+ attachWsServer: (wsRouter) => {
145
+ wsRouter.use(
146
+ `${WELLKNOWN_SERVICE_PATH_PREFIX}/dashboard/websocket`,
147
+ dashboardWsServer.onConnect.bind(dashboardWsServer)
148
+ );
149
+ },
150
+ };
151
+ };
152
+
153
+ module.exports = { init };
@@ -45,12 +45,14 @@ const attachStaticResources = ({ app, proxy }) => {
45
45
 
46
46
  const attachDevProxy = ({ wsRouter, proxy }) => {
47
47
  if (isFeDevelopment) {
48
- wsRouter.use('/sockjs-node', async (req, socket, head) => {
49
- const target = 'http://127.0.0.1:3040';
50
- proxy.ws(req, socket, head, { target }, (error) => {
51
- if (error) {
52
- console.error('socket proxy error', { from: req.url, to: target, error });
53
- }
48
+ ['/sockjs-node', '/ws'].forEach((prefix) => {
49
+ wsRouter.use(prefix, async (req, socket, head) => {
50
+ const target = 'http://127.0.0.1:3040';
51
+ proxy.ws(req, socket, head, { target }, (error) => {
52
+ if (error) {
53
+ console.error('socket proxy error', { from: req.url, to: target, error });
54
+ }
55
+ });
54
56
  });
55
57
  });
56
58
  }
package/api/util/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  const joinUrl = require('url-join');
2
2
  const get = require('lodash/get');
3
3
  const { ROLES } = require('@abtnode/constant');
4
- const { BlockletSource, BLOCKLET_MODES, BlockletGroup } = require('@blocklet/meta/lib/constants');
4
+ const { BlockletSource, BLOCKLET_MODES, BlockletGroup } = require('@blocklet/constant');
5
5
  const { findWebInterface } = require('@blocklet/meta/lib/util');
6
6
  const { WELLKNOWN_SERVICE_PATH_PREFIX } = require('@abtnode/constant');
7
7
 
@@ -41,6 +41,11 @@ const getLogoFromLogoUrl = (blocklet, version) => {
41
41
 
42
42
  const getBlockletLogo = ({ baseUrl, blocklet }) => {
43
43
  const version = get(blocklet, 'meta.version', '');
44
+ const customLogo = get(blocklet, 'environmentObj.BLOCKLET_APP_LOGO');
45
+
46
+ if (customLogo) {
47
+ return customLogo;
48
+ }
44
49
 
45
50
  if (!baseUrl) {
46
51
  return getLogoFromLogoUrl(blocklet, version);
@@ -1,19 +1,24 @@
1
1
  {
2
2
  "files": {
3
3
  "main.css": "/.blocklet/proxy/blocklet-service/static/css/main.632501d5.css",
4
- "main.js": "/.blocklet/proxy/blocklet-service/static/js/main.199e60e9.js",
4
+ "main.js": "/.blocklet/proxy/blocklet-service/static/js/main.d9131f59.js",
5
5
  "static/js/560.60bd29f3.chunk.js": "/.blocklet/proxy/blocklet-service/static/js/560.60bd29f3.chunk.js",
6
6
  "static/js/255.a8eba332.chunk.js": "/.blocklet/proxy/blocklet-service/static/js/255.a8eba332.chunk.js",
7
7
  "static/js/472.465c07c7.chunk.js": "/.blocklet/proxy/blocklet-service/static/js/472.465c07c7.chunk.js",
8
- "static/js/737.93eeec19.chunk.js": "/.blocklet/proxy/blocklet-service/static/js/737.93eeec19.chunk.js",
9
- "static/js/199.71b6a290.chunk.js": "/.blocklet/proxy/blocklet-service/static/js/199.71b6a290.chunk.js",
10
- "static/js/400.c6e11e32.chunk.js": "/.blocklet/proxy/blocklet-service/static/js/400.c6e11e32.chunk.js",
8
+ "static/js/737.9a5b1e7b.chunk.js": "/.blocklet/proxy/blocklet-service/static/js/737.9a5b1e7b.chunk.js",
9
+ "static/js/301.aff37b48.chunk.js": "/.blocklet/proxy/blocklet-service/static/js/301.aff37b48.chunk.js",
10
+ "static/js/868.04c225a9.chunk.js": "/.blocklet/proxy/blocklet-service/static/js/868.04c225a9.chunk.js",
11
+ "static/js/662.a7f2c44c.chunk.js": "/.blocklet/proxy/blocklet-service/static/js/662.a7f2c44c.chunk.js",
11
12
  "static/js/29.0dc92845.chunk.js": "/.blocklet/proxy/blocklet-service/static/js/29.0dc92845.chunk.js",
12
- "static/js/597.6e6ef8c5.chunk.js": "/.blocklet/proxy/blocklet-service/static/js/597.6e6ef8c5.chunk.js",
13
- "static/js/244.6bfddb66.chunk.js": "/.blocklet/proxy/blocklet-service/static/js/244.6bfddb66.chunk.js",
13
+ "static/js/931.4448ec5d.chunk.js": "/.blocklet/proxy/blocklet-service/static/js/931.4448ec5d.chunk.js",
14
+ "static/js/123.fd74ee54.chunk.js": "/.blocklet/proxy/blocklet-service/static/js/123.fd74ee54.chunk.js",
15
+ "static/js/972.4befe3c8.chunk.js": "/.blocklet/proxy/blocklet-service/static/js/972.4befe3c8.chunk.js",
14
16
  "static/js/699.bd2c7001.chunk.js": "/.blocklet/proxy/blocklet-service/static/js/699.bd2c7001.chunk.js",
15
- "static/js/575.137f8200.chunk.js": "/.blocklet/proxy/blocklet-service/static/js/575.137f8200.chunk.js",
16
- "static/js/532.df6be59f.chunk.js": "/.blocklet/proxy/blocklet-service/static/js/532.df6be59f.chunk.js",
17
+ "static/css/738.18a3eb84.chunk.css": "/.blocklet/proxy/blocklet-service/static/css/738.18a3eb84.chunk.css",
18
+ "static/js/738.35e5be1f.chunk.js": "/.blocklet/proxy/blocklet-service/static/js/738.35e5be1f.chunk.js",
19
+ "static/js/924.7980ec5c.chunk.js": "/.blocklet/proxy/blocklet-service/static/js/924.7980ec5c.chunk.js",
20
+ "static/js/628.78b77407.chunk.js": "/.blocklet/proxy/blocklet-service/static/js/628.78b77407.chunk.js",
21
+ "static/js/203.9033bd1d.chunk.js": "/.blocklet/proxy/blocklet-service/static/js/203.9033bd1d.chunk.js",
17
22
  "static/media/ubuntu-mono-all-400-normal.woff": "/.blocklet/proxy/blocklet-service/static/media/ubuntu-mono-all-400-normal.c879328bc62e9c68268f.woff",
18
23
  "static/media/lato-all-400-normal.woff": "/.blocklet/proxy/blocklet-service/static/media/lato-all-400-normal.3dc1eff492ab1f598560.woff",
19
24
  "static/media/lato-all-700-normal.woff": "/.blocklet/proxy/blocklet-service/static/media/lato-all-700-normal.1e7707c9ec98d9b97e7f.woff",
@@ -34,22 +39,27 @@
34
39
  "router-template-styles/styles.css": "/.blocklet/proxy/blocklet-service/router-template-styles/styles.css",
35
40
  "index.html": "/.blocklet/proxy/blocklet-service/index.html",
36
41
  "main.632501d5.css.map": "/.blocklet/proxy/blocklet-service/static/css/main.632501d5.css.map",
37
- "main.199e60e9.js.map": "/.blocklet/proxy/blocklet-service/static/js/main.199e60e9.js.map",
42
+ "main.d9131f59.js.map": "/.blocklet/proxy/blocklet-service/static/js/main.d9131f59.js.map",
38
43
  "560.60bd29f3.chunk.js.map": "/.blocklet/proxy/blocklet-service/static/js/560.60bd29f3.chunk.js.map",
39
44
  "255.a8eba332.chunk.js.map": "/.blocklet/proxy/blocklet-service/static/js/255.a8eba332.chunk.js.map",
40
45
  "472.465c07c7.chunk.js.map": "/.blocklet/proxy/blocklet-service/static/js/472.465c07c7.chunk.js.map",
41
- "737.93eeec19.chunk.js.map": "/.blocklet/proxy/blocklet-service/static/js/737.93eeec19.chunk.js.map",
42
- "199.71b6a290.chunk.js.map": "/.blocklet/proxy/blocklet-service/static/js/199.71b6a290.chunk.js.map",
43
- "400.c6e11e32.chunk.js.map": "/.blocklet/proxy/blocklet-service/static/js/400.c6e11e32.chunk.js.map",
46
+ "737.9a5b1e7b.chunk.js.map": "/.blocklet/proxy/blocklet-service/static/js/737.9a5b1e7b.chunk.js.map",
47
+ "301.aff37b48.chunk.js.map": "/.blocklet/proxy/blocklet-service/static/js/301.aff37b48.chunk.js.map",
48
+ "868.04c225a9.chunk.js.map": "/.blocklet/proxy/blocklet-service/static/js/868.04c225a9.chunk.js.map",
49
+ "662.a7f2c44c.chunk.js.map": "/.blocklet/proxy/blocklet-service/static/js/662.a7f2c44c.chunk.js.map",
44
50
  "29.0dc92845.chunk.js.map": "/.blocklet/proxy/blocklet-service/static/js/29.0dc92845.chunk.js.map",
45
- "597.6e6ef8c5.chunk.js.map": "/.blocklet/proxy/blocklet-service/static/js/597.6e6ef8c5.chunk.js.map",
46
- "244.6bfddb66.chunk.js.map": "/.blocklet/proxy/blocklet-service/static/js/244.6bfddb66.chunk.js.map",
51
+ "931.4448ec5d.chunk.js.map": "/.blocklet/proxy/blocklet-service/static/js/931.4448ec5d.chunk.js.map",
52
+ "123.fd74ee54.chunk.js.map": "/.blocklet/proxy/blocklet-service/static/js/123.fd74ee54.chunk.js.map",
53
+ "972.4befe3c8.chunk.js.map": "/.blocklet/proxy/blocklet-service/static/js/972.4befe3c8.chunk.js.map",
47
54
  "699.bd2c7001.chunk.js.map": "/.blocklet/proxy/blocklet-service/static/js/699.bd2c7001.chunk.js.map",
48
- "575.137f8200.chunk.js.map": "/.blocklet/proxy/blocklet-service/static/js/575.137f8200.chunk.js.map",
49
- "532.df6be59f.chunk.js.map": "/.blocklet/proxy/blocklet-service/static/js/532.df6be59f.chunk.js.map"
55
+ "738.18a3eb84.chunk.css.map": "/.blocklet/proxy/blocklet-service/static/css/738.18a3eb84.chunk.css.map",
56
+ "738.35e5be1f.chunk.js.map": "/.blocklet/proxy/blocklet-service/static/js/738.35e5be1f.chunk.js.map",
57
+ "924.7980ec5c.chunk.js.map": "/.blocklet/proxy/blocklet-service/static/js/924.7980ec5c.chunk.js.map",
58
+ "628.78b77407.chunk.js.map": "/.blocklet/proxy/blocklet-service/static/js/628.78b77407.chunk.js.map",
59
+ "203.9033bd1d.chunk.js.map": "/.blocklet/proxy/blocklet-service/static/js/203.9033bd1d.chunk.js.map"
50
60
  },
51
61
  "entrypoints": [
52
62
  "static/css/main.632501d5.css",
53
- "static/js/main.199e60e9.js"
63
+ "static/js/main.d9131f59.js"
54
64
  ]
55
65
  }
package/build/index.html CHANGED
@@ -1 +1 @@
1
- <!doctype html><html lang="en"><head><meta charset="utf-8"/><link rel="shortcut icon" href="/.well-known/service/static/favicon.ico"/><meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=0"/><meta name="theme-color" content="#000000"/><title>Blocklet Service</title><script src=".well-known/service/api/env"></script><script defer="defer" src="/.blocklet/proxy/blocklet-service/static/js/main.199e60e9.js"></script><link href="/.blocklet/proxy/blocklet-service/static/css/main.632501d5.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div></body></html>
1
+ <!doctype html><html lang="en"><head><meta charset="utf-8"/><link rel="shortcut icon" href="/.well-known/service/static/favicon.ico"/><meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=0"/><meta name="theme-color" content="#000000"/><title>Blocklet Service</title><script src=".well-known/service/api/env"></script><script src="__blocklet__.js"></script><script defer="defer" src="/.blocklet/proxy/blocklet-service/static/js/main.d9131f59.js"></script><link href="/.blocklet/proxy/blocklet-service/static/css/main.632501d5.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div></body></html>
@@ -0,0 +1,2 @@
1
+ .xterm{font-feature-settings:"liga" 0;position:relative;-moz-user-select:none;user-select:none;-ms-user-select:none;-webkit-user-select:none}.xterm.focus,.xterm:focus{outline:none}.xterm .xterm-helpers{position:absolute;top:0;z-index:5}.xterm .xterm-helper-textarea{height:0;left:-9999em;opacity:0;overflow:hidden;position:absolute;resize:none;top:0;white-space:nowrap;width:0;z-index:-5}.xterm .composition-view{background:#000;color:#fff;display:none;position:absolute;white-space:nowrap;z-index:1}.xterm .composition-view.active{display:block}.xterm .xterm-viewport{background-color:#000;bottom:0;cursor:default;left:0;overflow-y:scroll;position:absolute;right:0;top:0}.xterm .xterm-screen{position:relative}.xterm .xterm-screen canvas{left:0;position:absolute;top:0}.xterm .xterm-scroll-area{visibility:hidden}.xterm-char-measure-element{display:inline-block;left:-9999em;line-height:normal;position:absolute;top:0;visibility:hidden}.xterm{cursor:text}.xterm.enable-mouse-events{cursor:default}.xterm.xterm-cursor-pointer{cursor:pointer}.xterm.column-select.focus{cursor:crosshair}.xterm .xterm-accessibility,.xterm .xterm-message{bottom:0;color:transparent;left:0;position:absolute;right:0;top:0;z-index:10}.xterm .live-region{height:1px;left:-9999px;overflow:hidden;position:absolute;width:1px}.xterm-dim{opacity:.5}.xterm-underline{text-decoration:underline}@media (prefers-color-scheme:dark){.wmde-markdown,.wmde-markdown-var{--color-prettylights-syntax-comment:#8b949e;--color-prettylights-syntax-constant:#79c0ff;--color-prettylights-syntax-entity:#d2a8ff;--color-prettylights-syntax-storage-modifier-import:#c9d1d9;--color-prettylights-syntax-entity-tag:#7ee787;--color-prettylights-syntax-keyword:#ff7b72;--color-prettylights-syntax-string:#a5d6ff;--color-prettylights-syntax-variable:#ffa657;--color-prettylights-syntax-brackethighlighter-unmatched:#f85149;--color-prettylights-syntax-invalid-illegal-text:#f0f6fc;--color-prettylights-syntax-invalid-illegal-bg:#8e1519;--color-prettylights-syntax-carriage-return-text:#f0f6fc;--color-prettylights-syntax-carriage-return-bg:#b62324;--color-prettylights-syntax-string-regexp:#7ee787;--color-prettylights-syntax-markup-list:#f2cc60;--color-prettylights-syntax-markup-heading:#1f6feb;--color-prettylights-syntax-markup-italic:#c9d1d9;--color-prettylights-syntax-markup-bold:#c9d1d9;--color-prettylights-syntax-markup-deleted-text:#ffdcd7;--color-prettylights-syntax-markup-deleted-bg:#67060c;--color-prettylights-syntax-markup-inserted-text:#aff5b4;--color-prettylights-syntax-markup-inserted-bg:#033a16;--color-prettylights-syntax-markup-changed-text:#ffdfb6;--color-prettylights-syntax-markup-changed-bg:#5a1e02;--color-prettylights-syntax-markup-ignored-text:#c9d1d9;--color-prettylights-syntax-markup-ignored-bg:#1158c7;--color-prettylights-syntax-meta-diff-range:#d2a8ff;--color-prettylights-syntax-brackethighlighter-angle:#8b949e;--color-prettylights-syntax-sublimelinter-gutter-mark:#484f58;--color-prettylights-syntax-constant-other-reference-link:#a5d6ff;--color-fg-default:#c9d1d9;--color-fg-muted:#8b949e;--color-fg-subtle:#484f58;--color-canvas-default:#0d1117;--color-canvas-subtle:#161b22;--color-border-default:#30363d;--color-border-muted:#21262d;--color-neutral-muted:hsla(215,8%,47%,.4);--color-accent-fg:#58a6ff;--color-accent-emphasis:#1f6feb;--color-attention-subtle:rgba(187,128,9,.15);--color-danger-fg:#f85149;color-scheme:dark}}@media (prefers-color-scheme:light){.wmde-markdown,.wmde-markdown-var{--color-prettylights-syntax-comment:#6e7781;--color-prettylights-syntax-constant:#0550ae;--color-prettylights-syntax-entity:#8250df;--color-prettylights-syntax-storage-modifier-import:#24292f;--color-prettylights-syntax-entity-tag:#116329;--color-prettylights-syntax-keyword:#cf222e;--color-prettylights-syntax-string:#0a3069;--color-prettylights-syntax-variable:#953800;--color-prettylights-syntax-brackethighlighter-unmatched:#82071e;--color-prettylights-syntax-invalid-illegal-text:#f6f8fa;--color-prettylights-syntax-invalid-illegal-bg:#82071e;--color-prettylights-syntax-carriage-return-text:#f6f8fa;--color-prettylights-syntax-carriage-return-bg:#cf222e;--color-prettylights-syntax-string-regexp:#116329;--color-prettylights-syntax-markup-list:#3b2300;--color-prettylights-syntax-markup-heading:#0550ae;--color-prettylights-syntax-markup-italic:#24292f;--color-prettylights-syntax-markup-bold:#24292f;--color-prettylights-syntax-markup-deleted-text:#82071e;--color-prettylights-syntax-markup-deleted-bg:#ffebe9;--color-prettylights-syntax-markup-inserted-text:#116329;--color-prettylights-syntax-markup-inserted-bg:#dafbe1;--color-prettylights-syntax-markup-changed-text:#953800;--color-prettylights-syntax-markup-changed-bg:#ffd8b5;--color-prettylights-syntax-markup-ignored-text:#eaeef2;--color-prettylights-syntax-markup-ignored-bg:#0550ae;--color-prettylights-syntax-meta-diff-range:#8250df;--color-prettylights-syntax-brackethighlighter-angle:#57606a;--color-prettylights-syntax-sublimelinter-gutter-mark:#8c959f;--color-prettylights-syntax-constant-other-reference-link:#0a3069;--color-fg-default:#24292f;--color-fg-muted:#57606a;--color-fg-subtle:#6e7781;--color-canvas-default:#fff;--color-canvas-subtle:#f6f8fa;--color-border-default:#d0d7de;--color-border-muted:#d8dee4;--color-neutral-muted:rgba(175,184,193,.2);--color-accent-fg:#0969da;--color-accent-emphasis:#0969da;--color-attention-subtle:#fff8c5;--color-danger-fg:#cf222e;color-scheme:light}}[data-color-mode*=dark] .wmde-markdown,[data-color-mode*=dark] .wmde-markdown-var,body[data-color-mode*=dark]{--color-prettylights-syntax-comment:#8b949e;--color-prettylights-syntax-constant:#79c0ff;--color-prettylights-syntax-entity:#d2a8ff;--color-prettylights-syntax-storage-modifier-import:#c9d1d9;--color-prettylights-syntax-entity-tag:#7ee787;--color-prettylights-syntax-keyword:#ff7b72;--color-prettylights-syntax-string:#a5d6ff;--color-prettylights-syntax-variable:#ffa657;--color-prettylights-syntax-brackethighlighter-unmatched:#f85149;--color-prettylights-syntax-invalid-illegal-text:#f0f6fc;--color-prettylights-syntax-invalid-illegal-bg:#8e1519;--color-prettylights-syntax-carriage-return-text:#f0f6fc;--color-prettylights-syntax-carriage-return-bg:#b62324;--color-prettylights-syntax-string-regexp:#7ee787;--color-prettylights-syntax-markup-list:#f2cc60;--color-prettylights-syntax-markup-heading:#1f6feb;--color-prettylights-syntax-markup-italic:#c9d1d9;--color-prettylights-syntax-markup-bold:#c9d1d9;--color-prettylights-syntax-markup-deleted-text:#ffdcd7;--color-prettylights-syntax-markup-deleted-bg:#67060c;--color-prettylights-syntax-markup-inserted-text:#aff5b4;--color-prettylights-syntax-markup-inserted-bg:#033a16;--color-prettylights-syntax-markup-changed-text:#ffdfb6;--color-prettylights-syntax-markup-changed-bg:#5a1e02;--color-prettylights-syntax-markup-ignored-text:#c9d1d9;--color-prettylights-syntax-markup-ignored-bg:#1158c7;--color-prettylights-syntax-meta-diff-range:#d2a8ff;--color-prettylights-syntax-brackethighlighter-angle:#8b949e;--color-prettylights-syntax-sublimelinter-gutter-mark:#484f58;--color-prettylights-syntax-constant-other-reference-link:#a5d6ff;--color-fg-default:#c9d1d9;--color-fg-muted:#8b949e;--color-fg-subtle:#484f58;--color-canvas-default:#0d1117;--color-canvas-subtle:#161b22;--color-border-default:#30363d;--color-border-muted:#21262d;--color-neutral-muted:hsla(215,8%,47%,.4);--color-accent-fg:#58a6ff;--color-accent-emphasis:#1f6feb;--color-attention-subtle:rgba(187,128,9,.15);--color-danger-fg:#f85149;color-scheme:dark}[data-color-mode*=light] .wmde-markdown,[data-color-mode*=light] .wmde-markdown-var,body[data-color-mode*=light]{--color-prettylights-syntax-comment:#6e7781;--color-prettylights-syntax-constant:#0550ae;--color-prettylights-syntax-entity:#8250df;--color-prettylights-syntax-storage-modifier-import:#24292f;--color-prettylights-syntax-entity-tag:#116329;--color-prettylights-syntax-keyword:#cf222e;--color-prettylights-syntax-string:#0a3069;--color-prettylights-syntax-variable:#953800;--color-prettylights-syntax-brackethighlighter-unmatched:#82071e;--color-prettylights-syntax-invalid-illegal-text:#f6f8fa;--color-prettylights-syntax-invalid-illegal-bg:#82071e;--color-prettylights-syntax-carriage-return-text:#f6f8fa;--color-prettylights-syntax-carriage-return-bg:#cf222e;--color-prettylights-syntax-string-regexp:#116329;--color-prettylights-syntax-markup-list:#3b2300;--color-prettylights-syntax-markup-heading:#0550ae;--color-prettylights-syntax-markup-italic:#24292f;--color-prettylights-syntax-markup-bold:#24292f;--color-prettylights-syntax-markup-deleted-text:#82071e;--color-prettylights-syntax-markup-deleted-bg:#ffebe9;--color-prettylights-syntax-markup-inserted-text:#116329;--color-prettylights-syntax-markup-inserted-bg:#dafbe1;--color-prettylights-syntax-markup-changed-text:#953800;--color-prettylights-syntax-markup-changed-bg:#ffd8b5;--color-prettylights-syntax-markup-ignored-text:#eaeef2;--color-prettylights-syntax-markup-ignored-bg:#0550ae;--color-prettylights-syntax-meta-diff-range:#8250df;--color-prettylights-syntax-brackethighlighter-angle:#57606a;--color-prettylights-syntax-sublimelinter-gutter-mark:#8c959f;--color-prettylights-syntax-constant-other-reference-link:#0a3069;--color-fg-default:#24292f;--color-fg-muted:#57606a;--color-fg-subtle:#6e7781;--color-canvas-default:#fff;--color-canvas-subtle:#f6f8fa;--color-border-default:#d0d7de;--color-border-muted:#d8dee4;--color-neutral-muted:rgba(175,184,193,.2);--color-accent-fg:#0969da;--color-accent-emphasis:#0969da;--color-attention-subtle:#fff8c5;--color-danger-fg:#cf222e;color-scheme:light}.wmde-markdown{-webkit-text-size-adjust:100%;word-wrap:break-word;background-color:var(--color-canvas-default);color:var(--color-fg-default);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji;font-size:16px;line-height:1.5}.wmde-markdown details,.wmde-markdown figcaption,.wmde-markdown figure{display:block}.wmde-markdown summary{display:list-item}.wmde-markdown [hidden]{display:none!important}.wmde-markdown a{background-color:transparent;color:var(--color-accent-fg);text-decoration:none}.wmde-markdown a:active,.wmde-markdown a:hover{outline-width:0}.wmde-markdown abbr[title]{border-bottom:none;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.wmde-markdown b,.wmde-markdown strong{font-weight:600}.wmde-markdown dfn{font-style:italic}.wmde-markdown h1{border-bottom:1px solid var(--color-border-muted);font-size:2em;font-weight:600;margin:.67em 0;padding-bottom:.3em}.wmde-markdown mark{background-color:var(--color-attention-subtle);color:var(--color-text-primary)}.wmde-markdown small{font-size:90%}.wmde-markdown sub,.wmde-markdown sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}.wmde-markdown sub{bottom:-.25em}.wmde-markdown sup{top:-.5em}.wmde-markdown img{background-color:var(--color-canvas-default);border-style:none;box-sizing:content-box;max-width:100%}.wmde-markdown code,.wmde-markdown kbd,.wmde-markdown pre,.wmde-markdown samp{font-family:monospace,monospace;font-size:1em}.wmde-markdown figure{margin:1em 40px}.wmde-markdown hr{background:transparent;background-color:var(--color-border-default);border:0;box-sizing:content-box;height:.25em;margin:24px 0;overflow:hidden;padding:0}.wmde-markdown input{font:inherit;font-family:inherit;font-size:inherit;line-height:inherit;margin:0;overflow:visible}.wmde-markdown [type=button],.wmde-markdown [type=reset],.wmde-markdown [type=submit]{-webkit-appearance:button}.wmde-markdown [type=button]::-moz-focus-inner,.wmde-markdown [type=reset]::-moz-focus-inner,.wmde-markdown [type=submit]::-moz-focus-inner{border-style:none;padding:0}.wmde-markdown [type=button]:-moz-focusring,.wmde-markdown [type=reset]:-moz-focusring,.wmde-markdown [type=submit]:-moz-focusring{outline:1px dotted ButtonText}.wmde-markdown [type=checkbox],.wmde-markdown [type=radio]{box-sizing:border-box;padding:0}.wmde-markdown [type=number]::-webkit-inner-spin-button,.wmde-markdown [type=number]::-webkit-outer-spin-button{height:auto}.wmde-markdown [type=search]{-webkit-appearance:textfield;outline-offset:-2px}.wmde-markdown [type=search]::-webkit-search-cancel-button,.wmde-markdown [type=search]::-webkit-search-decoration{-webkit-appearance:none}.wmde-markdown ::-webkit-input-placeholder{color:inherit;opacity:.54}.wmde-markdown ::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}.wmde-markdown a:hover{text-decoration:underline}.wmde-markdown hr:after,.wmde-markdown hr:before{content:"";display:table}.wmde-markdown hr:after{clear:both}.wmde-markdown table{border-collapse:collapse;border-spacing:0;display:block;max-width:100%;overflow:auto;width:-webkit-max-content;width:max-content}.wmde-markdown td,.wmde-markdown th{padding:0}.wmde-markdown details summary{cursor:pointer}.wmde-markdown details:not([open])>:not(summary){display:none!important}.wmde-markdown kbd{background-color:var(--color-canvas-subtle);border-bottom-color:var(--color-neutral-muted);border:1px solid var(--color-neutral-muted);border-radius:6px;box-shadow:inset 0 -1px 0 var(--color-neutral-muted);color:var(--color-fg-default);display:inline-block;font:11px ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;line-height:10px;padding:3px 5px;vertical-align:middle}.wmde-markdown h1,.wmde-markdown h2,.wmde-markdown h3,.wmde-markdown h4,.wmde-markdown h5,.wmde-markdown h6{font-weight:600;line-height:1.25;margin-bottom:16px;margin-top:24px}.wmde-markdown h2{border-bottom:1px solid var(--color-border-muted);font-size:1.5em;font-weight:600;padding-bottom:.3em}.wmde-markdown h3{font-size:1.25em;font-weight:600}.wmde-markdown h4{font-size:1em;font-weight:600}.wmde-markdown h5{font-size:.875em;font-weight:600}.wmde-markdown h6{color:var(--color-fg-muted);font-size:.85em;font-weight:600}.wmde-markdown p{margin-bottom:10px;margin-top:0}.wmde-markdown blockquote{border-left:.25em solid var(--color-border-default);color:var(--color-fg-muted);margin:0;padding:0 1em}.wmde-markdown ol,.wmde-markdown ul{margin-bottom:0;margin-top:0;padding-left:2em}.wmde-markdown ol ol,.wmde-markdown ul ol{list-style-type:lower-roman}.wmde-markdown ol ol ol,.wmde-markdown ol ul ol,.wmde-markdown ul ol ol,.wmde-markdown ul ul ol{list-style-type:lower-alpha}.wmde-markdown dd{margin-left:0}.wmde-markdown code,.wmde-markdown pre,.wmde-markdown tt{font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;font-size:12px}.wmde-markdown pre{word-wrap:normal;margin-bottom:0;margin-top:0}.wmde-markdown .octicon{fill:currentColor;display:inline-block;overflow:visible!important;vertical-align:text-bottom}.wmde-markdown ::-webkit-input-placeholder{color:var(--color-fg-subtle);opacity:1}.wmde-markdown ::placeholder{color:var(--color-fg-subtle);opacity:1}.wmde-markdown input::-webkit-inner-spin-button,.wmde-markdown input::-webkit-outer-spin-button{-webkit-appearance:none;appearance:none;margin:0}.wmde-markdown [data-catalyst]{display:block}.wmde-markdown:after,.wmde-markdown:before{content:"";display:table}.wmde-markdown:after{clear:both}.wmde-markdown>:first-child{margin-top:0!important}.wmde-markdown>:last-child{margin-bottom:0!important}.wmde-markdown a:not([href]){color:inherit;text-decoration:none}.wmde-markdown .absent{color:var(--color-danger-fg)}.wmde-markdown a.anchor{float:left;line-height:1;margin-left:-20px;padding-right:4px}.wmde-markdown .anchor:focus{outline:none}.wmde-markdown blockquote,.wmde-markdown details,.wmde-markdown dl,.wmde-markdown ol,.wmde-markdown p,.wmde-markdown pre,.wmde-markdown table,.wmde-markdown ul{margin-bottom:16px;margin-top:0}.wmde-markdown blockquote>:first-child{margin-top:0}.wmde-markdown blockquote>:last-child{margin-bottom:0}.wmde-markdown sup>a:before{content:"["}.wmde-markdown sup>a:after{content:"]"}.wmde-markdown h1 .octicon-link,.wmde-markdown h2 .octicon-link,.wmde-markdown h3 .octicon-link,.wmde-markdown h4 .octicon-link,.wmde-markdown h5 .octicon-link,.wmde-markdown h6 .octicon-link{color:var(--color-fg-default);vertical-align:middle;visibility:hidden}.wmde-markdown h1:hover .anchor,.wmde-markdown h2:hover .anchor,.wmde-markdown h3:hover .anchor,.wmde-markdown h4:hover .anchor,.wmde-markdown h5:hover .anchor,.wmde-markdown h6:hover .anchor{text-decoration:none}.wmde-markdown h1:hover .anchor .octicon-link,.wmde-markdown h2:hover .anchor .octicon-link,.wmde-markdown h3:hover .anchor .octicon-link,.wmde-markdown h4:hover .anchor .octicon-link,.wmde-markdown h5:hover .anchor .octicon-link,.wmde-markdown h6:hover .anchor .octicon-link{visibility:visible}.wmde-markdown h1 code,.wmde-markdown h1 tt,.wmde-markdown h2 code,.wmde-markdown h2 tt,.wmde-markdown h3 code,.wmde-markdown h3 tt,.wmde-markdown h4 code,.wmde-markdown h4 tt,.wmde-markdown h5 code,.wmde-markdown h5 tt,.wmde-markdown h6 code,.wmde-markdown h6 tt{font-size:inherit;padding:0 .2em}.wmde-markdown ol.no-list,.wmde-markdown ul.no-list{list-style-type:none;padding:0}.wmde-markdown ol[type="1"]{list-style-type:decimal}.wmde-markdown ol[type=a]{list-style-type:lower-alpha}.wmde-markdown ol[type=i]{list-style-type:lower-roman}.wmde-markdown div>ol:not([type]){list-style-type:decimal}.wmde-markdown ol ol,.wmde-markdown ol ul,.wmde-markdown ul ol,.wmde-markdown ul ul{margin-bottom:0;margin-top:0}.wmde-markdown li>p{margin-top:16px}.wmde-markdown li+li{margin-top:.25em}.wmde-markdown dl{padding:0}.wmde-markdown dl dt{font-size:1em;font-style:italic;font-weight:600;margin-top:16px;padding:0}.wmde-markdown dl dd{margin-bottom:16px;padding:0 16px}.wmde-markdown table th{font-weight:600}.wmde-markdown table td,.wmde-markdown table th{border:1px solid var(--color-border-default);padding:6px 13px}.wmde-markdown table tr{background-color:var(--color-canvas-default);border-top:1px solid var(--color-border-muted)}.wmde-markdown table tr:nth-child(2n){background-color:var(--color-canvas-subtle)}.wmde-markdown table img{background-color:transparent}.wmde-markdown img[align=right]{padding-left:20px}.wmde-markdown img[align=left]{padding-right:20px}.wmde-markdown .emoji{background-color:transparent;max-width:none;vertical-align:text-top}.wmde-markdown span.frame{display:block;overflow:hidden}.wmde-markdown span.frame>span{border:1px solid var(--color-border-default);display:block;float:left;margin:13px 0 0;overflow:hidden;padding:7px;width:auto}.wmde-markdown span.frame span img{display:block;float:left}.wmde-markdown span.frame span span{clear:both;color:var(--color-fg-default);display:block;padding:5px 0 0}.wmde-markdown span.align-center{clear:both;display:block;overflow:hidden}.wmde-markdown span.align-center>span{display:block;margin:13px auto 0;overflow:hidden;text-align:center}.wmde-markdown span.align-center span img{margin:0 auto;text-align:center}.wmde-markdown span.align-right{clear:both;display:block;overflow:hidden}.wmde-markdown span.align-right>span{display:block;margin:13px 0 0;overflow:hidden;text-align:right}.wmde-markdown span.align-right span img{margin:0;text-align:right}.wmde-markdown span.float-left{display:block;float:left;margin-right:13px;overflow:hidden}.wmde-markdown span.float-left span{margin:13px 0 0}.wmde-markdown span.float-right{display:block;float:right;margin-left:13px;overflow:hidden}.wmde-markdown span.float-right>span{display:block;margin:13px auto 0;overflow:hidden;text-align:right}.wmde-markdown code,.wmde-markdown tt{background-color:var(--color-neutral-muted);border-radius:6px;font-size:85%;margin:0;padding:.2em .4em}.wmde-markdown code br,.wmde-markdown tt br{display:none}.wmde-markdown del code{text-decoration:inherit}.wmde-markdown pre code{font-size:100%}.wmde-markdown pre>code{background:transparent;border:0;margin:0;padding:0;white-space:pre;word-break:normal}.wmde-markdown pre{background-color:var(--color-canvas-subtle);border-radius:6px;font-size:85%;line-height:1.45}.wmde-markdown pre code,.wmde-markdown pre tt{word-wrap:normal;background-color:transparent;border:0;display:inline;line-height:inherit;margin:0;max-width:auto;overflow:visible;padding:0}.wmde-markdown pre>code{display:block;overflow:auto;padding:16px}.wmde-markdown .csv-data td,.wmde-markdown .csv-data th{font-size:12px;line-height:1;overflow:hidden;padding:5px;text-align:left;white-space:nowrap}.wmde-markdown .csv-data .blob-num{background:var(--color-canvas-default);border:0;padding:10px 8px 9px;text-align:right}.wmde-markdown .csv-data tr{border-top:0}.wmde-markdown .csv-data th{background:var(--color-canvas-subtle);border-top:0;font-weight:600}.wmde-markdown .footnotes{border-top:1px solid var(--color-border-default);color:var(--color-fg-muted);font-size:12px}.wmde-markdown .footnotes ol{padding-left:16px}.wmde-markdown .footnotes li{position:relative}.wmde-markdown .footnotes li:target:before{border:2px solid var(--color-accent-emphasis);border-radius:6px;bottom:-8px;content:"";left:-24px;pointer-events:none;position:absolute;right:-8px;top:-8px}.wmde-markdown .footnotes li:target{color:var(--color-fg-default)}.wmde-markdown .footnotes .data-footnote-backref g-emoji{font-family:monospace}.wmde-markdown .task-list-item{list-style-type:none}.wmde-markdown .task-list-item label{font-weight:400}.wmde-markdown .task-list-item.enabled label{cursor:pointer}.wmde-markdown .task-list-item+.wmde-markdown .task-list-item{margin-top:3px}.wmde-markdown .task-list-item .handle{display:none}.wmde-markdown .task-list-item-checkbox,.wmde-markdown input[type=checkbox]{margin:0 .2em .25em -1.6em;vertical-align:middle}.wmde-markdown .contains-task-list:dir(rtl) .task-list-item-checkbox,.wmde-markdown .contains-task-list:dir(rtl) input[type=checkbox]{margin:0 -1.6em .25em .2em}.wmde-markdown ::-webkit-calendar-picker-indicator{-webkit-filter:invert(50%);filter:invert(50%)}.wmde-markdown pre[class*=language-]{position:relative}.wmde-markdown pre .copied{background:var(--color-border-default);border-radius:5px;color:var(--color-fg-defaul);cursor:pointer;display:flex;font-size:12px;padding:6px;position:absolute;right:6px;top:6px;transition:all .3s;visibility:hidden}.wmde-markdown pre .copied .octicon-copy{display:block}.wmde-markdown pre .copied .octicon-check{display:none}.wmde-markdown pre:hover .copied{visibility:visible}.wmde-markdown pre:hover .copied:hover{background:var(--color-prettylights-syntax-entity-tag);color:var(--color-canvas-default)}.wmde-markdown pre .copied.active,.wmde-markdown pre:hover .copied:active{background:#2e9b33;color:var(--color-canvas-default)}.wmde-markdown pre .active .octicon-copy{display:none}.wmde-markdown pre .active .octicon-check{display:block}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:var(--color-prettylights-syntax-comment)}.token.namespace{opacity:.7}.token.constant,.token.deleted,.token.property,.token.selector,.token.symbol,.token.tag{color:var(--color-prettylights-syntax-entity-tag)}.token.maybe-class-name{color:var(--color-prettylights-syntax-variable)}.token.attr-name,.token.boolean,.token.builtin,.token.char,.token.number,.token.operator,.token.property-access,.token.selector .token.class,.token.string{color:var(--color-prettylights-syntax-constant)}.token.deleted{color:var(--color-prettylights-syntax-markup-deleted-text)}.code-line .token.deleted{background-color:var(--color-prettylights-syntax-markup-deleted-bg)}.token.inserted{color:var(--color-prettylights-syntax-markup-inserted-text)}.code-line .token.inserted{background-color:var(--color-prettylights-syntax-markup-inserted-bg)}.token.variable{color:var(--color-prettylights-syntax-constant)}.language-css .token.string,.style .token.string,.token.atrule,.token.attr-value,.token.class-name,.token.color,.token.entity,.token.function,.token.url{color:var(--color-prettylights-syntax-string)}.token.important,.token.keyword,.token.regex,.token.rule{color:var(--color-prettylights-syntax-keyword)}.token.coord{color:var(--color-prettylights-syntax-meta-diff-range)}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}
2
+ /*# sourceMappingURL=738.18a3eb84.chunk.css.map*/
@@ -0,0 +1 @@
1
+ {"version":3,"file":"static/css/738.18a3eb84.chunk.css","mappings":"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,CAMA,yDAHE,wFAA+F,CAC/F,cAQF,CANA,mBAKE,gBAAiB,CAHjB,eAAgB,CADhB,YAKF,CACA,wBAIE,iBAAkB,CAHlB,oBAAqB,CACrB,0BAA4B,CAC5B,0BAEF,CACA,2CACE,4BAA6B,CAC7B,SACF,CACA,6BACE,4BAA6B,CAC7B,SACF,CACA,gGAGE,uBAAwB,CACxB,eAAgB,CAFhB,QAGF,CACA,+BACE,aACF,CAKA,2CAFE,UAAW,CADX,aAOF,CAJA,qBAEE,UAEF,CACA,4BACE,sBACF,CACA,2BACE,yBACF,CACA,6BACE,aAAc,CACd,oBACF,CACA,uBACE,4BACF,CACA,wBACE,UAAW,CAGX,aAAc,CADd,iBAAkB,CADlB,iBAGF,CACA,6BACE,YACF,CACA,gKASE,kBAAmB,CADnB,YAEF,CACA,uCACE,YACF,CACA,sCACE,eACF,CACA,4BACE,WACF,CACA,2BACE,WACF,CACA,gMAME,6BAA8B,CAC9B,qBAAsB,CACtB,iBACF,CACA,gMAME,oBACF,CACA,oRAME,kBACF,CACA,wQAaE,iBAAkB,CADlB,cAEF,CACA,oDAGE,oBAAqB,CADrB,SAEF,CACA,4BACE,uBACF,CACA,0BACE,2BACF,CACA,0BACE,2BACF,CACA,kCACE,uBACF,CACA,oFAKE,eAAgB,CADhB,YAEF,CACA,oBACE,eACF,CACA,qBACE,gBACF,CACA,kBACE,SACF,CACA,qBAGE,aAAc,CACd,iBAAkB,CAClB,eAAgB,CAHhB,eAAgB,CADhB,SAKF,CACA,qBAEE,kBAAmB,CADnB,cAEF,CACA,wBACE,eACF,CACA,gDAGE,4CAA6C,CAD7C,gBAEF,CACA,wBACE,4CAA6C,CAC7C,8CACF,CACA,sCACE,2CACF,CACA,yBACE,4BACF,CACA,gCACE,iBACF,CACA,+BACE,kBACF,CACA,sBAGE,4BAA6B,CAF7B,cAAe,CACf,uBAEF,CACA,0BACE,aAAc,CACd,eACF,CACA,+BAOE,4CAA6C,CAN7C,aAAc,CACd,UAAW,CAGX,eAAgB,CAChB,eAAgB,CAFhB,WAAY,CADZ,UAKF,CACA,mCACE,aAAc,CACd,UACF,CACA,oCAGE,UAAW,CACX,6BAA8B,CAH9B,aAAc,CACd,eAGF,CACA,iCAGE,UAAW,CAFX,aAAc,CACd,eAEF,CACA,sCACE,aAAc,CACd,kBAAmB,CACnB,eAAgB,CAChB,iBACF,CACA,0CACE,aAAc,CACd,iBACF,CACA,gCAGE,UAAW,CAFX,aAAc,CACd,eAEF,CACA,qCACE,aAAc,CACd,eAAgB,CAChB,eAAgB,CAChB,gBACF,CACA,yCACE,QAAS,CACT,gBACF,CACA,+BACE,aAAc,CACd,UAAW,CACX,iBAAkB,CAClB,eACF,CACA,oCACE,eACF,CACA,gCACE,aAAc,CACd,WAAY,CACZ,gBAAiB,CACjB,eACF,CACA,qCACE,aAAc,CACd,kBAAmB,CACnB,eAAgB,CAChB,gBACF,CACA,sCAKE,2CAA4C,CAC5C,iBAAkB,CAFlB,aAAc,CADd,QAAS,CADT,iBAKF,CACA,4CAEE,YACF,CACA,wBACE,uBACF,CACA,wBACE,cACF,CACA,wBAKE,sBAAuB,CACvB,QAAS,CAJT,QAAS,CADT,SAAU,CAGV,eAAgB,CADhB,iBAIF,CACA,mBAGE,2CAA4C,CAC5C,iBAAkB,CAHlB,aAAc,CACd,gBAGF,CACA,8CAQE,gBAAiB,CACjB,4BAA6B,CAC7B,QAAS,CART,cAAe,CAKf,mBAAoB,CAFpB,QAAS,CAFT,cAAe,CAGf,gBAAiB,CAFjB,SAOF,CACA,wBAGE,aAAc,CADd,aAAc,CADd,YAGF,CACA,wDAIE,cAAe,CACf,aAAc,CAFd,eAAgB,CADhB,WAAY,CAIZ,eAAgB,CAChB,kBACF,CACA,mCAGE,sCAAuC,CACvC,QAAS,CAHT,oBAAqB,CACrB,gBAGF,CACA,4BACE,YACF,CACA,4BAEE,qCAAsC,CACtC,YAAa,CAFb,eAGF,CACA,0BAGE,gDAAiD,CADjD,2BAA4B,CAD5B,cAGF,CACA,6BACE,iBACF,CACA,6BACE,iBACF,CACA,2CAQE,6CAA8C,CAC9C,iBAAkB,CALlB,WAAY,CAGZ,UAAW,CAFX,UAAW,CACX,mBAAoB,CALpB,iBAAkB,CAElB,UAAW,CADX,QAQF,CACA,oCACE,6BACF,CACA,yDACE,qBACF,CACA,+BACE,oBACF,CACA,qCACE,eACF,CACA,6CACE,cACF,CACA,8DACE,cACF,CACA,uCACE,YACF,CACA,4EAEE,0BAA6B,CAC7B,qBACF,CACA,sIAEE,0BACF,CACA,mDACE,0BAA2B,CACnB,kBACV,CACA,qCACE,iBACF,CACA,2BASE,sCAAuC,CADvC,iBAAkB,CAHlB,4BAA6B,CAD7B,cAAe,CAFf,YAAa,CASb,cAAe,CADf,WAAY,CAPZ,iBAAkB,CAIlB,SAAU,CADV,OAAQ,CAMR,kBAAoB,CAXpB,iBAYF,CACA,yCACE,aACF,CACA,0CACE,YACF,CACA,iCACE,kBACF,CACA,uCACE,sDAAuD,CACvD,iCACF,CACA,0EAEE,kBAAmB,CACnB,iCACF,CACA,yCACE,YACF,CACA,0CACE,aACF,CACA,yDAIE,8CACF,CACA,iBACE,UACF,CACA,wFAME,iDACF,CACA,wBACE,+CACF,CACA,2JASE,+CACF,CACA,eACE,0DACF,CACA,0BACE,mEACF,CACA,gBACE,2DACF,CACA,2BACE,oEACF,CACA,gBACE,+CACF,CAOA,yJAKE,6CACF,CACA,yDAIE,8CACF,CACA,aACE,sDACF,CACA,6BAEE,eACF,CACA,cACE,iBACF,CACA,cACE,WACF","sources":["../../../node_modules/@arcblock/terminal/lib/xterm.css","../../../node_modules/@uiw/react-markdown-preview/esm/styles/markdown.css"],"sourcesContent":["/**\n * Copyright (c) 2014 The xterm.js authors. All rights reserved.\n * Copyright (c) 2012-2013, Christopher Jeffrey (MIT License)\n * https://github.com/chjj/term.js\n * @license MIT\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n *\n * Originally forked from (with the author's permission):\n * Fabrice Bellard's javascript vt100 for jslinux:\n * http://bellard.org/jslinux/\n * Copyright (c) 2011 Fabrice Bellard\n * The original design remains. The terminal itself\n * has been extended to include xterm CSI codes, among\n * other features.\n */\n\n/**\n * Default styles for xterm.js\n */\n\n.xterm {\n font-feature-settings: 'liga' 0;\n position: relative;\n user-select: none;\n -ms-user-select: none;\n -webkit-user-select: none;\n}\n\n.xterm.focus,\n.xterm:focus {\n outline: none;\n}\n\n.xterm .xterm-helpers {\n position: absolute;\n top: 0;\n /**\n * The z-index of the helpers must be higher than the canvases in order for\n * IMEs to appear on top.\n */\n z-index: 5;\n}\n\n.xterm .xterm-helper-textarea {\n /*\n * HACK: to fix IE's blinking cursor\n * Move textarea out of the screen to the far left, so that the cursor is not visible.\n */\n position: absolute;\n opacity: 0;\n left: -9999em;\n top: 0;\n width: 0;\n height: 0;\n z-index: -5;\n /** Prevent wrapping so the IME appears against the textarea at the correct position */\n white-space: nowrap;\n overflow: hidden;\n resize: none;\n}\n\n.xterm .composition-view {\n /* TODO: Composition position got messed up somewhere */\n background: #000;\n color: #fff;\n display: none;\n position: absolute;\n white-space: nowrap;\n z-index: 1;\n}\n\n.xterm .composition-view.active {\n display: block;\n}\n\n.xterm .xterm-viewport {\n /* On OS X this is required in order for the scroll bar to appear fully opaque */\n background-color: #000;\n overflow-y: scroll;\n cursor: default;\n position: absolute;\n right: 0;\n left: 0;\n top: 0;\n bottom: 0;\n}\n\n.xterm .xterm-screen {\n position: relative;\n}\n\n.xterm .xterm-screen canvas {\n position: absolute;\n left: 0;\n top: 0;\n}\n\n.xterm .xterm-scroll-area {\n visibility: hidden;\n}\n\n.xterm-char-measure-element {\n display: inline-block;\n visibility: hidden;\n position: absolute;\n top: 0;\n left: -9999em;\n line-height: normal;\n}\n\n.xterm {\n cursor: text;\n}\n\n.xterm.enable-mouse-events {\n /* When mouse events are enabled (eg. tmux), revert to the standard pointer cursor */\n cursor: default;\n}\n\n.xterm.xterm-cursor-pointer {\n cursor: pointer;\n}\n\n.xterm.column-select.focus {\n /* Column selection mode */\n cursor: crosshair;\n}\n\n.xterm .xterm-accessibility,\n.xterm .xterm-message {\n position: absolute;\n left: 0;\n top: 0;\n bottom: 0;\n right: 0;\n z-index: 10;\n color: transparent;\n}\n\n.xterm .live-region {\n position: absolute;\n left: -9999px;\n width: 1px;\n height: 1px;\n overflow: hidden;\n}\n\n.xterm-dim {\n opacity: 0.5;\n}\n\n.xterm-underline {\n text-decoration: underline;\n}\n","@media (prefers-color-scheme: dark) {\n .wmde-markdown,\n .wmde-markdown-var {\n color-scheme: dark;\n --color-prettylights-syntax-comment: #8b949e;\n --color-prettylights-syntax-constant: #79c0ff;\n --color-prettylights-syntax-entity: #d2a8ff;\n --color-prettylights-syntax-storage-modifier-import: #c9d1d9;\n --color-prettylights-syntax-entity-tag: #7ee787;\n --color-prettylights-syntax-keyword: #ff7b72;\n --color-prettylights-syntax-string: #a5d6ff;\n --color-prettylights-syntax-variable: #ffa657;\n --color-prettylights-syntax-brackethighlighter-unmatched: #f85149;\n --color-prettylights-syntax-invalid-illegal-text: #f0f6fc;\n --color-prettylights-syntax-invalid-illegal-bg: #8e1519;\n --color-prettylights-syntax-carriage-return-text: #f0f6fc;\n --color-prettylights-syntax-carriage-return-bg: #b62324;\n --color-prettylights-syntax-string-regexp: #7ee787;\n --color-prettylights-syntax-markup-list: #f2cc60;\n --color-prettylights-syntax-markup-heading: #1f6feb;\n --color-prettylights-syntax-markup-italic: #c9d1d9;\n --color-prettylights-syntax-markup-bold: #c9d1d9;\n --color-prettylights-syntax-markup-deleted-text: #ffdcd7;\n --color-prettylights-syntax-markup-deleted-bg: #67060c;\n --color-prettylights-syntax-markup-inserted-text: #aff5b4;\n --color-prettylights-syntax-markup-inserted-bg: #033a16;\n --color-prettylights-syntax-markup-changed-text: #ffdfb6;\n --color-prettylights-syntax-markup-changed-bg: #5a1e02;\n --color-prettylights-syntax-markup-ignored-text: #c9d1d9;\n --color-prettylights-syntax-markup-ignored-bg: #1158c7;\n --color-prettylights-syntax-meta-diff-range: #d2a8ff;\n --color-prettylights-syntax-brackethighlighter-angle: #8b949e;\n --color-prettylights-syntax-sublimelinter-gutter-mark: #484f58;\n --color-prettylights-syntax-constant-other-reference-link: #a5d6ff;\n --color-fg-default: #c9d1d9;\n --color-fg-muted: #8b949e;\n --color-fg-subtle: #484f58;\n --color-canvas-default: #0d1117;\n --color-canvas-subtle: #161b22;\n --color-border-default: #30363d;\n --color-border-muted: #21262d;\n --color-neutral-muted: rgba(110, 118, 129, 0.4);\n --color-accent-fg: #58a6ff;\n --color-accent-emphasis: #1f6feb;\n --color-attention-subtle: rgba(187, 128, 9, 0.15);\n --color-danger-fg: #f85149;\n }\n}\n@media (prefers-color-scheme: light) {\n .wmde-markdown,\n .wmde-markdown-var {\n color-scheme: light;\n --color-prettylights-syntax-comment: #6e7781;\n --color-prettylights-syntax-constant: #0550ae;\n --color-prettylights-syntax-entity: #8250df;\n --color-prettylights-syntax-storage-modifier-import: #24292f;\n --color-prettylights-syntax-entity-tag: #116329;\n --color-prettylights-syntax-keyword: #cf222e;\n --color-prettylights-syntax-string: #0a3069;\n --color-prettylights-syntax-variable: #953800;\n --color-prettylights-syntax-brackethighlighter-unmatched: #82071e;\n --color-prettylights-syntax-invalid-illegal-text: #f6f8fa;\n --color-prettylights-syntax-invalid-illegal-bg: #82071e;\n --color-prettylights-syntax-carriage-return-text: #f6f8fa;\n --color-prettylights-syntax-carriage-return-bg: #cf222e;\n --color-prettylights-syntax-string-regexp: #116329;\n --color-prettylights-syntax-markup-list: #3b2300;\n --color-prettylights-syntax-markup-heading: #0550ae;\n --color-prettylights-syntax-markup-italic: #24292f;\n --color-prettylights-syntax-markup-bold: #24292f;\n --color-prettylights-syntax-markup-deleted-text: #82071e;\n --color-prettylights-syntax-markup-deleted-bg: #ffebe9;\n --color-prettylights-syntax-markup-inserted-text: #116329;\n --color-prettylights-syntax-markup-inserted-bg: #dafbe1;\n --color-prettylights-syntax-markup-changed-text: #953800;\n --color-prettylights-syntax-markup-changed-bg: #ffd8b5;\n --color-prettylights-syntax-markup-ignored-text: #eaeef2;\n --color-prettylights-syntax-markup-ignored-bg: #0550ae;\n --color-prettylights-syntax-meta-diff-range: #8250df;\n --color-prettylights-syntax-brackethighlighter-angle: #57606a;\n --color-prettylights-syntax-sublimelinter-gutter-mark: #8c959f;\n --color-prettylights-syntax-constant-other-reference-link: #0a3069;\n --color-fg-default: #24292f;\n --color-fg-muted: #57606a;\n --color-fg-subtle: #6e7781;\n --color-canvas-default: #ffffff;\n --color-canvas-subtle: #f6f8fa;\n --color-border-default: #d0d7de;\n --color-border-muted: hsl(210, 18%, 87%);\n --color-neutral-muted: rgba(175, 184, 193, 0.2);\n --color-accent-fg: #0969da;\n --color-accent-emphasis: #0969da;\n --color-attention-subtle: #fff8c5;\n --color-danger-fg: #cf222e;\n }\n}\n[data-color-mode*='dark'] .wmde-markdown,\n[data-color-mode*='dark'] .wmde-markdown-var,\nbody[data-color-mode*='dark'] {\n color-scheme: dark;\n --color-prettylights-syntax-comment: #8b949e;\n --color-prettylights-syntax-constant: #79c0ff;\n --color-prettylights-syntax-entity: #d2a8ff;\n --color-prettylights-syntax-storage-modifier-import: #c9d1d9;\n --color-prettylights-syntax-entity-tag: #7ee787;\n --color-prettylights-syntax-keyword: #ff7b72;\n --color-prettylights-syntax-string: #a5d6ff;\n --color-prettylights-syntax-variable: #ffa657;\n --color-prettylights-syntax-brackethighlighter-unmatched: #f85149;\n --color-prettylights-syntax-invalid-illegal-text: #f0f6fc;\n --color-prettylights-syntax-invalid-illegal-bg: #8e1519;\n --color-prettylights-syntax-carriage-return-text: #f0f6fc;\n --color-prettylights-syntax-carriage-return-bg: #b62324;\n --color-prettylights-syntax-string-regexp: #7ee787;\n --color-prettylights-syntax-markup-list: #f2cc60;\n --color-prettylights-syntax-markup-heading: #1f6feb;\n --color-prettylights-syntax-markup-italic: #c9d1d9;\n --color-prettylights-syntax-markup-bold: #c9d1d9;\n --color-prettylights-syntax-markup-deleted-text: #ffdcd7;\n --color-prettylights-syntax-markup-deleted-bg: #67060c;\n --color-prettylights-syntax-markup-inserted-text: #aff5b4;\n --color-prettylights-syntax-markup-inserted-bg: #033a16;\n --color-prettylights-syntax-markup-changed-text: #ffdfb6;\n --color-prettylights-syntax-markup-changed-bg: #5a1e02;\n --color-prettylights-syntax-markup-ignored-text: #c9d1d9;\n --color-prettylights-syntax-markup-ignored-bg: #1158c7;\n --color-prettylights-syntax-meta-diff-range: #d2a8ff;\n --color-prettylights-syntax-brackethighlighter-angle: #8b949e;\n --color-prettylights-syntax-sublimelinter-gutter-mark: #484f58;\n --color-prettylights-syntax-constant-other-reference-link: #a5d6ff;\n --color-fg-default: #c9d1d9;\n --color-fg-muted: #8b949e;\n --color-fg-subtle: #484f58;\n --color-canvas-default: #0d1117;\n --color-canvas-subtle: #161b22;\n --color-border-default: #30363d;\n --color-border-muted: #21262d;\n --color-neutral-muted: rgba(110, 118, 129, 0.4);\n --color-accent-fg: #58a6ff;\n --color-accent-emphasis: #1f6feb;\n --color-attention-subtle: rgba(187, 128, 9, 0.15);\n --color-danger-fg: #f85149;\n}\n[data-color-mode*='light'] .wmde-markdown,\n[data-color-mode*='light'] .wmde-markdown-var,\nbody[data-color-mode*='light'] {\n color-scheme: light;\n --color-prettylights-syntax-comment: #6e7781;\n --color-prettylights-syntax-constant: #0550ae;\n --color-prettylights-syntax-entity: #8250df;\n --color-prettylights-syntax-storage-modifier-import: #24292f;\n --color-prettylights-syntax-entity-tag: #116329;\n --color-prettylights-syntax-keyword: #cf222e;\n --color-prettylights-syntax-string: #0a3069;\n --color-prettylights-syntax-variable: #953800;\n --color-prettylights-syntax-brackethighlighter-unmatched: #82071e;\n --color-prettylights-syntax-invalid-illegal-text: #f6f8fa;\n --color-prettylights-syntax-invalid-illegal-bg: #82071e;\n --color-prettylights-syntax-carriage-return-text: #f6f8fa;\n --color-prettylights-syntax-carriage-return-bg: #cf222e;\n --color-prettylights-syntax-string-regexp: #116329;\n --color-prettylights-syntax-markup-list: #3b2300;\n --color-prettylights-syntax-markup-heading: #0550ae;\n --color-prettylights-syntax-markup-italic: #24292f;\n --color-prettylights-syntax-markup-bold: #24292f;\n --color-prettylights-syntax-markup-deleted-text: #82071e;\n --color-prettylights-syntax-markup-deleted-bg: #ffebe9;\n --color-prettylights-syntax-markup-inserted-text: #116329;\n --color-prettylights-syntax-markup-inserted-bg: #dafbe1;\n --color-prettylights-syntax-markup-changed-text: #953800;\n --color-prettylights-syntax-markup-changed-bg: #ffd8b5;\n --color-prettylights-syntax-markup-ignored-text: #eaeef2;\n --color-prettylights-syntax-markup-ignored-bg: #0550ae;\n --color-prettylights-syntax-meta-diff-range: #8250df;\n --color-prettylights-syntax-brackethighlighter-angle: #57606a;\n --color-prettylights-syntax-sublimelinter-gutter-mark: #8c959f;\n --color-prettylights-syntax-constant-other-reference-link: #0a3069;\n --color-fg-default: #24292f;\n --color-fg-muted: #57606a;\n --color-fg-subtle: #6e7781;\n --color-canvas-default: #ffffff;\n --color-canvas-subtle: #f6f8fa;\n --color-border-default: #d0d7de;\n --color-border-muted: hsl(210, 18%, 87%);\n --color-neutral-muted: rgba(175, 184, 193, 0.2);\n --color-accent-fg: #0969da;\n --color-accent-emphasis: #0969da;\n --color-attention-subtle: #fff8c5;\n --color-danger-fg: #cf222e;\n}\n.wmde-markdown {\n -webkit-text-size-adjust: 100%;\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji';\n font-size: 16px;\n line-height: 1.5;\n word-wrap: break-word;\n color: var(--color-fg-default);\n background-color: var(--color-canvas-default);\n}\n.wmde-markdown details,\n.wmde-markdown figcaption,\n.wmde-markdown figure {\n display: block;\n}\n.wmde-markdown summary {\n display: list-item;\n}\n.wmde-markdown [hidden] {\n display: none !important;\n}\n.wmde-markdown a {\n background-color: transparent;\n color: var(--color-accent-fg);\n text-decoration: none;\n}\n.wmde-markdown a:active,\n.wmde-markdown a:hover {\n outline-width: 0;\n}\n.wmde-markdown abbr[title] {\n border-bottom: none;\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted;\n}\n.wmde-markdown b,\n.wmde-markdown strong {\n font-weight: 600;\n}\n.wmde-markdown dfn {\n font-style: italic;\n}\n.wmde-markdown h1 {\n margin: 0.67em 0;\n font-weight: 600;\n padding-bottom: 0.3em;\n font-size: 2em;\n border-bottom: 1px solid var(--color-border-muted);\n}\n.wmde-markdown mark {\n background-color: var(--color-attention-subtle);\n color: var(--color-text-primary);\n}\n.wmde-markdown small {\n font-size: 90%;\n}\n.wmde-markdown sub,\n.wmde-markdown sup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n.wmde-markdown sub {\n bottom: -0.25em;\n}\n.wmde-markdown sup {\n top: -0.5em;\n}\n.wmde-markdown img {\n border-style: none;\n max-width: 100%;\n box-sizing: content-box;\n background-color: var(--color-canvas-default);\n}\n.wmde-markdown code,\n.wmde-markdown kbd,\n.wmde-markdown pre,\n.wmde-markdown samp {\n font-family: monospace, monospace;\n font-size: 1em;\n}\n.wmde-markdown figure {\n margin: 1em 40px;\n}\n.wmde-markdown hr {\n box-sizing: content-box;\n overflow: hidden;\n background: transparent;\n border-bottom: 1px solid var(--color-border-muted);\n height: 0.25em;\n padding: 0;\n margin: 24px 0;\n background-color: var(--color-border-default);\n border: 0;\n}\n.wmde-markdown input {\n font: inherit;\n margin: 0;\n overflow: visible;\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n}\n.wmde-markdown [type='button'],\n.wmde-markdown [type='reset'],\n.wmde-markdown [type='submit'] {\n -webkit-appearance: button;\n}\n.wmde-markdown [type='button']::-moz-focus-inner,\n.wmde-markdown [type='reset']::-moz-focus-inner,\n.wmde-markdown [type='submit']::-moz-focus-inner {\n border-style: none;\n padding: 0;\n}\n.wmde-markdown [type='button']:-moz-focusring,\n.wmde-markdown [type='reset']:-moz-focusring,\n.wmde-markdown [type='submit']:-moz-focusring {\n outline: 1px dotted ButtonText;\n}\n.wmde-markdown [type='checkbox'],\n.wmde-markdown [type='radio'] {\n box-sizing: border-box;\n padding: 0;\n}\n.wmde-markdown [type='number']::-webkit-inner-spin-button,\n.wmde-markdown [type='number']::-webkit-outer-spin-button {\n height: auto;\n}\n.wmde-markdown [type='search'] {\n -webkit-appearance: textfield;\n outline-offset: -2px;\n}\n.wmde-markdown [type='search']::-webkit-search-cancel-button,\n.wmde-markdown [type='search']::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n.wmde-markdown ::-webkit-input-placeholder {\n color: inherit;\n opacity: 0.54;\n}\n.wmde-markdown ::-webkit-file-upload-button {\n -webkit-appearance: button;\n font: inherit;\n}\n.wmde-markdown a:hover {\n text-decoration: underline;\n}\n.wmde-markdown hr::before {\n display: table;\n content: '';\n}\n.wmde-markdown hr::after {\n display: table;\n clear: both;\n content: '';\n}\n.wmde-markdown table {\n border-spacing: 0;\n border-collapse: collapse;\n display: block;\n width: -webkit-max-content;\n width: max-content;\n max-width: 100%;\n overflow: auto;\n}\n.wmde-markdown td,\n.wmde-markdown th {\n padding: 0;\n}\n.wmde-markdown details summary {\n cursor: pointer;\n}\n.wmde-markdown details:not([open]) > *:not(summary) {\n display: none !important;\n}\n.wmde-markdown kbd {\n display: inline-block;\n padding: 3px 5px;\n font: 11px ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, Liberation Mono, monospace;\n line-height: 10px;\n color: var(--color-fg-default);\n vertical-align: middle;\n background-color: var(--color-canvas-subtle);\n border: solid 1px var(--color-neutral-muted);\n border-bottom-color: var(--color-neutral-muted);\n border-radius: 6px;\n box-shadow: inset 0 -1px 0 var(--color-neutral-muted);\n}\n.wmde-markdown h1,\n.wmde-markdown h2,\n.wmde-markdown h3,\n.wmde-markdown h4,\n.wmde-markdown h5,\n.wmde-markdown h6 {\n margin-top: 24px;\n margin-bottom: 16px;\n font-weight: 600;\n line-height: 1.25;\n}\n.wmde-markdown table {\n border-spacing: 0;\n border-collapse: collapse;\n display: block;\n width: -webkit-max-content;\n width: max-content;\n max-width: 100%;\n overflow: auto;\n}\n.wmde-markdown td,\n.wmde-markdown th {\n padding: 0;\n}\n.wmde-markdown details summary {\n cursor: pointer;\n}\n.wmde-markdown details:not([open]) > *:not(summary) {\n display: none !important;\n}\n.wmde-markdown kbd {\n display: inline-block;\n padding: 3px 5px;\n font: 11px ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, Liberation Mono, monospace;\n line-height: 10px;\n color: var(--color-fg-default);\n vertical-align: middle;\n background-color: var(--color-canvas-subtle);\n border: solid 1px var(--color-neutral-muted);\n border-bottom-color: var(--color-neutral-muted);\n border-radius: 6px;\n box-shadow: inset 0 -1px 0 var(--color-neutral-muted);\n}\n.wmde-markdown h1,\n.wmde-markdown h2,\n.wmde-markdown h3,\n.wmde-markdown h4,\n.wmde-markdown h5,\n.wmde-markdown h6 {\n margin-top: 24px;\n margin-bottom: 16px;\n font-weight: 600;\n line-height: 1.25;\n}\n.wmde-markdown h2 {\n font-weight: 600;\n padding-bottom: 0.3em;\n font-size: 1.5em;\n border-bottom: 1px solid var(--color-border-muted);\n}\n.wmde-markdown h3 {\n font-weight: 600;\n font-size: 1.25em;\n}\n.wmde-markdown h4 {\n font-weight: 600;\n font-size: 1em;\n}\n.wmde-markdown h5 {\n font-weight: 600;\n font-size: 0.875em;\n}\n.wmde-markdown h6 {\n font-weight: 600;\n font-size: 0.85em;\n color: var(--color-fg-muted);\n}\n.wmde-markdown p {\n margin-top: 0;\n margin-bottom: 10px;\n}\n.wmde-markdown blockquote {\n margin: 0;\n padding: 0 1em;\n color: var(--color-fg-muted);\n border-left: 0.25em solid var(--color-border-default);\n}\n.wmde-markdown ul,\n.wmde-markdown ol {\n margin-top: 0;\n margin-bottom: 0;\n padding-left: 2em;\n}\n.wmde-markdown ol ol,\n.wmde-markdown ul ol {\n list-style-type: lower-roman;\n}\n.wmde-markdown ul ul ol,\n.wmde-markdown ul ol ol,\n.wmde-markdown ol ul ol,\n.wmde-markdown ol ol ol {\n list-style-type: lower-alpha;\n}\n.wmde-markdown dd {\n margin-left: 0;\n}\n.wmde-markdown tt,\n.wmde-markdown code {\n font-family: ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, Liberation Mono, monospace;\n font-size: 12px;\n}\n.wmde-markdown pre {\n margin-top: 0;\n margin-bottom: 0;\n font-family: ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, Liberation Mono, monospace;\n font-size: 12px;\n word-wrap: normal;\n}\n.wmde-markdown .octicon {\n display: inline-block;\n overflow: visible !important;\n vertical-align: text-bottom;\n fill: currentColor;\n}\n.wmde-markdown ::-webkit-input-placeholder {\n color: var(--color-fg-subtle);\n opacity: 1;\n}\n.wmde-markdown ::placeholder {\n color: var(--color-fg-subtle);\n opacity: 1;\n}\n.wmde-markdown input::-webkit-outer-spin-button,\n.wmde-markdown input::-webkit-inner-spin-button {\n margin: 0;\n -webkit-appearance: none;\n appearance: none;\n}\n.wmde-markdown [data-catalyst] {\n display: block;\n}\n.wmde-markdown::before {\n display: table;\n content: '';\n}\n.wmde-markdown::after {\n display: table;\n clear: both;\n content: '';\n}\n.wmde-markdown > *:first-child {\n margin-top: 0 !important;\n}\n.wmde-markdown > *:last-child {\n margin-bottom: 0 !important;\n}\n.wmde-markdown a:not([href]) {\n color: inherit;\n text-decoration: none;\n}\n.wmde-markdown .absent {\n color: var(--color-danger-fg);\n}\n.wmde-markdown a.anchor {\n float: left;\n padding-right: 4px;\n margin-left: -20px;\n line-height: 1;\n}\n.wmde-markdown .anchor:focus {\n outline: none;\n}\n.wmde-markdown p,\n.wmde-markdown blockquote,\n.wmde-markdown ul,\n.wmde-markdown ol,\n.wmde-markdown dl,\n.wmde-markdown table,\n.wmde-markdown pre,\n.wmde-markdown details {\n margin-top: 0;\n margin-bottom: 16px;\n}\n.wmde-markdown blockquote > :first-child {\n margin-top: 0;\n}\n.wmde-markdown blockquote > :last-child {\n margin-bottom: 0;\n}\n.wmde-markdown sup > a::before {\n content: '[';\n}\n.wmde-markdown sup > a::after {\n content: ']';\n}\n.wmde-markdown h1 .octicon-link,\n.wmde-markdown h2 .octicon-link,\n.wmde-markdown h3 .octicon-link,\n.wmde-markdown h4 .octicon-link,\n.wmde-markdown h5 .octicon-link,\n.wmde-markdown h6 .octicon-link {\n color: var(--color-fg-default);\n vertical-align: middle;\n visibility: hidden;\n}\n.wmde-markdown h1:hover .anchor,\n.wmde-markdown h2:hover .anchor,\n.wmde-markdown h3:hover .anchor,\n.wmde-markdown h4:hover .anchor,\n.wmde-markdown h5:hover .anchor,\n.wmde-markdown h6:hover .anchor {\n text-decoration: none;\n}\n.wmde-markdown h1:hover .anchor .octicon-link,\n.wmde-markdown h2:hover .anchor .octicon-link,\n.wmde-markdown h3:hover .anchor .octicon-link,\n.wmde-markdown h4:hover .anchor .octicon-link,\n.wmde-markdown h5:hover .anchor .octicon-link,\n.wmde-markdown h6:hover .anchor .octicon-link {\n visibility: visible;\n}\n.wmde-markdown h1 tt,\n.wmde-markdown h1 code,\n.wmde-markdown h2 tt,\n.wmde-markdown h2 code,\n.wmde-markdown h3 tt,\n.wmde-markdown h3 code,\n.wmde-markdown h4 tt,\n.wmde-markdown h4 code,\n.wmde-markdown h5 tt,\n.wmde-markdown h5 code,\n.wmde-markdown h6 tt,\n.wmde-markdown h6 code {\n padding: 0 0.2em;\n font-size: inherit;\n}\n.wmde-markdown ul.no-list,\n.wmde-markdown ol.no-list {\n padding: 0;\n list-style-type: none;\n}\n.wmde-markdown ol[type='1'] {\n list-style-type: decimal;\n}\n.wmde-markdown ol[type='a'] {\n list-style-type: lower-alpha;\n}\n.wmde-markdown ol[type='i'] {\n list-style-type: lower-roman;\n}\n.wmde-markdown div > ol:not([type]) {\n list-style-type: decimal;\n}\n.wmde-markdown ul ul,\n.wmde-markdown ul ol,\n.wmde-markdown ol ol,\n.wmde-markdown ol ul {\n margin-top: 0;\n margin-bottom: 0;\n}\n.wmde-markdown li > p {\n margin-top: 16px;\n}\n.wmde-markdown li + li {\n margin-top: 0.25em;\n}\n.wmde-markdown dl {\n padding: 0;\n}\n.wmde-markdown dl dt {\n padding: 0;\n margin-top: 16px;\n font-size: 1em;\n font-style: italic;\n font-weight: 600;\n}\n.wmde-markdown dl dd {\n padding: 0 16px;\n margin-bottom: 16px;\n}\n.wmde-markdown table th {\n font-weight: 600;\n}\n.wmde-markdown table th,\n.wmde-markdown table td {\n padding: 6px 13px;\n border: 1px solid var(--color-border-default);\n}\n.wmde-markdown table tr {\n background-color: var(--color-canvas-default);\n border-top: 1px solid var(--color-border-muted);\n}\n.wmde-markdown table tr:nth-child(2n) {\n background-color: var(--color-canvas-subtle);\n}\n.wmde-markdown table img {\n background-color: transparent;\n}\n.wmde-markdown img[align='right'] {\n padding-left: 20px;\n}\n.wmde-markdown img[align='left'] {\n padding-right: 20px;\n}\n.wmde-markdown .emoji {\n max-width: none;\n vertical-align: text-top;\n background-color: transparent;\n}\n.wmde-markdown span.frame {\n display: block;\n overflow: hidden;\n}\n.wmde-markdown span.frame > span {\n display: block;\n float: left;\n width: auto;\n padding: 7px;\n margin: 13px 0 0;\n overflow: hidden;\n border: 1px solid var(--color-border-default);\n}\n.wmde-markdown span.frame span img {\n display: block;\n float: left;\n}\n.wmde-markdown span.frame span span {\n display: block;\n padding: 5px 0 0;\n clear: both;\n color: var(--color-fg-default);\n}\n.wmde-markdown span.align-center {\n display: block;\n overflow: hidden;\n clear: both;\n}\n.wmde-markdown span.align-center > span {\n display: block;\n margin: 13px auto 0;\n overflow: hidden;\n text-align: center;\n}\n.wmde-markdown span.align-center span img {\n margin: 0 auto;\n text-align: center;\n}\n.wmde-markdown span.align-right {\n display: block;\n overflow: hidden;\n clear: both;\n}\n.wmde-markdown span.align-right > span {\n display: block;\n margin: 13px 0 0;\n overflow: hidden;\n text-align: right;\n}\n.wmde-markdown span.align-right span img {\n margin: 0;\n text-align: right;\n}\n.wmde-markdown span.float-left {\n display: block;\n float: left;\n margin-right: 13px;\n overflow: hidden;\n}\n.wmde-markdown span.float-left span {\n margin: 13px 0 0;\n}\n.wmde-markdown span.float-right {\n display: block;\n float: right;\n margin-left: 13px;\n overflow: hidden;\n}\n.wmde-markdown span.float-right > span {\n display: block;\n margin: 13px auto 0;\n overflow: hidden;\n text-align: right;\n}\n.wmde-markdown code,\n.wmde-markdown tt {\n padding: 0.2em 0.4em;\n margin: 0;\n font-size: 85%;\n background-color: var(--color-neutral-muted);\n border-radius: 6px;\n}\n.wmde-markdown code br,\n.wmde-markdown tt br {\n display: none;\n}\n.wmde-markdown del code {\n text-decoration: inherit;\n}\n.wmde-markdown pre code {\n font-size: 100%;\n}\n.wmde-markdown pre > code {\n padding: 0;\n margin: 0;\n word-break: normal;\n white-space: pre;\n background: transparent;\n border: 0;\n}\n.wmde-markdown pre {\n font-size: 85%;\n line-height: 1.45;\n background-color: var(--color-canvas-subtle);\n border-radius: 6px;\n}\n.wmde-markdown pre code,\n.wmde-markdown pre tt {\n display: inline;\n max-width: auto;\n padding: 0;\n margin: 0;\n overflow: visible;\n line-height: inherit;\n word-wrap: normal;\n background-color: transparent;\n border: 0;\n}\n.wmde-markdown pre > code {\n padding: 16px;\n overflow: auto;\n display: block;\n}\n.wmde-markdown .csv-data td,\n.wmde-markdown .csv-data th {\n padding: 5px;\n overflow: hidden;\n font-size: 12px;\n line-height: 1;\n text-align: left;\n white-space: nowrap;\n}\n.wmde-markdown .csv-data .blob-num {\n padding: 10px 8px 9px;\n text-align: right;\n background: var(--color-canvas-default);\n border: 0;\n}\n.wmde-markdown .csv-data tr {\n border-top: 0;\n}\n.wmde-markdown .csv-data th {\n font-weight: 600;\n background: var(--color-canvas-subtle);\n border-top: 0;\n}\n.wmde-markdown .footnotes {\n font-size: 12px;\n color: var(--color-fg-muted);\n border-top: 1px solid var(--color-border-default);\n}\n.wmde-markdown .footnotes ol {\n padding-left: 16px;\n}\n.wmde-markdown .footnotes li {\n position: relative;\n}\n.wmde-markdown .footnotes li:target::before {\n position: absolute;\n top: -8px;\n right: -8px;\n bottom: -8px;\n left: -24px;\n pointer-events: none;\n content: '';\n border: 2px solid var(--color-accent-emphasis);\n border-radius: 6px;\n}\n.wmde-markdown .footnotes li:target {\n color: var(--color-fg-default);\n}\n.wmde-markdown .footnotes .data-footnote-backref g-emoji {\n font-family: monospace;\n}\n.wmde-markdown .task-list-item {\n list-style-type: none;\n}\n.wmde-markdown .task-list-item label {\n font-weight: 400;\n}\n.wmde-markdown .task-list-item.enabled label {\n cursor: pointer;\n}\n.wmde-markdown .task-list-item + .wmde-markdown .task-list-item {\n margin-top: 3px;\n}\n.wmde-markdown .task-list-item .handle {\n display: none;\n}\n.wmde-markdown .task-list-item-checkbox,\n.wmde-markdown input[type='checkbox'] {\n margin: 0 0.2em 0.25em -1.6em;\n vertical-align: middle;\n}\n.wmde-markdown .contains-task-list:dir(rtl) .task-list-item-checkbox,\n.wmde-markdown .contains-task-list:dir(rtl) input[type='checkbox'] {\n margin: 0 -1.6em 0.25em 0.2em;\n}\n.wmde-markdown ::-webkit-calendar-picker-indicator {\n -webkit-filter: invert(50%);\n filter: invert(50%);\n}\n.wmde-markdown pre[class*='language-'] {\n position: relative;\n}\n.wmde-markdown pre .copied {\n visibility: hidden;\n display: flex;\n position: absolute;\n cursor: pointer;\n color: var(--color-fg-defaul);\n top: 6px;\n right: 6px;\n border-radius: 5px;\n background: var(--color-border-default);\n padding: 6px;\n font-size: 12px;\n transition: all 0.3s;\n}\n.wmde-markdown pre .copied .octicon-copy {\n display: block;\n}\n.wmde-markdown pre .copied .octicon-check {\n display: none;\n}\n.wmde-markdown pre:hover .copied {\n visibility: visible;\n}\n.wmde-markdown pre:hover .copied:hover {\n background: var(--color-prettylights-syntax-entity-tag);\n color: var(--color-canvas-default);\n}\n.wmde-markdown pre:hover .copied:active,\n.wmde-markdown pre .copied.active {\n background: #2e9b33;\n color: var(--color-canvas-default);\n}\n.wmde-markdown pre .active .octicon-copy {\n display: none;\n}\n.wmde-markdown pre .active .octicon-check {\n display: block;\n}\n.token.comment,\n.token.prolog,\n.token.doctype,\n.token.cdata {\n color: var(--color-prettylights-syntax-comment);\n}\n.token.namespace {\n opacity: 0.7;\n}\n.token.property,\n.token.tag,\n.token.selector,\n.token.constant,\n.token.symbol,\n.token.deleted {\n color: var(--color-prettylights-syntax-entity-tag);\n}\n.token.maybe-class-name {\n color: var(--color-prettylights-syntax-variable);\n}\n.token.property-access,\n.token.operator,\n.token.boolean,\n.token.number,\n.token.selector .token.class,\n.token.attr-name,\n.token.string,\n.token.char,\n.token.builtin {\n color: var(--color-prettylights-syntax-constant);\n}\n.token.deleted {\n color: var(--color-prettylights-syntax-markup-deleted-text);\n}\n.code-line .token.deleted {\n background-color: var(--color-prettylights-syntax-markup-deleted-bg);\n}\n.token.inserted {\n color: var(--color-prettylights-syntax-markup-inserted-text);\n}\n.code-line .token.inserted {\n background-color: var(--color-prettylights-syntax-markup-inserted-bg);\n}\n.token.variable {\n color: var(--color-prettylights-syntax-constant);\n}\n.token.entity,\n.token.url,\n.language-css .token.string,\n.style .token.string {\n color: var(--color-prettylights-syntax-string);\n}\n.token.color,\n.token.atrule,\n.token.attr-value,\n.token.function,\n.token.class-name {\n color: var(--color-prettylights-syntax-string);\n}\n.token.rule,\n.token.regex,\n.token.important,\n.token.keyword {\n color: var(--color-prettylights-syntax-keyword);\n}\n.token.coord {\n color: var(--color-prettylights-syntax-meta-diff-range);\n}\n.token.important,\n.token.bold {\n font-weight: bold;\n}\n.token.italic {\n font-style: italic;\n}\n.token.entity {\n cursor: help;\n}\n"],"names":[],"sourceRoot":""}