From bf50b6c865112c55a01679e1e93927d225c8d5d3 Mon Sep 17 00:00:00 2001 From: CGH0S7 <776459475@qq.com> Date: Wed, 26 Feb 2025 09:13:52 +0800 Subject: [PATCH] 2025-2-26 --- .gitignore | 5 + README.md | 1 + _config.fluid.yml | 1165 ++++++ _config.landscape.yml | 0 _config.yml | 110 + db.json | 1 + package-lock.json | 3345 +++++++++++++++++ package.json | 28 + scaffolds/draft.md | 4 + scaffolds/page.md | 4 + scaffolds/post.md | 5 + source/_posts/12月16-17日工作记录.md | 13 + source/_posts/12月18日工作记录.md | 9 + source/_posts/12月19日工作记录.md | 8 + source/_posts/12月20日工作记录.md | 14 + source/_posts/12月28日进度报告.md | 12 + source/_posts/12月31日进度报告.md | 12 + source/_posts/BlogUpdate.md | 12 + source/_posts/CGH0S7-s-Blog.md | 7 + source/_posts/GentleJena.md | 14 + source/_posts/Vocaloid调教-晴天.md | 15 + source/_posts/arch-nvidia.md | 112 + source/_posts/archlinux-optimization.md | 17 + source/_posts/clonezilla.md | 81 + source/_posts/loopers.md | 11 + source/_posts/mhwi.md | 14 + source/_posts/nudtbomblab.md | 420 +++ source/_posts/overleaf.md | 97 + source/_posts/zellij-helix.md | 19 + source/_posts/原来我还有个博客.md | 9 + source/_posts/梦开始的地方.md | 34 + source/about/index.md | 17 + ...3f5602b203b38230f19699deb0219454454985.png | Bin 0 -> 741484 bytes source/images/1730728153314.png | Bin 0 -> 377898 bytes source/images/20241027_222225.png | Bin 0 -> 1305002 bytes ...4bba6d035326e82c53504dd53e7c2454454985.png | Bin 0 -> 656811 bytes ...5357ef4bd808b10429bc2ea46cb6f454454985.png | Bin 0 -> 845728 bytes ...tten-By-Human-Not-By-AI-Badge-white@2x.png | Bin 0 -> 4440 bytes source/images/amd.webp | Bin 0 -> 12308 bytes source/images/archlinux-logo.png | Bin 0 -> 11178 bytes source/images/asc-events.png | Bin 0 -> 16764 bytes source/images/asc.png | Bin 0 -> 10379 bytes ...54bbaf6197624d38cc2007d885fd1454454985.png | Bin 0 -> 1303292 bytes source/images/built_on_the_kde_platform.png | Bin 0 -> 11721 bytes source/images/caseclosed.png | Bin 0 -> 216131 bytes source/images/clonezilla.png | Bin 0 -> 935180 bytes source/images/mhwilds4050.jpg | Bin 0 -> 802233 bytes source/images/mhwilds780M.jpg | Bin 0 -> 929973 bytes source/images/phase1.png | Bin 0 -> 503903 bytes source/images/phase1_strings.png | Bin 0 -> 85475 bytes source/images/phase_2_14.png | Bin 0 -> 1061313 bytes source/images/phase_4.png | Bin 0 -> 1066417 bytes source/images/zellij-helix.jpg | Bin 0 -> 4479566 bytes yarn.lock | 1922 ++++++++++ 54 files changed, 7537 insertions(+) create mode 100644 .gitignore create mode 100644 README.md create mode 100644 _config.fluid.yml create mode 100644 _config.landscape.yml create mode 100644 _config.yml create mode 100644 db.json create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 scaffolds/draft.md create mode 100644 scaffolds/page.md create mode 100644 scaffolds/post.md create mode 100644 source/_posts/12月16-17日工作记录.md create mode 100644 source/_posts/12月18日工作记录.md create mode 100644 source/_posts/12月19日工作记录.md create mode 100644 source/_posts/12月20日工作记录.md create mode 100644 source/_posts/12月28日进度报告.md create mode 100644 source/_posts/12月31日进度报告.md create mode 100644 source/_posts/BlogUpdate.md create mode 100644 source/_posts/CGH0S7-s-Blog.md create mode 100644 source/_posts/GentleJena.md create mode 100644 source/_posts/Vocaloid调教-晴天.md create mode 100644 source/_posts/arch-nvidia.md create mode 100644 source/_posts/archlinux-optimization.md create mode 100644 source/_posts/clonezilla.md create mode 100644 source/_posts/loopers.md create mode 100644 source/_posts/mhwi.md create mode 100644 source/_posts/nudtbomblab.md create mode 100644 source/_posts/overleaf.md create mode 100644 source/_posts/zellij-helix.md create mode 100644 source/_posts/原来我还有个博客.md create mode 100644 source/_posts/梦开始的地方.md create mode 100644 source/about/index.md create mode 100644 source/images/1613f5602b203b38230f19699deb0219454454985.png create mode 100644 source/images/1730728153314.png create mode 100644 source/images/20241027_222225.png create mode 100644 source/images/5364bba6d035326e82c53504dd53e7c2454454985.png create mode 100644 source/images/71a5357ef4bd808b10429bc2ea46cb6f454454985.png create mode 100644 source/images/Written-By-Human-Not-By-AI-Badge-white@2x.png create mode 100644 source/images/amd.webp create mode 100644 source/images/archlinux-logo.png create mode 100644 source/images/asc-events.png create mode 100644 source/images/asc.png create mode 100644 source/images/b2054bbaf6197624d38cc2007d885fd1454454985.png create mode 100644 source/images/built_on_the_kde_platform.png create mode 100644 source/images/caseclosed.png create mode 100644 source/images/clonezilla.png create mode 100644 source/images/mhwilds4050.jpg create mode 100644 source/images/mhwilds780M.jpg create mode 100644 source/images/phase1.png create mode 100644 source/images/phase1_strings.png create mode 100644 source/images/phase_2_14.png create mode 100644 source/images/phase_4.png create mode 100644 source/images/zellij-helix.jpg create mode 100644 yarn.lock diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..bb52200 --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +.github/ +.deploy_git/ +public/ +node_modules/ +themes/ diff --git a/README.md b/README.md new file mode 100644 index 0000000..151abb9 --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +我的个人博客 diff --git a/_config.fluid.yml b/_config.fluid.yml new file mode 100644 index 0000000..1ffff80 --- /dev/null +++ b/_config.fluid.yml @@ -0,0 +1,1165 @@ +#--------------------------- +# Hexo Theme Fluid +# Author: Fluid-dev +# Github: https://github.com/fluid-dev/hexo-theme-fluid +# +# 配置指南: https://hexo.fluid-dev.com/docs/guide/ +# 你可以从指南中获得更详细的说明 +# +# Guide: https://hexo.fluid-dev.com/docs/en/guide/ +# You can get more detailed help from the guide +#--------------------------- + + +#--------------------------- +# 全局 +# Global +#--------------------------- + +# 用于浏览器标签的图标 +# Icon for browser tab +favicon: /img/hifuu.png + +# 用于苹果设备的图标 +# Icon for Apple touch +apple_touch_icon: /img/hifuu.png + +# 浏览器标签页中的标题分隔符,效果:文章名 - 站点名 +# Title separator in browser tab, eg: article - site +tab_title_separator: " - " + +# 强制所有链接升级为 HTTPS(适用于图片等资源出现 HTTP 混入报错) +# Force all links to be HTTPS (applicable to HTTP mixed error) +force_https: true + +# 代码块的增强配置 +# Enhancements to code blocks +code: + # 是否开启复制代码的按钮 + # Enable copy code button + copy_btn: true + + # 代码语言 + # Code language + language: + enable: true + default: "TEXT" + + # 代码高亮 + # Code highlight + highlight: + enable: true + + # 代码块是否显示行号 + # If true, the code block display line numbers + line_number: true + + # 实现高亮的库,对应下面的设置 + # Highlight library + # Options: highlightjs | prismjs + lib: "highlightjs" + + highlightjs: + # 在链接中挑选 style 填入 + # Select a style in the link + # See: https://highlightjs.org/demo/ + style: "github gist" + style_dark: "dark" + + prismjs: + # 在下方链接页面右侧的圆形按钮挑选 style 填入,也可以直接填入 css 链接 + # Select the style button on the right side of the link page, you can also set the CSS link + # See: https://prismjs.com/ + style: "default" + style_dark: "tomorrow night" + + # 设为 true 高亮将本地静态生成(但只支持部分 prismjs 插件),设为 false 高亮将在浏览器通过 js 生成 + # If true, it will be generated locally (but some prismjs plugins are not supported). If false, it will be generated via JS in the browser + preprocess: true + +# 一些好玩的功能 +# Some fun features +fun_features: + # 为 subtitle 添加打字机效果 + # Typing animation for subtitle + typing: + enable: true + + # 打印速度,数字越大越慢 + # Typing speed, the larger the number, the slower + typeSpeed: 70 + + # 游标字符 + # Cursor character + cursorChar: "_" + + # 是否循环播放效果 + # If true, loop animation + loop: false + + # 在指定页面开启,不填则在所有页面开启 + # Enable in specified page, all pages by default + # Options: home | post | tag | category | about | links | page | 404 + scope: [] + + # 为文章内容中的标题添加锚图标 + # Add an anchor icon to the title on the post page + anchorjs: + enable: true + element: h1,h2,h3,h4,h5,h6 + # Options: left | right + placement: left + + # Options: hover | always + visible: hover + + # Options: § | # | ❡ + icon: "" + + # 加载进度条 + # Progress bar when loading + progressbar: + enable: true + height_px: 3 + color: "#29d" + # See: https://github.com/rstacruz/nprogress + options: { showSpinner: false, trickleSpeed: 100 } + +# 主题暗色模式,开启后菜单中会出现切换按钮,用户浏览器会存储切换选项,并且会遵循 prefers-color-scheme 自动切换 +# Theme dark mode. If enable, a switch button will appear on the menu, each of the visitor's browser will store his switch option +dark_mode: + enable: true + # 默认的选项(当用户手动切换后则不再按照默认模式),选择 `auto` 会优先遵循 prefers-color-scheme,其次按用户本地时间 18 点到次日 6 点之间进入暗色模式 + # Default option (when the visitor switches manually, the default mode is no longer followed), choosing `auto` will give priority to prefers-color-scheme, and then enter the dark mode from 18:00 to 6:00 in the visitor's local time + # Options: auto | light | dark + default: auto + +# 主题颜色配置,其他不生效的地方请使用自定义 css 解决,配色可以在下方链接中获得启发 +# Theme color, please use custom CSS to solve other colors, color schema can be inspired by the links below +# See: https://www.webdesignrankings.com/resources/lolcolors/ +color: + # body 背景色 + # Color of body background + body_bg_color: "#eee" + # 暗色模式下的 body 背景色,下同 + # Color in dark mode, the same below + body_bg_color_dark: "#181c27" + + # 顶部菜单背景色 + # Color of navigation bar background + navbar_bg_color: "#2f4154" + navbar_bg_color_dark: "#1f3144" + + # 顶部菜单字体色 + # Color of navigation bar text + navbar_text_color: "#fff" + navbar_text_color_dark: "#d0d0d0" + + # 副标题字体色 + # Color of subtitle text + subtitle_color: "#fff" + subtitle_color_dark: "#d0d0d0" + + # 全局字体色 + # Color of global text + text_color: "#3c4858" + text_color_dark: "#c4c6c9" + + # 全局次级字体色(摘要、简介等位置) + # Color of global secondary text (excerpt, introduction, etc.) + sec_text_color: "#718096" + sec_text_color_dark: "#a7a9ad" + + # 主面板背景色 + # Color of main board + board_color: "#fff" + board_color_dark: "#252d38" + + # 文章正文字体色 + # Color of post text + post_text_color: "#2c3e50" + post_text_color_dark: "#c4c6c9" + + # 文章正文字体色(h1 h2 h3...) + # Color of Article heading (h1 h2 h3...) + post_heading_color: "#1a202c" + post_heading_color_dark: "#c4c6c9" + + # 文章超链接字体色 + # Color of post link + post_link_color: "#0366d6" + post_link_color_dark: "#1589e9" + + # 超链接悬浮时字体色 + # Color of link when hovering + link_hover_color: "#30a9de" + link_hover_color_dark: "#30a9de" + + # 超链接悬浮背景色 + # Color of link background when hovering + link_hover_bg_color: "#f8f9fa" + link_hover_bg_color_dark: "#364151" + + # 分隔线和表格边线的颜色 + # Color of horizontal rule and table border + line_color: "#eaecef" + line_color_dark: "#435266" + + # 滚动条颜色 + # Color of scrollbar + scrollbar_color: "#c4c6c9" + scrollbar_color_dark: "#687582" + # 滚动条悬浮颜色 + # Color of scrollbar when hovering + scrollbar_hover_color: "#a6a6a6" + scrollbar_hover_color_dark: "#9da8b3" + + # 按钮背景色 + # Color of button + button_bg_color: "transparent" + button_bg_color_dark: "transparent" + # 按钮悬浮背景色 + # Color of button when hovering + button_hover_bg_color: "#f2f3f5" + button_hover_bg_color_dark: "#46647e" + +# 主题字体配置 +# Font +font: + font_size: 16px + font_family: + letter_spacing: 0.02em + code_font_size: 85% + +# 指定自定义 .js 文件路径,支持列表;路径是相对 source 目录,如 /js/custom.js 对应存放目录 source/js/custom.js +# Specify the path of your custom js file, support list. The path is relative to the source directory, such as `/js/custom.js` corresponding to the directory `source/js/custom.js` +custom_js: + +# 指定自定义 .css 文件路径,用法和 custom_js 相同 +# The usage is the same as custom_js +custom_css: + +# 网页访问统计 +# Analysis of website visitors +web_analytics: + enable: false + + # 遵循访客浏览器"请勿追踪"的设置,如果开启则不统计其访问 + # Follow the "Do Not Track" setting of the visitor's browser + # See: https://www.w3.org/TR/tracking-dnt/ + follow_dnt: true + + # 百度统计的 Key,值需要获取下方链接中 `hm.js?` 后边的字符串 + # Baidu analytics, get the string behind `hm.js?` + # See: https://tongji.baidu.com/sc-web/10000033910/home/site/getjs?siteId=13751376 + baidu: + + # Google Analytics 4 的媒体资源 ID + # Google Analytics 4 MEASUREMENT_ID + # See: https://support.google.com/analytics/answer/9744165#zippy=%2Cin-this-article + google: + measurement_id: + + # 腾讯统计的 H5 App ID,开启高级功能才有cid + # Tencent analytics, set APP ID + # See: https://mta.qq.com/h5/manage/ctr_app_manage + tencent: + sid: + cid: + + # LeanCloud 计数统计,可用于 PV UV 展示,如果 `web_analytics: enable` 没有开启,PV UV 展示只会查询不会增加 + # LeanCloud count statistics, which can be used for PV UV display. If `web_analytics: enable` is false, PV UV display will only query and not increase + leancloud: + app_id: + app_key: + # REST API 服务器地址,国际版不填 + # Only the Chinese mainland users need to set + server_url: + # 统计页面时获取路径的属性 + # Get the attribute of the page path during statistics + path: window.location.pathname + # 开启后不统计本地路径( localhost 与 127.0.0.1 ) + # If true, ignore localhost & 127.0.0.1 + ignore_local: false + + # Umami Analytics,仅支持自部署。如果要展示 PV UV 需要填写所有配置项,否则只填写 `src` 和 `website_id` 即可 + # Umami Analytics, only Self-host support. If you want to display PV UV need to set all config items, otherwise only set 'src' and 'website_id' + # See: https://umami.is/docs/authentication + umami: + # umami js 文件地址,需要在 umami 后台创建站点后获取 + # umami js file url, get after create website in umami + src: + + # umami 的 website id,需要在 umami 后台创建站点后获取 + # umami website id, get after create website in umami + website_id: + + # 如果你只想统计特定的域名可以填入此字段,多个域名通过逗号分隔,这可以避免统计 localhost。 + # If you only want to tracker to specific domains you can fill in this field, multiple domain names are separated by commas, which can avoid tracker localhost + domains: + + # 用于统计 PV UV 的开始时间,格式为 "YYYY-MM-DD" + # statistics on the start time, the format is "YYYY-MM-DD" + start_time: 2024-01-01 + + # 新建一个 umami viewOnly 用户,然后通过 login api 获取该用户 token + # create an umami viewOnly user, and then get user token through the login api + token: + + # 填写 umami 部署的服务器地址,如 "https://umami.example.com" + # server url of umami deployment, such as "https://umami.example.com" + api_server: + +# Canonical 用于向 Google 搜索指定规范网址,开启前确保 hexo _config.yml 中配置 `url: http://yourdomain.com` +# Canonical, to specify a canonical URL for Google Search, need to set up `url: http://yourdomain.com` in hexo _config.yml +# See: https://support.google.com/webmasters/answer/139066 +canonical: + enable: false + +# 对页面中的图片和评论插件进行懒加载处理,可见范围外的元素不会提前加载 +# Lazy loading of images and comment plugin on the page +lazyload: + enable: true + + # 加载时的占位图片 + # The placeholder image when loading + loading_img: /img/loading.gif + + # 开启后懒加载仅在文章页生效,如果自定义页面需要使用,可以在 Front-matter 里指定 `lazyload: true` + # If true, only enable lazyload on the post page. For custom pages, you can set 'lazyload: true' in front-matter + onlypost: false + + # 触发加载的偏移倍数,基数是视窗高度,可根据部署环境的请求速度调节 + # The factor of viewport height that triggers loading + offset_factor: 2 + +# 图标库,包含了大量社交类图标,主题依赖的不包含在内,因此可自行修改,详见 https://hexo.fluid-dev.com/docs/icon/ +# Icon library, which includes many social icons, does not include those theme dependent, so your can modify link by yourself. See: https://hexo.fluid-dev.com/docs/en/icon/ +iconfont: //at.alicdn.com/t/c/font_1736178_k526ubmyhba.css + + +#--------------------------- +# 页头 +# Header +#--------------------------- + +# 导航栏的相关配置 +# Navigation bar +navbar: + # 导航栏左侧的标题,为空则按 hexo config 中 `title` 显示 + # The title on the left side of the navigation bar. If empty, it is based on `title` in hexo config + blog_title: "CGH0S7's Blog" + + # 导航栏毛玻璃特效,实验性功能,可能会造成页面滚动掉帧和抖动,部分浏览器不支持会自动不生效 + # Navigation bar frosted glass special animation. It is an experimental feature + ground_glass: + enable: true + + # 模糊像素,只能为数字,数字越大模糊度越高 + # Number of blurred pixel. the larger the number, the higher the blur + px: 3 + + # 不透明度,数字越大透明度越低,注意透明过度可能看不清菜单字体 + # Ratio of opacity, 1.0 is completely opaque + # available: 0 - 1.0 + alpha: 0.7 + + # 导航栏菜单,可自行增减,key 用来关联 languages/*.yml,如不存在关联则显示 key 本身的值;icon 是 css class,可以省略;增加 name 可以强制显示指定名称 + # Navigation bar menu. `key` is used to associate languages/*.yml. If there is no association, the value of `key` itself will be displayed; if `icon` is a css class, it can be omitted; adding `name` can force the display of the specified name + menu: + - { key: "home", link: "/", icon: "iconfont icon-home-fill" } + - { key: "archive", link: "/archives/", icon: "iconfont icon-archive-fill" } + - { key: "category", link: "/categories/", icon: "iconfont icon-category-fill" } + - { key: "tag", link: "/tags/", icon: "iconfont icon-tags-fill" } + - { key: "about", link: "/about/", icon: "iconfont icon-user-fill" } + - { key: "links", link: "/links/", icon: "iconfont icon-link-fill" } + +# 搜索功能,基于 hexo-generator-search 插件,若已安装其他搜索插件请关闭此功能,以避免生成多余的索引文件 +# Search feature, based on hexo-generator-search. If you have installed other search plugins, please disable this feature to avoid generating redundant index files +search: + enable: true + + # 搜索索引文件的路径,可以是相对路径或外站的绝对路径 + # Path for search index file, it can be a relative path or an absolute path + path: /local-search.xml + + # 文件生成在本地的位置,必须是相对路径 + # The location where the index file is generated locally, it must be a relative location + generate_path: /local-search.xml + + # 搜索的范围 + # Search field + # Options: post | page | all + field: post + + # 搜索是否扫描正文 + # If true, search will scan the post content + content: true + +# 首屏图片的相关配置 +# Config of the big image on the first screen +banner: + # 视差滚动,图片与板块会随着屏幕滚动产生视差效果 + # Scrolling parallax + parallax: true + + # 图片最小的宽高比,以免图片两边被过度裁剪,适用于移动端竖屏时,如需关闭设为 0 + # Minimum ratio of width to height, applicable to the vertical screen of mobile device, if you need to close it, set it to 0 + width_height_ratio: 1.0 + +# 向下滚动的箭头 +# Scroll down arrow +scroll_down_arrow: + enable: true + + # 头图高度不小于指定比例,才显示箭头 + # Only the height of the banner image is greater than the ratio, the arrow is displayed + # Available: 0 - 100 + banner_height_limit: 80 + + # 翻页后自动滚动 + # Auto scroll after page turning + scroll_after_turning_page: true + +# 向顶部滚动的箭头 +# Scroll top arrow +scroll_top_arrow: + enable: true + +# Open Graph metadata +# See: https://hexo.io/docs/helpers.html#open-graph +open_graph: + enable: true + twitter_card: summary_large_image + twitter_id: + twitter_site: + google_plus: + fb_admins: + fb_app_id: + + +#--------------------------- +# 页脚 +# Footer +#--------------------------- +footer: + # 页脚第一行文字的 HTML,建议保留 Fluid 的链接,用于向更多人推广本主题 + # HTML of the first line of the footer, it is recommended to keep the Fluid link to promote this theme to more people + content: ' + Hexo + + CGH0S7 + ' + + # 展示网站的 PV、UV 统计数 + # Display website PV and UV statistics + statistics: + enable: false + + # 统计数据来源,使用 leancloud, umami 需要设置 `web_analytics` 中对应的参数;使用 busuanzi 不需要额外设置,但是有时不稳定,另外本地运行时 busuanzi 显示统计数据很大属于正常现象,部署后会正常 + # Data source. If use leancloud, umami, you need to set the parameter in `web_analytics` + # Options: busuanzi | leancloud | umami + source: "busuanzi" + + # 国内大陆服务器的备案信息 + # For Chinese mainland website policy, other areas keep disable + beian: + enable: false + # ICP证号 + icp_text: 京ICP证123456号 + # 公安备案号,不填则只显示ICP + police_text: 京公网安备12345678号 + # 公安备案的编号,用于URL跳转查询 + police_code: 12345678 + # 公安备案的图片. 为空时不显示备案图片 + police_icon: /img/police_beian.png + + +#--------------------------- +# 首页 +# Home Page +#--------------------------- +index: + # 首页 Banner 头图,可以是相对路径或绝对路径,以下相同 + # Path of Banner image, can be a relative path or an absolute path, the same on other pages + banner_img: /img/gensokyo.jpg + + # 头图高度,屏幕百分比 + # Height ratio of banner image + # Available: 0 - 100 + banner_img_height: 100 + + # 头图黑色蒙版的不透明度,available: 0 - 1.0,1 是完全不透明 + # Opacity of the banner mask, 1.0 is completely opaque + # Available: 0 - 1.0 + banner_mask_alpha: 0.3 + + # 首页副标题的独立设置 + # Independent config of home page subtitle + slogan: + enable: true + + # 为空则按 hexo config.subtitle 显示 + # If empty, text based on `subtitle` in hexo config + text: "The Gensokyo the Gods Loved" + + # 通过 API 接口作为首页副标题的内容,必须返回的是 JSON 格式,如果请求失败则按 text 字段显示,该功能必须先开启 typing 打字机功能 + # Subtitle of the homepage through the API, must be returned a JSON. If the request fails, it will be displayed in `text` value. This feature must first enable the typing animation + api: + enable: false + + # 请求地址 + # Request url + url: "" + + # 请求方法 + # Request method + # Available: GET | POST | PUT + method: "GET" + + # 请求头 + # Request headers + headers: {} + + # 从请求结果获取字符串的取值字段,最终必须是一个字符串,例如返回结果为 {"data": {"author": "fluid", "content": "An elegant theme"}}, 则取值字段为 ['data', 'content'];如果返回是列表则自动选择第一项 + # The value field of the string obtained from the response. For example, the response content is {"data": {"author": "fluid", "content": "An elegant theme"}}, the expected `keys: ['data','content']`; if the return is a list, the first item is automatically selected + keys: [] + + # 自动截取文章摘要 + # Auto extract post + auto_excerpt: + enable: true + + # 打开文章的标签方式 + # The browser tag to open the post + # Available: _blank | _self + post_url_target: _self + + # 是否显示文章信息(时间、分类、标签) + # Meta information of post + post_meta: + date: true + category: true + tag: true + + # 文章通过 sticky 排序后,在首页文章标题前显示图标 + # If the posts are sorted by `sticky`, an icon is displayed in front of the post title + post_sticky: + enable: true + icon: "iconfont icon-top" + + +#--------------------------- +# 文章页 +# Post Page +#--------------------------- +post: + banner_img: /img/gensokyo.jpg + banner_img_height: 70 + banner_mask_alpha: 0.3 + + # 文章在首页的默认封面图,当没有指定 index_img 时会使用该图片,若两者都为空则不显示任何图片 + # Path of the default post cover when `index_img` is not set. If both are empty, no image will be displayed + default_index_img: + + # 文章标题下方的元信息 + # Meta information below title + meta: + # 作者,优先根据 front-matter 里 author 字段,其次是 hexo 配置中 author 值 + # Author, based on `author` field in front-matter, if not set, based on `author` value in hexo config + author: + enable: false + + # 文章日期,优先根据 front-matter 里 date 字段,其次是 md 文件日期 + # Post date, based on `date` field in front-matter, if not set, based on create date of .md file + date: + enable: true + # 格式参照 ISO-8601 日期格式化 + # ISO-8601 date format + # See: http://momentjs.cn/docs/#/parsing/string-format/ + format: "LL a" + + # 字数统计 + # Word count + wordcount: + enable: true + + # 估计阅读全文需要的时长 + # Estimated reading time + min2read: + enable: true + # 每个字词的长度,建议:中文≈2,英文≈5,中英混合可自行调节 + # Average word length (chars count in word), ZH ≈ 2, EN ≈ 5 + awl: 2 + # 每分钟阅读字数,如果大部分是技术文章可适度调低 + # Words per minute + wpm: 60 + + # 浏览量计数 + # Number of visits + views: + enable: false + # 统计数据来源 + # Data Source + # Options: busuanzi | leancloud | umami + source: "busuanzi" + + # 在文章开头显示文章更新时间,该时间默认是 md 文件更新时间,可通过 front-matter 中 `updated` 手动指定(和 date 一样格式) + # Update date is displayed at the beginning of the post. The default date is the update date of the md file, which can be manually specified by `updated` in front-matter (same format as date) + updated: + enable: false + + # 格式参照 ISO-8601 日期格式化 + # ISO-8601 date format + # See: http://momentjs.cn/docs/#/parsing/string-format/ + date_format: "LL a" + + # 是否使用相对时间表示,比如:"3 天前" + # If true, it will be a relative time, such as: "3 days ago" + relative: false + + # 提示标签类型 + # Note class + # Options: default | primary | info | success | warning | danger | light + note_class: info + + # 侧边栏展示当前分类下的文章 + # Sidebar of category + category_bar: + enable: true + + # 开启后,只有在文章 Front-matter 里指定 `category_bar: true` 才会展示分类,也可以通过 `category_bar: ["分类A"]` 来指定分类 + # If true, only set `category_bar: true` in Front-matter will enable sidebar of category, also set `category_bar: ["CategoryA"]` to specify categories + specific: true + + # 置于板块的左侧或右侧 + # place in the board + # Options: left | right + placement: left + + # 文章的排序字段,前面带减号是倒序,不带减号是正序 + # Sort field for posts, with a minus sign is reverse order + # Options: date | title | or other field of front-matter + post_order_by: "title" + + # 单个分类中折叠展示文章数的最大值,超过限制会显示 More,0 则不限制 + # The maximum number of posts in a single category. If the limit is exceeded, it will be displayed More. If 0 no limit + post_limit: 0 + + # 侧边栏展示文章目录 + # Table of contents (TOC) in the sidebar + toc: + enable: true + + # 置于板块的左侧或右侧 + # place in the board + # Options: left | right + placement: right + + # 目录会选择这些节点作为标题 + # TOC will select these nodes as headings + headingSelector: "h1,h2,h3,h4,h5,h6" + + # 层级的折叠深度,0 是全部折叠,大于 0 后如果存在下级标题则默认展开 + # Collapse depth. If 0, all headings collapsed. If greater than 0, it will be expanded by default if there are sub headings + collapseDepth: 0 + + # 版权声明,会显示在每篇文章的结尾 + # Copyright, will be displayed at the end of each post + copyright: + enable: true + + # CreativeCommons license + # See: https://creativecommons.org/share-your-work/cclicenses/ + # Options: BY | BY-SA | BY-ND | BY-NC | BY-NC-SA | BY-NC-ND | ZERO + license: 'BY' + + # 显示作者 + author: + enable: true + + # 显示发布日期 + # Show post date + post_date: + enable: true + format: "LL" + + # 显示更新日期 + # Show update date + update_date: + enable: false + format: "LL" + + # 文章底部上一篇下一篇功能 + # Link to previous/next post + prev_next: + enable: true + + # 文章图片标题 + # Image caption + image_caption: + enable: true + + # 文章图片可点击放大 + # Zoom feature of images + image_zoom: + enable: true + # 放大后图片链接替换规则,可用于将压缩图片链接替换为原图片链接,如 ['-slim', ''] 是将链接中 `-slim` 移除;如果想使用正则请使用 `re:` 前缀,如 ['re:\\d{3,4}\\/\\d{3,4}\\/', ''] + # The image url replacement when zooming, the feature can be used to replace the compressed image to the original image, eg: ['-slim', ''] removes `-slim` from the image url when zooming; if you want to use regular, use prefix `re:`, eg: ['re:\\d{3,4}\\/\\d{3,4}\\/',''] + img_url_replace: ['', ''] + + # 脚注语法,会在文章底部生成脚注,如果 Markdown 渲染器本身支持,则建议关闭,否则可能会冲突 + # Support footnote syntax, footnotes will be generated at the bottom of the post page. If the Markdown renderer itself supports it, please disable it, otherwise it may conflict + footnote: + enable: true + # 脚注的节标题,也可以在 front-matter 中通过 `footnote:
白茅铺高地玄院第N任非菌群主🐳,Linux六年牢用户🐧
\n爱好编程,绘画,编曲,Vocaloid调教,Blender建模等😇
\n截至目前最喜欢的歌手是宇多田光❤️
\n联系方式:
\nEmail: c_gh0s7@nudt.edu.cn
\nGithub: https://github.com/CGH0S7
\n白茅铺高地玄院第N任非菌群主🐳,Linux六年牢用户🐧
\n爱好编程,绘画,编曲,Vocaloid调教,Blender建模等😇
\n截至目前最喜欢的歌手是宇多田光❤️
\n联系方式:
\nEmail: c_gh0s7@nudt.edu.cn
\nGithub: https://github.com/CGH0S7
\nOpenCAEPoro 小组(黄,梁,程,刘)
\nOpenCAEPoro 小组(黄,梁,程,刘)
\nOpenCAEPoro 小组(黄,梁,程**)
\n\n\n优化方向基本确定为OpenMP/OpenACC并行化+cuda移植
\n
OpenCAEPoro 小组(黄,梁,程**)
\n\n\n优化方向基本确定为OpenMP/OpenACC并行化+cuda移植
\n
OpenCAEPoro 小组(黄,梁,程,刘)
\nOpenCAEPoro 小组(黄,梁,程,刘)
\nFluid 主题,原主题为 Nexthttps://blog.hifuu.inkAbout 页面友链 页面Fluid 主题,原主题为 Nexthttps://blog.hifuu.inkAbout 页面友链 页面Hello World !
\n","excerpt":"","more":"Hello World !
\n"},{"title":"Gentle Jena","date":"2024-10-30T14:11:14.000Z","_content":"\n很喜欢的一首曲子\n顺便测试一下视频上传\n以后随缘更新各种乱七八糟的东西。。\n\n\n","source":"_posts/GentleJena.md","raw":"---\ntitle: Gentle Jena\ndate: 2024-10-30 22:11:14\ntags: 音乐\ncategories: Rearrangement\n---\n\n很喜欢的一首曲子\n顺便测试一下视频上传\n以后随缘更新各种乱七八糟的东西。。\n\n\n","slug":"GentleJena","published":1,"updated":"2025-02-23T17:14:31.930Z","comments":1,"layout":"post","photos":[],"_id":"cm7jziods000hwi2b19t43c6n","content":"很喜欢的一首曲子
顺便测试一下视频上传
以后随缘更新各种乱七八糟的东西。。
很喜欢的一首曲子
顺便测试一下视频上传
以后随缘更新各种乱七八糟的东西。。
其实是今年年初的作品想起来可以搬上来,这是我调教的第一首v曲。
\n“故事的小黄花,从出生那年就飘着…”
\n\n\n\n\n","excerpt":"","more":"其实是今年年初的作品想起来可以搬上来,这是我调教的第一首v曲。
\n“故事的小黄花,从出生那年就飘着…”
\n\n\n\n\n"},{"title":"Archlinux的KDE Plasma优先启用Nvidia独立显卡和混合显卡配置指北","date":"2024-11-06T02:02:04.000Z","_content":"本文将介绍在 **X11** 和 **Wayland** 两种会话下,如何在 KDE Plasma 中优先启用 Nvidia 独立显卡,并提供 I+N 混合显卡的配置方案。**首先,请确保您已经正确安装了 Nvidia 驱动**(如果非 Mainline 内核,请使用 `nvidia-dkms` 或 `nvidia-open-dkms` 版本)。\n\n\n\n### 适用系统\n\n对于 **CachyOS** 或 **EndeavourOS** 等 Arch Linux 衍生版,这些配置大多开箱即用,但对于刚刚入坑 Arch Linux 且使用 KDE 的新手可能会遇到这样的问题:\n\n- Nvidia 驱动已安装,`nvidia-smi` 输出正常\n- KDE 系统信息显示仍在使用核显,程序运行时也优先使用核显\n- 导致某些应用(如浏览器、Blender)可能出现卡顿或掉帧现象\n\n这是因为 Arch Linux 的高自定义性,许多功能需要用户手动配置。以下是详细的解决方案。\n\n---\n\n## 配置 X11 下的 Nvidia 显卡优先\n\n可以通过配置 `/etc/X11/xorg.conf` 实现 Nvidia 独显输出。幸运的是,Nvidia 提供了自动生成配置文件的工具,用户无需手动编写:\n\n```bash\nsudo nvidia-xconfig --prime\n```\n\n该命令会根据硬件情况自动生成配置文件。执行后 **重新登录会话** 即可生效(即使是 Wayland 用户也可以执行一次此命令)。\n\n\n\n---\n\n## 配置 Wayland 下的 Nvidia 显卡优先\n\n在 Wayland 下优先启用 Nvidia 显卡的步骤如下:\n\n1. 编辑 **GRUB 配置**文件:\n\n 打开 `/etc/default/grub` 文件,在 `GRUB_CMDLINE_LINUX_DEFAULT=\"\"` 中添加 `nvidia_drm.modeset=1`:\n\n ```bash\n GRUB_CMDLINE_LINUX_DEFAULT=\"nvidia_drm.modeset=1\"\n ```\n\n2. 重新生成 grub 配置:\n\n ```bash\n sudo grub-mkconfig -o /boot/grub/grub.cfg\n ```\n\n3. 配置 **Plasma 环境**文件:\n\n 在 `~/.config/plasma-workspace/env/nvidia.sh` 中写入以下内容:\n\n ```bash\n #!/bin/bash \n export __NV_PRIME_RENDER_OFFLOAD=1 \n export __GLX_VENDOR_LIBRARY_NAME=nvidia\n ```\n\n4. 保存并重启电脑,即可生效。\n\n\n\n---\n\n## I+N 混合显卡方案\n\n如果不希望全局启用独显,可以选择让大部分程序默认使用核显,而少数高性能需求的程序使用独显。这种方法能有效节省功耗,同时将独显资源集中分配给需要的程序(如 Steam 游戏、Blender 等)。缺点是每个程序需要手动配置启动项。\n\n### 配置步骤\n\n1. 打开程序的 `.desktop` 启动文件:\n\n 位置可能在 `/usr/share/applications` 或 `~/.local/share/applications` 中。\n\n2. 在 `Exec=` 后添加 `prime-run` 参数。例如:\n\n ```text\n Exec=prime-run <程序启动命令>\n ```\n\n \n\n### Vim 快捷配置\n\n如果使用 Vim,可以使用以下快捷键快速批量替换 `Exec=` 为 `Exec=prime-run`:\n\n```vim\nv -> G -> :s/Exec=/Exec=prime-run /g Enter -> :wq Enter\n```\n\n---\n\n## 让 Plasma 桌面也使用独显\n\n如果希望 Plasma 桌面也通过独显运行,可以修改 Wayland 配置文件并删除第二行:\n\n```bash\n#!/bin/bash \nexport __GLX_VENDOR_LIBRARY_NAME=nvidia\n```\n\n这样 Plasma 桌面会通过独显启动,其他程序则默认使用核显。\n\n---\n\n希望以上经验能为有此需求的用户提供参考帮助。\n","source":"_posts/arch-nvidia.md","raw":"---\ntitle: Archlinux的KDE Plasma优先启用Nvidia独立显卡和混合显卡配置指北\ndate: 2024-11-06 10:02:04\ntags: 技术\ncategories: [技术分享]\n---\n本文将介绍在 **X11** 和 **Wayland** 两种会话下,如何在 KDE Plasma 中优先启用 Nvidia 独立显卡,并提供 I+N 混合显卡的配置方案。**首先,请确保您已经正确安装了 Nvidia 驱动**(如果非 Mainline 内核,请使用 `nvidia-dkms` 或 `nvidia-open-dkms` 版本)。\n\n\n\n### 适用系统\n\n对于 **CachyOS** 或 **EndeavourOS** 等 Arch Linux 衍生版,这些配置大多开箱即用,但对于刚刚入坑 Arch Linux 且使用 KDE 的新手可能会遇到这样的问题:\n\n- Nvidia 驱动已安装,`nvidia-smi` 输出正常\n- KDE 系统信息显示仍在使用核显,程序运行时也优先使用核显\n- 导致某些应用(如浏览器、Blender)可能出现卡顿或掉帧现象\n\n这是因为 Arch Linux 的高自定义性,许多功能需要用户手动配置。以下是详细的解决方案。\n\n---\n\n## 配置 X11 下的 Nvidia 显卡优先\n\n可以通过配置 `/etc/X11/xorg.conf` 实现 Nvidia 独显输出。幸运的是,Nvidia 提供了自动生成配置文件的工具,用户无需手动编写:\n\n```bash\nsudo nvidia-xconfig --prime\n```\n\n该命令会根据硬件情况自动生成配置文件。执行后 **重新登录会话** 即可生效(即使是 Wayland 用户也可以执行一次此命令)。\n\n\n\n---\n\n## 配置 Wayland 下的 Nvidia 显卡优先\n\n在 Wayland 下优先启用 Nvidia 显卡的步骤如下:\n\n1. 编辑 **GRUB 配置**文件:\n\n 打开 `/etc/default/grub` 文件,在 `GRUB_CMDLINE_LINUX_DEFAULT=\"\"` 中添加 `nvidia_drm.modeset=1`:\n\n ```bash\n GRUB_CMDLINE_LINUX_DEFAULT=\"nvidia_drm.modeset=1\"\n ```\n\n2. 重新生成 grub 配置:\n\n ```bash\n sudo grub-mkconfig -o /boot/grub/grub.cfg\n ```\n\n3. 配置 **Plasma 环境**文件:\n\n 在 `~/.config/plasma-workspace/env/nvidia.sh` 中写入以下内容:\n\n ```bash\n #!/bin/bash \n export __NV_PRIME_RENDER_OFFLOAD=1 \n export __GLX_VENDOR_LIBRARY_NAME=nvidia\n ```\n\n4. 保存并重启电脑,即可生效。\n\n\n\n---\n\n## I+N 混合显卡方案\n\n如果不希望全局启用独显,可以选择让大部分程序默认使用核显,而少数高性能需求的程序使用独显。这种方法能有效节省功耗,同时将独显资源集中分配给需要的程序(如 Steam 游戏、Blender 等)。缺点是每个程序需要手动配置启动项。\n\n### 配置步骤\n\n1. 打开程序的 `.desktop` 启动文件:\n\n 位置可能在 `/usr/share/applications` 或 `~/.local/share/applications` 中。\n\n2. 在 `Exec=` 后添加 `prime-run` 参数。例如:\n\n ```text\n Exec=prime-run <程序启动命令>\n ```\n\n \n\n### Vim 快捷配置\n\n如果使用 Vim,可以使用以下快捷键快速批量替换 `Exec=` 为 `Exec=prime-run`:\n\n```vim\nv -> G -> :s/Exec=/Exec=prime-run /g Enter -> :wq Enter\n```\n\n---\n\n## 让 Plasma 桌面也使用独显\n\n如果希望 Plasma 桌面也通过独显运行,可以修改 Wayland 配置文件并删除第二行:\n\n```bash\n#!/bin/bash \nexport __GLX_VENDOR_LIBRARY_NAME=nvidia\n```\n\n这样 Plasma 桌面会通过独显启动,其他程序则默认使用核显。\n\n---\n\n希望以上经验能为有此需求的用户提供参考帮助。\n","slug":"arch-nvidia","published":1,"updated":"2025-02-02T11:21:35.673Z","comments":1,"layout":"post","photos":[],"_id":"cm7jziodt000mwi2bcvznhn4q","content":"本文将介绍在 X11 和 Wayland 两种会话下,如何在 KDE Plasma 中优先启用 Nvidia 独立显卡,并提供 I+N 混合显卡的配置方案。首先,请确保您已经正确安装了 Nvidia 驱动(如果非 Mainline 内核,请使用 nvidia-dkms 或 nvidia-open-dkms 版本)。

