-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path7be7930f.html
More file actions
358 lines (325 loc) · 60.5 KB
/
7be7930f.html
File metadata and controls
358 lines (325 loc) · 60.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
<!DOCTYPE html><html lang="zh-CN" data-theme="light"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0,viewport-fit=cover"><title>Ubuntu | 万星阁</title><meta name="author" content="牧星"><meta name="copyright" content="牧星"><meta name="format-detection" content="telephone=no"><meta name="theme-color" content="ffffff"><meta name="description" content="加密文章,请输入密码查看">
<meta property="og:type" content="article">
<meta property="og:title" content="Ubuntu">
<meta property="og:url" content="https://wanxingge.site/7be7930f.html">
<meta property="og:site_name" content="万星阁">
<meta property="og:description" content="加密文章,请输入密码查看">
<meta property="og:locale" content="zh_CN">
<meta property="og:image" content="https://wanxingge.site/images/System/Linux/Ubuntu/Ubuntu.png">
<meta property="article:published_time" content="2025-09-23T08:25:23.294Z">
<meta property="article:modified_time" content="2025-10-19T03:27:48.104Z">
<meta property="article:author" content="牧星">
<meta property="article:tag" content="ubuntu">
<meta property="article:tag" content="desktop">
<meta property="article:tag" content="encryptLow">
<meta name="twitter:card" content="summary">
<meta name="twitter:image" content="https://wanxingge.site/images/System/Linux/Ubuntu/Ubuntu.png"><script type="application/ld+json">{
"@context": "https://schema.org",
"@type": "BlogPosting",
"headline": "Ubuntu",
"url": "https://wanxingge.site/7be7930f.html",
"image": "https://wanxingge.site/images/System/Linux/Ubuntu/Ubuntu.png",
"datePublished": "2025-09-23T08:25:23.294Z",
"dateModified": "2025-10-19T03:27:48.104Z",
"author": [
{
"@type": "Person",
"name": "牧星",
"url": "https://wanxingge.site"
}
]
}</script><link rel="shortcut icon" href="/images/star_32x32.png"><link rel="canonical" href="https://wanxingge.site/7be7930f.html"><link rel="preconnect" href="//cdn.jsdelivr.net"/><link rel="preconnect" href="//busuanzi.ibruce.info"/><meta name="google-site-verification" content="unrt7wzAjaBYT4lgwH2yhe-Row1q9yrg7p85gnivfyI"/><meta name="baidu-site-verification" content="codeva-xudCNuyf54"/><link rel="stylesheet" href="/css/index.css"><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free/css/all.min.css"><script>
(() => {
const saveToLocal = {
set: (key, value, ttl) => {
if (!ttl) return
const expiry = Date.now() + ttl * 86400000
localStorage.setItem(key, JSON.stringify({ value, expiry }))
},
get: key => {
const itemStr = localStorage.getItem(key)
if (!itemStr) return undefined
const { value, expiry } = JSON.parse(itemStr)
if (Date.now() > expiry) {
localStorage.removeItem(key)
return undefined
}
return value
}
}
window.btf = {
saveToLocal,
getScript: (url, attr = {}) => new Promise((resolve, reject) => {
const script = document.createElement('script')
script.src = url
script.async = true
Object.entries(attr).forEach(([key, val]) => script.setAttribute(key, val))
script.onload = script.onreadystatechange = () => {
if (!script.readyState || /loaded|complete/.test(script.readyState)) resolve()
}
script.onerror = reject
document.head.appendChild(script)
}),
getCSS: (url, id) => new Promise((resolve, reject) => {
const link = document.createElement('link')
link.rel = 'stylesheet'
link.href = url
if (id) link.id = id
link.onload = link.onreadystatechange = () => {
if (!link.readyState || /loaded|complete/.test(link.readyState)) resolve()
}
link.onerror = reject
document.head.appendChild(link)
}),
addGlobalFn: (key, fn, name = false, parent = window) => {
if (!true && key.startsWith('pjax')) return
const globalFn = parent.globalFn || {}
globalFn[key] = globalFn[key] || {}
globalFn[key][name || Object.keys(globalFn[key]).length] = fn
parent.globalFn = globalFn
}
}
const activateDarkMode = () => {
document.documentElement.setAttribute('data-theme', 'dark')
if (document.querySelector('meta[name="theme-color"]') !== null) {
document.querySelector('meta[name="theme-color"]').setAttribute('content', '#0d0d0d')
}
}
const activateLightMode = () => {
document.documentElement.setAttribute('data-theme', 'light')
if (document.querySelector('meta[name="theme-color"]') !== null) {
document.querySelector('meta[name="theme-color"]').setAttribute('content', 'ffffff')
}
}
btf.activateDarkMode = activateDarkMode
btf.activateLightMode = activateLightMode
const theme = saveToLocal.get('theme')
const mediaQueryDark = window.matchMedia('(prefers-color-scheme: dark)')
const mediaQueryLight = window.matchMedia('(prefers-color-scheme: light)')
if (theme === undefined) {
if (mediaQueryLight.matches) activateLightMode()
else if (mediaQueryDark.matches) activateDarkMode()
else {
const hour = new Date().getHours()
const isNight = hour <= 6 || hour >= 18
isNight ? activateDarkMode() : activateLightMode()
}
mediaQueryDark.addEventListener('change', () => {
if (saveToLocal.get('theme') === undefined) {
e.matches ? activateDarkMode() : activateLightMode()
}
})
} else {
theme === 'light' ? activateLightMode() : activateDarkMode()
}
const asideStatus = saveToLocal.get('aside-status')
if (asideStatus !== undefined) {
document.documentElement.classList.toggle('hide-aside', asideStatus === 'hide')
}
const detectApple = () => {
if (/iPad|iPhone|iPod|Macintosh/.test(navigator.userAgent)) {
document.documentElement.classList.add('apple')
}
}
detectApple()
})()
</script><script>const GLOBAL_CONFIG = {
root: '/',
algolia: undefined,
localSearch: {"path":"/search.json","preload":false,"top_n_per_article":3,"unescape":false,"pagination":{"enable":true,"hitsPerPage":8},"languages":{"hits_empty":"未找到符合您查询的内容:${query}","hits_stats":"共找到 ${hits} 篇文章"}},
translate: undefined,
highlight: {"plugin":"highlight.js","highlightCopy":true,"highlightLang":true,"highlightHeightLimit":100,"highlightFullpage":true,"highlightMacStyle":true},
copy: {
success: '复制成功',
error: '复制失败',
noSupport: '浏览器不支持'
},
relativeDate: {
homepage: false,
post: false
},
runtime: '',
dateSuffix: {
just: '刚刚',
min: '分钟前',
hour: '小时前',
day: '天前',
month: '个月前'
},
copyright: {"limitCount":100,"languages":{"author":"作者: 牧星","link":"链接: ","source":"来源: 万星阁","info":"著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。"}},
lightbox: 'medium_zoom',
Snackbar: undefined,
infinitegrid: {
js: 'https://cdn.jsdelivr.net/npm/@egjs/infinitegrid/dist/infinitegrid.min.js',
buttonText: '加载更多'
},
isPhotoFigcaption: false,
islazyloadPlugin: true,
isAnchor: false,
percent: {
toc: true,
rightside: false,
},
autoDarkmode: true
}</script><script id="config-diff">var GLOBAL_CONFIG_SITE = {
title: 'Ubuntu',
isHighlightShrink: false,
isToc: true,
pageType: 'post'
}</script><link rel="stylesheet" href="/css/content.css?1"><link rel="stylesheet" href="/css/obsidian.css?1"><link rel="stylesheet" href="/css/icon.css?1"><meta name="generator" content="Hexo 7.3.0"></head><body><div id="loading-box"><div class="loading-left-bg"></div><div class="loading-right-bg"></div><div class="spinner-box"><div class="configure-border-1"><div class="configure-core"></div></div><div class="configure-border-2"><div class="configure-core"></div></div><div class="loading-word">加载中...</div></div></div><script>(()=>{
const $loadingBox = document.getElementById('loading-box')
const $body = document.body
const preloader = {
endLoading: () => {
if ($loadingBox.classList.contains('loaded')) return
$body.style.overflow = ''
$loadingBox.classList.add('loaded')
},
initLoading: () => {
$body.style.overflow = 'hidden'
$loadingBox.classList.remove('loaded')
}
}
preloader.initLoading()
if (document.readyState === 'complete') {
preloader.endLoading()
} else {
window.addEventListener('load', preloader.endLoading)
document.addEventListener('DOMContentLoaded', preloader.endLoading)
// Add timeout protection: force end after 7 seconds
setTimeout(preloader.endLoading, 7000)
}
if (true) {
btf.addGlobalFn('pjaxSend', preloader.initLoading, 'preloader_init')
btf.addGlobalFn('pjaxComplete', preloader.endLoading, 'preloader_end')
}
})()</script><div id="sidebar"><div id="menu-mask"></div><div id="sidebar-menus"><div class="avatar-img text-center"><img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" data-lazy-src="/images/mx.jpg" onerror="this.onerror=null;this.src='/images/mx.jpg'" alt="avatar"/></div><div class="site-data text-center"><a href="/archives/"><div class="headline">文章</div><div class="length-num">14</div></a><a href="/tags/"><div class="headline">标签</div><div class="length-num">18</div></a><a href="/categories/"><div class="headline">分类</div><div class="length-num">5</div></a></div><div class="menus_items"><div class="menus_item"><a class="site-page" href="/"><i class="fa-fw fas fa-home"></i><span> 主页</span></a></div><div class="menus_item"><span class="site-page group"><i class="fa-fw fa fa-graduation-cap"></i><span> 博文</span><i class="fas fa-chevron-down"></i></span><ul class="menus_item_child"><li><a class="site-page child" href="/categories/"><i class="fa-fw fa fa-archive"></i><span> 分类</span></a></li><li><a class="site-page child" href="/tags/"><i class="fa-fw fa fa-tags"></i><span> 标签</span></a></li><li><a class="site-page child" href="/archives/"><i class="fa-fw fa fa-folder-open"></i><span> 归档</span></a></li></ul></div><div class="menus_item"><a class="site-page" href="/links/"><i class="fa-fw fa fa-link"></i><span> 友链</span></a></div><div class="menus_item"><a class="site-page" href="/talk/"><i class="fa-fw fa fa-paper-plane"></i><span> 留言板</span></a></div><div class="menus_item"><a class="site-page" href="/about/"><i class="fa-fw fas fa-heart"></i><span> 关于</span></a></div></div></div></div><div class="post" id="body-wrap"><header class="post-bg" id="page-header" style="background-image: url(/images/System/Linux/Ubuntu/Ubuntu.png);"><nav id="nav"><span id="blog-info"><a class="nav-site-title" href="/"><span class="site-name">万星阁</span></a><a class="nav-page-title" href="/"><span class="site-name">Ubuntu</span><span class="site-name"><i class="fa-solid fa-circle-arrow-left"></i><span> 返回首页</span></span></a></span><div id="menus"><div id="search-button"><span class="site-page social-icon search"><i class="fas fa-search fa-fw"></i><span> 搜索</span></span></div><div class="menus_items"><div class="menus_item"><a class="site-page" href="/"><i class="fa-fw fas fa-home"></i><span> 主页</span></a></div><div class="menus_item"><span class="site-page group"><i class="fa-fw fa fa-graduation-cap"></i><span> 博文</span><i class="fas fa-chevron-down"></i></span><ul class="menus_item_child"><li><a class="site-page child" href="/categories/"><i class="fa-fw fa fa-archive"></i><span> 分类</span></a></li><li><a class="site-page child" href="/tags/"><i class="fa-fw fa fa-tags"></i><span> 标签</span></a></li><li><a class="site-page child" href="/archives/"><i class="fa-fw fa fa-folder-open"></i><span> 归档</span></a></li></ul></div><div class="menus_item"><a class="site-page" href="/links/"><i class="fa-fw fa fa-link"></i><span> 友链</span></a></div><div class="menus_item"><a class="site-page" href="/talk/"><i class="fa-fw fa fa-paper-plane"></i><span> 留言板</span></a></div><div class="menus_item"><a class="site-page" href="/about/"><i class="fa-fw fas fa-heart"></i><span> 关于</span></a></div></div><div id="toggle-menu"><span class="site-page"><i class="fas fa-bars fa-fw"></i></span></div></div></nav><div id="post-info"><h1 class="post-title">Ubuntu</h1><div id="post-meta"><div class="meta-firstline"><span class="post-meta-date"><i class="far fa-calendar-alt fa-fw post-meta-icon"></i><span class="post-meta-label">发表于</span><time class="post-meta-date-created" datetime="2025-09-23T08:25:23.294Z" title="发表于 2025-09-23 16:25:23">2025-09-23</time><span class="post-meta-separator">|</span><i class="fas fa-history fa-fw post-meta-icon"></i><span class="post-meta-label">更新于</span><time class="post-meta-date-updated" datetime="2025-10-19T03:27:48.104Z" title="更新于 2025-10-19 11:27:48">2025-10-19</time></span><span class="post-meta-categories"><span class="post-meta-separator">|</span><i class="fas fa-inbox fa-fw post-meta-icon"></i><a class="post-meta-categories" href="/categories/Linux/">Linux</a></span></div><div class="meta-secondline"><span class="post-meta-separator">|</span><span class="post-meta-wordcount"><i class="far fa-file-word fa-fw post-meta-icon"></i><span class="post-meta-label">总字数:</span><span class="word-count">12</span><span class="post-meta-separator">|</span><i class="far fa-clock fa-fw post-meta-icon"></i><span class="post-meta-label">阅读时长:</span><span>1分钟</span></span><span class="post-meta-separator">|</span><span class="post-meta-pv-cv" id="" data-flag-title=""><i class="far fa-eye fa-fw post-meta-icon"></i><span class="post-meta-label">浏览量:</span><span id="busuanzi_value_page_pv"><i class="fa-solid fa-spinner fa-spin"></i></span></span></div></div></div></header><main class="layout" id="content-inner"><div id="post"><article class="container post-content" id="article-container"><div class="hbe hbe-container" id="hexo-blog-encrypt" data-wpm="窃取机密失败QAQ..." data-whm="OOPS, these decrypted content may changed, but you can still have a look.">
<script id="hbeData" type="hbeData" data-hmacdigest="3901ac9167069e2f2d2673ec980878186f4a2de54f5c323726e8a0abb8f95b26">8ff191e9776379bde15e15d86eb1530177b50778758186eb68d5a2df28e3200371939954f25b56f2499a25c67d3bf57a3c570292e72b1c8e21503ebcc9d4a4f4933ecdc5dd59767c12f62fb8c825dc09aed87b35bf2d591f1a89352f8a6e30e39c7565e05e69423d0260bd1d1c84517116a79ee36d71a7a176c9d77019ce0438a1d0e159757c2d0160a7321ec82c139b8a430d7c88eb305ddd6511ee6cb766b7d7afbc3d48a36bd18e175095837f18950d4ca952d5ca57a680bdcdda4e688a567b8f6989d3354228e4fb1657600b4c17e87441ffb10d73aaa5df3265a4b5176b70a6dd848774fed89021aeb365417ce43cedafa49223a20901a2fe4c474197598942c22c28057a23aef3819c2342674ccd04036db8aee754eda2e004a27a423344277018af16068a516285e539f33bbd7354ea7ea82fd0b9a1baee4b3c2f939a96d87d3a47b318257a0283a81c5cb2b0241e86f16063dc5427dd894d2a731be0b1b22508504b723e03d20a613413a633f5701bb94cdf6e84b43b24646920eebd16b85acbbd90d626aedcef030626d17fafccb400ea7122e860d1eed90789b5eca6263fe59de07835dfcb07ad924a84784af6b90e954b4b9fc111dc16fe8dca23b29f688a388a2018eeab596567a24e22d87af8956bd4b7af561e4dd10be00c2f62cf684a42d2d6dfbe22a04a61204f7d4de2cb5137a632c1f097c93058e4790926f32f4090f498685698697e3a362e361b343f61c067274c58c32d7b4068fe8ff909b0d5fb6442cfa342c36e8012a79f6d2dd238e151cd9b830797d5bfefcb322810063839175082705b4a3c98c156b5a485de90bbbaf6bac04cba56a6dee7481d023ac0f39ea7b7d9f7c097f003f0ca65a6df3362590029bc48e05d1bbcbeb214185e4a74be3e499e158e2c9432cc46db937edf222fd3fc42093a298435cd69ea06fdce46d272c3289bf12aac54704b1fa77957b829e571057c2b73b17575b057c1054215a332978e844431f49b749c9c420ced4b2858fac3d7667a7b7df428cd586584ff8dc8af16963c9440b138d7f32343c2ffa2862c9dd9245d758543f80ea6e0c58edd085d2a2a2a2167bae1783bb8e428ff3375e6f0e2a55a087e9c74de5e7413fcfb71672df44953a3e7c06d60215a4fd2b527a8671a5ef84c1abc5ca149b06a8a9c9100d561c16ba1ccdb0c47cbb1b8caa3ff80ab1ff39e1bf5c8fcf114103ef5c337a9cc092deea6e0a163a6efc9db268796d79abd0e67679cc8d3440e4774794104f0c347a85fe8db775a053768d6d1d934be2bd441eb744665a72167e21d2cb2b5070f0f78e35bfe371ba71fd4ba1f405953f53b630729d200ab808b002a1446aa4460eb6ae969cb94dd609addb3525cf95c4b97a21514a778a7b88d18ea0765fb22506089db5ff5309fd57252fd15e68e96457be004dad5aa0158ec936d036ffa2dceee2ad55658c1c98a08b56fb9c147aba2c444b934d11e25eaa80a554e1533340701d870751cb48ca115d397ec451e878b32447b8799ea8eb4a36e8cda7809a127dff00d97977a47c89039eb4f2492dbcd3b6e976b6f21d938f07f4e93173f809815e6db722dd85e65a5b6ec7ccdbc15bf5773e5ffa7c019e10186eae872e5d66a9c84dcb6bdebbf14f839bfa8f234218ff70b93d6e7b2415dcc8062ba25108ae3705334dc7f95fc3b35c9104891d3a7d6448c905cbd88f6d434844c35df1a31d5a60a882b25f7d11018da4a35a9249520925bfefa6f78ba7cf21d18cfdeed08aed8de14a90e401dd896a56b9ebc80a4387fa6820d5440a1f6c73393f91cbbd0ab0cda8f5c0ff3bb40e0f5d3d64397c170563fc9fe13a3c452bacfe491fd994bd0dfb9c51932496fa910cdc9bcbaed95332906fc4f3e70e4cc281f8c680aeae3bf7a756bb2b823af3128abd84cea6c8b07adbf47295167ac05feb506d9ea693ef1faec3d2d1647493c17ae894b80a578d22d19363f52d47677cfe7dea77043d9d0b1a0d1882881bdf823ef80c32342f50dbe4d15167d4cbd9f1b65b41ed82582a084b2acbed79201ccf507f2ac1b381b397b56b20a5d1d1c2f00ee2965d7975e498bfc7e1bc68034a91810a1ef5eac90a148527606b1739cf84bd65d4a4e760862a51f3e60423b71a22fc79c77e97706da350a352ec206602606b78822f95f21af6053cd1edb2ec4f6c7c50fe63952de8ff2c83fa23887a9ffe41785761db29e4a36af4d682938e81cd7136c3aa960ad6c57b0d3f0e963039895e08c1db2bc3cedce0938f62c0704ef1cec10084c1f5802dbc4c22ed865ec2b280e03a404bae80f73547fe9f9f73cd3e38018ddfe007e088daf154d71e1e80a79ec97e6282db8372d953f7700c4cecf7d3d2490fa6f845257ba12346b46260d86dd0eb809088afcdc3e76e2d97883d0c5279317bdd7a02fc4c45ba653fbd4495d642d3cb8ef0c2db0b2e888dc5ca0e6d700fd71b39f7828bb742e3c175489cb192ea1aea6c32798001901e9bafd51738048b4b437f9edb11c0f2d1cc93a5176909b4ccd063fcbf70b2fb5c9f551980b5aceffbc27af9a8554e2a0c5fc21895831015839ad01c470ab88bc39584d67ac55854bd81349fdb411a0e906e1761c2046980bb11e3fb39bb2dae83f72ed5edf4ae66bed16d8d668bf467f1d307e9f683ebb187c3281b9f1ce37e8cab3c83db8ccd6c7b5007398527986aa5e1b2946ac050bf8309cf310e14bfeabda6c8238c65561e907957676e1e98f08150c0d205fddc4cc8490f4710b33d328693b33424fc0bee68845ed02baaf04507dc72019573cc00922b2a8662326747edcc5f0b532c08f0e14f5cb3d52fa6afc7c31c06eef34145981a669f22173ba80257eeaba0d06733940584780fcf59a17f05ced02fc7998304692417129199ed5d1a08d74ec538736e736279cef4fa4583886785dfe198e3bb17a70067655656c4eaa3bfd6eb64102b91dffa8524f8bb2e252b2902792436e453c15d6d36ad25ce2c62037d2958e842c947df288f956a58cf0ba395f788152437d1da8b280e5cca3cc7f4d138c5002fd2824f993632e62eb4b10eed546b4c57b26b60e7c47aaca8ff5b7d54541e7667f420f6a73180b043586e947d50c0ee23e91aef703f185eccee888494788b0ebe8a60d050b013b419da826e1cdd7cdcd68474e675e32c1a128cdbcc9d32be9016b1b7e79df3099fe34a1808d6498f82b22893eaa2e65eb44e8dfe032f0ab8df86474cc5d4c5cff133a64ff10ad51b6d111b344c13331da5baf2474a71985fa45d8dc6bbd4a433fe326b352ec18e10e8ed86e5d40d9ce958a51eb6e4f673be5ad5e82ea9e6b5fc0900cf466f9bd96a2241925c56a0fb47c2514176f6dffab26c67b43a7a4106c95fb7389adf341ccc77a69128e6449c060a115d9c6a8d40dced47df801e4a59eae7e6d7ea99dfe0846d9ebf9baf37209838e1c2513bda38f1de0682c0afb238a030909ea8c07016a6c50d3b7548d1daa28a53f00364146d19be3ebe0b4c377d39ea3f24d74c9d89addec9ea01e20691b62c7f442d4bbd73a3368d37d88d23d01ff11d775dff989aad3afdb5a32d553a210c4e8970ce43e3f9d2162779624a37bfcf8ba6a6ce36dc0cc25b76426f275fce2b90c41e731b35fe591f364b580d7a81e4f93f5fc9663d0965bae680e7bf8b2dff5f97ea11d8db157402583e87d83463c392a40af9e02dadddbc4870aa0b2ca5d5a93457234f7338ec394186b499ac252259b75e30277ccdac2c3b0900a99874d4533e09fa50aaada0f601d5b0a8d54925c0d318b3ff6d860d23402518d81ca969ba0a4d728ad76fef485c2555b98428230ba54947364da87475adc7f44e42d926db44602730deb7dfd24785586fbe2d72bf9dbd0c08caedc69db964012f33da167eb1708ddb07a079e1cb57463a6c884fcd7ef4421577b0a6dfe39cc78e3150c454707fbcc9f8a3fa9eef6c2c0598c397e4a2a6fd69cca69928d9ad7be9154067281193d6e6f8cf372d81828589f4b4034456083bb715d5eb735cb6dd69ddd9a5fb9747b206b97a17bf653f48239d7efa7b116f9dc9c73c9ef2854190fd7ac63b6bd35e197a4e09112dc7612602a340b507f3a48ee7f5886f05fb38db7fc22006e80c1f5a7f30f11a2ebdf421caecbbbc8141057c64e2c82cb6ede034fbd05743075c87b871a30dcd373524bb4b2b8b52c3828f32216229469f9b69940cdfb40895841192be54c667ec0e148a501f1f22bacee68145570196a6587b26fa63c527c06236bf61e94f8b2f91d7b10d6a98c7697c47337dfbb50b7cf25006fc096b638210f9454ef26cabcba28c5061fef7d0ecf46db83a46ea4d6a7ae6967eff12ad82cd34fd9a1d6613d6002e6cfe9c113df495a47b9fa6b4f57891c32db62e51340b9d45103e14a8f39e0ecb8fa4aa79afa21cb562ebce2136107a38995486a3b443005f3a9637ecfc8b32a1eec7672c534f03b354b1146f7630eecb8556786ec9a48331461cbf3defbd99dda9ea060059d31b991eadef3fb496c328e9801a2a4149271007711592c64bb5df88c40af2a8c46a59c8db0986a01391e6098fbf9a2562e1b7e7128fa4b42ee1248d3fdf17d1d9d80ecd0c4cb420259ea0ce4c2b1e929ea488681ec506dde372f443a9f7fb0fcc9ac7223509214c6221ef5705a68589280b9e24507210919e315cec3c82d943bae77a42731f7815ee8c4730b7f81cfe6ff85849292c084323929682304a3d8c850ea9043fe6d18e0870a1162a976e4e36e71d1ad9a96b23025df315edb4722af152478c8b8f650a5349ecb46e530d0189efadaea3549ff3a93d8e56b8417b24714419ac186e14a3aea1b4a6a9d7b42d3b491acc951b93e6a21ab9ca944463b9e9b5c857f402bc3f2e9b4efce5665197bada8dd481a8ef2ca6dac7f2c1def16d0f601173b85945c00c5945d3787427d6f2a82ca42587807bda27229cc5e4f1bc892b486c8a56f37b0a7e4ca4b0ee91f585f720097016a2145812597e2c882767f11bd6ae85d07c3ca29bbf9ba50d2d3522f78af6d85e1bb4c66b3b0721c09f86e62591b9f3e52558671ef00d0159e13a85d652e439fe7f81391a8c9c1a9ebb30be489c5e20bbed0161e787ad7bae731d5b2410b963fda9b96c3df2707ea50434ccbd5dfb53fbf67eab03aa255b8dd5583ededf43e33eb59dfd4e79e6b978ab6468b3dab52d03d0c523a9252e6077b12f06ac36397380d8d995e16d05f14a7330da6a73e45ed739bd08068723116c454ca7b56d818ba8d6fb1853ebbdb9fc9780b114388d21a58fd35683bbd69dd41767525fb0c0cbbb90629c65d3871a835b1eac008edd876707d8534beddbbf4334746e4d2b4f1d966569f821b60c302a93cfcb2add1e74076646773f5ecb6594954e8937c8b9918f72f63d5acc082a1f6374bd88a8f6312134f73ba0c3f1fcaaf9c1e7f8f1ffde373f036132d08362fa41ac3551379d5e3688a143dcbce33df9b40305ddc0bd252535af524d410eaa4567b42c747d78511204b2c39de7cbee5403f99f6891c6bfff744aa0e7809badf3043d99aa36568eb03b86fd6882128a4edc48c3dc6b5b463f53aafbd530e0c0207f6faae660104afe0a26ab9458db81cb4164074bb0c6ec3a69c22156e83e15fa0c158a96f28f451f96eba83231deb610e40021804a00b55ed4185cab42d9abf9f9eb2a1fd4237bac04e89cdab3d6819eb178fc3e4c97be0a3cf3c98c12638ff951c90227975959ed5f9cae1c2d27893a26f81a2a7ce0665c2f3de54b5989b656de80adaafec375154d4914c06881811016e8b01d8d08666f611caa7f0736f17e969fb024d9ec0b66f90fad7c8eb2257ba514f18f63bd952a68ceb9ef6360d9aff04e99cfc9b12efb58c9e894f330b24c33bc9bb02b44530706f67fa6f3737a52c69a5b49cc5e4767051cff9d876d0b02e41d67ed934c5756b61256f00614cc4f0a730a61af1c0c7540e51e66dddf964e772e5c33f6ba263e6278b989107ddafd385e22bef20e70114030a72cde52106b38f11f847eef6cbda9e968401f98d8f4fd863772deabb6f70bbb62113f9fb87e563d30beba700c8e9f1211ed60f0fac7ca1ad78d311deb0460744d5f53f769e35bcf19ddd75f67dff9a908057dbf3dcf083c7bec4a021ec4fe7884a32cfa13b6c9579881a4840bc5b76a9d8a3feaddcd1d864b128ec5d375b34481a3183d43698125f3db1366cd8c9be3bdb6cb3a1d4f77f5ead87a6daf6b705595c41e19a72c134f93a88b85f4e59fa85113e7e955abd36fffaacd53205a3d316b5e1acb42e553a47df0ca2800e349f89d0e8db7eede11b41a595cedcacf286427eb3de9d5cd63538ede9a16466adc70391a572dc17273e462cde29d27eec3f36bdd868351874d8610ff16f6f5aaff4bcd46641164701b8b0cd60cf855573313cab5663ea8db848c1418fbf73d0c2ef6b80d4c4a3210da8391e5e493a9904a4cb34981dafbbf3d93ef1cc26e23360a032f97088a8e8c655e4fe6df781ac94a5184c3786c815446b72238e8b6ab2bf7d900347d2ec2e73c5d489bd95da8c7bbe62209d3f85f189d1ab6ba58dff45de975d0e9b8b2e8fb5154183c6169c3004b35d2379043f06fd447725e75be3026ee4ccc9ca81697f0d529e3a4cfb873944a9f6e19e31e759355ec554f0ce62aa950e74eb96c1170f5344f140236f1f9f5298048e9297ddab985f3fbdbc180ea815d0f502e994b59ec3ff2846192b6c728262b61b710a68cad705a14390f4258fb6a236479ee4f0881d6abc65415477e621fd1e1262f33510d0a16b1435204fd1f13b99cabc1c7f076b426ef17cfa3c30791b10908bcb4a55b08642e0a8b9275b3bce967d7b33cdb0782e98104f15656df618d4040f336dc08346f86218790ad326b1710bed5b495ee93635181a2164b6b788c00837c3fdcff4e29f197f4ecb6f47865f2ca519d5ed3408d9d217a0c791637cedd4b8c157dbbbe02f143cd6e282f4f6c50694f26d55be907037e22a06ea1362a46dc84f7bf72ba279a1f0e61c51e8def1295e07af8844bff56bef32c11affe85f795cc6b4478db97a0ab4a2553b5feea9133a5079ec633a97b7121c6e4a6ad0f6ff5f58f87a0c6c2af54d61c22588bc0ce349dc1db4784b0f452b6b3e5938a150f495191f71e034bf9e2ba510ad80335c3900cf472a688b4097bd4179a92ff44bad01d015cc3611754f90a18c5c6b2415776a2920af86328d5750816570d0b2b1ab4f84e5408bb4946e39b4fc728667f66588096bce1dbc1adc8fd80b3f1d1e51a4e76671128b717f24e026a4fc17da97c96663afb4ad0eea31e7ccddb89ade275f1cbbf7664d02207bfa52cd860534298e03fa3eb32237722c30fbdc5793815ce64ad76dad741b5d59ed866fcafd369e2f6c075a6bfe67320e867f1facb8b8858cee652c0f7386f8941c286c00f2b8f829103c63280a4c8196968112911dc21c00ff6bda94e599fc5a5afbc714f2d80708772e5340d75c1a4b24f282d9b136d061af62695c7c0f44cfd9375d45c26868ae1eb49a8065f19ee48cb67b1e0bb48524a99a6eaf658ce2286b2c246fbd6e390365ce2c17fbf33875b3082fbac5abd35df94149e230b2f95dd3d4a3c7dfb22c0897b882af6848d77f9151e642986261e55edaf57a658aadea2e3402199559344d6a6f4f826f6695d8663adcc83d65ec360d0a3f9e480834da808bbac2bdbe08b61d151c5c9622fa72a40ecdd433242dcfaed0aea17ed2e96f7d1546b90d2d3be1b1ca8b654af2c8c8357c15b0e18f88aaa4aae48217c5fe636db050047616e0d0d82d4ba7e4a48fd50132636e338a033cad8947edb8b743723e69c6314d7a47611ddfb3fce65e1a946e36ec150f921fc3b10abd9b58cf3e7816f83b99e5190041cb66c908603457681cb18c351eb5e6cb5490e4fc9c6392271e3b8a9ea1347693af693ba2e1b512acfc6340d67490ec89ecfd5e56979908998409509ad1ef67e267918d3392c7f1401a722ffb439913dd54f1724b2fe41cbdeac27c2945a84cf3f58eee486860dc07e6ccbb04cc6e2a999b1f6fc6357e9b61f2331ae0e6d12d2b8004438bacead900b60f8b2b30fda583a7604ff5bc12ae76edd1b9cc171b16682692de82ec3071591577380226da249f8360488712637daa72608e89f9c3a813d8c9b1c8802e49df250486a968ed5cd543770d0a07ac25ace8a609fa9595ccb667c99bbd43d86a0366b473c3d35ae44ca8d88b4f2d3cd459b044ee0bcc041f892c65ec0b53614fddbf8e4e5b4ecadf43bafeb6b4bb3ed9d72c58d0ef4e8dc3a75d32571aa213e021370ee4faa674018977a903288de0374d67f166a0acb76a6b0bf087cc14ebb9d645d2233938277e8341fcea950891b60895393c5223ae89cd23a805fba943afb8bc71a28f5bca9cb693e34ec86609a1822777249684ed98f16fc67a389b3f3929e0116c8a00d6f243ccddb682d200e8a75070fda1a8737913fbf4a8c888dda23e23f23fe2248b78241b33a0564e049553b76d37a93023507c2dc9c82227628662e3678f5503f2a2d18eca4f5a52df6b23b5e9ed3e55566272423d5214494ba2d5114d5efd23fb2542e92b55507f4aef00db2914cd132e58ae8e03413a6b20cc45666f3c9aa39d1c2218baaf8df78571f7e6b5f10b84f4683772a1bf3607cf7920831ffda2efc78619002d15e81a74955255aa0a8220fe213f455d068a0281adafdcdda7f9ad4a2f155360644a52fe6dc01288ef5fa8d34b1e13c8a4ed5d4fb5fe88347ac65bd876229e4fe47ff2becb6ab7e5eae086fb220e900c205736b1ef5c404ef2c3ab4f414d7cafa1f45dde044dd325df1b9a30cfd047f22f73d9ba95de2a9fe68ca351ce813b5853f86dd11f9b5db4643643fbb3a4a50fe571c3092693ae290286e0cd7e042d0b8e7015dee7cbd27564077fc9595ff39e3d1960cbee8feac9adf846f4d91595cb2508cb9c8542c19d2d738136ea2076dc1a81c20d3a76ee005c745e618088668068960d959afcc659cdd99cc00bc1665a6986ee9238ed9815f5ccf13b953ac1ea4f79c7382dc9dc4163c931649bcbf22ac391020a42dff5233f5e788194d1767000d9fff433138b7c4d68db751cd4db2aa395e8d823c9c87c9362c12f234da5c5af344b60dde99e61130483a76f2b36887cb2c667718b2b6045c0f6b681385eb6ce7075378f4c17eb2a7fc395f2db60213afa5fe382862f8621da1debadeb0da8eb164a8532a2311ff74ce38b47db1e7823ff255c8436d596f059154facbf8d080fe1ce4f3effcc400a28a0ff33f26ba6bf841224ec8720eeb933a73a7aab382ea5281f06581217eb1fa5550992282f0de54f5d3a0abe88bc1003336202c5f44010d00bbe3ae78809f326f1b5695ca028ebf30909473be23e8ffe53b46df2c2de619e6b605f1c8c85cba2138caaae4d4807ab6b63f99467bba436a0af49ae716342ac45aa6edaba6e2ab2e5e83459400f016d04002e7098ed95239848b7a737d812933d0f62f366116f128db1b4adc1b898c6ecc3554e15614afc173f8faefd95cda8c902e71f3f418d89383e6a06227efcf953f538f7e2e41d4add74727d86af0edf4098525f1cf049d0365ccf73b43c34b1800fb70ef8014beda52c2a7c02e2dfe9b69ff078bf5b90453852f7639e1e0cf6af0ed82abfc49555d6a1967a2160948702ba6b061a5aea5d059afaf3c26ea6126326f1e1cdfc19ce9a1647bea550a138863ad74c93dbc662f3c3d021ad8d13a100012cba3f6a51325aba9d843374a831e7223f13692f4f8015c0b5c317fccb8314bd155dc72b771894adc3b2b994345e841e22e84c96dfe54f01f3aae91333f690bf7a0613d66b37c6058d20b6d45512ecf7b28cdb5e1366e76cdc63e92eb8d3e1ac94a50762cdbdb54b4d78f305954c24631fd44902e253f54d482424c35fc075b5cb5db0e75be08ed33664e10641bbca16f3a35c4e1300be559a7b958afba32402ca1323f50759a387fa82ef5927aea90fa128eb5b5cdce1303e756327aff5ceb959e8f9203fe0835645fa64bb88b914697519cbcbd5cd837ae0f4dd27d06b3ee97c03a30234524be18887df32ea16d9992f2584f43ef2d5b3880eed69187f36e790fbe6f988ad66d9aa737cbc28c778f8bde8b66673cc7f91fe9e85e942e7f600f1733c5feee722f763e5ab79e4ce4504384a65929d8b1043eee73879d9fb51c15e9aab901574160dc490b5a1c589f70099c73da1a76ccfc6bda6f0d0bd9c7224967f91c87ec0f9f044c1256b401c8abe4e94da5834f92d6b4306e2096a4daeb79d988f353b2af4eb4a8a6cff8d5e9e73765a6e5eca68f960cb343bd3c90a51c7335fe5d91ee56859a6e9be53ff05ff466c2db38740908c6e4ae1799898299d9daa81322c7ff6fa5828988da15837630db432c6bee6bbac49d69a4438330b47d095af491426161fe82d2a219d291a5ea83125e28d7ef9cd9ac562aa166cee5b64125d4f7d49f3df5d3926baec91d8f95c49b90c64e8dd1206c4b0ac5588f00b0acc21ba788b7c02283850b6d471c4e70e4667bc32f4008c1a63e7c754cb126586a853266fc8554821b66140df20e4b7a0ff90cc6540ba2c281d2c48fb1ecbf640f7edcb7d37a6a773fc33dd62740282cd1eed3277ba9ff6cf80105daf6cfdc8d3668ccf4998b8d9f65627d948ae7f10fcea4dd447c2c212936f5404335188a231fc2d045d548232965a0541c46dac34df3727f0c11b717fc136df3342a2cb5bf6181eef5dba738c9651a3b88dbdaa26cfcf84344ed2933bdd9f54992437917c720fd1eb2195d03bc31bc401fa85848ce2f59ef1ca094044dd8d9cd8d74f9d478a318d5ad77534512c293ba263baae681ace1b7fa1809e73a5cdb37851e76a2f508409bbe60418dbdfddcfe0ba9a9dee7dedacf392e5b709abe188edd350cecf8211c0243cdd9ea912a5765609afc8175b693f9f2d5384ac2fb7e7361c650fe701c919fbbcac817bb604de962dd1486199e245a361d081610060b1142b8366eb5f5a793f47d4a698e63cef01193f75c42d7c799999c551c1ab5036950674c78d29da77e22da09311fec391ec908821e42dde5667c66ade3edc152ea4a29af927c103feb84bcdefa964740c95cff5e6c25e06e2d98e1318e071d789610072e55556f1f25802b6a98df57a9580bfcc12abac4e8cb2f6b47aee41c199fccc310d34a1d129c75f95200c8bdf1992aa15f1fa8b05e071bff9bf139e7bf54a7f5530a97dd5bbc598285de8ddd7d307fe955e6da9d4b82deeaf9a271e89d2e21eafc9eb37a441b7d1d126db1423b3a68a8b08074569d7a6c17d89126d481eeaab9c0967f8ad7a49ef2718b5a0b7ef9366475c7e79f91b28e06273ff7280e9279ec955391fcd6c0dda72de83970781cc295f0c1125cbda76f7c415673c236895a194c2aa6390952769a2d3b860f330bf839eb2708bd74cf4c6baf47c309cb688d020b0c5aed3d7b2410a818be79514bf96af1a7a79db8e5f273c2a70d2e67c1c902abb2619eddede9f886c2541d8cd1c795879a351f92a8bc2a2f15887c54a2a13aed9c0cf5d28d4892fb8c04078d144b915db72f36ae1d0bc14d0a3298bd5e641b21cd6e52b8e07f51ebfe69b5c62da0b5b8c15f24344200d77f80785ef40e7dd274f42ba280b8f20709f7f6c7bea9c40c19f539336119b0d5ef9c155c45e6430759b2787f56190ee9f5721f630aeb9fb2824604dd39464aadc23c7c5ac76816b27380cbe859fee22c383a811ff4f0651c94bc7b474fb356d8e8f9162bf567bc9854a3358431ef4e5032812a85517f3367c2943ee3ba90d40af8c50b185126ab69fae30d686ec85a3a8f2ab1c05b8676b04181e41425118c205d2663bb2edca3710bd2f14f94c66161d5761e2633dee785ecd986a5eabc858c1e406422125b907c5eac7385bb496e2af49a601b5ffdbf81a09193ec2fb089ea039ab189e6dc050e8518fe8165dc3e780466334811e777bcc71fe2a09baccecae2fbb87acc0436d90dd4aa967dfadd3f40da14eacc7a4c769ff98d04022754656ecfa147ee26b3eb5c4ec0616a579be114909600918254a51e6d058653807abc1edaa55ec1c3c8e44c7fbb12aefd7dccb799d2d4604f4097633e1cb462f45f019eafca3e0e6083e8399aae9b625ab0d47e5747ef2ae6e144e50883368234f01f535c618ac72bb986f8e30f48dfa5fb3a38e1805384c94ddb0e729c990c42c67cfdabd787621027fde5db15067f48db004812078beb1d90b9215d3c8286fdf4270fc4f6468a143909c23363e63cbd96399f11f3e3653030e3785ca04164dce10f8592c4adeb63e224efc089d837320d2dc9940aa3f06cbf659f6237a486dcb9e3405f713223861a28f6dd5c6dd1fabb4a50dbfd7a62d3eda18c76102a5cce980f92958adaa7ba980adfd39c1229da16d864f0e9f053f25ff0432acade9d21a4daa8f9d4c228f85ca66bfcc223a6b1962d132697c4287db42cc2b5e6edb7121de6f2b68ca674880ab188a7e05895b58b7586e608da32abebfbae56b9cd3d443331505633ce3d516e045d8bb42b3b1e7b11feaf0d93d5b75c4a02e20bcaba68b8a97edf970d7699486554b5bd2c56e95411a5028f99c15ca835459920e0db7eecdb720ef8e7bb6e1870ea2e3ba1ab2ed9f2100c184987bee5d9ac2e4b407e91493dac759560c5fc463d0b8b932e1e346b3502a6aa81a568aabaeb6f77ff5c4d7fa6dbec233b66e932beafa3ad93788639223e901a4c51f2044d58dc6c77e2e498012350b35d2b20c8993977ac9a2bdcdd7b4768ff721712a7b521886fab3bda4bf92c10d39d9df2f719bf9f64531dfaa647b313ea47e86451e9f46c0588d86b59c6156b6c0491ac616cc43e461925caabd5542dc13a170ff4834eb4d3345393a8d4165c96040154a3d6437026ef632aa74909e1608ceff32bf85c910f37c38302e7730d1aa262c20f18fa7e0c3ba3213ac071d295442da756ccb8da719b353862b10c62f0ea18765a2ea5d34cd663483cac4d130a40f00034438f71fa28aeaf090d1f9b5e1a3a6d52ec32d537deb175fc218a888d06fa6d4d7d444cc048b37878cee798c11227b99fd121a669fd9a61c2c78001e1087e5a053832af526ffefa575121e810d66d3316310037cdd60e76031c6c687318902ef70023f0a1a80dfcffaf2c04622f77343738b96c61106796844d9799c4c2ba544bf890b1b133edcf038500e5dbff583b3f4a4d39a1196b03ebc7d2a7b85e869ae1ea56715d4c1b648b0f7120a7dc7cd3f4e09cf2616d076bc289340b605dc369acc267388f08d3d9f90da4b1481449ab11f23af3947b567be44e643c4a30aafba48c06d2e69a7732f406bf6184e2b7c9b30ff1907f5a0bf8ed8a92811763902b532de2da562f21a029b559eca8432f2c4f12ef510b651883eea6dc075d630e2d14554676e93d2cccd4290cbd9402f5af4d767f55169958bd724a30a539c4770530f8f8844510c7e61f1c1bb57e36090810ac22052f5af83df27199d54f652a7314cfd613ffc06fc99ff0c7c49d07f39927f77d2832f190de02d76995ab6df37a7fed81ba772f29c6dc8ad1cdcfa0a6f54c413c1b77b5389430da2901aa694050e1398e5dc66ddf890780aecaf2e0d576c75bf1b7b9331af43cfa3722563fc6c2c4d55d021d4991f5ed712d597da8cc3a764a2e5d3e1412f55c00c09d51c2679d9455fc856ac17db460826a957b55b6805a355e6e2d16a5002f03ecb2e6229f1be84ebfefb12a4af581656f1fd2d450e281f50c629e902ba0863730ad13e74ab8ac143c8f4cfdcc6ebbc1d88fbd52b9063c61af275f102b315ccd8bae345fbcd3292a9522421607554a4ac9701a2ac69820f8165dbcc700499bab711420c760c31aee0cc54669099619c11a8c389b5d7e660b52a430f857bc9eecb24efdeed69b3883b8cbb6fdc5bcb3c74abc2d0ec3e5b2881f0117791fef5d40915b1c226e2591c924741e41372df42d57e783916c367a529ccd099c1d912f6ef271e619ceeb92cae5729e39e32c0ad8ea17c2cf1937c2e81fe4b5fd2e18421f7d902836d2b2fb56295f54b09116d37bb8a332895a842dbb5710699b0581f332f444ef9da1d02021ed972353a516e9788e27a30b1b241c0e45c83839e31a44e51e160c807a0652094aa267f605c1e29a406fe5b237bcbb3055cb2772d47d6b24dea5f8a1630eca1f5583a8980f9411411ee11dfd05c041a3ee9f9076b0b9020ad527953f9f68ae62f4ce05261cfd476218aff601b84a5cb2f9775a02cfe1aa03834851e09956fb1456de8f31c2e8228799366ce3a9337c233d8864035ac36137c11a9da6415770bc04d4a7f3dc5822edcf121465fd7768d0d88462871a03db08d3c4c6e4e957c6ce5c211791b9c76088c8401156bcdb27af859a748a2a90dfb4408d2d9ecd24c7bebd812dad63f574c99743b77d4889673aa5795958c09f07ea7808545396ceeae465ce05579f7f997528617f59dc1d5c2bb9592156da7745360695865dc6aaa6487d2acaf0b6be2215f2ad5d9953870f0100f5658e1a3f401bafb1af221550839f9156243f047db5778889297abf351e74274804d78cd03bb19aed2a80cfbf9513a89b797e9fc6d8ac953ec1dfbcdff9eba17a80d22de1e0bb16e099606645b7f58b27678e32b28c300da95173f8d211bc67de268420b4f1ba00d726a03b5289f0370ecb0de751ba9a514ab4f0cb03305c55eb6d898df0e42ffac6641ac7c05efea8b1210f8c7a867260ec498feac130fc89d703a053325604167c1f2d3128351c447ae350dd29ea133c337c66ce1a0ffa46fabecdb16391a6ff4c7ae1e55f420dd571dfc45890ef60306c58fa83f8b71bd32768aacdf6722883c47cad32523330b00d4bbac78fe3766e8738d1d503d724347967fa24930ff1ec4b41bf97147f0dc3256178d52766683ecb19f18308617d92ce9a089a90effae7724f09b91f812392f2b413eb53ba459916379d69977ddce73912ab96503e3740f8313e257066794960bf2559e7a18dd108f1694cb71580dd7f2ea42e4dda0744d31c26ce60b099cafc9e35d984ccd46a73f78b6c23ea15e7ab16c82d5d39219a6c1dbec361c803c264657d61c9cb0fdcf20d7a48842bbede749b75b873b56694f52e78873b31c05e897794b88961e87061071e68b3787c57e1050a0eadf60bd18d9305401e68c2cc9cefe2b436b47db45b38be6a74ffccf51e0814cc1a65e5b1ad4c2d3f4fbd82e3bc86ab43ea0ddacb880bf2cc501d370eb635b83036ae927438c02d1cd208fd36d211897a66b556033ac0764e5a1405ac7736534d2420a9b25b3a1d5594d525cf71c13726ed28bf44b3259637df10cb56a8024a9c8de29cc6046b1d0eaa128287e449fe73a58a23e67acad6acb6357d2f2da2bf726394c5ebd37963ae0c2d856667900e43bdadf013edd93e7420a1155e8fa131487e1ccf6548150c5d7a8af7291d14e55841371f3ebec5ec848766ff982cfd9940e8cdb6995d4a919fc91080851aa5bd6fc980b4d971b6d44ea319f16c1dbe3aca83bad9e52be00bdf3fa0e29e0f175d26f4aac385ee78b065e4f5e6038ae1834fb6ca0b03a97fddaa8f6354541897b39239b464aff7dd0a34d85b1283393c57b3f6eca85bb9b6057ff73d20b07b96a11d966a68467a18c2150bab92ae23fe6b2591ca812a17129a406fa10e6a8090904c6ca7469eeebdbf5dee83a58e6945b337fe8986c07cf78ccbbe9836c8cb2e9ea7f33a30097ebfc81c119c9963330c086b0dac8169b915d6092b7e8562a5188f6a8b8ce6200beae974c3eab4ecd234b00027c9a1d3599c3b91e2067c20aec51a0f2eef3bb82fde8ff0b9dd2efef8cb49c96dc0b9fcb1d4adf32ad455a7b24332654e9d8ddd09a0bd809b312e7fe00839afd0f79a65a48525ad831d013f85c14d08960cf62c3213626e6dc7832efe3d3ecb09f345735c091c154f04c335d00a33c05ceea89263a52018b646687f4f6b6b4f02fed302a2542e9ee106732fa01affffe7350d8f14733f903482c966079cf3597203129e6eb1f372ef33e6d3fee16529bc15d0b559ba695ba7f3c40f960ef38b5cd613565e4c3aab981ee72fee8c14be91cb23d67d616ddb0ff320ec46d24847c2c7aeb45f7764d163496671ae7431862238c0577befc37c0ee91138223070e1291826564f9d08157f2335bb539fb8e98cc180b5a191bb7fef5e6ad7e9458f012cb5b1acc582345731b16827cab9c17123e9d61c5e638b59a9eb80c08273583852164612a8d0aec7eecdb0d3cd163ceb455872411ff0c181652f121b8babea433ac93b6d5fe8f21e8e1fde4ecdf5e4daa43710e60a44a4f05d0e368bd59bcf76ea4984c78381a6a9111880e0080e69a33a113ad774ef5a025b0093cb80d48d721408c7f2ab5e0291711b023e8c9f09c485a542c25b1e603e1b3566d1cf803a44a146d1c5f2809b540defe7947f1729efb3feb7769bac4b1c4ca17abc7216f8300c396996344b0e62a3c0fc430312b9f7154cbbd9bf2f2c6e30d0b93ce688f78fdac8c6f84fc5b1c70faca3ac5995bc20f9f9b98aad488d7070adbd9be5eb3777d6eaeb5cae1c309aa4f93313ce362cd0753b67c081f5d8d5640c121f2401c90cf6b301de9de12d00887be1156b48009558e37bbc5e21b3fddd1d57921b8b3c18c0f765b2f683713b0f672e03a1c6956b992a0cef16357ff16a5868981a6609c12b084027e0c8b73477cb3215bec0fd989875bb6a671d0a30c276624fbc5362935871d22adf166c1ac8383a81255654d18c4bac66c49e23a53f680314b0fe8752477e29a5637a421d9e1e20731934d274811522e93a3e689c6f4e4b678223758c5d431eaf2669fda0bd418f948cb5cd988d403df5e615999d73836b7ed774d10937b3109de41a6339f6f9168cdba800300266d9b2adcf8a3f4884911a019a27505661675b5f7c58a310f9703803d6ee9e2989101e9160b56b39966a515bb403f19f8de975a6654691cf9624a4f2dc6c0ce5982173b123e5d0d892c95318c4e4f8daf0463a9fc95f5af82d07fbe746cc6e99086f07963cfcefddacf54cfe5bfb6576dfd7ff5fa53e5eae8db265de205c5bbfee7b21d2c9f44e144f9c2cc46dbf9f39458c40298093e71c51c9a6ab37cb400829793786dbf77dd0cfafa265c7f4ffd4161374e059940aebb1d95fdaff13e410e43bc4958b800b00277969ec2f7c553b52de446b5d18ddff8cb015071c7ee22425829c0dab0d3c2761e6f92a6d634f7d830b427e879c94a9ab055718e18d1956c2d45eede992687b1a4d368b99859e016fd6362391012858b2f23dc8c9a741c741b2cb7972d3f312975ec1f9655677d30bb9002620997008b320327e2fa98e08c7f83b3229cdfedabbcfe6f3d1ba432d0f2b32053f4008a945f06b5797849efe7c8bc2a2d9ea93d9490029bbc3ac3d82a837fad04c8acaf796024056489b32d68cb2838b4eac8c93dc9dba417a9674375b23520437edb7e3a19d24b5b9fc44c5bf8bdbcd291cd9ddb87a42a463a611ec2435265fec73da93247e0a2b2ced87f39ed7b539b9c8ce5e61faf6d742ba429ed834376e1eae189447e24bcda9eed7c5abd52022000ad1d3ddcdd05c0a5781a01cc8b962e6c815b7d9b0ad3b9a6908d207112c3ccc3ac2002035445340a095fdf66964601a3f94b611e99d63b4fcc84b546a7e03a7b4b57ac102b117d84a8362727fefb8e4269a8931ddaaaa910b4ee14f0b2465a5a22eff414c2d6416e0f72b40018fc3182d8f2fa05f8140ee0094ac2b4c23e58718ced68f924230306f1576fec8d042054f15cdc6b9650ccc47bbd3b8b370f26f9f1f288c7882d6615a63644c48327e735fd5c28bbe76509f823b6d556951c955ea7df33808f841c095b86dbbedc0697a9d903c57069a07cdb95089d7f5311d9e6dd3805b851373fbd8557f4d1d308485becbb456e33827c8e071dee475b64e7c75debd95076c42e9bad8bd2242b3fc6c7e5e20ee70ba09b2fb99eef72ac7c46e6e553ba5f87677e0dbcd9d87bea1a9f6f6dbb970113ce5443c882dd7eba98cc43d59e43686da8c8f5f29a6bdffb3ac24f45b96cead75ff0c90231c2efe087e4471af03831af0ca0e7cf166fd14f102212889ac46e48b243001eade781c5803c75eb21469fdb5bc3addc5e4ffc438c45d80f21b59aae9a6ad283c34f38f179e4f2381d00bde604adcbf7d9535763b2afe81fa3905a4233d731f69c36e9e46c01b414706cb14f89d41b106c314c67cccbeb5957e7276cad3bd1a8921ba815b557a0297c80963cef8c7e25630655954ed06774041d5d4751a3142081b60fae0387b518a9cc84f0daf20862366248e27f62bcf496a64caf35fef0595a83e421e9f7e4b5f20417899f7bde82f8d2a98dca30da37a8ffc9f203a69e6fd4b1ccf75d76beb9dbfa9d74711738d20633286b6f074dedf3fc791ebad4cde1a291b3567e6338ce5796f7ed457b13b42f35e33ebd7512953ee47fa378eb2d9b05d52ca5e4e57cb7cfe3ed31dc727d66496c75b147bf8db9f83862dd8aad3b5eed3644967f6955c101f4f52958aa3df9053534f0c36fba7fb4306d6939e6335e001d066d8fea0d816b2d8bba87795f4e6619998306793da642d2c0328ec616023279d0e4d70f25ad5f07cbb988a2fecbaf070e9b0003c0babd21e23c716c7c56c63ae1b9a2f7ad553efcba3015651aa151538f77547c99eed5759396dd123ad3e74355fa351ce1e9aebfc57033473d6bb5c0596a7ac6037632cb8ff01e83bb605369a4536e62466f426f50174068eccbc6d34ea4afbc2c450cc58cf1e41efd6c4037cea7fbd18ebb2d3c55ecf7da570619477d222a726ce3efbf9a8d2e50980269d65f42ce74fd4b3821fbd3cac29baa80526dd6</script>
<div class="hbe hbe-content">
<div class="hbe hbe-input hbe-input-wave">
<input class="hbe hbe-input-field hbe-input-field-wave" type="password" id="hbePass">
<label class="hbe hbe-input-label hbe-input-label-wave" for="hbePass">
<span class="hbe hbe-input-label-content hbe-input-label-content-wave">加密文章,请输入密码查看</span>
</label>
<svg class="hbe hbe-graphic hbe-graphic-wave" width="300%" height="100%" viewBox="0 0 1200 60" preserveAspectRatio="none">
<path d="M0,56.5c0,0,298.666,0,399.333,0C448.336,56.5,513.994,46,597,46c77.327,0,135,10.5,200.999,10.5c95.996,0,402.001,0,402.001,0"></path>
</svg>
</div>
</div>
</div>
<script data-pjax src="/lib/hbe.js"></script><link href="/css/hbe.style.css" rel="stylesheet" type="text/css"></article><div class="post-copyright"><div class="post-copyright__author"><span class="post-copyright-meta"><i class="fas fa-circle-user fa-fw"></i>文章作者: </span><span class="post-copyright-info"><a href="https://wanxingge.site">牧星</a></span></div><div class="post-copyright__type"><span class="post-copyright-meta"><i class="fas fa-square-arrow-up-right fa-fw"></i>文章链接: </span><span class="post-copyright-info"><a href="https://wanxingge.site/7be7930f.html">https://wanxingge.site/7be7930f.html</a></span></div><div class="post-copyright__notice"><span class="post-copyright-meta"><i class="fas fa-circle-exclamation fa-fw"></i>版权声明: </span><span class="post-copyright-info">本博客所有文章除特别声明外,均采用 <a href="https://creativecommons.org/licenses/by-nc-sa/4.0/" rel="external nofollow noreferrer" target="_blank">CC BY-NC-SA 4.0</a> 许可协议。转载请注明来源 <a href="https://wanxingge.site" target="_blank">万星阁</a>!</span></div></div><div class="tag_share"><div class="post-meta__tag-list"><a class="post-meta__tags" href="/tags/ubuntu/">ubuntu</a><a class="post-meta__tags" href="/tags/desktop/">desktop</a><a class="post-meta__tags" href="/tags/encryptLow/">encryptLow</a></div><div class="post-share"><div class="social-share" data-image="/images/System/Linux/Ubuntu/Ubuntu.png" data-sites="facebook,twitter,wechat,weibo,qq"></div><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/butterfly-extsrc/sharejs/dist/css/share.min.css" media="print" onload="this.media='all'"><script src="https://cdn.jsdelivr.net/npm/butterfly-extsrc/sharejs/dist/js/social-share.min.js" defer></script></div></div><div class="post-reward"><div class="reward-button"><i class="fas fa-qrcode"></i>赞助</div><div class="reward-main"><ul class="reward-all"><li class="reward-item"><a href="/images/wechatpay.jpg" target="_blank"><img class="post-qr-code-img" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" data-lazy-src="/images/wechatpay.jpg" alt="微信"/></a><div class="post-qr-code-desc">微信</div></li><li class="reward-item"><a href="/images/alipay.jpg" target="_blank"><img class="post-qr-code-img" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" data-lazy-src="/images/alipay.jpg" alt="支付宝"/></a><div class="post-qr-code-desc">支付宝</div></li></ul></div></div><nav class="pagination-post" id="pagination"><a class="pagination-related no-desc" href="/3a42db2d.html" title="Vue3"><img class="cover" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" data-lazy-src="/images/programmer/javascript/livePeriod3.png" onerror="onerror=null;src='/images/404.jpg'" alt="cover of previous post"><div class="info"><div class="info-1"><div class="info-item-1">上一篇</div><div class="info-item-2">Vue3</div></div></div></a><a class="pagination-related no-desc" href="/4f3869d.html" title="运维命令"><img class="cover" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" data-lazy-src="/images/System/Shell/sudoers.jpg" onerror="onerror=null;src='/images/404.jpg'" alt="cover of next post"><div class="info text-right"><div class="info-1"><div class="info-item-1">下一篇</div><div class="info-item-2">运维命令</div></div></div></a></nav><div class="relatedPosts"><div class="headline"><i class="fas fa-thumbs-up fa-fw"></i><span>相关推荐</span></div><div class="relatedPosts-list"><a class="pagination-related" href="/369d960a.html" title="环境搭建"><img class="cover" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" data-lazy-src="/images/study/AI/nvidia.png" alt="cover"><div class="info text-center"><div class="info-1"><div class="info-item-1"><i class="far fa-calendar-alt fa-fw"></i> 2025-10-23</div><div class="info-item-2">环境搭建</div></div><div class="info-2"><div class="info-item-1">搭建深度学习环境需要完整的考虑到各种版本的对应关系,本篇博客会较为详细记录我的整个搭建过程,先附上我目前的深度学习环境基本信息: Ubuntu: 24.04 NVIDIA: GeForce GTX 1080TI Driver Version: 570.133 CUDA: 12.8 cuDNN: 9.10 pytorch: 2.7 显卡驱动 这部分由于当时深度了解更改了一下,具体可以参考这篇帖子 显卡,显卡驱动安装完毕后应当可以通过 nvidia-smi 指令来查看对应的显卡显卡输出如下图所示: 由此可以看到我们显卡驱动对应的 Cuda 版本是 12.8 版本的,为此我们下载的 Cuda 版本也要与之对应 Cuda 到 官网 下载 CUDA12.8,进入 CUDA 所在文件夹,赋予文件执行权限后安装 12chmod +x cuda_12.8.1_570.124.06_linux.runsudo ./cuda_12.8.1_570.124.06_linux.run 开始安装后需要按空格键阅读条款,时间比较长。阅读完使用条款后开始配置,一步一步慢慢来,已经安装过驱动的就不要再安装驱...</div></div></div></a><a class="pagination-related no-desc" href="/69c3279c.html" title="Git"><img class="cover" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" data-lazy-src="/images/software/Git/git1.jpg" alt="cover"><div class="info text-center"><div class="info-1"><div class="info-item-1"><i class="far fa-calendar-alt fa-fw"></i> 2025-09-23</div><div class="info-item-2">Git</div></div></div></a><a class="pagination-related no-desc" href="/3a42db2d.html" title="Vue3"><img class="cover" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" data-lazy-src="/images/programmer/javascript/livePeriod3.png" alt="cover"><div class="info text-center"><div class="info-1"><div class="info-item-1"><i class="far fa-calendar-alt fa-fw"></i> 2025-10-18</div><div class="info-item-2">Vue3</div></div></div></a></div></div><hr class="custom-hr"/><div id="post-comment"><div class="comment-head"><div class="comment-headline"><i class="fas fa-comments fa-fw"></i><span> 评论</span></div></div><div class="comment-wrap"><div><div id="twikoo-wrap"></div></div></div></div></div><div class="aside-content" id="aside-content"><div class="card-widget card-info text-center"><div class="avatar-img"><img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" data-lazy-src="/images/mx.jpg" onerror="this.onerror=null;this.src='/images/mx.jpg'" alt="avatar"/></div><div class="author-info-name">牧星</div><div class="author-info-description">高山仰止,景行行止</div><div class="site-data"><a href="/archives/"><div class="headline">文章</div><div class="length-num">14</div></a><a href="/tags/"><div class="headline">标签</div><div class="length-num">18</div></a><a href="/categories/"><div class="headline">分类</div><div class="length-num">5</div></a></div><div class="card-info-social-icons"><a class="social-icon" href="https://github.com/wanstarge" rel="external nofollow noreferrer" target="_blank" title="GitHub"><i class="fab fa-github"></i></a><a class="social-icon" href="mailto:wanstarge@gmail.com" rel="external nofollow noreferrer" target="_blank" title="E-Mail"><i class="fas fa-envelope"></i></a><a class="social-icon" href="https://space.bilibili.com/501936197" rel="external nofollow noreferrer" target="_blank" title="Bilibili"><i class="fab fa-bilibili"></i></a></div></div><div class="card-widget card-announcement"><div class="item-headline"><i class="fas fa-bullhorn fa-shake"></i><span>公告</span></div><div class="announcement_content">欢迎来到万星阁的小天地</div></div><div class="sticky_layout"><div class="card-widget" id="card-toc"><div class="item-headline"><i class="fas fa-stream"></i><span>目录</span><span class="toc-percentage"></span></div><div class="toc-content toc-div-class" style="display:none"><ol class="toc"><li class="toc-item toc-level-2"><a class="toc-link" href="#%E5%9F%BA%E7%A1%80%E5%8A%9F%E8%83%BD"><span class="toc-number">1.</span> <span class="toc-text">基础功能</span></a><ol class="toc-child"><li class="toc-item toc-level-3"><a class="toc-link" href="#%E4%BB%BB%E5%8A%A1%E6%A0%8F%E5%9B%BE%E6%A0%87"><span class="toc-number">1.1.</span> <span class="toc-text">任务栏图标</span></a></li></ol></li><li class="toc-item toc-level-2"><a class="toc-link" href="#%E5%BA%94%E7%94%A8%E8%87%AA%E5%90%AF"><span class="toc-number">2.</span> <span class="toc-text">应用自启</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#%E5%B8%B8%E7%94%A8%E5%BA%94%E7%94%A8"><span class="toc-number">3.</span> <span class="toc-text">常用应用</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#%E6%A1%8C%E9%9D%A2"><span class="toc-number">4.</span> <span class="toc-text">桌面</span></a><ol class="toc-child"><li class="toc-item toc-level-3"><a class="toc-link" href="#wayland"><span class="toc-number">4.1.</span> <span class="toc-text">wayland</span></a></li></ol></li><li class="toc-item toc-level-2"><a class="toc-link" href="#%E9%97%AE%E9%A2%98"><span class="toc-number">5.</span> <span class="toc-text">问题</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#%E5%B8%B8%E7%94%A8%E5%B7%A5%E5%85%B7"><span class="toc-number">6.</span> <span class="toc-text">常用工具</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#%E5%8D%B8%E8%BD%BD-snap"><span class="toc-number">7.</span> <span class="toc-text">卸载 snap</span></a></li></ol></div></div><div class="card-widget card-recent-post"><div class="item-headline"><i class="fas fa-history"></i><span>最新文章</span></div><div class="aside-list"><div class="aside-list-item"><a class="thumbnail" href="/5c8e05d2.html" title="Anaconda"><img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" data-lazy-src="/images/programmer/python/conda_env.png" onerror="this.onerror=null;this.src='/images/404.jpg'" alt="Anaconda"/></a><div class="content"><a class="title" href="/5c8e05d2.html" title="Anaconda">Anaconda</a><time datetime="2025-11-06T03:51:07.755Z" title="发表于 2025-11-06 11:51:07">2025-11-06</time></div></div><div class="aside-list-item"><a class="thumbnail" href="/369d960a.html" title="环境搭建"><img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" data-lazy-src="/images/study/AI/nvidia.png" onerror="this.onerror=null;this.src='/images/404.jpg'" alt="环境搭建"/></a><div class="content"><a class="title" href="/369d960a.html" title="环境搭建">环境搭建</a><time datetime="2025-10-23T05:47:18.681Z" title="发表于 2025-10-23 13:47:18">2025-10-23</time></div></div><div class="aside-list-item"><a class="thumbnail" href="/4d45ebbb.html" title="Vue2"><img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" data-lazy-src="/images/programmer/javascript/livePeriod.png" onerror="this.onerror=null;this.src='/images/404.jpg'" alt="Vue2"/></a><div class="content"><a class="title" href="/4d45ebbb.html" title="Vue2">Vue2</a><time datetime="2025-10-18T16:28:48.181Z" title="发表于 2025-10-19 00:28:48">2025-10-19</time></div></div><div class="aside-list-item"><a class="thumbnail" href="/3a42db2d.html" title="Vue3"><img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" data-lazy-src="/images/programmer/javascript/livePeriod3.png" onerror="this.onerror=null;this.src='/images/404.jpg'" alt="Vue3"/></a><div class="content"><a class="title" href="/3a42db2d.html" title="Vue3">Vue3</a><time datetime="2025-10-18T14:32:31.253Z" title="发表于 2025-10-18 22:32:31">2025-10-18</time></div></div><div class="aside-list-item"><a class="thumbnail" href="/7be7930f.html" title="Ubuntu"><img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" data-lazy-src="/images/System/Linux/Ubuntu/Ubuntu.png" onerror="this.onerror=null;this.src='/images/404.jpg'" alt="Ubuntu"/></a><div class="content"><a class="title" href="/7be7930f.html" title="Ubuntu">Ubuntu</a><time datetime="2025-09-23T08:25:23.294Z" title="发表于 2025-09-23 16:25:23">2025-09-23</time></div></div></div></div></div></div></main><footer id="footer" style="background: f0f0f0;"><div class="footer-other"><div class="footer-copyright"><span class="copyright">© 2021 - 2025 By 牧星</span><span class="framework-info"><span>框架 </span><a target="_blank" rel="noopener external nofollow noreferrer" href="https://hexo.io">Hexo</a><span class="footer-separator">|</span><span>主题 </span><a target="_blank" rel="noopener external nofollow noreferrer" href="https://github.com/jerryc127/hexo-theme-butterfly">Butterfly</a></span></div></div></footer></div><div id="rightside"><div id="rightside-config-hide"><button id="readmode" type="button" title="阅读模式"><i class="fas fa-book-open"></i></button><button id="darkmode" type="button" title="日间和夜间模式切换"><i class="fas fa-adjust"></i></button><button id="hide-aside-btn" type="button" title="单栏和双栏切换"><i class="fas fa-arrows-alt-h"></i></button></div><div id="rightside-config-show"><button id="rightside-config" type="button" title="设置"><i class="fas fa-cog fa-spin"></i></button><button class="close" id="mobile-toc-button" type="button" title="目录"><i class="fas fa-list-ul"></i></button><a id="to_comment" href="#post-comment" title="前往评论"><i class="fas fa-comments"></i></a><button id="go-up" type="button" title="回到顶部"><span class="scroll-percent"></span><i class="fas fa-arrow-up"></i></button></div></div><div><script src="/js/utils.js"></script><script src="/js/main.js"></script><script src="https://cdn.jsdelivr.net/npm/medium-zoom/dist/medium-zoom.min.js"></script><script src="https://cdn.jsdelivr.net/npm/vanilla-lazyload/dist/lazyload.iife.min.js"></script><div class="js-pjax"><script>(async () => {
const showKatex = () => {
document.querySelectorAll('#article-container .katex').forEach(el => el.classList.add('katex-show'))
}
if (!window.katex_js_css) {
window.katex_js_css = true
await btf.getCSS('https://cdn.jsdelivr.net/npm/katex/dist/katex.min.css')
if (false) {
await btf.getScript('https://cdn.jsdelivr.net/npm/katex/dist/contrib/copy-tex.min.js')
}
}
showKatex()
})()</script><script>(() => {
const isShuoshuo = GLOBAL_CONFIG_SITE.pageType === 'shuoshuo'
const option = null
const getCount = () => {
const countELement = document.getElementById('twikoo-count')
if(!countELement) return
twikoo.getCommentsCount({
envId: 'https://twikoo.wanxingge.site/',
region: '',
urls: [window.location.pathname],
includeReply: false
}).then(res => {
countELement.textContent = res[0].count
}).catch(err => {
console.error(err)
})
}
const init = (el = document, path = location.pathname) => {
twikoo.init({
el: el.querySelector('#twikoo-wrap'),
envId: 'https://twikoo.wanxingge.site/',
region: '',
onCommentLoaded: () => {
btf.loadLightbox(document.querySelectorAll('#twikoo .tk-content img:not(.tk-owo-emotion)'))
},
...option,
path: isShuoshuo ? path : (option && option.path) || path
})
GLOBAL_CONFIG_SITE.pageType === 'post' && getCount()
isShuoshuo && (window.shuoshuoComment.destroyTwikoo = () => {
if (el.children.length) {
el.innerHTML = ''
el.classList.add('no-comment')
}
})
}
const loadTwikoo = (el, path) => {
if (typeof twikoo === 'object') setTimeout(() => init(el, path), 0)
else btf.getScript('https://cdn.jsdelivr.net/npm/twikoo/dist/twikoo.all.min.js').then(() => init(el, path))
}
if (isShuoshuo) {
'Twikoo' === 'Twikoo'
? window.shuoshuoComment = { loadComment: loadTwikoo }
: window.loadOtherComment = loadTwikoo
return
}
if ('Twikoo' === 'Twikoo' || !true) {
if (true) btf.loadComment(document.getElementById('twikoo-wrap'), loadTwikoo)
else loadTwikoo()
} else {
window.loadOtherComment = loadTwikoo
}
})()</script></div><script defer="defer" id="ribbon" src="https://cdn.jsdelivr.net/npm/butterfly-extsrc/dist/canvas-ribbon.min.js" size="150" alpha="0.6" zIndex="-1" mobile="true" data-click="false"></script><script id="canvas_nest" defer="defer" color="0,0,255" opacity="0.7" zIndex="-1" count="99" mobile="false" src="https://cdn.jsdelivr.net/npm/butterfly-extsrc/dist/canvas-nest.min.js"></script><script src="https://cdn.jsdelivr.net/npm/butterfly-extsrc/dist/activate-power-mode.min.js"></script><script>POWERMODE.colorful = true;
POWERMODE.shake = false;
POWERMODE.mobile = true;
document.body.addEventListener('input', POWERMODE);
</script><script id="click-show-text" src="https://cdn.jsdelivr.net/npm/butterfly-extsrc/dist/click-show-text.min.js" data-mobile="false" data-text="I,LOVE,YOU" data-fontsize="15px" data-random="false" async="async"></script><script src="https://cdn.jsdelivr.net/npm/pjax/pjax.min.js"></script><script>(() => {
const pjaxSelectors = ["head > title","#config-diff","#body-wrap","#rightside-config-hide","#rightside-config-show",".js-pjax"]
window.pjax = new Pjax({
elements: 'a:not([target="_blank"])',
selectors: pjaxSelectors,
cacheBust: false,
analytics: false,
scrollRestoration: false
})
const triggerPjaxFn = (val) => {
if (!val) return
Object.values(val).forEach(fn => {
try {
fn()
} catch (err) {
console.debug('Pjax callback failed:', err)
}
})
}
document.addEventListener('pjax:send', () => {
// removeEventListener
btf.removeGlobalFnEvent('pjaxSendOnce')
btf.removeGlobalFnEvent('themeChange')
// reset readmode
const $bodyClassList = document.body.classList
if ($bodyClassList.contains('read-mode')) $bodyClassList.remove('read-mode')
triggerPjaxFn(window.globalFn.pjaxSend)
})
document.addEventListener('pjax:complete', () => {
btf.removeGlobalFnEvent('pjaxCompleteOnce')
document.querySelectorAll('script[data-pjax]').forEach(item => {
const newScript = document.createElement('script')
const content = item.text || item.textContent || item.innerHTML || ""
Array.from(item.attributes).forEach(attr => newScript.setAttribute(attr.name, attr.value))
newScript.appendChild(document.createTextNode(content))
item.parentNode.replaceChild(newScript, item)
})
triggerPjaxFn(window.globalFn.pjaxComplete)
})
document.addEventListener('pjax:error', e => {
if (e.request.status === 404) {
const usePjax = true
true
? (usePjax ? pjax.loadUrl('/404.html') : window.location.href = '/404.html')
: window.location.href = e.request.responseURL
}
})
})()</script><script async data-pjax src="//busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js"></script><div id="local-search"><div class="search-dialog"><nav class="search-nav"><span class="search-dialog-title">搜索</span><i class="fas fa-spinner fa-pulse" id="loading-status" hidden="hidden"></i><button class="search-close-button"><i class="fas fa-times"></i></button></nav><div class="text-center" id="loading-database"><i class="fas fa-spinner fa-pulse"></i><span> 数据加载中</span></div><div class="local-search-input"><input placeholder="请输入要搜索的内容" type="text"/></div><hr/><div id="local-search-results"></div><div class="ais-Pagination" id="local-search-pagination" style="display:none;"><ul class="ais-Pagination-list"></ul></div><div id="local-search-stats"></div></div><div id="search-mask"></div><script src="/js/search/local-search.js"></script></div></div></body></html>