Commit Graph

428 Commits

Author SHA1 Message Date
11089b6661
chore(web/blog/write): add help message 2022-10-16 20:37:31 +08:00
c31f24cbb3
feat(web/image_hosting): upload from clipboard
All checks were successful
continuous-integration/drone/push Build is passing
2022-10-16 11:08:41 +08:00
d5a4721a20
feat(web/image_hosting): image preview 2022-10-16 10:46:59 +08:00
d5b6da80be
feat(web/html2markdown): add link to docs
All checks were successful
continuous-integration/drone/push Build is passing
2022-10-15 08:54:05 +08:00
40817e212c
fix: c77c40c341
All checks were successful
continuous-integration/drone/push Build is passing
2022-10-15 07:15:22 +08:00
726fb44108
fix: b532a5d319 2022-10-15 07:13:39 +08:00
db1500110a
feat(web): add html2markdown
All checks were successful
continuous-integration/drone/push Build is passing
2022-10-15 07:07:45 +08:00
75976d9bcc
fix(web): style
All checks were successful
continuous-integration/drone/push Build is passing
2022-10-14 16:24:26 +08:00
c77c40c341
feat(web/ranklist): drop bs4 2022-10-14 16:21:50 +08:00
b532a5d319
feat(web/problem/statistics): drop bs4 2022-10-14 16:19:59 +08:00
14f7a0b60d
chore(web/image_hosting): add link to docs
All checks were successful
continuous-integration/drone/push Build is passing
2022-10-14 14:59:47 +08:00
24acc89709
feat(web/super_manage/image_hosting): change user images total size limit 2022-10-14 14:59:26 +08:00
d8d97b4f93
fix(web/image_hosting): watermark scale 2022-10-14 10:31:58 +08:00
d490de8bd4
refactor(web/image_hosting): use php-imagick
All checks were successful
continuous-integration/drone/push Build is passing
2022-10-13 21:23:52 +08:00
2e51c20d9f
fix(web/image_hosting): image size calc
All checks were successful
continuous-integration/drone/push Build is passing
2022-10-13 20:54:47 +08:00
b548dd071c
fix(web/image_hosting): check file size after converting to png format 2022-10-13 20:33:02 +08:00
f21ee00a87
fix(web): style 2022-10-13 20:29:44 +08:00
838a492852
fix(web/image_hosting): is_empty hint 2022-10-13 20:28:24 +08:00
e41832cca7
fix(web/image_hosting): watermark hash suffix 2022-10-13 20:23:34 +08:00
8ec306e09d
feat(web/super_manage): add image_hosting manage 2022-10-13 20:20:51 +08:00
c88a178d45
feat(web/image_hosting): images list 2022-10-13 19:56:58 +08:00
755199a32a
feat(web/image_hosting): drag and drop images 2022-10-13 16:13:36 +08:00
65864dd1d2
fix(web/image_hosting): margin of upload button 2022-10-13 15:50:05 +08:00
cafa5b61f2
feat(web/image_hosting): show usage statistics 2022-10-13 14:10:17 +08:00
0a7a6cbe9e
feat(web/image_hosting): image upload 2022-10-13 13:34:55 +08:00
2d9d99e1a6
feat(web/image_hosting): get_image 2022-10-12 21:10:07 +08:00
7c631ea72e
fix: style 2022-10-12 20:38:43 +08:00
ec80c669d1
feat(web): add image_hosting 2022-10-12 20:35:23 +08:00
0d0b8b0ba7
feat(web/contest/self_reviews): markdown support
All checks were successful
continuous-integration/drone/push Build is passing
2022-10-12 19:19:54 +08:00
60ba1a5829
feat(web/user_info/motto): markdown support 2022-10-12 19:13:33 +08:00
nekko
5e30f342fd
refactor(web): migrate to parsedown (#3)
All checks were successful
continuous-integration/drone/push Build is passing
2022-10-11 12:29:55 +08:00
b94dabceb6
feat(web/problem_set): my problem & hidden problem filter
All checks were successful
continuous-integration/drone/push Build is passing
2022-10-11 10:31:54 +08:00
4d68b2237f
fix(web): use hljs in bs5 pages 2022-10-11 07:50:58 +08:00
17c400d15c
feat(web): display assignments in sidebar 2022-10-10 18:42:49 +08:00
be876d2a1d
fix(web/contest/self_review): self_review limit
All checks were successful
continuous-integration/drone/push Build is passing
2022-10-10 17:30:01 +08:00
baf96542ec
fix(web): style
All checks were successful
continuous-integration/drone/push Build is passing
2022-10-10 13:58:54 +08:00
224dc3b271
refactor(web/faq): bootstrap5 2022-10-10 13:57:27 +08:00
fcb1162be5
fix(web/user/msg): item position
All checks were successful
continuous-integration/drone/push Build is passing
2022-10-10 08:24:07 +08:00
7e8db47f93
chore(web/problem_set): drop bootstrap4 2022-10-10 08:18:55 +08:00
1279ccf711
refactor(web): fix table classes in backend 2022-10-10 07:52:30 +08:00
e71f73d81f
refactor(web): add HTML::purifier_inline() function
All checks were successful
continuous-integration/drone/push Build is passing
2022-10-09 21:33:13 +08:00
8b97bdf55e
refactor(web/user/info): drop DOMPurify 2022-10-08 19:38:50 +08:00
bbcd51e7c6
fix(web/blog/slide): replace state
All checks were successful
continuous-integration/drone/push Build is passing
2022-10-08 17:16:00 +08:00
b6cb61d046
fix: edb8176f8f
All checks were successful
continuous-integration/drone/push Build is passing
2022-10-08 16:25:30 +08:00
5c26699829
fix: 94ac59929e
All checks were successful
continuous-integration/drone/push Build is passing
2022-10-08 15:42:30 +08:00
30dc0d7d70
fix(web/register): return 404 when disable register
All checks were successful
continuous-integration/drone/push Build is passing
2022-10-08 14:38:14 +08:00
833c8c2c80
refactor(web/blog/delete): bootstrap5 2022-10-08 14:28:02 +08:00
4779cb3bcc
fix(web/blog): ban contest_only user 2022-10-08 14:10:14 +08:00
edb8176f8f
refactor(web/blog/self_reviews): bootstrap5
All checks were successful
continuous-integration/drone/push Build is passing
2022-10-08 14:05:30 +08:00
94ac59929e
fix(web): responsible table 2022-10-08 14:04:26 +08:00
8ad7d5cb00
fix: df519e2d4a
All checks were successful
continuous-integration/drone/push Build is passing
2022-10-08 13:45:02 +08:00
23ff07e9e1
fix: a90815b20c
All checks were successful
continuous-integration/drone/push Build is passing
2022-10-08 12:47:46 +08:00
6582722f50
feat(web/problems/solution): is_hidden badge icon
All checks were successful
continuous-integration/drone/push Build is passing
2022-10-08 12:10:41 +08:00
d614b8ddcb
fix(web/blog/archive): is_hidden text 2022-10-08 12:09:23 +08:00
a674a54e8b
feat(web/problems): my_problem badge 2022-10-08 12:07:49 +08:00
a90815b20c
feat(web/problems): is_hidden badge 2022-10-08 12:04:54 +08:00
b97d606b07
fix: f0974dbe82
All checks were successful
continuous-integration/drone/push Build is passing
2022-10-08 10:25:54 +08:00
f0974dbe82
feat(web/problem/solution): hidden solutions
All checks were successful
continuous-integration/drone/push Build is passing
2022-10-08 10:06:44 +08:00
a97a05553b
chore: remove table-striped class
All checks were successful
continuous-integration/drone/push Build is passing
2022-10-08 08:50:23 +08:00
a7da66b04f
fix(web/problem/statistics): margin-top of titles
All checks were successful
continuous-integration/drone/push Build is passing
2022-10-07 21:51:27 +08:00
df519e2d4a
fix: 922b5bbeb1
All checks were successful
continuous-integration/drone/push Build is passing
2022-10-07 18:32:25 +08:00
2cfed336f1
refactor: announcements page with bs5
All checks were successful
continuous-integration/drone/push Build is passing
2022-10-07 18:24:11 +08:00
922b5bbeb1
feat: contest progress text in standings page 2022-10-07 18:16:17 +08:00
5f24f88392
fix: style
All checks were successful
continuous-integration/drone/push Build is passing
2022-10-07 17:31:09 +08:00
63b7768f78
feat: force-login and open-register config
All checks were successful
continuous-integration/drone/push Build is passing
2022-10-07 17:29:26 +08:00
b737505f3f
refactor: login page with bs5 2022-10-07 16:47:52 +08:00
cad5bb9a44
refactor: blog_write page with bs5 2022-10-07 13:17:33 +08:00
8ca3b7b2b5
fix: contest registrants button color 2022-10-07 13:09:56 +08:00
6a91c0521c
feat: contest navigator in problem page
All checks were successful
continuous-integration/drone/push Build is passing
2022-10-07 09:31:31 +08:00
911263eed3
refactor: problem_statistics page with bs5
All checks were successful
continuous-integration/drone/push Build is passing
2022-10-07 09:13:49 +08:00
d1374e99eb
feat: move problem sidebar items 2022-10-07 09:13:35 +08:00
c5bb4a1a67
feat: redirect to login instead of return 403
All checks were successful
continuous-integration/drone/push Build is passing
2022-10-06 20:28:43 +08:00
c2c569da31
fix: 比赛资料
All checks were successful
continuous-integration/drone/push Build is passing
2022-10-06 20:22:31 +08:00
1daf709df8
fix: user_info admin card
All checks were successful
continuous-integration/drone/push Build is passing
2022-10-05 18:53:51 +08:00
cbe9f77cca
refactor: contest_inside page with bs5
All checks were successful
continuous-integration/drone/push Build is passing
2022-10-04 14:06:03 +08:00
ddf5ec7413
fix: anonymous if superuser removes a solution 2022-10-04 07:36:05 +08:00
af2b8a437a
fix: 82ca33db5e
All checks were successful
continuous-integration/drone/push Build is passing
2022-10-03 21:04:20 +08:00
82ca33db5e
feat: hide click_zan_block text
All checks were successful
continuous-integration/drone/push Build is passing
2022-10-03 20:47:32 +08:00
82d4bf59f3
fix: dec731f86f
All checks were successful
continuous-integration/drone/push Build is passing
2022-10-03 14:55:28 +08:00
1b66cd1a90
refactor: problem_managers_manage with bs5
All checks were successful
continuous-integration/drone/push Build is passing
2022-10-03 14:46:18 +08:00
a3f97d2025
refactor: problem_statement_manage header 2022-10-03 14:40:53 +08:00
dec731f86f
fix: problem page items
All checks were successful
continuous-integration/drone/push Build is passing
2022-10-03 14:28:33 +08:00
1ecf764bb7
fix: return 403 if problem is used in a registered running contest
All checks were successful
continuous-integration/drone/push Build is passing
2022-10-03 09:35:29 +08:00
ef774d2e97
fix: 90b3675bd5
All checks were successful
continuous-integration/drone/push Build is passing
2022-10-03 09:11:43 +08:00
90b3675bd5
fix: return 403 if problem is used in a registered running contest
All checks were successful
continuous-integration/drone/push Build is passing
2022-10-03 08:49:23 +08:00
a917881042
fix: unregister button
All checks were successful
continuous-integration/drone/push Build is passing
2022-10-02 20:54:25 +08:00
d3902347a1
feat: blog aboutme page 2022-10-02 20:47:53 +08:00
9528838d69
fix: is_hidden in blog_archive
All checks were successful
continuous-integration/drone/push Build is passing
2022-10-02 17:53:33 +08:00
0704b85065
refactor: blog_index and blog_archive with bs5
All checks were successful
continuous-integration/drone/push Build is passing
2022-10-02 17:02:17 +08:00
40921a5701
refactor: add_contest page with bs5 2022-10-02 14:41:26 +08:00
327c61a251
refactor: problem_statement_manage with bs5 2022-10-02 14:25:22 +08:00
e62f3b4d38
fix: user_info accepted submission count
All checks were successful
continuous-integration/drone/push Build is passing
2022-10-02 10:17:12 +08:00
ce10dce025
fix: remove problem_uploader permission when add problem_manager
All checks were successful
continuous-integration/drone/push Build is passing
2022-10-01 22:03:00 +08:00
7678b34221
refactor: contest_members page with bs5
All checks were successful
continuous-integration/drone/push Build is passing
2022-10-01 21:26:01 +08:00
023f2e392c
fix: add missing spaces between tags 2022-10-01 19:31:13 +08:00
60e2c80b8d
feat: add teacher type 2022-10-01 19:29:40 +08:00
091f35397d
feat: add school field 2022-10-01 19:09:16 +08:00
e0872fda48
feat: add user permissions display in user_info page 2022-10-01 18:55:50 +08:00
05dcdf2158
fix: remove poster field in problem.conf
All checks were successful
continuous-integration/drone/push Build is passing
2022-10-01 17:18:29 +08:00
47869c3314
fix: remove "admin" 2022-10-01 17:17:20 +08:00
f2b3280e68
refactor: blog_index page with bs5
All checks were successful
continuous-integration/drone/push Build is passing
2022-09-29 22:06:36 +08:00
74e502a853
refactor: blog_detail page with bs5 2022-09-29 22:02:56 +08:00
6643d21ed0
fix: problem_solution table 2022-09-29 14:26:07 +08:00
9520ed24a6
fix: 2eb02d776d 2022-09-29 10:34:43 +08:00
d2e4f799b8
feat: user_info page ac_problems hover bg
All checks were successful
continuous-integration/drone/push Build is passing
2022-09-29 10:20:12 +08:00
2eb02d776d
feat: add problem difficulty display 2022-09-29 10:10:24 +08:00
83678f42b9
feat: add view_solution_type form 2022-09-29 09:27:11 +08:00
4daa3ed248
fix: problem_list accepted problems td background 2022-09-29 09:20:08 +08:00
b2a3e3c1d8
fix: sidebar margin
All checks were successful
continuous-integration/drone/push Build is passing
2022-09-29 08:18:49 +08:00
eaa9f8f12f
fix: ac-problems-list styles
All checks were successful
continuous-integration/drone/push Build is passing
2022-09-29 08:12:03 +08:00
0d5f22cc06
fix: use rawurlencode
All checks were successful
continuous-integration/drone/push Build is passing
2022-09-29 07:41:45 +08:00
a4786d1395
fix: "add solution" card header font-weight 2022-09-29 06:25:56 +08:00
f2226dbebf
feat: quick create solution blog
All checks were successful
continuous-integration/drone/push Build is passing
2022-09-28 20:38:16 +08:00
44b3840e5f
feat: add problems_solutions
All checks were successful
continuous-integration/drone/push Build is passing
2022-09-28 19:48:49 +08:00
e8125e7e3a
refactor: user_info page with bs5 2022-09-28 15:39:39 +08:00
492a4fdd83
fix: bb5de2a00e 2022-09-28 14:48:30 +08:00
8c3a305d1e
feat: allow to use more builtin checkers
All checks were successful
continuous-integration/drone/push Build is passing
2022-09-28 13:52:49 +08:00
beaa45160b
fix: problem click zan block 2022-09-27 16:48:17 +08:00
315626200c
refactor: contest problem page with bs5 2022-09-27 16:42:24 +08:00
f8377ebdad
fix: columns breakpoint
All checks were successful
continuous-integration/drone/push Build is passing
2022-09-27 07:57:01 +08:00
bdd44e7fb8
fix: style
All checks were successful
continuous-integration/drone/push Build is passing
2022-09-26 21:11:58 +08:00
f8966c2b26
fix: bs4 compatibility 2022-09-26 21:11:38 +08:00
27387a0dea
refactor: blogs_list page with bs5
All checks were successful
continuous-integration/drone/push Build is passing
2022-09-26 20:55:56 +08:00
42ffbd9c88
refactor: hack_list page with bs5 2022-09-26 20:42:46 +08:00
42591677e5
feat: include sidebar in index page
All checks were successful
continuous-integration/drone/push Build is passing
2022-09-26 18:56:38 +08:00
fc66e5afe5
fix: 6cbf44ead5
All checks were successful
continuous-integration/drone/push Build is passing
2022-09-26 16:32:38 +08:00
6cbf44ead5
fix: add classes to tables
All checks were successful
continuous-integration/drone/push Build is passing
2022-09-26 14:35:13 +08:00
9fc1628709
refactor: group page with bs5
All checks were successful
continuous-integration/drone/push Build is passing
2022-09-26 12:09:54 +08:00
a56923d52a
fix: style 2022-09-26 11:28:53 +08:00
e24d9c587c
refactor: split group manage page 2022-09-26 11:26:17 +08:00
d79ca1512f
fix: problem_list is_hidden 2022-09-26 09:30:34 +08:00
7ab64c1ba3
refactor: problem_list with bs5
All checks were successful
continuous-integration/drone/push Build is passing
2022-09-26 07:58:58 +08:00
219d3526e5
refactor: spilt problem_list manage page 2022-09-26 07:39:01 +08:00
d502fb95ac
feat: change uploader username
All checks were successful
continuous-integration/drone/push Build is passing
2022-09-25 21:03:56 +08:00
3ebc2dea1d
fix: margin-top
All checks were successful
continuous-integration/drone/push Build is passing
2022-09-25 18:39:46 +08:00
d101ca2c1e
feat: add search form
All checks were successful
continuous-integration/drone/push Build is passing
2022-09-25 18:38:19 +08:00
dcb4417e75
fix: style 2022-09-25 18:30:17 +08:00
3a26ee7092
refactor: problem page with bs5
All checks were successful
continuous-integration/drone/push Build is passing
2022-09-25 18:28:43 +08:00
bb3656749d
fix: problem_set table col width
All checks were successful
continuous-integration/drone/push Build is passing
2022-09-25 14:31:52 +08:00
83488ad7cf
feat: add sidebar
All checks were successful
continuous-integration/drone/push Build is passing
2022-09-25 14:16:36 +08:00
7aa51e889a
refactor: hack detail page with bs5
All checks were successful
continuous-integration/drone/push Build is passing
2022-09-25 10:44:33 +08:00
6a49c84e31
refactor: submission_detail with bs5
All checks were successful
continuous-integration/drone/push Build is passing
2022-09-24 21:19:48 +08:00
1e07cba8c1
fix: set overflow-auto to submissions_list table
All checks were successful
continuous-integration/drone/push Build is passing
2022-09-24 19:38:03 +08:00
50b37ba70f
fix: bs4 countdowns title 2022-09-24 19:13:16 +08:00
70d7a65665
feat: user self_reviews order by start_time desc
All checks were successful
continuous-integration/drone/push Build is passing
2022-09-24 18:45:35 +08:00
e270e5e891
fix: add missing spaces 2022-09-24 14:26:49 +08:00
c7b1e6c2c3
fix: edef725860
All checks were successful
continuous-integration/drone/push Build is passing
2022-09-24 14:19:28 +08:00
5219d8ddcc
fix: style
All checks were successful
continuous-integration/drone/push Build is passing
2022-09-24 13:41:31 +08:00
edef725860
feat: add page title
All checks were successful
continuous-integration/drone/push Build is passing
2022-09-24 13:39:55 +08:00
86ec60fa3a
refactor: groups with bs5 2022-09-24 13:39:45 +08:00
7ee809bd56
refactor: problem_lists with bs5 2022-09-24 13:24:48 +08:00
56967e039d
fix: 4fa402ec4b
All checks were successful
continuous-integration/drone/push Build is passing
2022-09-24 12:51:34 +08:00
4fa402ec4b
refactor: contests list with bs5
All checks were successful
continuous-integration/drone/push Build is passing
2022-09-24 12:10:30 +08:00
79d4c3832c
refactor: ranklist with bs5
All checks were successful
continuous-integration/drone/push Build is passing
2022-09-24 11:55:34 +08:00
b25f4cc7f9
fix: table appraisal col width 2022-09-24 11:42:09 +08:00
92cca91cce
feat: countdowns and friend links locale 2022-09-24 11:40:26 +08:00
e334a2ad8a
refactor: problem_set with bs5
All checks were successful
continuous-integration/drone/push Build is passing
2022-09-24 10:18:55 +08:00
bff23cfdfd
fix: index page bs4
All checks were successful
continuous-integration/drone/push Build is passing
2022-09-24 08:33:36 +08:00
2367452bcd
feat: frontend version switch 2022-09-24 08:26:39 +08:00
bd79eebb44
refactor: submissions_list with bs5 2022-09-24 08:13:39 +08:00
b50b3ee67c
refactor: backgrounds 2022-09-24 06:58:20 +08:00
e56eae09b1
fix: index cols
All checks were successful
continuous-integration/drone/push Build is passing
2022-09-23 22:10:57 +08:00
1d142f8cff
fix: style 2022-09-23 21:54:44 +08:00
f75752397f
fix: friend link styles
Some checks reported errors
continuous-integration/drone/push Build was killed
2022-09-23 21:51:36 +08:00
4e1d156f0e
feat: group announcement
All checks were successful
continuous-integration/drone/push Build is passing
2022-09-23 21:36:14 +08:00
32caffc3ec
refactor: index with bs5 2022-09-23 21:00:17 +08:00
54ad012df1
fix: "need upload chk.cpp"
All checks were successful
continuous-integration/drone/push Build is passing
2022-09-23 11:50:56 +08:00
72b70d2911
fix: 9b8ffca752 2022-09-23 08:13:21 +08:00
3bf24bbbb9
fix: d3e99b0217 2022-09-23 08:03:55 +08:00
0c21b31517
feat: mathjax support on user_self_review page
All checks were successful
continuous-integration/drone/push Build is passing
2022-09-22 10:38:06 +08:00
1b955c5913
feat: allow to use more builtin checkers 2022-09-22 10:26:16 +08:00
31a8db965b
feat: move user_self_reviews into blog
All checks were successful
continuous-integration/drone/push Build is passing
2022-09-22 09:41:21 +08:00
d3e99b0217
fix: assignment problem status icon
All checks were successful
continuous-integration/drone/push Build is passing
2022-09-22 08:51:38 +08:00
9b8ffca752
feat: add contest_judger permission
All checks were successful
continuous-integration/drone/push Build is passing
2022-09-21 19:26:13 +08:00
ca3680727c
feat: support mathjax in contest self reviews
All checks were successful
continuous-integration/drone/push Build is passing
2022-09-21 18:35:30 +08:00
3b68e6c503
feat: move blog_link_contests to contest_manage.php 2022-09-21 18:12:58 +08:00
0804bcb14b
feat: display ip from http_x_forwarded_for
All checks were successful
continuous-integration/drone/push Build is passing
2022-09-21 14:39:09 +08:00
8754b60958
feat: force set user participated 2022-09-21 14:34:16 +08:00
9517e4f8c7
fix: margin-bottom of problem item
All checks were successful
continuous-integration/drone/push Build is passing
2022-09-21 13:58:53 +08:00
c3b72eb114
fix: e0cffaa762 2022-09-21 12:41:29 +08:00
b7a0ee7fda
feat: friend links
All checks were successful
continuous-integration/drone/push Build is passing
2022-09-21 11:33:42 +08:00
f57fa8a895
feat: login to view more 2022-09-21 11:27:03 +08:00
6112612d88
fix: countdowns config 2022-09-21 11:00:12 +08:00
a09e3a21e7
fix: use <ul> 2022-09-21 10:58:45 +08:00
d9be3be581
feat: contests order 2022-09-20 19:44:40 +08:00
4fabe53a51
feat: display problem uploader in problemset
All checks were successful
continuous-integration/drone/push Build is passing
2022-09-20 18:39:01 +08:00
610afc0994
fix: item height 2022-09-20 18:35:14 +08:00
02ef72b035
fix: user info style 2022-09-20 18:23:18 +08:00
03e6a1cb99
refactor: remove echo
All checks were successful
continuous-integration/drone/push Build is passing
2022-09-20 17:20:23 +08:00
6926a6f912
fix: pagination count table 2022-09-20 17:19:11 +08:00
7b4fb77260
feat: faq page not require login 2022-09-20 17:06:25 +08:00
a73b212b32
fix: accepted problems style 2022-09-20 17:03:11 +08:00
67c29e3add
feat: testcase download
All checks were successful
continuous-integration/drone/push Build is passing
2022-09-20 13:10:25 +08:00
e0cffaa762
feat: remove user from contest 2022-09-20 11:02:37 +08:00
85c93c7073
chore: update faq 2022-09-20 10:46:32 +08:00
ad9bbf9222
fix: DOMPurify on user self review page 2022-09-20 10:17:28 +08:00
db75573e1f
fix: style 2022-09-20 09:53:19 +08:00
1b26049ee0
feat: add a page to show all self reviews of a user
All checks were successful
continuous-integration/drone/push Build is passing
2022-09-20 09:50:37 +08:00
1ecf4e54b1
feat: assignments 2022-09-20 08:28:38 +08:00
945bd35776
feat: edit contest self reviews 2022-09-20 07:49:45 +08:00