对于 CachyOS 或 EndeavourOS 等 Arch Linux 衍生版,这些配置大多开箱即用,但对于刚刚入坑 Arch Linux 且使用 KDE 的新手可能会遇到这样的问题:
\nnvidia-smi 输出正常这是因为 Arch Linux 的高自定义性,许多功能需要用户手动配置。以下是详细的解决方案。
\n可以通过配置 /etc/X11/xorg.conf 实现 Nvidia 独显输出。幸运的是,Nvidia 提供了自动生成配置文件的工具,用户无需手动编写:
1 | |
该命令会根据硬件情况自动生成配置文件。执行后 重新登录会话 即可生效(即使是 Wayland 用户也可以执行一次此命令)。
\n
在 Wayland 下优先启用 Nvidia 显卡的步骤如下:
\n编辑 GRUB 配置文件:
\n打开 /etc/default/grub 文件,在 GRUB_CMDLINE_LINUX_DEFAULT="" 中添加 nvidia_drm.modeset=1:
1 | |
重新生成 grub 配置:
\n1 | |
配置 Plasma 环境文件:
\n在 ~/.config/plasma-workspace/env/nvidia.sh 中写入以下内容:
1 | |
保存并重启电脑,即可生效。
\n
如果不希望全局启用独显,可以选择让大部分程序默认使用核显,而少数高性能需求的程序使用独显。这种方法能有效节省功耗,同时将独显资源集中分配给需要的程序(如 Steam 游戏、Blender 等)。缺点是每个程序需要手动配置启动项。
\n打开程序的 .desktop 启动文件:
位置可能在 /usr/share/applications 或 ~/.local/share/applications 中。
在 Exec= 后添加 prime-run 参数。例如:
1 | |

