nonebot-plugin-l4d2-server 0.5.0__py3-none-any.whl → 0.5.2__py3-none-any.whl

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 (49) hide show
  1. LICENSE +674 -674
  2. README.md +365 -349
  3. nonebot_plugin_l4d2_server/__init__.py +1 -1
  4. nonebot_plugin_l4d2_server/chrome.py +45 -0
  5. nonebot_plugin_l4d2_server/command.py +232 -233
  6. nonebot_plugin_l4d2_server/config.py +210 -318
  7. nonebot_plugin_l4d2_server/data/L4D2/image/template/anne.html +60 -60
  8. nonebot_plugin_l4d2_server/data/L4D2/image/template/fingerprint.svg +15 -15
  9. nonebot_plugin_l4d2_server/data/L4D2/image/template/help.html +233 -233
  10. nonebot_plugin_l4d2_server/data/L4D2/image/template/help_dack.html +231 -231
  11. nonebot_plugin_l4d2_server/data/L4D2/image/template/ip.html +48 -48
  12. nonebot_plugin_l4d2_server/data/L4D2/image/template/l.svg +9 -9
  13. nonebot_plugin_l4d2_server/data/L4D2/image/template/vue.css +530 -530
  14. nonebot_plugin_l4d2_server/l4d2_anne/__init__.py +251 -251
  15. nonebot_plugin_l4d2_server/l4d2_anne/analysis.py +51 -51
  16. nonebot_plugin_l4d2_server/l4d2_anne/anne_telecom.py +75 -75
  17. nonebot_plugin_l4d2_server/l4d2_anne/server.py +65 -65
  18. nonebot_plugin_l4d2_server/l4d2_anne/startand.py +17 -17
  19. nonebot_plugin_l4d2_server/l4d2_data/__init__.py +91 -91
  20. nonebot_plugin_l4d2_server/l4d2_data/config.py +17 -17
  21. nonebot_plugin_l4d2_server/l4d2_data/players.py +87 -87
  22. nonebot_plugin_l4d2_server/l4d2_data/serverip.py +32 -32
  23. nonebot_plugin_l4d2_server/l4d2_file/__init__.py +122 -122
  24. nonebot_plugin_l4d2_server/l4d2_file/ayromote.py +56 -56
  25. nonebot_plugin_l4d2_server/l4d2_file/remote.py +63 -66
  26. nonebot_plugin_l4d2_server/l4d2_image/__init__.py +103 -103
  27. nonebot_plugin_l4d2_server/l4d2_image/download.py +101 -101
  28. nonebot_plugin_l4d2_server/l4d2_image/htmlimg.py +32 -32
  29. nonebot_plugin_l4d2_server/l4d2_image/send_image_tool.py +32 -32
  30. nonebot_plugin_l4d2_server/l4d2_image/steam.py +83 -83
  31. nonebot_plugin_l4d2_server/l4d2_image/vtfs.py +40 -40
  32. nonebot_plugin_l4d2_server/l4d2_queries/__init__.py +114 -114
  33. nonebot_plugin_l4d2_server/l4d2_queries/api.py +43 -43
  34. nonebot_plugin_l4d2_server/l4d2_queries/ohter.py +35 -25
  35. nonebot_plugin_l4d2_server/l4d2_queries/qqgroup.py +288 -288
  36. nonebot_plugin_l4d2_server/l4d2_server/__init__.py +61 -61
  37. nonebot_plugin_l4d2_server/l4d2_server/rcon.py +28 -28
  38. nonebot_plugin_l4d2_server/l4d2_server/workshop.py +50 -50
  39. nonebot_plugin_l4d2_server/l4d2_web/web.py +234 -234
  40. nonebot_plugin_l4d2_server/l4d2_web/webUI.py +241 -241
  41. nonebot_plugin_l4d2_server/message.py +58 -58
  42. nonebot_plugin_l4d2_server/seach.py +33 -33
  43. nonebot_plugin_l4d2_server/txt_to_img.py +64 -64
  44. nonebot_plugin_l4d2_server/utils.py +272 -272
  45. {nonebot_plugin_l4d2_server-0.5.0.dist-info → nonebot_plugin_l4d2_server-0.5.2.dist-info}/LICENSE +674 -674
  46. {nonebot_plugin_l4d2_server-0.5.0.dist-info → nonebot_plugin_l4d2_server-0.5.2.dist-info}/METADATA +47 -32
  47. nonebot_plugin_l4d2_server-0.5.2.dist-info/RECORD +54 -0
  48. nonebot_plugin_l4d2_server-0.5.0.dist-info/RECORD +0 -53
  49. {nonebot_plugin_l4d2_server-0.5.0.dist-info → nonebot_plugin_l4d2_server-0.5.2.dist-info}/WHEEL +0 -0