如果使用 Vim,可以使用以下快捷键快速批量替换 Exec= 为 Exec=prime-run:
1 | |
如果希望 Plasma 桌面也通过独显运行,可以修改 Wayland 配置文件并删除第二行:
\n1 | |
这样 Plasma 桌面会通过独显启动,其他程序则默认使用核显。
\n希望以上经验能为有此需求的用户提供参考帮助。
\n","excerpt":"","more":"本文将介绍在 X11 和 Wayland 两种会话下,如何在 KDE Plasma 中优先启用 Nvidia 独立显卡,并提供 I+N 混合显卡的配置方案。首先,请确保您已经正确安装了 Nvidia 驱动(如果非 Mainline 内核,请使用 nvidia-dkms 或 nvidia-open-dkms 版本)。

对于 CachyOS 或 EndeavourOS 等 Arch Linux 衍生版,这些配置大多开箱即用,但对于刚刚入坑 Arch Linux 且使用 KDE 的新手可能会遇到这样的问题:
\nnvidia-smi 输出正常这是因为 Arch Linux 的高自定义性,许多功能需要用户手动配置。以下是详细的解决方案。
\n可以通过配置 /etc/X11/xorg.conf 实现 Nvidia 独显输出。幸运的是,Nvidia 提供了自动生成配置文件的工具,用户无需手动编写:
1 | |
该命令会根据硬件情况自动生成配置文件。执行后 重新登录会话 即可生效(即使是 Wayland 用户也可以执行一次此命令)。
\n
在 Wayland 下优先启用 Nvidia 显卡的步骤如下:
\n编辑 GRUB 配置文件:
\n打开 /etc/default/grub 文件,在 GRUB_CMDLINE_LINUX_DEFAULT="" 中添加 nvidia_drm.modeset=1:
1 | |
重新生成 grub 配置:
\n1 | |
配置 Plasma 环境文件:
\n在 ~/.config/plasma-workspace/env/nvidia.sh 中写入以下内容:
1 | |
保存并重启电脑,即可生效。
\n
如果不希望全局启用独显,可以选择让大部分程序默认使用核显,而少数高性能需求的程序使用独显。这种方法能有效节省功耗,同时将独显资源集中分配给需要的程序(如 Steam 游戏、Blender 等)。缺点是每个程序需要手动配置启动项。
\n打开程序的 .desktop 启动文件:
位置可能在 /usr/share/applications 或 ~/.local/share/applications 中。
在 Exec= 后添加 prime-run 参数。例如:
1 | |

如果使用 Vim,可以使用以下快捷键快速批量替换 Exec= 为 Exec=prime-run:
1 | |
如果希望 Plasma 桌面也通过独显运行,可以修改 Wayland 配置文件并删除第二行:
\n1 | |
这样 Plasma 桌面会通过独显启动,其他程序则默认使用核显。
\n希望以上经验能为有此需求的用户提供参考帮助。
\n"},{"title":"Archlinux KDE体验优化总结","date":"2025-02-02T10:43:26.000Z","_content":"\n打算开一个坑记录这么久以来的Archlinux系统性能和操作体验优化经验\n\n本文章长期更新\n\n------\n\n## 软件优化\n\n## 快捷键设置\n\n## \n","source":"_posts/archlinux-optimization.md","raw":"---\ntitle: Archlinux KDE体验优化总结\ndate: 2025-02-02 18:43:26\ntags: [技术分享]\n---\n\n打算开一个坑记录这么久以来的Archlinux系统性能和操作体验优化经验\n\n本文章长期更新\n\n------\n\n## 软件优化\n\n## 快捷键设置\n\n## \n","slug":"archlinux-optimization","published":1,"updated":"2025-02-23T14:29:02.471Z","comments":1,"layout":"post","photos":[],"_id":"cm7jziodu000pwi2b49gyhjcz","content":"打算开一个坑记录这么久以来的Archlinux系统性能和操作体验优化经验
\n本文章长期更新
\n打算开一个坑记录这么久以来的Archlinux系统性能和操作体验优化经验
\n本文章长期更新
\n
Clonezilla是一款非常好用的系统迁移工具,本文将介绍其基本用法(不包含网络迁移及Clonezilla服务器等进阶内容)以及在克隆Btrfs磁盘时遇到的问题解法。
这个模式可以将硬盘完整备份为一个镜像文件(可保存到本地硬盘、外置硬盘或网络存储)方便多机部署。注意如果只是将一个硬盘的系统完全克隆到新盘可以跳过此部分。
\n启动Clonezilla:
\n选择备份模式:
\n1 | |
/dev/sdb1)。配置备份参数:
\n/dev/sda)。2025-img-rockylinux-2-21)。确认操作:
\ny 开始备份。镜像还原:和备份非常相似,只是选项换成restore to disk,顺着指引操作即可。
\n将源硬盘完整克隆到目标硬盘(适合硬盘升级或快速迁移),比如笔者最近白嫖了一个三星的2T硬盘直接把原来512G硬盘里的CachyOS无损迁移了进去。
\n准备工作:
\n启动Clonezilla:
\n选择克隆模式:
\n1 | |
选择硬盘:
\n/dev/sda)。/dev/sdb)。克隆选项:
需要进入专家模式才能看到,一般直接新手模式默认即可。
执行克隆:
\ny,等待完成。| 模式 | \n特点 | \n
|---|---|
| 备份镜像 | \n方便多机部署也可以用于留档 | \n
| 直接克隆 | \n换硬盘快速迁移无需恢复过程 | \n
对Btrfs直接进行Clonezilla克隆大概率会碰到一个边界错误,这是由于Btrfs本身使用一段时间后碎片化存储导致的,你需要执行sudo btrfs balance start --full-balance /来进行整理,但是这也算是一个风险操作要确保完整执行不能在执行时意外中断导致文件系统出错,并且在后续克隆时不能使用新手模式要进入专家模式勾选-p1支持所有文件系统但是效率降低的选项来确保顺利克隆(未勾选此选项可能导致文件系统无法识别的错误),其他步骤参照前文即可。

Clonezilla是一款非常好用的系统迁移工具,本文将介绍其基本用法(不包含网络迁移及Clonezilla服务器等进阶内容)以及在克隆Btrfs磁盘时遇到的问题解法。
这个模式可以将硬盘完整备份为一个镜像文件(可保存到本地硬盘、外置硬盘或网络存储)方便多机部署。注意如果只是将一个硬盘的系统完全克隆到新盘可以跳过此部分。
\n启动Clonezilla:
\n选择备份模式:
\n1 | |
/dev/sdb1)。配置备份参数:
\n/dev/sda)。2025-img-rockylinux-2-21)。确认操作:
\ny 开始备份。镜像还原:和备份非常相似,只是选项换成restore to disk,顺着指引操作即可。
\n将源硬盘完整克隆到目标硬盘(适合硬盘升级或快速迁移),比如笔者最近白嫖了一个三星的2T硬盘直接把原来512G硬盘里的CachyOS无损迁移了进去。
\n准备工作:
\n启动Clonezilla:
\n选择克隆模式:
\n1 | |
选择硬盘:
\n/dev/sda)。/dev/sdb)。克隆选项:
需要进入专家模式才能看到,一般直接新手模式默认即可。
执行克隆:
\ny,等待完成。| 模式 | \n特点 | \n
|---|---|
| 备份镜像 | \n方便多机部署也可以用于留档 | \n
| 直接克隆 | \n换硬盘快速迁移无需恢复过程 | \n
对Btrfs直接进行Clonezilla克隆大概率会碰到一个边界错误,这是由于Btrfs本身使用一段时间后碎片化存储导致的,你需要执行sudo btrfs balance start --full-balance /来进行整理,但是这也算是一个风险操作要确保完整执行不能在执行时意外中断导致文件系统出错,并且在后续克隆时不能使用新手模式要进入专家模式勾选-p1支持所有文件系统但是效率降低的选项来确保顺利克隆(未勾选此选项可能导致文件系统无法识别的错误),其他步骤参照前文即可。
如题,前段时间推完LOOPERS的时候有感而发对着画了张海报
\n时隔一年,终于又拿起了数位板
\n
如题,前段时间推完LOOPERS的时候有感而发对着画了张海报
\n时隔一年,终于又拿起了数位板
\n
使用东方Project软音源THFont简单重置的MHWI主题曲
\n雄关漫道真如铁,而今迈步从头越
\n\n\n\n\n","excerpt":"","more":"使用东方Project软音源THFont简单重置的MHWI主题曲
\n雄关漫道真如铁,而今迈步从头越
\n\n\n\n\n"},{"title":"高地特供版CSAPP Bomb Lab全流程攻略","date":"2025-02-24T07:09:11.000Z","_content":"\n这篇文章记录高地CSAPP课程Bomblab实验操作流程,仅供参考交流(答案是随机生成的和学号相关)。\n\n笔者实验环境为Archlinux/CachyOS,使用lldb作为调试器(和gdb操作差不多),其余用到的工具主要为objdump,strings,neovim/helix和zellij,全程开源环境不使用IDA。\n\n## **Phase_1**\n\n### **静态分析**\n\n#### **`strings`扫描**\n```bash\nstrings bomb_linux\n```\n先用strings寻找可能与`phase_1`相关的字符串或函数名,运气好说不定能直接找到密码毕竟是第一题。\n\n - 结果没有明文密码无法直接秒掉第一问,可惜。\n - 但是找到`GenerateRandomString`函数可能与密码生成相关。\n\n#### **用`objdump`反汇编**\n```bash\nobjdump -d bomb_linux > bomb.asm\n```\n搜索`GenerateRandomString`和`phase_1`函数的汇编代码。\n ```assembly\n 401b53这篇文章记录高地CSAPP课程Bomblab实验操作流程,仅供参考交流(答案是随机生成的和学号相关)。
\n笔者实验环境为Archlinux/CachyOS,使用lldb作为调试器(和gdb操作差不多),其余用到的工具主要为objdump,strings,neovim/helix和zellij,全程开源环境不使用IDA。
\nstrings扫描1 | |
先用strings寻找可能与phase_1相关的字符串或函数名,运气好说不定能直接找到密码毕竟是第一题。
GenerateRandomString函数可能与密码生成相关。objdump反汇编1 | |
搜索GenerateRandomString和phase_1函数的汇编代码。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17401b53 <phase_1>:
401b53: endbr64
401b57: push %rbp
401b58: mov %rsp,%rbp
401b5b: sub $0x20,%rsp
401b5f: mov %rdi,-0x18(%rbp)
401b63: lea -0xb(%rbp),%rax
401b67: mov %rax,%rdi
401b6a: callq 401ac1 <GenerateRandomString> # 调用密码生成函数
401b6f: lea -0xb(%rbp),%rdx # 生成的字符串地址%rbp-0xb存入%rdx,即密码存储位置
401b73: mov -0x18(%rbp),%rax
401b77: mov %rdx,%rsi
401b7a: mov %rax,%rdi
401b7d: callq 401c0c <string_compare> # 调用字符串比较函数
401b82: test %eax,%eax
401b84: je 401b8d <phase_1+0x3a>
401b86: callq 401d67 <explode_bomb> # 比较失败则引爆炸弹
phase_1调用GenerateRandomString生成一个字符串。
下面是phase_1求解的完整流程:
1 | |
将得到的密码保存入bomb_<学号后六位>.txt即可,避免后续重复输入。
\n这道题目还是比较一目了然的,观察phase_2代码不难发现其实构建了一张跳转表:
1 | |
这里面需要注意的关键点是rand_div,它会决定你的跳转方向,而你的学号又决定了它的取值。然后是GenerateRandomNumber这个函数的原理需要了解一下,而这个函数将在跳转前后分别调用一次,第一次决定你的跳转方向,第二次则决定了你的密码线索。
理解原理就没什么难度了,自己找几个断点打好然后关注一下rand_div的值就好,观察自己的学号向哪个函数跳转并理解相应函数计算即可,比如我这里向phase_2_14跳转:
而除了phase_2_14还有其他函数也是非常好理解的,第二题依旧可以轻松拿下。
和Phase_2一样开局先跳转尽可能防止同学们答案雷同互相帮助(bushi
\n本体其实没有什么好说的,这里我跳转的方向是Phase_3_5简要解释一下可供参考:
1 | |
看起来一大堆很吓人对不对?实际上确实很吓人。
\n但是发现其中玄机后其实简单的没边,最终答案就藏在0x403177里面,前提是确保这一步前炸弹不爆炸(意识到要爆炸了直接run一下重开qwq)。
阅读Phase_3_5发现这一关其实需要两个输入,并且第一个输入必须是rand_div,这里建议通过si单步执行监控好rand_div值变化,确定正确结果后使用run重开正确输入第一个密码后才能进行下一步求解:
1 | |
例如这里我可以打印出第二个值结合第一个值得到第三关正确结果。
\n本题依旧开局跳转,笔者的跳转方向是phase_4_01,如何跳转不再强调关注rand_div的值即可,下面请D指导解读一下phase_4_01的内容:
1 | |
所以相对还是很明了的,依旧是关注rand_div。
先找出rand_div在最后判断前的取值,比如我下面的0xa:
1 | |
而当 rand_div = 0xa(即十进制 10)时,输入值 N 的计算步骤如下:
数组索引 10 的值是 斐波那契数列第 20 项(F(20) = 6765)。
func4_0(k) 实际计算的是 标准斐波那契数列的第 k+1 项(例如,func4_0(0) = 1 = F(2)) 需要满足:
1 | |
解得:
k + 1 = 20 → k = 19
k = N / 2000 → N = 2000 * k = 2000 * 19 = 38000.
从而得解。
Impossible?
\n从这道题开始偷懒了,掏出ghidra直接看c代码了解一下大概流程再去objdump看汇编:
\n1 | |
最终任务还是很明确的,需要写一段机器码修改result的数值,但是注意要能通过check_buf_valid检测,并且最后指令必须是跳转到0x401896不然就会触发phase_impossible中0x401891处的explode_bomb函数,唯一的难点是跟踪rand_div的数值变化,建议使用register write来修改check_buf_valid的返回值使其强制通过然后监控rand_div每一次的数值变化(x/gx &rand_div),记录好rand_div的结果后开始指令设计,需要满足:
rand_div第一次的数值末尾八位以通过检查;result使其数值等于rand_div第三次数值;0x401896避免炸弹;如果前几问都完成了到这里应该是没有问题的。
\n隐藏彩蛋,并非隐藏。汇编里写的非常清楚:
\n1 | |
注意到这段指令在原程序中完全没有执行说明是需要用户自己跳转的,也非常简单只需要在phase_5中设计指令时加一个要求跳转到0x401a8b即可。
完结
这篇文章记录高地CSAPP课程Bomblab实验操作流程,仅供参考交流(答案是随机生成的和学号相关)。
\n笔者实验环境为Archlinux/CachyOS,使用lldb作为调试器(和gdb操作差不多),其余用到的工具主要为objdump,strings,neovim/helix和zellij,全程开源环境不使用IDA。
\nstrings扫描1 | |
先用strings寻找可能与phase_1相关的字符串或函数名,运气好说不定能直接找到密码毕竟是第一题。
GenerateRandomString函数可能与密码生成相关。objdump反汇编1 | |
搜索GenerateRandomString和phase_1函数的汇编代码。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17401b53 <phase_1>:
401b53: endbr64
401b57: push %rbp
401b58: mov %rsp,%rbp
401b5b: sub $0x20,%rsp
401b5f: mov %rdi,-0x18(%rbp)
401b63: lea -0xb(%rbp),%rax
401b67: mov %rax,%rdi
401b6a: callq 401ac1 <GenerateRandomString> # 调用密码生成函数
401b6f: lea -0xb(%rbp),%rdx # 生成的字符串地址%rbp-0xb存入%rdx,即密码存储位置
401b73: mov -0x18(%rbp),%rax
401b77: mov %rdx,%rsi
401b7a: mov %rax,%rdi
401b7d: callq 401c0c <string_compare> # 调用字符串比较函数
401b82: test %eax,%eax
401b84: je 401b8d <phase_1+0x3a>
401b86: callq 401d67 <explode_bomb> # 比较失败则引爆炸弹
phase_1调用GenerateRandomString生成一个字符串。
下面是phase_1求解的完整流程:
1 | |
将得到的密码保存入bomb_<学号后六位>.txt即可,避免后续重复输入。
\n这道题目还是比较一目了然的,观察phase_2代码不难发现其实构建了一张跳转表:
1 | |
这里面需要注意的关键点是rand_div,它会决定你的跳转方向,而你的学号又决定了它的取值。然后是GenerateRandomNumber这个函数的原理需要了解一下,而这个函数将在跳转前后分别调用一次,第一次决定你的跳转方向,第二次则决定了你的密码线索。
理解原理就没什么难度了,自己找几个断点打好然后关注一下rand_div的值就好,观察自己的学号向哪个函数跳转并理解相应函数计算即可,比如我这里向phase_2_14跳转:
而除了phase_2_14还有其他函数也是非常好理解的,第二题依旧可以轻松拿下。
和Phase_2一样开局先跳转尽可能防止同学们答案雷同互相帮助(bushi
\n本体其实没有什么好说的,这里我跳转的方向是Phase_3_5简要解释一下可供参考:
1 | |
看起来一大堆很吓人对不对?实际上确实很吓人。
\n但是发现其中玄机后其实简单的没边,最终答案就藏在0x403177里面,前提是确保这一步前炸弹不爆炸(意识到要爆炸了直接run一下重开qwq)。
阅读Phase_3_5发现这一关其实需要两个输入,并且第一个输入必须是rand_div,这里建议通过si单步执行监控好rand_div值变化,确定正确结果后使用run重开正确输入第一个密码后才能进行下一步求解:
1 | |
例如这里我可以打印出第二个值结合第一个值得到第三关正确结果。
\n本题依旧开局跳转,笔者的跳转方向是phase_4_01,如何跳转不再强调关注rand_div的值即可,下面请D指导解读一下phase_4_01的内容:
1 | |
所以相对还是很明了的,依旧是关注rand_div。
先找出rand_div在最后判断前的取值,比如我下面的0xa:
1 | |
而当 rand_div = 0xa(即十进制 10)时,输入值 N 的计算步骤如下:
数组索引 10 的值是 斐波那契数列第 20 项(F(20) = 6765)。
func4_0(k) 实际计算的是 标准斐波那契数列的第 k+1 项(例如,func4_0(0) = 1 = F(2)) 需要满足:
1 | |
解得:
k + 1 = 20 → k = 19
k = N / 2000 → N = 2000 * k = 2000 * 19 = 38000.
从而得解。
Impossible?
\n从这道题开始偷懒了,掏出ghidra直接看c代码了解一下大概流程再去objdump看汇编:
\n1 | |
最终任务还是很明确的,需要写一段机器码修改result的数值,但是注意要能通过check_buf_valid检测,并且最后指令必须是跳转到0x401896不然就会触发phase_impossible中0x401891处的explode_bomb函数,唯一的难点是跟踪rand_div的数值变化,建议使用register write来修改check_buf_valid的返回值使其强制通过然后监控rand_div每一次的数值变化(x/gx &rand_div),记录好rand_div的结果后开始指令设计,需要满足:
rand_div第一次的数值末尾八位以通过检查;result使其数值等于rand_div第三次数值;0x401896避免炸弹;如果前几问都完成了到这里应该是没有问题的。
\n隐藏彩蛋,并非隐藏。汇编里写的非常清楚:
\n1 | |
注意到这段指令在原程序中完全没有执行说明是需要用户自己跳转的,也非常简单只需要在phase_5中设计指令时加一个要求跳转到0x401a8b即可。
完结
在安装 Overleaf Toolkit 时,表面上看起来很简单只要执行一些脚本就行,但是在某地区网络环境下还是遇到了一些问题和困难,这里记录安装过程中的问题和解决方案,方便以后参考。
\n具体流程就不赘述了,先将访问Overleaf Toolkit官方仓库将代码clone下来并按照手册执行即可。
\n在执行 bin/up 脚本启动服务时,发现 Mongo、Redis 和 Sharelatex 镜像无法拉取。主要原因是 Docker 在国内网络环境中,直接访问 Docker Hub 可能会被限制,导致拉取镜像失败。
截至这篇博客编写时网上提供的镜像均无法解决只能使用代理。
\n通过配置 Docker 的代理,可以解决拉取镜像受限的问题。步骤如下:
\n创建一个 systemd 服务文件,为 Docker 设置代理。
编辑 /etc/systemd/system/docker.service.d/proxy.conf 文件,添加以下内容(确保已经设置了代理服务器):
1 | |
重新加载 systemd 配置并重启 Docker:
1 | |
重启 Docker 后再次执行 sudo ./up,此时应该可以正常拉取 Mongo、Redis 和 Sharelatex 的镜像。等待执行完成即可。
先确认ipv4和ipv6转发功能没有问题,但是依旧出现只能本机访问127.0.0.1,其他方式均无法访问,甚至nmap扫描端口也发现并未开放sharelatex端口,可以通过修改docker-compose配置文件解决。
\n注意到在默认的 lib/docker-compose.base.yml 配置中,Overleaf Web 服务的端口映射方式为 "${OVERLEAF_LISTEN_IP:-127.0.0.1}:${OVERLEAF_PORT:-80}:80"。
在 docker-compose.base.yml 文件中,删除 ${OVERLEAF_LISTEN_IP:-127.0.0.1} 前缀,将 "${OVERLEAF_LISTEN_IP:-127.0.0.1}:${OVERLEAF_PORT:-80}:80" 修改为 "${OVERLEAF_PORT:-80}:80"。这样可以使 Docker 将 Overleaf 的 Web 服务端口暴露给所有网络接口,从而允许外部机器访问。
修改后的 docker-compose.base.yml 端口映射配置如下:
1 | |
完成修改后,重新启动 Docker 服务:
\n1 | |
现在,外部机器可以通过服务器的 IP 地址加端口 {Overleaf_Port} 访问 Overleaf Web 服务。
这次安装 Overleaf Toolkit 时,主要遇到的两个问题分别是镜像拉取失败和端口映射受限。通过为 Docker 设置代理解决了拉取镜像的问题,而通过修改 docker-compose.base.yml 中的端口映射使外部设备可以访问 Overleaf 服务。
可以在这里参考我的本地Overleaf效果,注意安装完后还需要配置latex包和中文字体。
\n这篇记录希望能为遇到类似问题的朋友提供帮助。
\n","excerpt":"","more":"在安装 Overleaf Toolkit 时,表面上看起来很简单只要执行一些脚本就行,但是在某地区网络环境下还是遇到了一些问题和困难,这里记录安装过程中的问题和解决方案,方便以后参考。
\n具体流程就不赘述了,先将访问Overleaf Toolkit官方仓库将代码clone下来并按照手册执行即可。
\n在执行 bin/up 脚本启动服务时,发现 Mongo、Redis 和 Sharelatex 镜像无法拉取。主要原因是 Docker 在国内网络环境中,直接访问 Docker Hub 可能会被限制,导致拉取镜像失败。
截至这篇博客编写时网上提供的镜像均无法解决只能使用代理。
\n通过配置 Docker 的代理,可以解决拉取镜像受限的问题。步骤如下:
\n创建一个 systemd 服务文件,为 Docker 设置代理。
编辑 /etc/systemd/system/docker.service.d/proxy.conf 文件,添加以下内容(确保已经设置了代理服务器):
1 | |
重新加载 systemd 配置并重启 Docker:
1 | |
重启 Docker 后再次执行 sudo ./up,此时应该可以正常拉取 Mongo、Redis 和 Sharelatex 的镜像。等待执行完成即可。
先确认ipv4和ipv6转发功能没有问题,但是依旧出现只能本机访问127.0.0.1,其他方式均无法访问,甚至nmap扫描端口也发现并未开放sharelatex端口,可以通过修改docker-compose配置文件解决。
\n注意到在默认的 lib/docker-compose.base.yml 配置中,Overleaf Web 服务的端口映射方式为 "${OVERLEAF_LISTEN_IP:-127.0.0.1}:${OVERLEAF_PORT:-80}:80"。
在 docker-compose.base.yml 文件中,删除 ${OVERLEAF_LISTEN_IP:-127.0.0.1} 前缀,将 "${OVERLEAF_LISTEN_IP:-127.0.0.1}:${OVERLEAF_PORT:-80}:80" 修改为 "${OVERLEAF_PORT:-80}:80"。这样可以使 Docker 将 Overleaf 的 Web 服务端口暴露给所有网络接口,从而允许外部机器访问。
修改后的 docker-compose.base.yml 端口映射配置如下:
1 | |
完成修改后,重新启动 Docker 服务:
\n1 | |
现在,外部机器可以通过服务器的 IP 地址加端口 {Overleaf_Port} 访问 Overleaf Web 服务。
这次安装 Overleaf Toolkit 时,主要遇到的两个问题分别是镜像拉取失败和端口映射受限。通过为 Docker 设置代理解决了拉取镜像的问题,而通过修改 docker-compose.base.yml 中的端口映射使外部设备可以访问 Overleaf 服务。
可以在这里参考我的本地Overleaf效果,注意安装完后还需要配置latex包和中文字体。
\n这篇记录希望能为遇到类似问题的朋友提供帮助。
\n"},{"title":"命令行编辑器的优雅新选择","date":"2024-12-12T17:40:27.000Z","_content":"\n意外发现Zellij+Helix还挺好用的\n\n避免了vim/neovim的配置流程直接就能上手的轻量命令行开发环境\n\n稍微了解一下二者的快捷键就能舒适码字了\n\n甚至还都是rust出品\n\n即刻尝试一下[Zellij](https://zellij.dev/)和[Helix](https://helix-editor.com/)吧!\n\n// 至于Helix没有文件树显示的方案,反正Helix选择文件挺方便的要文件树无非是希望编辑窗口居于窗口中央,倒是可以用watch和tree命令来代替还能手动设置哪些文件不用显示hhh\n\n\n","source":"_posts/zellij-helix.md","raw":"---\ntitle: 命令行编辑器的优雅新选择\ndate: 2024-12-13 01:40:27\ntags: [技术分享]\n---\n\n意外发现Zellij+Helix还挺好用的\n\n避免了vim/neovim的配置流程直接就能上手的轻量命令行开发环境\n\n稍微了解一下二者的快捷键就能舒适码字了\n\n甚至还都是rust出品\n\n即刻尝试一下[Zellij](https://zellij.dev/)和[Helix](https://helix-editor.com/)吧!\n\n// 至于Helix没有文件树显示的方案,反正Helix选择文件挺方便的要文件树无非是希望编辑窗口居于窗口中央,倒是可以用watch和tree命令来代替还能手动设置哪些文件不用显示hhh\n\n\n","slug":"zellij-helix","published":1,"updated":"2025-02-23T15:53:44.966Z","comments":1,"layout":"post","photos":[],"_id":"cm7jziody001qwi2ba7oj09d4","content":"意外发现Zellij+Helix还挺好用的
\n避免了vim/neovim的配置流程直接就能上手的轻量命令行开发环境
\n稍微了解一下二者的快捷键就能舒适码字了
\n甚至还都是rust出品
\n\n// 至于Helix没有文件树显示的方案,反正Helix选择文件挺方便的要文件树无非是希望编辑窗口居于窗口中央,倒是可以用watch和tree命令来代替还能手动设置哪些文件不用显示hhh
\n
意外发现Zellij+Helix还挺好用的
\n避免了vim/neovim的配置流程直接就能上手的轻量命令行开发环境
\n稍微了解一下二者的快捷键就能舒适码字了
\n甚至还都是rust出品
\n\n// 至于Helix没有文件树显示的方案,反正Helix选择文件挺方便的要文件树无非是希望编辑窗口居于窗口中央,倒是可以用watch和tree命令来代替还能手动设置哪些文件不用显示hhh
\n
2025-02-25
\n最近整理了一下缓存部署起来方便多了,有空就写点东西记录一下吧~
\n","excerpt":"","more":"2025-02-25
\n最近整理了一下缓存部署起来方便多了,有空就写点东西记录一下吧~
\n"},{"title":"梦开始的地方","date":"2023-12-06T14:53:35.000Z","_content":"\n不知不觉已经高中毕业快半年了,现在在NUDT的生活还算适应吧,交到了一些很有趣的朋友并且在技术方面取得了一定突破(很期待明年的asc2024呢),今天看到华科一位学长的博客突然想起我还没好好搭建过自己的Blog,于是心血来潮搞了下我的Github Pages。\n\n今后会在这里更新记录自己的生活,学习,工作,以及一些想法,希望能坚持下来吧。\n\n> P.S.最近我都经历了些什么:\n>\n> 1. 时长21天军训,认识了一群很可爱的班长(尤其是负责我们5班6班的英子),初步和队里的同学了解;\n> 2. 学习了一些C++基础,在洛谷上刷了不少算法题;\n> 3. ACM招新赛被薄纱,差一题进入校队;\n> 4. 对算法竞赛感到疑惑,尝试学习Flutter和操作系统开阔视野;\n> 5. 入坑战地,爽爽爽;\n> 6. 被一位巨强的学长发掘,加入NUDT超算队;\n> 7. 面临三个考试周,熬过去就是胜利;\n\n虽然天天早八满课很不爽,但是平时还是可以学习自己想学的技术周末也可以打游戏感觉还行吧,我还是相信NUDT,既来之则安之。\n\n这里,毕竟是我梦开始的地方。\n\n> 胸怀祖国,团结协作,志在高峰,奋勇拼搏!\n\n今天是2023年12月6日,加油!\n\n------------------------\n\n修改一下,有的话还是不适合明说哦\n\n5YK75a2p5a2Q5Lus77yM5b+r6YCD5ZWK77yB77yB77yBCg==\n\n","source":"_posts/梦开始的地方.md","raw":"---\ntitle: 梦开始的地方\ndate: 2023-12-06 22:53:35\ntags: 日志\n---\n\n不知不觉已经高中毕业快半年了,现在在NUDT的生活还算适应吧,交到了一些很有趣的朋友并且在技术方面取得了一定突破(很期待明年的asc2024呢),今天看到华科一位学长的博客突然想起我还没好好搭建过自己的Blog,于是心血来潮搞了下我的Github Pages。\n\n今后会在这里更新记录自己的生活,学习,工作,以及一些想法,希望能坚持下来吧。\n\n> P.S.最近我都经历了些什么:\n>\n> 1. 时长21天军训,认识了一群很可爱的班长(尤其是负责我们5班6班的英子),初步和队里的同学了解;\n> 2. 学习了一些C++基础,在洛谷上刷了不少算法题;\n> 3. ACM招新赛被薄纱,差一题进入校队;\n> 4. 对算法竞赛感到疑惑,尝试学习Flutter和操作系统开阔视野;\n> 5. 入坑战地,爽爽爽;\n> 6. 被一位巨强的学长发掘,加入NUDT超算队;\n> 7. 面临三个考试周,熬过去就是胜利;\n\n虽然天天早八满课很不爽,但是平时还是可以学习自己想学的技术周末也可以打游戏感觉还行吧,我还是相信NUDT,既来之则安之。\n\n这里,毕竟是我梦开始的地方。\n\n> 胸怀祖国,团结协作,志在高峰,奋勇拼搏!\n\n今天是2023年12月6日,加油!\n\n------------------------\n\n修改一下,有的话还是不适合明说哦\n\n5YK75a2p5a2Q5Lus77yM5b+r6YCD5ZWK77yB77yB77yBCg==\n\n","slug":"梦开始的地方","published":1,"updated":"2025-02-25T04:25:44.687Z","comments":1,"layout":"post","photos":[],"_id":"cm7jziody001uwi2b4q3m2491","content":"不知不觉已经高中毕业快半年了,现在在NUDT的生活还算适应吧,交到了一些很有趣的朋友并且在技术方面取得了一定突破(很期待明年的asc2024呢),今天看到华科一位学长的博客突然想起我还没好好搭建过自己的Blog,于是心血来潮搞了下我的Github Pages。
\n今后会在这里更新记录自己的生活,学习,工作,以及一些想法,希望能坚持下来吧。
\n\n\nP.S.最近我都经历了些什么:
\n\n
\n- 时长21天军训,认识了一群很可爱的班长(尤其是负责我们5班6班的英子),初步和队里的同学了解;
\n- 学习了一些C++基础,在洛谷上刷了不少算法题;
\n- ACM招新赛被薄纱,差一题进入校队;
\n- 对算法竞赛感到疑惑,尝试学习Flutter和操作系统开阔视野;
\n- 入坑战地,爽爽爽;
\n- 被一位巨强的学长发掘,加入NUDT超算队;
\n- 面临三个考试周,熬过去就是胜利;
\n
虽然天天早八满课很不爽,但是平时还是可以学习自己想学的技术周末也可以打游戏感觉还行吧,我还是相信NUDT,既来之则安之。
\n这里,毕竟是我梦开始的地方。
\n\n\n胸怀祖国,团结协作,志在高峰,奋勇拼搏!
\n
今天是2023年12月6日,加油!
\n修改一下,有的话还是不适合明说哦
\n5YK75a2p5a2Q5Lus77yM5b+r6YCD5ZWK77yB77yB77yBCg==
\n","excerpt":"","more":"不知不觉已经高中毕业快半年了,现在在NUDT的生活还算适应吧,交到了一些很有趣的朋友并且在技术方面取得了一定突破(很期待明年的asc2024呢),今天看到华科一位学长的博客突然想起我还没好好搭建过自己的Blog,于是心血来潮搞了下我的Github Pages。
\n今后会在这里更新记录自己的生活,学习,工作,以及一些想法,希望能坚持下来吧。
\n\n\nP.S.最近我都经历了些什么:
\n\n
\n- 时长21天军训,认识了一群很可爱的班长(尤其是负责我们5班6班的英子),初步和队里的同学了解;
\n- 学习了一些C++基础,在洛谷上刷了不少算法题;
\n- ACM招新赛被薄纱,差一题进入校队;
\n- 对算法竞赛感到疑惑,尝试学习Flutter和操作系统开阔视野;
\n- 入坑战地,爽爽爽;
\n- 被一位巨强的学长发掘,加入NUDT超算队;
\n- 面临三个考试周,熬过去就是胜利;
\n
虽然天天早八满课很不爽,但是平时还是可以学习自己想学的技术周末也可以打游戏感觉还行吧,我还是相信NUDT,既来之则安之。
\n这里,毕竟是我梦开始的地方。
\n\n\n胸怀祖国,团结协作,志在高峰,奋勇拼搏!
\n
今天是2023年12月6日,加油!
\n修改一下,有的话还是不适合明说哦
\n5YK75a2p5a2Q5Lus77yM5b+r6YCD5ZWK77yB77yB77yBCg==
\n"}],"PostAsset":[],"PostCategory":[{"post_id":"cm7jziodr000bwi2bdhi71dk3","category_id":"cm7jziods000fwi2b6sz39o2v","_id":"cm7jziodu000twi2b8ee81dmz"},{"post_id":"cm7jziods000hwi2b19t43c6n","category_id":"cm7jziodu000nwi2bg9k8dxzp","_id":"cm7jziodv000zwi2b12zyds9h"},{"post_id":"cm7jziodt000kwi2b320w2nl5","category_id":"cm7jziodu000uwi2b02p27nyj","_id":"cm7jziodw0014wi2bab972bli"},{"post_id":"cm7jziodv000xwi2b6ebgcwqs","category_id":"cm7jziodu000nwi2bg9k8dxzp","_id":"cm7jziodw0016wi2b4hlk8p77"},{"post_id":"cm7jziodt000mwi2bcvznhn4q","category_id":"cm7jziodv0010wi2b1nt86jtj","_id":"cm7jziodw0018wi2b3s1j4w7g"},{"post_id":"cm7jziody001pwi2bck6n2j6b","category_id":"cm7jziodv0010wi2b1nt86jtj","_id":"cm7jziodz001vwi2bbp098ntb"}],"PostTag":[{"post_id":"cm7jziodq0005wi2b46qac5mo","tag_id":"cm7jziodp0003wi2be4zr9g22","_id":"cm7jziodr0008wi2b05p82hfn"},{"post_id":"cm7jziodn0001wi2b80cf2h59","tag_id":"cm7jziodp0003wi2be4zr9g22","_id":"cm7jziodr000awi2b1miz4vlj"},{"post_id":"cm7jziodq0006wi2bhm74a0a9","tag_id":"cm7jziodp0003wi2be4zr9g22","_id":"cm7jziods000dwi2bbszzcsxv"},{"post_id":"cm7jziodr0009wi2b5h330fp7","tag_id":"cm7jziodp0003wi2be4zr9g22","_id":"cm7jziods000gwi2b3rlb77wm"},{"post_id":"cm7jziodo0002wi2bhhu604l9","tag_id":"cm7jziodp0003wi2be4zr9g22","_id":"cm7jziodt000jwi2bc1ow4yga"},{"post_id":"cm7jziodr000bwi2bdhi71dk3","tag_id":"cm7jziodp0003wi2be4zr9g22","_id":"cm7jziodt000lwi2bf95dfmcu"},{"post_id":"cm7jziodp0004wi2baobvgc5p","tag_id":"cm7jziodp0003wi2be4zr9g22","_id":"cm7jziodu000owi2b21bqckyf"},{"post_id":"cm7jziods000ewi2bdc6000t9","tag_id":"cm7jziodt000iwi2bfqt12taw","_id":"cm7jziodu000rwi2b8ik6285y"},{"post_id":"cm7jziods000hwi2b19t43c6n","tag_id":"cm7jziodu000qwi2bazol064r","_id":"cm7jziodv000ywi2bhmqc29j3"},{"post_id":"cm7jziodv000xwi2b6ebgcwqs","tag_id":"cm7jziodu000qwi2bazol064r","_id":"cm7jziodw0013wi2b97dk31nx"},{"post_id":"cm7jziodt000kwi2b320w2nl5","tag_id":"cm7jziodv000wwi2bdhq12weu","_id":"cm7jziodw0017wi2b8i031bka"},{"post_id":"cm7jziodt000kwi2b320w2nl5","tag_id":"cm7jziodu000qwi2bazol064r","_id":"cm7jziodw0019wi2bb4x9hl4j"},{"post_id":"cm7jziodt000mwi2bcvznhn4q","tag_id":"cm7jziodw0015wi2b0pf17f27","_id":"cm7jziodw001bwi2b67m7fq36"},{"post_id":"cm7jziodu000pwi2b49gyhjcz","tag_id":"cm7jziodw001awi2bdhuo5k7e","_id":"cm7jziodw001dwi2bf033hi6l"},{"post_id":"cm7jziodu000swi2ba2br64lz","tag_id":"cm7jziodw001awi2bdhuo5k7e","_id":"cm7jziodw001fwi2b0qug30wm"},{"post_id":"cm7jziodv000vwi2baw0jbh0g","tag_id":"cm7jziodw001ewi2b09f1fndp","_id":"cm7jziodx001iwi2bguwveo74"},{"post_id":"cm7jziodv000vwi2baw0jbh0g","tag_id":"cm7jziodx001gwi2b4umfd84q","_id":"cm7jziodx001jwi2b2ol893th"},{"post_id":"cm7jziodv0011wi2bauxoh2vo","tag_id":"cm7jziodw0015wi2b0pf17f27","_id":"cm7jziodx001mwi2b97lyhx5q"},{"post_id":"cm7jziodv0011wi2bauxoh2vo","tag_id":"cm7jziodx001kwi2bei49d5xr","_id":"cm7jziodx001nwi2b8hy800xl"},{"post_id":"cm7jziodv0011wi2bauxoh2vo","tag_id":"cm7jziodx001gwi2b4umfd84q","_id":"cm7jziodx001owi2bbvgn2lio"},{"post_id":"cm7jziody001pwi2bck6n2j6b","tag_id":"cm7jziodw0015wi2b0pf17f27","_id":"cm7jziody001rwi2b3d1zaebh"},{"post_id":"cm7jziody001qwi2ba7oj09d4","tag_id":"cm7jziodw001awi2bdhuo5k7e","_id":"cm7jziody001twi2ba7og07d0"},{"post_id":"cm7jziody001swi2bfmuk60pc","tag_id":"cm7jziodp0003wi2be4zr9g22","_id":"cm7jziodz001wwi2b0gvi282t"},{"post_id":"cm7jziody001uwi2b4q3m2491","tag_id":"cm7jziodp0003wi2be4zr9g22","_id":"cm7jziodz001xwi2bhi5dgpwn"}],"Tag":[{"name":"日志","_id":"cm7jziodp0003wi2be4zr9g22"},{"name":"TEST","_id":"cm7jziodt000iwi2bfqt12taw"},{"name":"音乐","_id":"cm7jziodu000qwi2bazol064r"},{"name":"Vocaloid","_id":"cm7jziodv000wwi2bdhq12weu"},{"name":"技术","_id":"cm7jziodw0015wi2b0pf17f27"},{"name":"技术分享","_id":"cm7jziodw001awi2bdhuo5k7e"},{"name":"板绘","_id":"cm7jziodw001ewi2b09f1fndp"},{"name":"生活","_id":"cm7jziodx001gwi2b4umfd84q"},{"name":"学习","_id":"cm7jziodx001kwi2bei49d5xr"}]}} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..874564e --- /dev/null +++ b/package-lock.json @@ -0,0 +1,3345 @@ +{ + "name": "hexo-site", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "hexo-site", + "version": "0.0.0", + "dependencies": { + "hexo": "^7.3.0", + "hexo-deployer-git": "^4.0.0", + "hexo-generator-archive": "^2.0.0", + "hexo-generator-category": "^2.0.0", + "hexo-generator-index": "^3.0.0", + "hexo-generator-tag": "^2.0.0", + "hexo-renderer-ejs": "^2.0.0", + "hexo-renderer-marked": "^6.0.0", + "hexo-renderer-pug": "^3.0.0", + "hexo-renderer-stylus": "^3.0.0", + "hexo-server": "^3.0.0", + "hexo-theme-landscape": "^1.0.0" + } + }, + "node_modules/@adobe/css-tools": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.3.2.tgz", + "integrity": "sha512-DA5a1C0gD/pLOvhv33YMrbf2FK3oUzwNl9oOJqE4XVjuEtt6XIakRcsd7eLiOSPkp1kTRQGICTA8cKra/vFbjw==", + "license": "MIT" + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz", + "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.5.tgz", + "integrity": "sha512-hOOqoiNXrmGdFbhgCzu6GiURxUgM27Xwd/aPuu8RfHEZPBzL1Z54okAHAQjXfcQNwvrlkAmAp4SlRTZ45vlthQ==", + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/types": { + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.5.tgz", + "integrity": "sha512-ON5kSOJwVO6xXVRTvOI0eOnWe7VdUcIpsovGo9U/Br4Ie4UVFQTboO2cYnDhAGU6Fp+UxSiT+pMft0SMHfuq6w==", + "dependencies": { + "@babel/helper-string-parser": "^7.23.4", + "@babel/helper-validator-identifier": "^7.22.20", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, + "node_modules/@types/trusted-types": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", + "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==", + "license": "MIT", + "optional": true + }, + "node_modules/a-sync-waterfall": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/a-sync-waterfall/-/a-sync-waterfall-1.0.1.tgz", + "integrity": "sha512-RYTOHHdWipFUliRFMCS4X2Yn2X8M87V/OpSqWzKKOGhzqyUxzyVmhHDH9sAvG+ZuQf/TAOFsLCpMw09I1ufUnA==", + "license": "MIT" + }, + "node_modules/abab": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", + "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", + "license": "BSD-3-Clause" + }, + "node_modules/abbrev": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-2.0.0.tgz", + "integrity": "sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==", + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "license": "MIT", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "8.11.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz", + "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==", + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-globals": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-7.0.1.tgz", + "integrity": "sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==", + "license": "MIT", + "dependencies": { + "acorn": "^8.1.0", + "acorn-walk": "^8.0.2" + } + }, + "node_modules/acorn-walk": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.0.tgz", + "integrity": "sha512-FS7hV565M5l1R08MXqo8odwMTB02C2UqzB17RVgu9EyuYFBqJZ3/ZY97sQD5FewVu1UyDFc1yztUDrAwT0EypA==", + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "license": "MIT", + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/agent-base/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "license": "MIT", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/agent-base/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "license": "MIT" + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/archy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", + "integrity": "sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==", + "license": "MIT" + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "license": "Python-2.0" + }, + "node_modules/asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", + "license": "MIT" + }, + "node_modules/assert-never": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/assert-never/-/assert-never-1.4.0.tgz", + "integrity": "sha512-5oJg84os6NMQNl27T9LnZkvvqzvAnHu03ShCnoj6bsJwS7L8AO4lf+C/XjK/nvzEqQB744moC6V128RucQd1jA==", + "license": "MIT" + }, + "node_modules/async": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", + "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==", + "license": "MIT" + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "license": "MIT" + }, + "node_modules/babel-walk": { + "version": "3.0.0-canary-5", + "resolved": "https://registry.npmjs.org/babel-walk/-/babel-walk-3.0.0-canary-5.tgz", + "integrity": "sha512-GAwkz0AihzY5bkwIY5QDR+LvsRQgB/B+1foMPvi0FZPMl5fjD7ICiznUiBdLYMH1QYe6vqu4gWYytZOccLouFw==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.9.6" + }, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "license": "MIT" + }, + "node_modules/basic-auth": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", + "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", + "license": "MIT", + "dependencies": { + "safe-buffer": "5.1.2" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "license": "MIT" + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/call-bind": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", + "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", + "dependencies": { + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.1", + "set-function-length": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/camel-case": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", + "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", + "license": "MIT", + "dependencies": { + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/character-parser": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/character-parser/-/character-parser-2.2.0.tgz", + "integrity": "sha512-+UqJQjFEFaTAs3bNsF2j2kEN1baG/zghZbdqoYEDxGZtJo9LBzl1A+m0D4n3qKx8N2FNv8/Xp6yV9mQmBuptaw==", + "dependencies": { + "is-regex": "^1.0.3" + } + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "license": "MIT", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/command-exists": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz", + "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==", + "license": "MIT" + }, + "node_modules/commander": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", + "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "license": "MIT", + "dependencies": { + "mime-db": ">= 1.43.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "license": "MIT", + "dependencies": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "license": "MIT" + }, + "node_modules/connect": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", + "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "finalhandler": "1.1.2", + "parseurl": "~1.3.3", + "utils-merge": "1.0.1" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/constantinople": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/constantinople/-/constantinople-4.0.1.tgz", + "integrity": "sha512-vCrqcSIq4//Gx74TXXCGnHpulY1dskqLTFGDmhrGxzeXL8lF8kvXv6mpNWlJj1uD4DW23D4ljAqbY4RRaaUZIw==", + "dependencies": { + "@babel/parser": "^7.6.0", + "@babel/types": "^7.6.1" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/cssom": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.5.0.tgz", + "integrity": "sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==", + "license": "MIT" + }, + "node_modules/cssstyle": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", + "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", + "license": "MIT", + "dependencies": { + "cssom": "~0.3.6" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cssstyle/node_modules/cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "license": "MIT" + }, + "node_modules/cuid": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/cuid/-/cuid-2.1.8.tgz", + "integrity": "sha512-xiEMER6E7TlTPnDxrM4eRiC6TRgjNX9xzEZ5U/Se2YJKr7Mq4pJn/2XEHjl3STcSh96GmkHPcBXLES8M29wyyg==", + "deprecated": "Cuid and other k-sortable and non-cryptographic ids (Ulid, ObjectId, KSUID, all UUIDs) are all insecure. Use @paralleldrive/cuid2 instead.", + "license": "MIT" + }, + "node_modules/data-urls": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-3.0.2.tgz", + "integrity": "sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==", + "license": "MIT", + "dependencies": { + "abab": "^2.0.6", + "whatwg-mimetype": "^3.0.0", + "whatwg-url": "^11.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/decimal.js": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", + "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==", + "license": "MIT" + }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/define-data-property": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", + "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", + "dependencies": { + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "license": "MIT", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/doctypes": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/doctypes/-/doctypes-1.1.0.tgz", + "integrity": "sha512-LLBi6pEqS6Do3EKQ3J0NqHWV5hhb78Pi8vvESYwyOy2c31ZEZVdtitdzsQsKb7878PEERhzUk0ftqGhG6Mz+pQ==", + "license": "MIT" + }, + "node_modules/dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "license": "MIT", + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/dom-serializer/node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "license": "BSD-2-Clause", + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "BSD-2-Clause" + }, + "node_modules/domexception": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz", + "integrity": "sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==", + "license": "MIT", + "dependencies": { + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "license": "BSD-2-Clause", + "dependencies": { + "domelementtype": "^2.2.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/dompurify": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.2.4.tgz", + "integrity": "sha512-ysFSFEDVduQpyhzAob/kkuJjf5zWkZD8/A9ywSp1byueyuCfHamrCBa14/Oc2iiB0e51B+NpxSl5gmzn+Ms/mg==", + "license": "(MPL-2.0 OR Apache-2.0)", + "optionalDependencies": { + "@types/trusted-types": "^2.0.7" + } + }, + "node_modules/domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "license": "BSD-2-Clause", + "dependencies": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "license": "MIT" + }, + "node_modules/ejs": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz", + "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==", + "license": "Apache-2.0", + "dependencies": { + "jake": "^10.8.5" + }, + "bin": { + "ejs": "bin/cli.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "license": "MIT" + }, + "node_modules/escodegen": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", + "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", + "license": "BSD-2-Clause", + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=6.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "node_modules/escodegen/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fast-equals": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/fast-equals/-/fast-equals-3.0.3.tgz", + "integrity": "sha512-NCe8qxnZFARSHGztGMZOO/PC1qa5MIFB5Hp66WdzbCRAz8U8US3bx1UTgLS49efBQPcUtO9gf5oVEY8o7y/7Kg==", + "license": "MIT" + }, + "node_modules/filelist": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", + "license": "Apache-2.0", + "dependencies": { + "minimatch": "^5.0.1" + } + }, + "node_modules/filelist/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/filelist/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/finalhandler/node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "license": "ISC" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", + "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", + "dependencies": { + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "license": "ISC" + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", + "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", + "dependencies": { + "get-intrinsic": "^1.2.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/hexo": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/hexo/-/hexo-7.3.0.tgz", + "integrity": "sha512-dOe8mzBKrvjubW5oBmyhcnQDpC+M2xmAMLae5K+o+SkHxyvAhShkS2VQZoTsOLIJKY6xilv7dzCjCvE7ol/NHQ==", + "license": "MIT", + "dependencies": { + "abbrev": "^2.0.0", + "archy": "^1.0.0", + "bluebird": "^3.7.2", + "hexo-cli": "^4.3.2", + "hexo-front-matter": "^4.2.1", + "hexo-fs": "^4.1.3", + "hexo-i18n": "^2.0.0", + "hexo-log": "^4.0.1", + "hexo-util": "^3.3.0", + "js-yaml": "^4.1.0", + "js-yaml-js-types": "^1.0.0", + "micromatch": "^4.0.4", + "moize": "^6.1.6", + "moment": "^2.29.1", + "moment-timezone": "^0.5.34", + "nunjucks": "^3.2.3", + "picocolors": "^1.0.0", + "pretty-hrtime": "^1.0.3", + "resolve": "^1.22.0", + "strip-ansi": "^6.0.0", + "text-table": "^0.2.0", + "tildify": "^2.0.0", + "titlecase": "^1.1.3", + "warehouse": "^5.0.1" + }, + "bin": { + "hexo": "bin/hexo" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/hexo" + } + }, + "node_modules/hexo-cli": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/hexo-cli/-/hexo-cli-4.3.2.tgz", + "integrity": "sha512-druJeBgLpG9ncDS5AhBHdAXk0G4CFj8Qes09pApyZ6bR+nJW1JYiDMuilhudaKDdq+1l49jWXVTidkcb7p0Jbw==", + "license": "MIT", + "dependencies": { + "abbrev": "^2.0.0", + "bluebird": "^3.7.2", + "command-exists": "^1.2.9", + "hexo-fs": "^4.1.1", + "hexo-log": "^4.0.1", + "hexo-util": "^3.3.0", + "minimist": "^1.2.5", + "picocolors": "^1.0.0", + "resolve": "^1.20.0", + "tildify": "^2.0.0" + }, + "bin": { + "hexo": "bin/hexo" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/hexo-cli/node_modules/dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "license": "MIT", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/hexo-cli/node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "license": "BSD-2-Clause", + "dependencies": { + "domelementtype": "^2.3.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/hexo-cli/node_modules/domutils": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", + "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", + "license": "BSD-2-Clause", + "dependencies": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/hexo-cli/node_modules/hexo-util": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/hexo-util/-/hexo-util-3.3.0.tgz", + "integrity": "sha512-YvGngXijE2muEh5L/VI4Fmjqb+/yAkmY+VuyhWVoRwQu1X7bmWodsfYRXX7CUYhi5LqsvH8FAe/yBW1+f6ZX4Q==", + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "camel-case": "^4.1.2", + "cross-spawn": "^7.0.3", + "deepmerge": "^4.2.2", + "highlight.js": "^11.6.0", + "htmlparser2": "^9.0.0", + "prismjs": "^1.29.0", + "strip-indent": "^3.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/hexo-cli/node_modules/htmlparser2": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-9.1.0.tgz", + "integrity": "sha512-5zfg6mHUoaer/97TxnGpxmbR7zJtPwIYFMZ/H5ucTlPZhKvtum05yiPK3Mgai3a0DyVxv7qYqoweaEd2nrYQzQ==", + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "MIT", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.1.0", + "entities": "^4.5.0" + } + }, + "node_modules/hexo-deployer-git": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/hexo-deployer-git/-/hexo-deployer-git-4.0.0.tgz", + "integrity": "sha512-28t1Q+4taB/UaBAP52W3mD/wcCwa2y2zBieUfBJFBZudbmVgiKJB5YedYILeyI5QByaUKAOwoupmdTbocdQ+CQ==", + "dependencies": { + "bluebird": "^3.7.2", + "hexo-fs": "^4.0.0", + "hexo-util": "^2.7.0", + "luxon": "^3.0.4", + "nunjucks": "^3.2.3", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/hexo-front-matter": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/hexo-front-matter/-/hexo-front-matter-4.2.1.tgz", + "integrity": "sha512-sJJI0GNmejYiwBvgnGRKn5V3sbODB4dNPr8jyw2Qp0PRHr4Uuyv8iyxw6WfK3+T7yvzYvJOh+tZ7jnwr2BYARA==", + "license": "MIT", + "dependencies": { + "js-yaml": "^4.1.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/hexo-fs": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/hexo-fs/-/hexo-fs-4.1.3.tgz", + "integrity": "sha512-Q92zQ5PlVDouvSWFLXQoFSTLIUIODikUJs2BfAXQglyOEjN1dOQn1Z5Nimk/7GHof17R5h/uObCQLnZAjzI2tg==", + "license": "MIT", + "dependencies": { + "bluebird": "^3.7.2", + "chokidar": "^3.5.3", + "graceful-fs": "^4.2.10", + "hexo-util": "^3.0.1" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/hexo-fs/node_modules/dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "license": "MIT", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/hexo-fs/node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "license": "BSD-2-Clause", + "dependencies": { + "domelementtype": "^2.3.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/hexo-fs/node_modules/domutils": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", + "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", + "license": "BSD-2-Clause", + "dependencies": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/hexo-fs/node_modules/hexo-util": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/hexo-util/-/hexo-util-3.3.0.tgz", + "integrity": "sha512-YvGngXijE2muEh5L/VI4Fmjqb+/yAkmY+VuyhWVoRwQu1X7bmWodsfYRXX7CUYhi5LqsvH8FAe/yBW1+f6ZX4Q==", + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "camel-case": "^4.1.2", + "cross-spawn": "^7.0.3", + "deepmerge": "^4.2.2", + "highlight.js": "^11.6.0", + "htmlparser2": "^9.0.0", + "prismjs": "^1.29.0", + "strip-indent": "^3.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/hexo-fs/node_modules/htmlparser2": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-9.1.0.tgz", + "integrity": "sha512-5zfg6mHUoaer/97TxnGpxmbR7zJtPwIYFMZ/H5ucTlPZhKvtum05yiPK3Mgai3a0DyVxv7qYqoweaEd2nrYQzQ==", + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "MIT", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.1.0", + "entities": "^4.5.0" + } + }, + "node_modules/hexo-generator-archive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hexo-generator-archive/-/hexo-generator-archive-2.0.0.tgz", + "integrity": "sha512-KikJk7dGFbtNHOgqtLFGf5T/S8n1paGp+Gy0KfVDz+HKYhGbXOouyiZkmc3O9KrYt6ja14rmkMhq7KKGtvfehw==", + "license": "MIT", + "dependencies": { + "hexo-pagination": "3.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/hexo-generator-category": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hexo-generator-category/-/hexo-generator-category-2.0.0.tgz", + "integrity": "sha512-9OduRBf3WeRDa4BR0kAfRjOVHur7v3fm0NKAwbjUiqULigAdNZVZPO3cHKW2MlBbl/lI5PuWdhQ9zZ99CCCAgQ==", + "license": "MIT", + "dependencies": { + "hexo-pagination": "3.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/hexo-generator-index": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hexo-generator-index/-/hexo-generator-index-3.0.0.tgz", + "integrity": "sha512-83AuNN4cWdLVi//3ugR8E3kR6rrOwhXZt+hOCm1IjtIGj353/GlrtpMHpqZHU5kqipzj4miy9dweVdukXglVWw==", + "license": "MIT", + "dependencies": { + "hexo-pagination": "3.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/hexo-generator-tag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hexo-generator-tag/-/hexo-generator-tag-2.0.0.tgz", + "integrity": "sha512-1px/hF3veEohWDN8jjzchQhaiz+uOStUvvMaBJC9vWOlALh30UFcapL8IrvAwwJZjFRVA+WqGgDRqoQ8+yaaFw==", + "license": "MIT", + "dependencies": { + "hexo-pagination": "3.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/hexo-i18n": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hexo-i18n/-/hexo-i18n-2.0.0.tgz", + "integrity": "sha512-dkUXecEtChaQMdTHN4WR13c8GwKqjbSOZPJS9qDqV6Ebnb77Wa/nQzWFckhP0dCps3a9lUQBd8hYGOMbOosiQQ==", + "license": "MIT", + "dependencies": { + "sprintf-js": "^1.1.2" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/hexo-log": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hexo-log/-/hexo-log-4.1.0.tgz", + "integrity": "sha512-i2Sgxk8Cgx5viSjq5qW5N/rBFfwoCKQcH8qnnW1fawCapcdEAhIsq+Y3vbrs9bssyDlyU6Vqm4oQmosREaNI7Q==", + "license": "MIT", + "dependencies": { + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/hexo-pagination": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hexo-pagination/-/hexo-pagination-3.0.0.tgz", + "integrity": "sha512-8oo1iozloZo7TojPVYg4IxL3SJKCBdSJ908fTlIxIK7TWJIKdYnQlW31+12DBJ0NhVZA/lZisPObGF08wT8fKw==", + "license": "MIT", + "engines": { + "node": ">=14" + } + }, + "node_modules/hexo-renderer-ejs": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hexo-renderer-ejs/-/hexo-renderer-ejs-2.0.0.tgz", + "integrity": "sha512-qCjE1IdwgDgv65qyb0KMVCwCdSVAkH0vwAe9XihjvaKWkmb9dtt8DgErOdqCXn0HReSyWiEVP2BrLRj3gyHwOQ==", + "license": "MIT", + "dependencies": { + "ejs": "^3.1.6" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/hexo-renderer-marked": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/hexo-renderer-marked/-/hexo-renderer-marked-6.2.0.tgz", + "integrity": "sha512-/TwgQCAmqYIyxONzrgqokw0n8rU6W/lCtgbjhWcMoZxhwTaQCYpzaO0+sdu+PKXf9BL4910pg+xAbeFaqqIIrA==", + "license": "MIT", + "dependencies": { + "dompurify": "^3.0.3", + "hexo-util": "^3.1.0", + "jsdom": "^20.0.1", + "marked": "^4.3.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/hexo-renderer-marked/node_modules/dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "license": "MIT", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/hexo-renderer-marked/node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "license": "BSD-2-Clause", + "dependencies": { + "domelementtype": "^2.3.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/hexo-renderer-marked/node_modules/domutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz", + "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==", + "license": "BSD-2-Clause", + "dependencies": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/hexo-renderer-marked/node_modules/hexo-util": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hexo-util/-/hexo-util-3.1.0.tgz", + "integrity": "sha512-LmztAhkJHQ59VHqz6AnvwEKiNA0pCBBI0qW08cCzjhnpGoqZ8tlGDwElzy7oTxCvMChkiqg5V8VflhdI8tHsGg==", + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "camel-case": "^4.1.2", + "cross-spawn": "^7.0.3", + "deepmerge": "^4.2.2", + "highlight.js": "^11.6.0", + "htmlparser2": "^9.0.0", + "prismjs": "^1.29.0", + "strip-indent": "^3.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/hexo-renderer-marked/node_modules/htmlparser2": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-9.0.0.tgz", + "integrity": "sha512-uxbSI98wmFT/G4P2zXx4OVx04qWUmyFPrD2/CNepa2Zo3GPNaCaaxElDgwUrwYWkK1nr9fft0Ya8dws8coDLLQ==", + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "MIT", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.1.0", + "entities": "^4.5.0" + } + }, + "node_modules/hexo-renderer-pug": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hexo-renderer-pug/-/hexo-renderer-pug-3.0.0.tgz", + "integrity": "sha512-PmbLx6VkNv+mPLOe97OC4F8iTzTuj665dSYN7bZKArd4M/q7gb2tNs29VGuAOC50i9tvWY2f+tPQimf0GZ9Hyw==", + "dependencies": { + "pug": "^3.0.2" + }, + "engines": { + "node": ">=12.4.0" + } + }, + "node_modules/hexo-renderer-stylus": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hexo-renderer-stylus/-/hexo-renderer-stylus-3.0.0.tgz", + "integrity": "sha512-wgKOcjUzq1i4Y70luoyYDbh91QeQcDzJO+v1598LgY+IdREFAm+vy1MWtl/TZsVXyPaEtsULNi3Vi22hdsPUSA==", + "dependencies": { + "nib": "^1.2.0", + "stylus": "^0.59.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/hexo-server": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hexo-server/-/hexo-server-3.0.0.tgz", + "integrity": "sha512-u4s0ty9Aew6jV+a9oMrXBwhrRpUQ0U8PWM/88a5aHgDru58VY81mVrxOFxs788NAsWQ8OvsJtF5m7mnXoRnSIA==", + "license": "MIT", + "dependencies": { + "bluebird": "^3.5.5", + "compression": "^1.7.4", + "connect": "^3.7.0", + "mime": "^3.0.0", + "morgan": "^1.9.1", + "open": "^8.0.9", + "picocolors": "^1.0.0", + "serve-static": "^1.14.1" + }, + "engines": { + "node": ">=12.13.0" + } + }, + "node_modules/hexo-theme-landscape": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hexo-theme-landscape/-/hexo-theme-landscape-1.0.0.tgz", + "integrity": "sha512-bWQJWMqQI78wWiJPQZq5pJBH20TM442ShCaHGRetuEgMraxH0OKxB3NTupJzNEkzEk8DV2yrdizkXdKN6i501A==", + "license": "MIT" + }, + "node_modules/hexo-util": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/hexo-util/-/hexo-util-2.7.0.tgz", + "integrity": "sha512-hQM3h34nhDg0bSe/Tg1lnpODvNkz7h2u0+lZGzlKL0Oufp+5KCAEUX9wal7/xC7ax3/cwEn8IuoU75kNpZLpJQ==", + "license": "MIT", + "dependencies": { + "bluebird": "^3.5.2", + "camel-case": "^4.0.0", + "cross-spawn": "^7.0.0", + "deepmerge": "^4.2.2", + "highlight.js": "^11.0.1", + "htmlparser2": "^7.0.0", + "prismjs": "^1.17.1", + "strip-indent": "^3.0.0" + }, + "engines": { + "node": ">=12.4.0" + } + }, + "node_modules/hexo/node_modules/dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "license": "MIT", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/hexo/node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "license": "BSD-2-Clause", + "dependencies": { + "domelementtype": "^2.3.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/hexo/node_modules/domutils": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", + "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", + "license": "BSD-2-Clause", + "dependencies": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/hexo/node_modules/hexo-util": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/hexo-util/-/hexo-util-3.3.0.tgz", + "integrity": "sha512-YvGngXijE2muEh5L/VI4Fmjqb+/yAkmY+VuyhWVoRwQu1X7bmWodsfYRXX7CUYhi5LqsvH8FAe/yBW1+f6ZX4Q==", + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "camel-case": "^4.1.2", + "cross-spawn": "^7.0.3", + "deepmerge": "^4.2.2", + "highlight.js": "^11.6.0", + "htmlparser2": "^9.0.0", + "prismjs": "^1.29.0", + "strip-indent": "^3.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/hexo/node_modules/htmlparser2": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-9.1.0.tgz", + "integrity": "sha512-5zfg6mHUoaer/97TxnGpxmbR7zJtPwIYFMZ/H5ucTlPZhKvtum05yiPK3Mgai3a0DyVxv7qYqoweaEd2nrYQzQ==", + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "MIT", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.1.0", + "entities": "^4.5.0" + } + }, + "node_modules/highlight.js": { + "version": "11.9.0", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-11.9.0.tgz", + "integrity": "sha512-fJ7cW7fQGCYAkgv4CPfwFHrfd/cLS4Hau96JuJ+ZTOWhjnhoeN1ub1tFmALm/+lW5z4WCAuAV9bm05AP0mS6Gw==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/html-encoding-sniffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", + "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==", + "license": "MIT", + "dependencies": { + "whatwg-encoding": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/htmlparser2": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-7.2.0.tgz", + "integrity": "sha512-H7MImA4MS6cw7nbyURtLPO1Tms7C5H602LRETv95z1MxO/7CP7rDVROehUYeYBUYEON94NXXDEPmZuq+hX4sog==", + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "MIT", + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.2", + "domutils": "^2.8.0", + "entities": "^3.0.1" + } + }, + "node_modules/htmlparser2/node_modules/entities": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz", + "integrity": "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "license": "MIT", + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "license": "MIT", + "dependencies": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/http-proxy-agent/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "license": "MIT", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/http-proxy-agent/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "license": "MIT" + }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "license": "MIT", + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/https-proxy-agent/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "license": "MIT", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/https-proxy-agent/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "license": "MIT" + }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "license": "ISC", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "license": "MIT", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-core-module": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "license": "MIT", + "dependencies": { + "hasown": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "license": "MIT", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-expression": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-expression/-/is-expression-4.0.0.tgz", + "integrity": "sha512-zMIXX63sxzG3XrkHkrAPvm/OVZVSCPNkwMHU8oTX7/U3AL78I0QXCEICXUM13BIa8TYGZ68PiTKfQz3yaTNr4A==", + "dependencies": { + "acorn": "^7.1.1", + "object-assign": "^4.1.1" + } + }, + "node_modules/is-expression/node_modules/acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-potential-custom-element-name": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", + "license": "MIT" + }, + "node_modules/is-promise": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", + "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==" + }, + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "license": "MIT", + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "license": "ISC" + }, + "node_modules/jake": { + "version": "10.8.7", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.7.tgz", + "integrity": "sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w==", + "license": "Apache-2.0", + "dependencies": { + "async": "^3.2.3", + "chalk": "^4.0.2", + "filelist": "^1.0.4", + "minimatch": "^3.1.2" + }, + "bin": { + "jake": "bin/cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/js-stringify": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/js-stringify/-/js-stringify-1.0.2.tgz", + "integrity": "sha512-rtS5ATOo2Q5k1G+DADISilDA6lv79zIiwFd6CcjuIxGKLFm5C+RLImRscVap9k55i+MOZwgliw+NejvkLuGD5g==", + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/js-yaml-js-types": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/js-yaml-js-types/-/js-yaml-js-types-1.0.1.tgz", + "integrity": "sha512-5tpfyORs8OQ43alNERbWfYRCtWgykvzYgY46fUhrQi2+kS7N0NuuFYLZ/IrfmVm5muLTndeMublgraXiFRjEPw==", + "license": "MIT", + "dependencies": { + "esprima": "^4.0.1" + }, + "peerDependencies": { + "js-yaml": "4.x" + } + }, + "node_modules/jsdom": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-20.0.3.tgz", + "integrity": "sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==", + "license": "MIT", + "dependencies": { + "abab": "^2.0.6", + "acorn": "^8.8.1", + "acorn-globals": "^7.0.0", + "cssom": "^0.5.0", + "cssstyle": "^2.3.0", + "data-urls": "^3.0.2", + "decimal.js": "^10.4.2", + "domexception": "^4.0.0", + "escodegen": "^2.0.0", + "form-data": "^4.0.0", + "html-encoding-sniffer": "^3.0.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.1", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.2", + "parse5": "^7.1.1", + "saxes": "^6.0.0", + "symbol-tree": "^3.2.4", + "tough-cookie": "^4.1.2", + "w3c-xmlserializer": "^4.0.0", + "webidl-conversions": "^7.0.0", + "whatwg-encoding": "^2.0.0", + "whatwg-mimetype": "^3.0.0", + "whatwg-url": "^11.0.0", + "ws": "^8.11.0", + "xml-name-validator": "^4.0.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "canvas": "^2.5.0" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } + } + }, + "node_modules/jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", + "engines": [ + "node >= 0.2.0" + ], + "license": "MIT" + }, + "node_modules/jstransformer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/jstransformer/-/jstransformer-1.0.0.tgz", + "integrity": "sha512-C9YK3Rf8q6VAPDCCU9fnqo3mAfOH6vUGnMcP4AQAYIEpWtfGLpwOTmZ+igtdK5y+VvI2n3CyYSzy4Qh34eq24A==", + "dependencies": { + "is-promise": "^2.0.0", + "promise": "^7.0.1" + } + }, + "node_modules/lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "license": "MIT", + "dependencies": { + "tslib": "^2.0.3" + } + }, + "node_modules/luxon": { + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.4.4.tgz", + "integrity": "sha512-zobTr7akeGHnv7eBOXcRgMeCP6+uyYsczwmeRCauvpvaAltgNyTbLH/+VaEAPUeWBT+1GuNmz4wC/6jtQzbbVA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/marked": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/marked/-/marked-4.3.0.tgz", + "integrity": "sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==", + "license": "MIT", + "bin": { + "marked": "bin/marked.js" + }, + "engines": { + "node": ">= 12" + } + }, + "node_modules/micro-memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/micro-memoize/-/micro-memoize-4.1.2.tgz", + "integrity": "sha512-+HzcV2H+rbSJzApgkj0NdTakkC+bnyeiUxgT6/m7mjcz1CmM22KYFKp+EVj1sWe4UYcnriJr5uqHQD/gMHLD+g==", + "license": "MIT" + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", + "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/moize": { + "version": "6.1.6", + "resolved": "https://registry.npmjs.org/moize/-/moize-6.1.6.tgz", + "integrity": "sha512-vSKdIUO61iCmTqhdoIDrqyrtp87nWZUmBPniNjO0fX49wEYmyDO4lvlnFXiGcaH1JLE/s/9HbiK4LSHsbiUY6Q==", + "license": "MIT", + "dependencies": { + "fast-equals": "^3.0.1", + "micro-memoize": "^4.1.2" + } + }, + "node_modules/moment": { + "version": "2.29.4", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", + "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==", + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/moment-timezone": { + "version": "0.5.43", + "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.43.tgz", + "integrity": "sha512-72j3aNyuIsDxdF1i7CEgV2FfxM1r6aaqJyLB2vwb33mXYyoyLly+F1zbWqhA3/bVIoJ4szlUoMbUnVdid32NUQ==", + "license": "MIT", + "dependencies": { + "moment": "^2.29.4" + }, + "engines": { + "node": "*" + } + }, + "node_modules/morgan": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.10.0.tgz", + "integrity": "sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ==", + "license": "MIT", + "dependencies": { + "basic-auth": "~2.0.1", + "debug": "2.6.9", + "depd": "~2.0.0", + "on-finished": "~2.3.0", + "on-headers": "~1.0.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/nib": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/nib/-/nib-1.2.0.tgz", + "integrity": "sha512-7HgrnMl/3yOmWykueO8/D0q+0iWwe7Z+CK2Eaq/xQV8w1hK80WN1oReRQkfkrztbAAnp/nTHkUSl5EcVkor6JQ==", + "license": "MIT", + "engines": { + "node": "*" + }, + "peerDependencies": { + "stylus": "*" + } + }, + "node_modules/no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "license": "MIT", + "dependencies": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nunjucks": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/nunjucks/-/nunjucks-3.2.4.tgz", + "integrity": "sha512-26XRV6BhkgK0VOxfbU5cQI+ICFUtMLixv1noZn1tGU38kQH5A5nmmbk/O45xdyBhD1esk47nKrY0mvQpZIhRjQ==", + "license": "BSD-2-Clause", + "dependencies": { + "a-sync-waterfall": "^1.0.0", + "asap": "^2.0.3", + "commander": "^5.1.0" + }, + "bin": { + "nunjucks-precompile": "bin/precompile" + }, + "engines": { + "node": ">= 6.9.0" + }, + "peerDependencies": { + "chokidar": "^3.3.0" + }, + "peerDependenciesMeta": { + "chokidar": { + "optional": true + } + } + }, + "node_modules/nwsapi": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.7.tgz", + "integrity": "sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ==", + "license": "MIT" + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/open": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", + "license": "MIT", + "dependencies": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parse5": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", + "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", + "license": "MIT", + "dependencies": { + "entities": "^4.4.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/pascal-case": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", + "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", + "license": "MIT", + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "license": "MIT" + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pretty-hrtime": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", + "integrity": "sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/prismjs": { + "version": "1.29.0", + "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz", + "integrity": "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/promise": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", + "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "dependencies": { + "asap": "~2.0.3" + } + }, + "node_modules/psl": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", + "license": "MIT" + }, + "node_modules/pug": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/pug/-/pug-3.0.3.tgz", + "integrity": "sha512-uBi6kmc9f3SZ3PXxqcHiUZLmIXgfgWooKWXcwSGwQd2Zi5Rb0bT14+8CJjJgI8AB+nndLaNgHGrcc6bPIB665g==", + "license": "MIT", + "dependencies": { + "pug-code-gen": "^3.0.3", + "pug-filters": "^4.0.0", + "pug-lexer": "^5.0.1", + "pug-linker": "^4.0.0", + "pug-load": "^3.0.0", + "pug-parser": "^6.0.0", + "pug-runtime": "^3.0.1", + "pug-strip-comments": "^2.0.0" + } + }, + "node_modules/pug-attrs": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pug-attrs/-/pug-attrs-3.0.0.tgz", + "integrity": "sha512-azINV9dUtzPMFQktvTXciNAfAuVh/L/JCl0vtPCwvOA21uZrC08K/UnmrL+SXGEVc1FwzjW62+xw5S/uaLj6cA==", + "license": "MIT", + "dependencies": { + "constantinople": "^4.0.1", + "js-stringify": "^1.0.2", + "pug-runtime": "^3.0.0" + } + }, + "node_modules/pug-code-gen": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/pug-code-gen/-/pug-code-gen-3.0.3.tgz", + "integrity": "sha512-cYQg0JW0w32Ux+XTeZnBEeuWrAY7/HNE6TWnhiHGnnRYlCgyAUPoyh9KzCMa9WhcJlJ1AtQqpEYHc+vbCzA+Aw==", + "license": "MIT", + "dependencies": { + "constantinople": "^4.0.1", + "doctypes": "^1.1.0", + "js-stringify": "^1.0.2", + "pug-attrs": "^3.0.0", + "pug-error": "^2.1.0", + "pug-runtime": "^3.0.1", + "void-elements": "^3.1.0", + "with": "^7.0.0" + } + }, + "node_modules/pug-error": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/pug-error/-/pug-error-2.1.0.tgz", + "integrity": "sha512-lv7sU9e5Jk8IeUheHata6/UThZ7RK2jnaaNztxfPYUY+VxZyk/ePVaNZ/vwmH8WqGvDz3LrNYt/+gA55NDg6Pg==", + "license": "MIT" + }, + "node_modules/pug-filters": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pug-filters/-/pug-filters-4.0.0.tgz", + "integrity": "sha512-yeNFtq5Yxmfz0f9z2rMXGw/8/4i1cCFecw/Q7+D0V2DdtII5UvqE12VaZ2AY7ri6o5RNXiweGH79OCq+2RQU4A==", + "dependencies": { + "constantinople": "^4.0.1", + "jstransformer": "1.0.0", + "pug-error": "^2.0.0", + "pug-walk": "^2.0.0", + "resolve": "^1.15.1" + } + }, + "node_modules/pug-lexer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/pug-lexer/-/pug-lexer-5.0.1.tgz", + "integrity": "sha512-0I6C62+keXlZPZkOJeVam9aBLVP2EnbeDw3An+k0/QlqdwH6rv8284nko14Na7c0TtqtogfWXcRoFE4O4Ff20w==", + "dependencies": { + "character-parser": "^2.2.0", + "is-expression": "^4.0.0", + "pug-error": "^2.0.0" + } + }, + "node_modules/pug-linker": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pug-linker/-/pug-linker-4.0.0.tgz", + "integrity": "sha512-gjD1yzp0yxbQqnzBAdlhbgoJL5qIFJw78juN1NpTLt/mfPJ5VgC4BvkoD3G23qKzJtIIXBbcCt6FioLSFLOHdw==", + "dependencies": { + "pug-error": "^2.0.0", + "pug-walk": "^2.0.0" + } + }, + "node_modules/pug-load": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pug-load/-/pug-load-3.0.0.tgz", + "integrity": "sha512-OCjTEnhLWZBvS4zni/WUMjH2YSUosnsmjGBB1An7CsKQarYSWQ0GCVyd4eQPMFJqZ8w9xgs01QdiZXKVjk92EQ==", + "dependencies": { + "object-assign": "^4.1.1", + "pug-walk": "^2.0.0" + } + }, + "node_modules/pug-parser": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/pug-parser/-/pug-parser-6.0.0.tgz", + "integrity": "sha512-ukiYM/9cH6Cml+AOl5kETtM9NR3WulyVP2y4HOU45DyMim1IeP/OOiyEWRr6qk5I5klpsBnbuHpwKmTx6WURnw==", + "dependencies": { + "pug-error": "^2.0.0", + "token-stream": "1.0.0" + } + }, + "node_modules/pug-runtime": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/pug-runtime/-/pug-runtime-3.0.1.tgz", + "integrity": "sha512-L50zbvrQ35TkpHwv0G6aLSuueDRwc/97XdY8kL3tOT0FmhgG7UypU3VztfV/LATAvmUfYi4wNxSajhSAeNN+Kg==", + "license": "MIT" + }, + "node_modules/pug-strip-comments": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pug-strip-comments/-/pug-strip-comments-2.0.0.tgz", + "integrity": "sha512-zo8DsDpH7eTkPHCXFeAk1xZXJbyoTfdPlNR0bK7rpOMuhBYb0f5qUVCO1xlsitYd3w5FQTK7zpNVKb3rZoUrrQ==", + "dependencies": { + "pug-error": "^2.0.0" + } + }, + "node_modules/pug-walk": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pug-walk/-/pug-walk-2.0.0.tgz", + "integrity": "sha512-yYELe9Q5q9IQhuvqsZNwA5hfPkMJ8u92bQLIMcsMxf/VADjNtEYptU+inlufAFYcWdHlwNfZOEnOOQrZrcyJCQ==" + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "license": "MIT" + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "license": "MIT" + }, + "node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "license": "MIT", + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/rfdc": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", + "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==", + "license": "MIT" + }, + "node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "license": "MIT" + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "license": "MIT" + }, + "node_modules/sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "license": "ISC" + }, + "node_modules/saxes": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz", + "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==", + "license": "ISC", + "dependencies": { + "xmlchars": "^2.2.0" + }, + "engines": { + "node": ">=v12.22.7" + } + }, + "node_modules/send": { + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", + "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/send/node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/serve-static": { + "version": "1.16.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", + "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", + "license": "MIT", + "dependencies": { + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.19.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/serve-static/node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/set-function-length": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz", + "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==", + "dependencies": { + "define-data-property": "^1.1.1", + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "license": "ISC" + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "license": "BSD-3-Clause", + "engines": { + "node": ">= 8" + } + }, + "node_modules/sprintf-js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", + "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", + "license": "BSD-3-Clause" + }, + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string_decoder/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "license": "MIT", + "dependencies": { + "min-indent": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/stylus": { + "version": "0.59.0", + "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.59.0.tgz", + "integrity": "sha512-lQ9w/XIOH5ZHVNuNbWW8D822r+/wBSO/d6XvtyHLF7LW4KaCIDeVbvn5DF8fGCJAUCwVhVi/h6J0NUcnylUEjg==", + "license": "MIT", + "dependencies": { + "@adobe/css-tools": "^4.0.1", + "debug": "^4.3.2", + "glob": "^7.1.6", + "sax": "~1.2.4", + "source-map": "^0.7.3" + }, + "bin": { + "stylus": "bin/stylus" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://opencollective.com/stylus" + } + }, + "node_modules/stylus/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "license": "MIT", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/stylus/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "license": "MIT" + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "license": "MIT" + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "license": "MIT" + }, + "node_modules/through2": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz", + "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", + "license": "MIT", + "dependencies": { + "readable-stream": "3" + } + }, + "node_modules/tildify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/tildify/-/tildify-2.0.0.tgz", + "integrity": "sha512-Cc+OraorugtXNfs50hU9KS369rFXCfgGLpfCfvlc+Ud5u6VWmUQsOAa9HbTvheQdYnrdJqqv1e5oIqXppMYnSw==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/titlecase": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/titlecase/-/titlecase-1.1.3.tgz", + "integrity": "sha512-pQX4oiemzjBEELPqgK4WE+q0yhAqjp/yzusGtlSJsOuiDys0RQxggepYmo0BuegIDppYS3b3cpdegRwkpyN3hw==", + "license": "MIT", + "bin": { + "to-title-case": "bin.js" + } + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "engines": { + "node": ">=4" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "license": "MIT", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/token-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/token-stream/-/token-stream-1.0.0.tgz", + "integrity": "sha512-VSsyNPPW74RpHwR8Fc21uubwHY7wMDeJLys2IX5zJNih+OnAnaifKHo+1LHT7DAdloQ7apeaaWg8l7qnf/TnEg==" + }, + "node_modules/tough-cookie": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz", + "integrity": "sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==", + "license": "BSD-3-Clause", + "dependencies": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.2.0", + "url-parse": "^1.5.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tr46": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", + "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", + "license": "MIT", + "dependencies": { + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "license": "0BSD" + }, + "node_modules/universalify": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", + "license": "MIT", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "license": "MIT", + "dependencies": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "license": "MIT" + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "license": "MIT", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/void-elements": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-3.1.0.tgz", + "integrity": "sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/w3c-xmlserializer": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz", + "integrity": "sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==", + "license": "MIT", + "dependencies": { + "xml-name-validator": "^4.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/warehouse": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/warehouse/-/warehouse-5.0.1.tgz", + "integrity": "sha512-5BQEQP56bPY+cqocTho4syazuGgSoyKd0y3PsS2j8tGN10HH+CEfJSIY+KUw9D0k4jaVEFMXLz0KqCiUzTYb8A==", + "license": "MIT", + "dependencies": { + "bluebird": "^3.7.2", + "cuid": "^2.1.8", + "graceful-fs": "^4.2.10", + "hexo-log": "^4.0.1", + "is-plain-object": "^5.0.0", + "jsonparse": "^1.3.1", + "rfdc": "^1.3.0", + "through2": "^4.0.2" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + } + }, + "node_modules/whatwg-encoding": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", + "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", + "license": "MIT", + "dependencies": { + "iconv-lite": "0.6.3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/whatwg-mimetype": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", + "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==", + "license": "MIT", + "engines": { + "node": ">=12" + } + }, + "node_modules/whatwg-url": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", + "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", + "license": "MIT", + "dependencies": { + "tr46": "^3.0.0", + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/with": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/with/-/with-7.0.2.tgz", + "integrity": "sha512-RNGKj82nUPg3g5ygxkQl0R937xLyho1J24ItRCBTr/m1YnZkzJy1hUiHUJrc/VlsDQzsCnInEGSg3bci0Lmd4w==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.9.6", + "@babel/types": "^7.9.6", + "assert-never": "^1.2.1", + "babel-walk": "3.0.0-canary-5" + }, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "license": "ISC" + }, + "node_modules/ws": { + "version": "8.18.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.1.tgz", + "integrity": "sha512-RKW2aJZMXeMxVpnZ6bck+RswznaxmzdULiBr6KY7XkTnW8uvt0iT9H5DkHUChXrc+uurzwa0rVI16n/Xzjdz1w==", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/xml-name-validator": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", + "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", + "license": "Apache-2.0", + "engines": { + "node": ">=12" + } + }, + "node_modules/xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "license": "MIT" + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..1d66ce8 --- /dev/null +++ b/package.json @@ -0,0 +1,28 @@ +{ + "name": "hexo-site", + "version": "0.0.0", + "private": true, + "scripts": { + "build": "hexo generate", + "clean": "hexo clean", + "deploy": "hexo deploy", + "server": "hexo server" + }, + "hexo": { + "version": "7.3.0" + }, + "dependencies": { + "hexo": "^7.3.0", + "hexo-deployer-git": "^4.0.0", + "hexo-generator-archive": "^2.0.0", + "hexo-generator-category": "^2.0.0", + "hexo-generator-index": "^3.0.0", + "hexo-generator-tag": "^2.0.0", + "hexo-renderer-ejs": "^2.0.0", + "hexo-renderer-marked": "^6.0.0", + "hexo-renderer-pug": "^3.0.0", + "hexo-renderer-stylus": "^3.0.0", + "hexo-server": "^3.0.0", + "hexo-theme-landscape": "^1.0.0" + } +} \ No newline at end of file diff --git a/scaffolds/draft.md b/scaffolds/draft.md new file mode 100644 index 0000000..498e95b --- /dev/null +++ b/scaffolds/draft.md @@ -0,0 +1,4 @@ +--- +title: {{ title }} +tags: +--- diff --git a/scaffolds/page.md b/scaffolds/page.md new file mode 100644 index 0000000..f01ba3c --- /dev/null +++ b/scaffolds/page.md @@ -0,0 +1,4 @@ +--- +title: {{ title }} +date: {{ date }} +--- diff --git a/scaffolds/post.md b/scaffolds/post.md new file mode 100644 index 0000000..1f9b9a4 --- /dev/null +++ b/scaffolds/post.md @@ -0,0 +1,5 @@ +--- +title: {{ title }} +date: {{ date }} +tags: +--- diff --git a/source/_posts/12月16-17日工作记录.md b/source/_posts/12月16-17日工作记录.md new file mode 100644 index 0000000..4d8a005 --- /dev/null +++ b/source/_posts/12月16-17日工作记录.md @@ -0,0 +1,13 @@ +--- +title: 12月16-17日工作记录 +date: 2023-12-17 22:26:17 +tags: [日志] +--- +## 12月16-17日 +1. 四级考试 +2. 自学cuda,openacc,了解GPU架构知识 +3. 参加超算队启动会 +4. 大计和高数期中考试 +5. 研究spack使用 +6. 学习cuda编程 +7. 补作业 diff --git a/source/_posts/12月18日工作记录.md b/source/_posts/12月18日工作记录.md new file mode 100644 index 0000000..b3cc015 --- /dev/null +++ b/source/_posts/12月18日工作记录.md @@ -0,0 +1,9 @@ +--- +title: 12月18日工作记录 +date: 2023-12-18 21:57:34 +tags: [日志] +--- +## 12月18日 +1. 初步了解opencaeporo,尝试在本地docker环境使用gcc完成编译安装,目前完成各项依赖安装,由于晚上停电计划明天开始编译安装opencaeporo本体并在本地调优; +2. 协助Neko组完成任务; +3. 找出spack存在网络原因无法下载时的手动解决方案. \ No newline at end of file diff --git a/source/_posts/12月19日工作记录.md b/source/_posts/12月19日工作记录.md new file mode 100644 index 0000000..a0d322f --- /dev/null +++ b/source/_posts/12月19日工作记录.md @@ -0,0 +1,8 @@ +--- +title: 12月19日工作记录 +date: 2023-12-19 21:59:47 +tags: [日志] +--- +## 12月18日 +1. 彻底完成opencaeporo安装部署,本地和服务器均已安装,明天正式开始调优工作; +2. 学习cuda编程. diff --git a/source/_posts/12月20日工作记录.md b/source/_posts/12月20日工作记录.md new file mode 100644 index 0000000..b726e11 --- /dev/null +++ b/source/_posts/12月20日工作记录.md @@ -0,0 +1,14 @@ +--- +title: 12月20日工作记录 +date: 2023-12-20 21:56:42 +tags: 日志 +--- +## 12月20日 + +OpenCAEPoro 小组(黄**,梁**,程**) + +1. 阅读代码,开展优化工作,初步使用openacc完成petsc_solver的优化,取得一定优化效果 + +> 优化方向基本确定为OpenMP/OpenACC并行化+cuda移植 + +2. 赛题环境汇总,目前各组工作有序开展,CentOS 7符合要求暂未发现更换系统需求 diff --git a/source/_posts/12月28日进度报告.md b/source/_posts/12月28日进度报告.md new file mode 100644 index 0000000..8e940cb --- /dev/null +++ b/source/_posts/12月28日进度报告.md @@ -0,0 +1,12 @@ +--- +title: 12月28日进度报告 +date: 2023-12-28 23:22:13 +tags: 日志 +--- +## 12月28日 + +OpenCAEPoro 小组(黄**,梁**,程**,刘**) + +1. 各组员继续进行优化工作,部分函数完成cuda移植,取得一定优化效果 +2. 继续学习openacc及cuda相关知识 +3. 搜集多孔介质流动模拟与opencaeporo相关论文资料为proposal做准备 diff --git a/source/_posts/12月31日进度报告.md b/source/_posts/12月31日进度报告.md new file mode 100644 index 0000000..28f3d82 --- /dev/null +++ b/source/_posts/12月31日进度报告.md @@ -0,0 +1,12 @@ +--- +title: 12月30-31日进度报告 +date: 2023-12-31 00:07:09 +tags: 日志 +--- +## 12月30-31日 + +OpenCAEPoro 小组(黄**,梁**,程**,刘**) + +1. 服务器上的Opencaeporo改用nvhpc编译器编译以支持cuda; +2. 收集运行数据用于proposal绘制图表; +3. 继续尝试优化,同时已经查阅收集了一些相关资料以尽量理解相关含义便于工作开展. diff --git a/source/_posts/BlogUpdate.md b/source/_posts/BlogUpdate.md new file mode 100644 index 0000000..39da556 --- /dev/null +++ b/source/_posts/BlogUpdate.md @@ -0,0 +1,12 @@ +--- +title: 博客更新记录 +date: 2024-11-04 23:18:02 +tags: 日志 +categories: 更新 +--- + +- 博客主题更新为 `Fluid` 主题,原主题为 `Next` +- 更新了访问地址为 `https://blog.hifuu.ink` +- 新增了 `About` 页面 +- 新增了 `友链` 页面 +- 完善页面布局 diff --git a/source/_posts/CGH0S7-s-Blog.md b/source/_posts/CGH0S7-s-Blog.md new file mode 100644 index 0000000..a3bd2c5 --- /dev/null +++ b/source/_posts/CGH0S7-s-Blog.md @@ -0,0 +1,7 @@ +--- +title: Welcome to CGH0S7's Blog +date: 2023-12-06 16:33:30 +tags: TEST +--- + +Hello World ! diff --git a/source/_posts/GentleJena.md b/source/_posts/GentleJena.md new file mode 100644 index 0000000..23cab9d --- /dev/null +++ b/source/_posts/GentleJena.md @@ -0,0 +1,14 @@ +--- +title: Gentle Jena +date: 2024-10-30 22:11:14 +tags: 音乐 +categories: Rearrangement +--- + +很喜欢的一首曲子 +顺便测试一下视频上传 +以后随缘更新各种乱七八糟的东西。。 + + diff --git a/source/_posts/Vocaloid调教-晴天.md b/source/_posts/Vocaloid调教-晴天.md new file mode 100644 index 0000000..44df7fb --- /dev/null +++ b/source/_posts/Vocaloid调教-晴天.md @@ -0,0 +1,15 @@ +--- +title: Vocaloid调教-晴天(洛天依v4) +date: 2024-11-04 21:52:59 +tags: [Vocaloid, 音乐] +categories: [Vocaloid] +--- + +其实是今年年初的作品想起来可以搬上来,这是我调教的第一首v曲。 + +“故事的小黄花,从出生那年就飘着...” + +{% raw %} + +{% endraw %} + diff --git a/source/_posts/arch-nvidia.md b/source/_posts/arch-nvidia.md new file mode 100644 index 0000000..637a00e --- /dev/null +++ b/source/_posts/arch-nvidia.md @@ -0,0 +1,112 @@ +--- +title: Archlinux的KDE Plasma优先启用Nvidia独立显卡和混合显卡配置指北 +date: 2024-11-06 10:02:04 +tags: 技术 +categories: [技术分享] +--- +本文将介绍在 **X11** 和 **Wayland** 两种会话下,如何在 KDE Plasma 中优先启用 Nvidia 独立显卡,并提供 I+N 混合显卡的配置方案。**首先,请确保您已经正确安装了 Nvidia 驱动**(如果非 Mainline 内核,请使用 `nvidia-dkms` 或 `nvidia-open-dkms` 版本)。 + + + +### 适用系统 + +对于 **CachyOS** 或 **EndeavourOS** 等 Arch Linux 衍生版,这些配置大多开箱即用,但对于刚刚入坑 Arch Linux 且使用 KDE 的新手可能会遇到这样的问题: + +- Nvidia 驱动已安装,`nvidia-smi` 输出正常 +- KDE 系统信息显示仍在使用核显,程序运行时也优先使用核显 +- 导致某些应用(如浏览器、Blender)可能出现卡顿或掉帧现象 + +这是因为 Arch Linux 的高自定义性,许多功能需要用户手动配置。以下是详细的解决方案。 + +--- + +## 配置 X11 下的 Nvidia 显卡优先 + +可以通过配置 `/etc/X11/xorg.conf` 实现 Nvidia 独显输出。幸运的是,Nvidia 提供了自动生成配置文件的工具,用户无需手动编写: + +```bash +sudo nvidia-xconfig --prime +``` + +该命令会根据硬件情况自动生成配置文件。执行后 **重新登录会话** 即可生效(即使是 Wayland 用户也可以执行一次此命令)。 + + + +--- + +## 配置 Wayland 下的 Nvidia 显卡优先 + +在 Wayland 下优先启用 Nvidia 显卡的步骤如下: + +1. 编辑 **GRUB 配置**文件: + + 打开 `/etc/default/grub` 文件,在 `GRUB_CMDLINE_LINUX_DEFAULT=""` 中添加 `nvidia_drm.modeset=1`: + + ```bash + GRUB_CMDLINE_LINUX_DEFAULT="nvidia_drm.modeset=1" + ``` + +2. 重新生成 grub 配置: + + ```bash + sudo grub-mkconfig -o /boot/grub/grub.cfg + ``` + +3. 配置 **Plasma 环境**文件: + + 在 `~/.config/plasma-workspace/env/nvidia.sh` 中写入以下内容: + + ```bash + #!/bin/bash + export __NV_PRIME_RENDER_OFFLOAD=1 + export __GLX_VENDOR_LIBRARY_NAME=nvidia + ``` + +4. 保存并重启电脑,即可生效。 + + + +--- + +## I+N 混合显卡方案 + +如果不希望全局启用独显,可以选择让大部分程序默认使用核显,而少数高性能需求的程序使用独显。这种方法能有效节省功耗,同时将独显资源集中分配给需要的程序(如 Steam 游戏、Blender 等)。缺点是每个程序需要手动配置启动项。 + +### 配置步骤 + +1. 打开程序的 `.desktop` 启动文件: + + 位置可能在 `/usr/share/applications` 或 `~/.local/share/applications` 中。 + +2. 在 `Exec=` 后添加 `prime-run` 参数。例如: + + ```text + Exec=prime-run <程序启动命令> + ``` + +  + +### Vim 快捷配置 + +如果使用 Vim,可以使用以下快捷键快速批量替换 `Exec=` 为 `Exec=prime-run`: + +```vim +v -> G -> :s/Exec=/Exec=prime-run /g Enter -> :wq Enter +``` + +--- + +## 让 Plasma 桌面也使用独显 + +如果希望 Plasma 桌面也通过独显运行,可以修改 Wayland 配置文件并删除第二行: + +```bash +#!/bin/bash +export __GLX_VENDOR_LIBRARY_NAME=nvidia +``` + +这样 Plasma 桌面会通过独显启动,其他程序则默认使用核显。 + +--- + +希望以上经验能为有此需求的用户提供参考帮助。 diff --git a/source/_posts/archlinux-optimization.md b/source/_posts/archlinux-optimization.md new file mode 100644 index 0000000..9689a47 --- /dev/null +++ b/source/_posts/archlinux-optimization.md @@ -0,0 +1,17 @@ +--- +title: Archlinux KDE体验优化总结 +date: 2025-02-02 18:43:26 +tags: [技术分享] +--- + +打算开一个坑记录这么久以来的Archlinux系统性能和操作体验优化经验 + +本文章长期更新 + +------ + +## 软件优化 + +## 快捷键设置 + +## diff --git a/source/_posts/clonezilla.md b/source/_posts/clonezilla.md new file mode 100644 index 0000000..125a424 --- /dev/null +++ b/source/_posts/clonezilla.md @@ -0,0 +1,81 @@ +--- +title: 使用Clonezilla备份和克隆系统 +date: 2025-02-23 21:40:03 +tags: 技术分享 +--- + +[Clonezilla](https://clonezilla.org/)是一款非常好用的系统迁移工具,本文将介绍其基本用法(不包含网络迁移及Clonezilla服务器等进阶内容)以及在克隆Btrfs磁盘时遇到的问题解法。 + +--- +### **零.事前准备**: + - 下载Clonezilla Live镜像(ISO),制作启动U盘(有手就行)。 + - 准备目标存储设备(如U盘,需要迁移的新硬盘等),确保有足够空间(建议大于源硬盘已用空间的1.2倍)。 + + +### **一.备份镜像到硬盘(Device-to-Image)** +这个模式可以将硬盘完整备份为一个镜像文件(可保存到本地硬盘、外置硬盘或网络存储)方便多机部署。注意如果只是将一个硬盘的系统完全克隆到新盘可以跳过此部分。 + +#### **步骤说明**: +2. **启动Clonezilla**: + - 插入U盘,重启电脑并从U盘启动。 + - 选择默认选项(语言,键盘布局,Beginner模式)进入Clonezilla的TUI界面。 + +3. **选择备份模式**: + ```plaintext + Choose mode: 选择 "device-image"(设备到镜像) + Mount storage media: 选择 "local_dev"(本地存储设备) + ``` + - 按提示挂载目标存储设备(注意这里选择的是你要存储镜像的设备且文件系统一般不限,如外置硬盘),确认路径(如 `/dev/sdb1`)。 + +4. **配置备份参数**: + - **源硬盘**:选择需要备份的硬盘(如 `/dev/sda`)。 + - **镜像存储路径**:指定目标位置(如外置硬盘的挂载目录)。 + - **镜像名称**:自定义名称(如 `2025-img-rockylinux-2-21`)。 + - **压缩选项**:默认即可,支持并行压缩加速。 + - **镜像分割**:若目标存储设备为FAT32格式(单文件最大4GB),选择自动分割。 + +5. **确认操作**: + - 检查提示信息,输入 `y` 开始备份。 + - 完成后关机或重启。 + +6. **镜像还原**:和备份非常相似,只是选项换成restore to disk,顺着指引操作即可。 +--- + +### **二、直接克隆硬盘(Device-to-Device)** +将源硬盘完整克隆到目标硬盘(适合硬盘升级或快速迁移),比如笔者最近白嫖了一个三星的2T硬盘直接把原来512G硬盘里的CachyOS无损迁移了进去。 + +#### **步骤说明**: +1. **准备工作**: + - 连接目标硬盘(需容量≥源硬盘已用空间,还原镜像操作也是如此,注意Clonezilla支持小分区到大分区迁移不支持大分区到小分区,后者出门右转Rsync) + - **警告**:目标硬盘数据将被覆盖,操作前如有需要务必备份重要数据! + +2. **启动Clonezilla**: + - 同上,从U盘启动进入Clonezilla界面。 + +3. **选择克隆模式**: + ```plaintext + Choose mode: 选择 "device-device"(设备到设备) + ``` + +4. **选择硬盘**: + - **母碟硬盘**:选择原始硬盘(如 `/dev/sda`)。 + - **目标硬盘**:选择新硬盘(如 `/dev/sdb`)。 + +5. **克隆选项**: + 需要进入专家模式才能看到,一般直接新手模式默认即可。 + +6. **执行克隆**: + - 确认提示信息后输入 `y`,等待完成。 + - 克隆结束后关机,移除旧硬盘并测试新硬盘(主要是查看能不能启动进入系统,若能进入一般不会有问题,而且一般都能进入因为Clonezilla是高精确的块对块克隆)。 + +--- +### **两种模式对比**: +| **模式** | 特点 | +|----------------|---------------------------| +| 备份镜像 | 方便多机部署也可以用于留档| +| 直接克隆 | 换硬盘快速迁移无需恢复过程| +--- + +### **Btrfs务必注意**: +对Btrfs直接进行Clonezilla克隆大概率会碰到一个边界错误,这是由于Btrfs本身使用一段时间后碎片化存储导致的,你需要执行`sudo btrfs balance start --full-balance /`来进行整理,但是这也算是一个风险操作要确保完整执行不能在执行时意外中断导致文件系统出错,并且在后续克隆时不能使用新手模式要进入专家模式勾选-p1支持所有文件系统但是效率降低的选项来确保顺利克隆(未勾选此选项可能导致文件系统无法识别的错误),其他步骤参照前文即可。 + diff --git a/source/_posts/loopers.md b/source/_posts/loopers.md new file mode 100644 index 0000000..fc187e7 --- /dev/null +++ b/source/_posts/loopers.md @@ -0,0 +1,11 @@ +--- +title: 时隔一年再次拿起数位板能画出什么东西 +date: 2024-11-04 23:47:54 +tags: [板绘, 生活] +--- + +如题,前段时间推完LOOPERS的时候有感而发对着画了张海报 + +时隔一年,终于又拿起了数位板 + + diff --git a/source/_posts/mhwi.md b/source/_posts/mhwi.md new file mode 100644 index 0000000..57b5633 --- /dev/null +++ b/source/_posts/mhwi.md @@ -0,0 +1,14 @@ +--- +title: 愿指引明路的苍蓝星永远为你闪耀 +date: 2024-11-11 21:46:49 +tags: 音乐 +categories: Rearrangement +--- +使用东方Project软音源THFont简单重置的MHWI主题曲 + +雄关漫道真如铁,而今迈步从头越 + +{% raw %} + +{% endraw %} + diff --git a/source/_posts/nudtbomblab.md b/source/_posts/nudtbomblab.md new file mode 100644 index 0000000..d5b280a --- /dev/null +++ b/source/_posts/nudtbomblab.md @@ -0,0 +1,420 @@ +--- +title: 高地特供版CSAPP Bomb Lab全流程攻略 +date: 2025-02-24 15:09:11 +tags: [技术, 学习, 生活] +--- + +这篇文章记录高地CSAPP课程Bomblab实验操作流程,仅供参考交流(答案是随机生成的和学号相关)。 + +笔者实验环境为Archlinux/CachyOS,使用lldb作为调试器(和gdb操作差不多),其余用到的工具主要为objdump,strings,neovim/helix和zellij,全程开源环境不使用IDA。 + +## **Phase_1** + +### **静态分析** + +#### **`strings`扫描** +```bash +strings bomb_linux +``` +先用strings寻找可能与`phase_1`相关的字符串或函数名,运气好说不定能直接找到密码毕竟是第一题。 + + - 结果没有明文密码无法直接秒掉第一问,可惜。 + - 但是找到`GenerateRandomString`函数可能与密码生成相关。 + +#### **用`objdump`反汇编** +```bash +objdump -d bomb_linux > bomb.asm +``` +搜索`GenerateRandomString`和`phase_1`函数的汇编代码。 + ```assembly + 401b53