@@ -1,231 +1,231 @@
1
- <html>
2
- <head>
3
- <style>
4
- body {
5
- margin: 0px;
6
- zoom: 150%;
7
- background-color: #0D1117;
8
- }
9
- .image {
10
- display: flex;
11
- flex-direction: column;
12
- overflow: scroll;
13
- width: max-content;
14
- padding: 20px;
15
- }
16
- .head {
17
- display: flex;
18
- flex-direction: row;
19
- align-items: center;
20
- justify-content: space-between;
21
- background-color: #161B22;
22
- padding-left: 20px;
23
- padding-right: 20px;
24
- padding-top: 10px;
25
- padding-bottom: 10px;
26
- border: 2px solid;
27
- border-radius: 50px;
28
- border-color: #1a1a1a;
29
- font-size: 16px;
30
- margin-bottom: 20px;
31
- }
32
-
33
- .plugins {
34
- display: grid;
35
- grid-template-columns: auto auto auto;
36
- row-gap: 20px;
37
- column-gap: 20px;
38
- margin-bottom: 20px;
39
- }
40
- .plugin {
41
- display: flex;
42
- padding: 5px;
43
- border: 1px solid;
44
- border-radius: 5px;
45
- border-color: #161B22;
46
- box-shadow: 0px 2px 6px 1px rgba(0, 0, 0, 0.2);
47
- background-color: #1a1a1a;
48
- }
49
- .plugin_meta {
50
- display: flex;
51
- flex-direction: column;
52
- padding: 5px;
53
- width: 250px;
54
- justify-content: space-between;
55
- }
56
- .plugin_name {
57
- font-size: 20px;
58
- }
59
- .plugin_description {
60
- font-size: 15px;
61
- color: gray;
62
- margin-top: 5px;
63
- margin-bottom: 5px;
64
- }
65
- .plugin_meta_line1 {
66
- display: flex;
67
- flex-direction: row;
68
- align-items: center;
69
- justify-content: space-between;
70
- }
71
- .plugin_meta_line3 {
72
- display: flex;
73
- flex-direction: row;
74
- align-items: center;
75
- }
76
- .package_name_label {
77
- background-image: url(./fingerprint.svg);
78
- width: 13px;
79
- height: 13px;
80
- margin-right: 8px;
81
- }
82
- .package_name {
83
- font-size: 13px;
84
- color: gray;
85
- }
86
- .switch {
87
- position: relative;
88
- display: inline-block;
89
- width: 40px;
90
- height: 24px;
91
- }
92
- .slider {
93
- position: absolute;
94
- cursor: pointer;
95
- top: 0;
96
- left: 0;
97
- right: 0;
98
- bottom: 0;
99
- background-color: #ccc;
100
- }
101
- .slider:before {
102
- position: absolute;
103
- content: "";
104
- height: 16px;
105
- width: 16px;
106
- left: 4px;
107
- bottom: 4px;
108
- background-color: white;
109
- }
110
- .switch input {
111
- display: none;
112
- }
113
- .switch input:checked + .slider {
114
- background-color: rgba(46, 160, 67);
115
- }
116
- .switch input:checked + .slider:before {
117
- -webkit-transform: translateX(16px);
118
- -ms-transform: translateX(16px);
119
- transform: translateX(16px);
120
- }
121
- .slider.round {
122
- border-radius: 24px;
123
- }
124
- .slider.round:before {
125
- border-radius: 50%;
126
- }
127
- .checkbox {
128
- visibility: hidden;
129
- }
130
- .slider.locked {
131
- opacity: 0.5;
132
- }
133
- .switch input + span .lock {
134
- width: 8px;
135
- height: 7px;
136
- background: #99a3ba;
137
- position: absolute;
138
- left: 8px;
139
- bottom: 7px;
140
- border-radius: 2px;
141
- display: block;
142
- z-index: 1;
143
- transition: all 0.45s ease;
144
- }
145
- .switch input + span .lock:before {
146
- content: "";
147
- width: 2px;
148
- height: 2px;
149
- border-radius: 1px;
150
- background: #fff;
151
- position: absolute;
152
- display: block;
153
- left: 50%;
154
- top: 50%;
155
- margin: -1px 0 0 -1px;
156
- }
157
- .switch input + span .lock:after {
158
- content: "";
159
- border-top-left-radius: 4px;
160
- border-top-right-radius: 4px;
161
- border: 1px solid #99a3ba;
162
- border-bottom: 0;
163
- width: 4px;
164
- height: 4px;
165
- left: 1px;
166
- bottom: 6px;
167
- position: absolute;
168
- z-index: 1;
169
- -webkit-transform-origin: 0 100%;
170
- transform-origin: 0 100%;
171
- transition: all 0.45s ease;
172
- }
173
- .switch input:checked + span .lock {
174
- background: #5628ee;
175
- -webkit-transform: translateX(16px);
176
- -ms-transform: translateX(16px);
177
- transform: translateX(16px);
178
- }
179
- .lock {
180
- visibility: hidden;
181
- }
182
- .lock.locked {
183
- visibility: inherit;
184
- }
185
- </style>
186
- </head>
187
- <body>
188
- <div class="image">
189
- <div class="head">
190
- <span><b><font color="Silver">已加载服务器</font></b></span>
191
- <span><font color="Silver">发送“<b>服务器昵称/序号</b>”查看详情</font></span>
192
- </div>
193
- <div class="plugins">
194
- {% for plugin in plugins %}
195
- <div class="plugin">
196
- <div class="plugin_meta">
197
- <div class="plugin_meta_line1">
198
- <div class="plugin_name"><font color="DeepSkyBlue">{{ plugin.number }}:{{ plugin.name }}</font></div>
199
- <div class="plugin_status">
200
- <label class="switch">
201
- <input class="checkbox" type="checkbox" {% if plugin.enabled %} checked {% endif %} />
202
- <span class="slider round {% if plugin.locked %} locked {% endif %}">
203
- <span class="lock {% if plugin.locked %} locked {% endif %}"></span>
204
- </span>
205
- </label>
206
- </div>
207
- </div>
208
- <div class="plugin_meta_line2">
209
- <font color="LightSkyBlue">{{ plugin.map_ }}</font><br>
210
- {% for Player in plugin.Players %}
211
- <font color="LightGray">{{ Player }}</font><br>
212
- {% endfor %}
213
- </div>
214
- <div class="plugin_meta_line3">
215
- <div class="package_name_label"></div>
216
- <div class="package_name"><font color="LightGray">{{ plugin.max_players }}</font></div>
217
- </div>
218
- </div>
219
- </div>
220
- {% endfor %}
221
- </div>
222
- <div class="head">
223
- <span><b><font color="Silver">©爱丽数码</font></b></span>
224
- <span><font color="Silver">github*Agnes4m</font></span>
225
- </div>
226
- </div>
227
- </body>
228
- </html>
229
-
230
-
231
- /*暗黑风格-ArcPav*/
1
+ <html>
2
+ <head>
3
+ <style>
4
+ body {
5
+ margin: 0px;
6
+ zoom: 150%;
7
+ background-color: #0D1117;
8
+ }
9
+ .image {
10
+ display: flex;
11
+ flex-direction: column;
12
+ overflow: scroll;
13
+ width: max-content;
14
+ padding: 20px;
15
+ }
16
+ .head {
17
+ display: flex;
18
+ flex-direction: row;
19
+ align-items: center;
20
+ justify-content: space-between;
21
+ background-color: #161B22;
22
+ padding-left: 20px;
23
+ padding-right: 20px;
24
+ padding-top: 10px;
25
+ padding-bottom: 10px;
26
+ border: 2px solid;
27
+ border-radius: 50px;
28
+ border-color: #1a1a1a;
29
+ font-size: 16px;
30
+ margin-bottom: 20px;
31
+ }
32
+
33
+ .plugins {
34
+ display: grid;
35
+ grid-template-columns: auto auto auto;
36
+ row-gap: 20px;
37
+ column-gap: 20px;
38
+ margin-bottom: 20px;
39
+ }
40
+ .plugin {
41
+ display: flex;
42
+ padding: 5px;
43
+ border: 1px solid;
44
+ border-radius: 5px;
45
+ border-color: #161B22;
46
+ box-shadow: 0px 2px 6px 1px rgba(0, 0, 0, 0.2);
47
+ background-color: #1a1a1a;
48
+ }
49
+ .plugin_meta {
50
+ display: flex;
51
+ flex-direction: column;
52
+ padding: 5px;
53
+ width: 250px;
54
+ justify-content: space-between;
55
+ }
56
+ .plugin_name {
57
+ font-size: 20px;
58
+ }
59
+ .plugin_description {
60
+ font-size: 15px;
61
+ color: gray;
62
+ margin-top: 5px;
63
+ margin-bottom: 5px;
64
+ }
65
+ .plugin_meta_line1 {
66
+ display: flex;
67
+ flex-direction: row;
68
+ align-items: center;
69
+ justify-content: space-between;
70
+ }
71
+ .plugin_meta_line3 {
72
+ display: flex;
73
+ flex-direction: row;
74
+ align-items: center;
75
+ }
76
+ .package_name_label {
77
+ background-image: url(./fingerprint.svg);
78
+ width: 13px;
79
+ height: 13px;
80
+ margin-right: 8px;
81
+ }
82
+ .package_name {
83
+ font-size: 13px;
84
+ color: gray;
85
+ }
86
+ .switch {
87
+ position: relative;
88
+ display: inline-block;
89
+ width: 40px;
90
+ height: 24px;
91
+ }
92
+ .slider {
93
+ position: absolute;
94
+ cursor: pointer;
95
+ top: 0;
96
+ left: 0;
97
+ right: 0;
98
+ bottom: 0;
99
+ background-color: #ccc;
100
+ }
101
+ .slider:before {
102
+ position: absolute;
103
+ content: "";
104
+ height: 16px;
105
+ width: 16px;
106
+ left: 4px;
107
+ bottom: 4px;
108
+ background-color: white;
109
+ }
110
+ .switch input {
111
+ display: none;
112
+ }
113
+ .switch input:checked + .slider {
114
+ background-color: rgba(46, 160, 67);
115
+ }
116
+ .switch input:checked + .slider:before {
117
+ -webkit-transform: translateX(16px);
118
+ -ms-transform: translateX(16px);
119
+ transform: translateX(16px);
120
+ }
121
+ .slider.round {
122
+ border-radius: 24px;
123
+ }
124
+ .slider.round:before {
125
+ border-radius: 50%;
126
+ }
127
+ .checkbox {
128
+ visibility: hidden;
129
+ }
130
+ .slider.locked {
131
+ opacity: 0.5;
132
+ }
133
+ .switch input + span .lock {
134
+ width: 8px;
135
+ height: 7px;
136
+ background: #99a3ba;
137
+ position: absolute;
138
+ left: 8px;
139
+ bottom: 7px;
140
+ border-radius: 2px;
141
+ display: block;
142
+ z-index: 1;
143
+ transition: all 0.45s ease;
144
+ }
145
+ .switch input + span .lock:before {
146
+ content: "";
147
+ width: 2px;
148
+ height: 2px;
149
+ border-radius: 1px;
150
+ background: #fff;
151
+ position: absolute;
152
+ display: block;
153
+ left: 50%;
154
+ top: 50%;
155
+ margin: -1px 0 0 -1px;
156
+ }
157
+ .switch input + span .lock:after {
158
+ content: "";
159
+ border-top-left-radius: 4px;
160
+ border-top-right-radius: 4px;
161
+ border: 1px solid #99a3ba;
162
+ border-bottom: 0;
163
+ width: 4px;
164
+ height: 4px;
165
+ left: 1px;
166
+ bottom: 6px;
167
+ position: absolute;
168
+ z-index: 1;
169
+ -webkit-transform-origin: 0 100%;
170
+ transform-origin: 0 100%;
171
+ transition: all 0.45s ease;
172
+ }
173
+ .switch input:checked + span .lock {
174
+ background: #5628ee;
175
+ -webkit-transform: translateX(16px);
176
+ -ms-transform: translateX(16px);
177
+ transform: translateX(16px);
178
+ }
179
+ .lock {
180
+ visibility: hidden;
181
+ }
182
+ .lock.locked {
183
+ visibility: inherit;
184
+ }
185
+ </style>
186
+ </head>
187
+ <body>
188
+ <div class="image">
189
+ <div class="head">
190
+ <span><b><font color="Silver">已加载服务器</font></b></span>
191
+ <span><font color="Silver">发送“<b>服务器昵称/序号</b>”查看详情</font></span>
192
+ </div>
193
+ <div class="plugins">
194
+ {% for plugin in plugins %}
195
+ <div class="plugin">
196
+ <div class="plugin_meta">
197
+ <div class="plugin_meta_line1">
198
+ <div class="plugin_name"><font color="DeepSkyBlue">{{ plugin.number }}:{{ plugin.name }}</font></div>
199
+ <div class="plugin_status">
200
+ <label class="switch">
201
+ <input class="checkbox" type="checkbox" {% if plugin.enabled %} checked {% endif %} />
202
+ <span class="slider round {% if plugin.locked %} locked {% endif %}">
203
+ <span class="lock {% if plugin.locked %} locked {% endif %}"></span>
204
+ </span>
205
+ </label>
206
+ </div>
207
+ </div>
208
+ <div class="plugin_meta_line2">
209
+ <font color="LightSkyBlue">{{ plugin.map_ }}</font><br>
210
+ {% for Player in plugin.Players %}
211
+ <font color="LightGray">{{ Player }}</font><br>
212
+ {% endfor %}
213
+ </div>
214
+ <div class="plugin_meta_line3">
215
+ <div class="package_name_label"></div>
216
+ <div class="package_name"><font color="LightGray">{{ plugin.max_players }}</font></div>
217
+ </div>
218
+ </div>
219
+ </div>
220
+ {% endfor %}
221
+ </div>
222
+ <div class="head">
223
+ <span><b><font color="Silver">©爱丽数码</font></b></span>
224
+ <span><font color="Silver">github*Agnes4m</font></span>
225
+ </div>
226
+ </div>
227
+ </body>
228
+ </html>
229
+
230
+
231
+ /*暗黑风格-ArcPav*/
@@ -1,49 +1,49 @@
1
- <!DOCTYPE html>
2
- <html class="pc">
3
- <head>
4
- <link rel="stylesheet" type="text/css" href="vue.css">
5
- <title>Server Information</title>
6
- <style>
7
- table {
8
- border-collapse: collapse;
9
- width: 100%;
10
- }
11
- th, td {
12
- border: 1px solid #ddd;
13
- padding: 8px;
14
- text-align: left;
15
- }
16
- th {
17
- background-color: #f2f2f2;
18
- }
19
- </style>
20
- </head>
21
- <body style="background-image: url('back2.jpg'); background-size: 1200px 1800px;">
22
- <div class="myinfo">
23
- <table>
24
- {% for i in range(0, data|length, 3) %}
25
- <tr>
26
- {% for j in range(i, i + 3) %}
27
- {% if j < data|length %}
28
- <td>
29
- <font color="red">{{ data[j].number }}</font><br>
30
- <font color="yellow">{{ data[j].name }}</font><br>
31
- <font color="gray">{{ data[j].ip }}</font><br>
32
- <font color="blue">{{ data[j].map_ }}</font><br>
33
- {% for Player in data[j].Players %}
34
- <font color="green">{{ Player }}</font><br>
35
- {% endfor %}
36
- <font color="yellow">{{ data[j].max_players }}{{data[j].ping}}</font>
37
- </td>
38
- {% endif %}
39
- {% endfor %}
40
- </tr>
41
- {% endfor %}
42
- </table>
43
- <h5><center>©爱丽数码</center></br>
44
- <center>
45
- github.com/Agnes4m/nonebot_plugin_l4d2_server
46
- </center>
47
- </h5>
48
- </div>
1
+ <!DOCTYPE html>
2
+ <html class="pc">
3
+ <head>
4
+ <link rel="stylesheet" type="text/css" href="vue.css">
5
+ <title>Server Information</title>
6
+ <style>
7
+ table {
8
+ border-collapse: collapse;
9
+ width: 100%;
10
+ }
11
+ th, td {
12
+ border: 1px solid #ddd;
13
+ padding: 8px;
14
+ text-align: left;
15
+ }
16
+ th {
17
+ background-color: #f2f2f2;
18
+ }
19
+ </style>
20
+ </head>
21
+ <body style="background-image: url('back2.jpg'); background-size: 1200px 1800px;">
22
+ <div class="myinfo">
23
+ <table>
24
+ {% for i in range(0, data|length, 3) %}
25
+ <tr>
26
+ {% for j in range(i, i + 3) %}
27
+ {% if j < data|length %}
28
+ <td>
29
+ <font color="red">{{ data[j].number }}</font><br>
30
+ <font color="yellow">{{ data[j].name }}</font><br>
31
+ <font color="gray">{{ data[j].ip }}</font><br>
32
+ <font color="blue">{{ data[j].map_ }}</font><br>
33
+ {% for Player in data[j].Players %}
34
+ <font color="green">{{ Player }}</font><br>
35
+ {% endfor %}
36
+ <font color="yellow">{{ data[j].max_players }}{{data[j].ping}}</font>
37
+ </td>
38
+ {% endif %}
39
+ {% endfor %}
40
+ </tr>
41
+ {% endfor %}
42
+ </table>
43
+ <h5><center>©爱丽数码</center></br>
44
+ <center>
45
+ github.com/Agnes4m/nonebot_plugin_l4d2_server
46
+ </center>
47
+ </h5>
48
+ </div>
49
49
  </html>
@@ -1,10 +1,10 @@
1
- <svg
2
- role="img"
3
- viewBox="0 0 24 24"
4
- xmlns="http://www.w3.org/2000/svg">
5
- <title>Linux</title>
6
- >
7
- <path
8
- fill="currentColor"
9
- d="M12.504 0c-.155 0-.315.008-.48.021-4.226.333-3.105 4.807-3.17 6.298-.076 1.092-.3 1.953-1.05 3.02-.885 1.051-2.127 2.75-2.716 4.521-.278.832-.41 1.684-.287 2.489a.424.424 0 00-.11.135c-.26.268-.45.6-.663.839-.199.199-.485.267-.797.4-.313.136-.658.269-.864.68-.09.189-.136.394-.132.602 0 .199.027.4.055.536.058.399.116.728.04.97-.249.68-.28 1.145-.106 1.484.174.334.535.47.94.601.81.2 1.91.135 2.774.6.926.466 1.866.67 2.616.47.526-.116.97-.464 1.208-.946.587-.003 1.23-.269 2.26-.334.699-.058 1.574.267 2.577.2.025.134.063.198.114.333l.003.003c.391.778 1.113 1.132 1.884 1.071.771-.06 1.592-.536 2.257-1.306.631-.765 1.683-1.084 2.378-1.503.348-.199.629-.469.649-.853.023-.4-.2-.811-.714-1.376v-.097l-.003-.003c-.17-.2-.25-.535-.338-.926-.085-.401-.182-.786-.492-1.046h-.003c-.059-.054-.123-.067-.188-.135a.357.357 0 00-.19-.064c.431-1.278.264-2.55-.173-3.694-.533-1.41-1.465-2.638-2.175-3.483-.796-1.005-1.576-1.957-1.56-3.368.026-2.152.236-6.133-3.544-6.139zm.529 3.405h.013c.213 0 .396.062.584.198.19.135.33.332.438.533.105.259.158.459.166.724 0-.02.006-.04.006-.06v.105a.086.086 0 01-.004-.021l-.004-.024a1.807 1.807 0 01-.15.706.953.953 0 01-.213.335.71.71 0 00-.088-.042c-.104-.045-.198-.064-.284-.133a1.312 1.312 0 00-.22-.066c.05-.06.146-.133.183-.198.053-.128.082-.264.088-.402v-.02a1.21 1.21 0 00-.061-.4c-.045-.134-.101-.2-.183-.333-.084-.066-.167-.132-.267-.132h-.016c-.093 0-.176.03-.262.132a.8.8 0 00-.205.334 1.18 1.18 0 00-.09.4v.019c.002.089.008.179.02.267-.193-.067-.438-.135-.607-.202a1.635 1.635 0 01-.018-.2v-.02a1.772 1.772 0 01.15-.768c.082-.22.232-.406.43-.533a.985.985 0 01.594-.2zm-2.962.059h.036c.142 0 .27.048.399.135.146.129.264.288.344.465.09.199.14.4.153.667v.004c.007.134.006.2-.002.266v.08c-.03.007-.056.018-.083.024-.152.055-.274.135-.393.2.012-.09.013-.18.003-.267v-.015c-.012-.133-.04-.2-.082-.333a.613.613 0 00-.166-.267.248.248 0 00-.183-.064h-.021c-.071.006-.13.04-.186.132a.552.552 0 00-.12.27.944.944 0 00-.023.33v.015c.012.135.037.2.08.334.046.134.098.2.166.268.01.009.02.018.034.024-.07.057-.117.07-.176.136a.304.304 0 01-.131.068 2.62 2.62 0 01-.275-.402 1.772 1.772 0 01-.155-.667 1.759 1.759 0 01.08-.668 1.43 1.43 0 01.283-.535c.128-.133.26-.2.418-.2zm1.37 1.706c.332 0 .733.065 1.216.399.293.2.523.269 1.052.468h.003c.255.136.405.266.478.399v-.131a.571.571 0 01.016.47c-.123.31-.516.643-1.063.842v.002c-.268.135-.501.333-.775.465-.276.135-.588.292-1.012.267a1.139 1.139 0 01-.448-.067 3.566 3.566 0 01-.322-.198c-.195-.135-.363-.332-.612-.465v-.005h-.005c-.4-.246-.616-.512-.686-.71-.07-.268-.005-.47.193-.6.224-.135.38-.271.483-.336.104-.074.143-.102.176-.131h.002v-.003c.169-.202.436-.47.839-.601.139-.036.294-.065.466-.065zm2.8 2.142c.358 1.417 1.196 3.475 1.735 4.473.286.534.855 1.659 1.102 3.024.156-.005.33.018.513.064.646-1.671-.546-3.467-1.089-3.966-.22-.2-.232-.335-.123-.335.59.534 1.365 1.572 1.646 2.757.13.535.16 1.104.021 1.67.067.028.135.06.205.067 1.032.534 1.413.938 1.23 1.537v-.043c-.06-.003-.12 0-.18 0h-.016c.151-.467-.182-.825-1.065-1.224-.915-.4-1.646-.336-1.77.465-.008.043-.013.066-.018.135-.068.023-.139.053-.209.064-.43.268-.662.669-.793 1.187-.13.533-.17 1.156-.205 1.869v.003c-.02.334-.17.838-.319 1.35-1.5 1.072-3.58 1.538-5.348.334a2.645 2.645 0 00-.402-.533 1.45 1.45 0 00-.275-.333c.182 0 .338-.03.465-.067a.615.615 0 00.314-.334c.108-.267 0-.697-.345-1.163-.345-.467-.931-.995-1.788-1.521-.63-.4-.986-.87-1.15-1.396-.165-.534-.143-1.085-.015-1.645.245-1.07.873-2.11 1.274-2.763.107-.065.037.135-.408.974-.396.751-1.14 2.497-.122 3.854a8.123 8.123 0 01.647-2.876c.564-1.278 1.743-3.504 1.836-5.268.048.036.217.135.289.202.218.133.38.333.59.465.21.201.477.335.876.335.039.003.075.006.11.006.412 0 .73-.134.997-.268.29-.134.52-.334.74-.4h.005c.467-.135.835-.402 1.044-.7zm2.185 8.958c.037.6.343 1.245.882 1.377.588.134 1.434-.333 1.791-.765l.211-.01c.315-.007.577.01.847.268l.003.003c.208.199.305.53.391.876.085.4.154.78.409 1.066.486.527.645.906.636 1.14l.003-.007v.018l-.003-.012c-.015.262-.185.396-.498.595-.63.401-1.746.712-2.457 1.57-.618.737-1.37 1.14-2.036 1.191-.664.053-1.237-.2-1.574-.898l-.005-.003c-.21-.4-.12-1.025.056-1.69.176-.668.428-1.344.463-1.897.037-.714.076-1.335.195-1.814.12-.465.308-.797.641-.984l.045-.022zm-10.814.049h.01c.053 0 .105.005.157.014.376.055.706.333 1.023.752l.91 1.664.003.003c.243.533.754 1.064 1.189 1.637.434.598.77 1.131.729 1.57v.006c-.057.744-.48 1.148-1.125 1.294-.645.135-1.52.002-2.395-.464-.968-.536-2.118-.469-2.857-.602-.369-.066-.61-.2-.723-.4-.11-.2-.113-.602.123-1.23v-.004l.002-.003c.117-.334.03-.752-.027-1.118-.055-.401-.083-.71.043-.94.16-.334.396-.4.69-.533.294-.135.64-.202.915-.47h.002v-.002c.256-.268.445-.601.668-.838.19-.201.38-.336.663-.336zm7.159-9.074c-.435.201-.945.535-1.488.535-.542 0-.97-.267-1.28-.466-.154-.134-.28-.268-.373-.335-.164-.134-.144-.333-.074-.333.109.016.129.134.199.2.096.066.215.2.36.333.292.2.68.467 1.167.467.485 0 1.053-.267 1.398-.466.195-.135.445-.334.648-.467.156-.136.149-.267.279-.267.128.016.034.134-.147.332a8.097 8.097 0 01-.69.468zm-1.082-1.583V5.64c-.006-.02.013-.042.029-.05.074-.043.18-.027.26.004.063 0 .16.067.15.135-.006.049-.085.066-.135.066-.055 0-.092-.043-.141-.068-.052-.018-.146-.008-.163-.065zm-.551 0c-.02.058-.113.049-.166.066-.047.025-.086.068-.14.068-.05 0-.13-.02-.136-.068-.01-.066.088-.133.15-.133.08-.031.184-.047.259-.005.019.009.036.03.03.05v.02h.003z"/>
1
+ <svg
2
+ role="img"
3
+ viewBox="0 0 24 24"
4
+ xmlns="http://www.w3.org/2000/svg">
5
+ <title>Linux</title>
6
+ >
7
+ <path
8
+ fill="currentColor"
9
+ d="M12.504 0c-.155 0-.315.008-.48.021-4.226.333-3.105 4.807-3.17 6.298-.076 1.092-.3 1.953-1.05 3.02-.885 1.051-2.127 2.75-2.716 4.521-.278.832-.41 1.684-.287 2.489a.424.424 0 00-.11.135c-.26.268-.45.6-.663.839-.199.199-.485.267-.797.4-.313.136-.658.269-.864.68-.09.189-.136.394-.132.602 0 .199.027.4.055.536.058.399.116.728.04.97-.249.68-.28 1.145-.106 1.484.174.334.535.47.94.601.81.2 1.91.135 2.774.6.926.466 1.866.67 2.616.47.526-.116.97-.464 1.208-.946.587-.003 1.23-.269 2.26-.334.699-.058 1.574.267 2.577.2.025.134.063.198.114.333l.003.003c.391.778 1.113 1.132 1.884 1.071.771-.06 1.592-.536 2.257-1.306.631-.765 1.683-1.084 2.378-1.503.348-.199.629-.469.649-.853.023-.4-.2-.811-.714-1.376v-.097l-.003-.003c-.17-.2-.25-.535-.338-.926-.085-.401-.182-.786-.492-1.046h-.003c-.059-.054-.123-.067-.188-.135a.357.357 0 00-.19-.064c.431-1.278.264-2.55-.173-3.694-.533-1.41-1.465-2.638-2.175-3.483-.796-1.005-1.576-1.957-1.56-3.368.026-2.152.236-6.133-3.544-6.139zm.529 3.405h.013c.213 0 .396.062.584.198.19.135.33.332.438.533.105.259.158.459.166.724 0-.02.006-.04.006-.06v.105a.086.086 0 01-.004-.021l-.004-.024a1.807 1.807 0 01-.15.706.953.953 0 01-.213.335.71.71 0 00-.088-.042c-.104-.045-.198-.064-.284-.133a1.312 1.312 0 00-.22-.066c.05-.06.146-.133.183-.198.053-.128.082-.264.088-.402v-.02a1.21 1.21 0 00-.061-.4c-.045-.134-.101-.2-.183-.333-.084-.066-.167-.132-.267-.132h-.016c-.093 0-.176.03-.262.132a.8.8 0 00-.205.334 1.18 1.18 0 00-.09.4v.019c.002.089.008.179.02.267-.193-.067-.438-.135-.607-.202a1.635 1.635 0 01-.018-.2v-.02a1.772 1.772 0 01.15-.768c.082-.22.232-.406.43-.533a.985.985 0 01.594-.2zm-2.962.059h.036c.142 0 .27.048.399.135.146.129.264.288.344.465.09.199.14.4.153.667v.004c.007.134.006.2-.002.266v.08c-.03.007-.056.018-.083.024-.152.055-.274.135-.393.2.012-.09.013-.18.003-.267v-.015c-.012-.133-.04-.2-.082-.333a.613.613 0 00-.166-.267.248.248 0 00-.183-.064h-.021c-.071.006-.13.04-.186.132a.552.552 0 00-.12.27.944.944 0 00-.023.33v.015c.012.135.037.2.08.334.046.134.098.2.166.268.01.009.02.018.034.024-.07.057-.117.07-.176.136a.304.304 0 01-.131.068 2.62 2.62 0 01-.275-.402 1.772 1.772 0 01-.155-.667 1.759 1.759 0 01.08-.668 1.43 1.43 0 01.283-.535c.128-.133.26-.2.418-.2zm1.37 1.706c.332 0 .733.065 1.216.399.293.2.523.269 1.052.468h.003c.255.136.405.266.478.399v-.131a.571.571 0 01.016.47c-.123.31-.516.643-1.063.842v.002c-.268.135-.501.333-.775.465-.276.135-.588.292-1.012.267a1.139 1.139 0 01-.448-.067 3.566 3.566 0 01-.322-.198c-.195-.135-.363-.332-.612-.465v-.005h-.005c-.4-.246-.616-.512-.686-.71-.07-.268-.005-.47.193-.6.224-.135.38-.271.483-.336.104-.074.143-.102.176-.131h.002v-.003c.169-.202.436-.47.839-.601.139-.036.294-.065.466-.065zm2.8 2.142c.358 1.417 1.196 3.475 1.735 4.473.286.534.855 1.659 1.102 3.024.156-.005.33.018.513.064.646-1.671-.546-3.467-1.089-3.966-.22-.2-.232-.335-.123-.335.59.534 1.365 1.572 1.646 2.757.13.535.16 1.104.021 1.67.067.028.135.06.205.067 1.032.534 1.413.938 1.23 1.537v-.043c-.06-.003-.12 0-.18 0h-.016c.151-.467-.182-.825-1.065-1.224-.915-.4-1.646-.336-1.77.465-.008.043-.013.066-.018.135-.068.023-.139.053-.209.064-.43.268-.662.669-.793 1.187-.13.533-.17 1.156-.205 1.869v.003c-.02.334-.17.838-.319 1.35-1.5 1.072-3.58 1.538-5.348.334a2.645 2.645 0 00-.402-.533 1.45 1.45 0 00-.275-.333c.182 0 .338-.03.465-.067a.615.615 0 00.314-.334c.108-.267 0-.697-.345-1.163-.345-.467-.931-.995-1.788-1.521-.63-.4-.986-.87-1.15-1.396-.165-.534-.143-1.085-.015-1.645.245-1.07.873-2.11 1.274-2.763.107-.065.037.135-.408.974-.396.751-1.14 2.497-.122 3.854a8.123 8.123 0 01.647-2.876c.564-1.278 1.743-3.504 1.836-5.268.048.036.217.135.289.202.218.133.38.333.59.465.21.201.477.335.876.335.039.003.075.006.11.006.412 0 .73-.134.997-.268.29-.134.52-.334.74-.4h.005c.467-.135.835-.402 1.044-.7zm2.185 8.958c.037.6.343 1.245.882 1.377.588.134 1.434-.333 1.791-.765l.211-.01c.315-.007.577.01.847.268l.003.003c.208.199.305.53.391.876.085.4.154.78.409 1.066.486.527.645.906.636 1.14l.003-.007v.018l-.003-.012c-.015.262-.185.396-.498.595-.63.401-1.746.712-2.457 1.57-.618.737-1.37 1.14-2.036 1.191-.664.053-1.237-.2-1.574-.898l-.005-.003c-.21-.4-.12-1.025.056-1.69.176-.668.428-1.344.463-1.897.037-.714.076-1.335.195-1.814.12-.465.308-.797.641-.984l.045-.022zm-10.814.049h.01c.053 0 .105.005.157.014.376.055.706.333 1.023.752l.91 1.664.003.003c.243.533.754 1.064 1.189 1.637.434.598.77 1.131.729 1.57v.006c-.057.744-.48 1.148-1.125 1.294-.645.135-1.52.002-2.395-.464-.968-.536-2.118-.469-2.857-.602-.369-.066-.61-.2-.723-.4-.11-.2-.113-.602.123-1.23v-.004l.002-.003c.117-.334.03-.752-.027-1.118-.055-.401-.083-.71.043-.94.16-.334.396-.4.69-.533.294-.135.64-.202.915-.47h.002v-.002c.256-.268.445-.601.668-.838.19-.201.38-.336.663-.336zm7.159-9.074c-.435.201-.945.535-1.488.535-.542 0-.97-.267-1.28-.466-.154-.134-.28-.268-.373-.335-.164-.134-.144-.333-.074-.333.109.016.129.134.199.2.096.066.215.2.36.333.292.2.68.467 1.167.467.485 0 1.053-.267 1.398-.466.195-.135.445-.334.648-.467.156-.136.149-.267.279-.267.128.016.034.134-.147.332a8.097 8.097 0 01-.69.468zm-1.082-1.583V5.64c-.006-.02.013-.042.029-.05.074-.043.18-.027.26.004.063 0 .16.067.15.135-.006.049-.085.066-.135.066-.055 0-.092-.043-.141-.068-.052-.018-.146-.008-.163-.065zm-.551 0c-.02.058-.113.049-.166.066-.047.025-.086.068-.14.068-.05 0-.13-.02-.136-.068-.01-.066.088-.133.15-.133.08-.031.184-.047.259-.005.019.009.036.03.03.05v.02h.003z"/>
10
10
  </svg>