diff --git a/docs/university.md b/docs/university.md
index a0d97ca3ab..d92071d37f 100644
--- a/docs/university.md
+++ b/docs/university.md
@@ -535,33 +535,161 @@ pageClass: routes
## 大连理工大学
+### 通用
+
+
+
+订阅 **单级** 栏目如 [大连理工大学新闻网](https://news.dlut.edu.cn) 的 [头条关注](https://news.dlut.edu.cn/ttgz.htm) 分类栏目,分为 3 步:
+
+1. 将 URL 中 `https://` 与 `.dlut.edu.cn/` 中间的 `news` 作为 `site` 参数填入;
+2. 将 `https://news.dlut.edu.cn/` 与 `.htm` 间的 `ttgz` 作为 `category` 参数填入;
+3. 最终可获得 [`/dut/news/ttgz`](https://rsshub.app/dut/news/tzgg)。
+
+订阅 **多级** 栏目如 [大连理工大学新闻网](https://news.dlut.edu.cn) 的 [人才培养](https://news.dlut.edu.cn/xwjj01/rcpy.htm) 分类栏目,同样分为 3 步:
+
+1. 将 URL 中 `https://` 与 `.dlut.edu.cn/` 中间的 `news` 作为 `site` 参数填入;
+2. 把 `https://news.dlut.edu.cn/` 与 `.htm` 间 `xwjj01/rcpy` 作为 `category` 参数填入;
+3. 最终可获得 [`/dut/news/xwjj01/rcpy`](https://rsshub.app/dut/news/xwjj01/rcpy)。
+
+::: tip 小提示
+
+大连理工大学大部分站点支持上述通用规则进行订阅。下方的大连理工大学相关路由基本适用于该规则,在其对应的表格中没有提及的分类栏目,可以使用上方的方法自行扩展。
+
+:::
+
+::: tip 小小提示
+
+你会发现 [大连理工大学新闻网](https://news.dlut.edu.cn) 的 [人才培养](https://news.dlut.edu.cn/xwjj01/rcpy.htm) 分类栏目在下方 [**新闻网**](#da-lian-li-gong-da-xue-xin-wen-wang) 参数表格中 `category` 参数为 `rcpy`,并非上面例子中给出的 `xwjj01/rcpy`。这意味着开发者对路由 `/dut/news/xwjj01/rcpy` 指定了快捷方式 `/dut/news/rcpy`。两者的效果是一致的。
+
+:::
+
+
+
+### 新闻网
+
+
+
+| 头条关注 | 新闻聚焦 | 人才培养 | 科学研究 | 交流合作 |
+| ---- | ---- | ---- | ---- | ---- |
+| ttgz | xwjj | rcpy | kxyj | jlhz |
+
+| 一线风采 | 大工人物 | 图说大工 | 影像大工 | 媒体大工 |
+| ---- | ---- | ---- | ---- | ---- |
+| yxfc | dgrw | tsdg | yxdg | mtdg |
+
+
+
+### 人事处
+
+
+
+| 通知公告 | 工作动态 | 政策法规 |
+| ---- | ---- | ---- |
+| tzgg | gzdt | zcfg |
+
+::: tip 提示
+
+表格仅呈现了部分分类栏目,更多分类栏目参见 [大连理工大学人事处](http://perdep.dlut.edu.cn),并按照上方 [**通用**](#da-lian-li-gong-da-xue-tong-yong) 规则订阅。
+
+:::
+
+
+
### 教务处
-
+
-| 重要通告 | 新闻快递 | 教学文件 | 其他文件 |
-| ---- | ---- | -------------- | ----------- |
-| zytg | xwkd | jiaoxuewenjian | qitawenjian |
+| 新闻快递 | 重要通告 | 办会公示 |
+| ---- | ---- | ---- |
+| xwkd | zytg | bhgs |
+
+::: tip 提示
+
+表格仅呈现了部分分类栏目,更多分类栏目参见 [大连理工大学教务处](http://teach.dlut.edu.cn),并按照上方 [**通用**](#da-lian-li-gong-da-xue-tong-yong) 规则订阅。
+
+:::
+
+
+
+### 研究生院
+
+
+
+| 重要通知 | 工作动态 | 政策法规 |
+| ---- | ---- | ---- |
+| zytz | gzdt | zcfg |
+
+| 研究生招生 - 政策文件 | 研究生招生 - 工作动态 | 研究生招生 - 资料下载 |
+| ------------ | --------------- | --------------- |
+| yjszs/zcwj1 | yjszs/gzdt/gzdt | yjszs/zlxz/zlxz |
+
+::: tip 提示
+
+表格仅呈现了部分分类栏目,更多分类栏目参见 [大连理工大学研究生院](http://gs.dlut.edu.cn),并按照上方 [**通用**](#da-lian-li-gong-da-xue-tong-yong) 规则订阅。
+
+:::
+
+### 软件学院
+
+
+
+| 焦点新闻 | 综合新闻 | 学院通知 | 学术动态 | 本科生通知 | 研究生通知 |
+| ---- | ---- | ---- | ---- | ----- | ----- |
+| jdxw | zhxw | xytz | xsdt | bkstz | yjstz |
+
+::: tip 提示
+
+表格仅呈现了部分分类栏目,更多分类栏目参见 [大连理工大学软件学院](http://ssdut.dlut.edu.cn),并按照上方 [**通用**](#da-lian-li-gong-da-xue-tong-yong) 规则订阅。
+
+:::
+
+
+
+### 开发区校区
+
+
+
+| 通知公告 | 校区新闻 |
+| ---- | ---- |
+| tzgg | xqxw |
+
+::: tip 提示
+
+表格仅呈现了部分分类栏目,更多分类栏目参见 [大连理工大学开发区校区](http://eda.dlut.edu.cn),并按照上方 [**通用**](#da-lian-li-gong-da-xue-tong-yong) 规则订阅。
+
+:::
+
+
+
+### 国际合作与交流处(港澳台办)
+
+
+
+| 教师通知 | 学生通知 | 新闻速递 |
+| ---- | ---------- | ---- |
+| jstz | xstong_zhi | xwsd |
+
+::: tip 提示
+
+表格仅呈现了部分分类栏目,更多分类栏目参见 [大连理工大学国际合作与交流处(港澳台办)](http://dutdice.dlut.edu.cn),并按照上方 [**通用**](#da-lian-li-gong-da-xue-tong-yong) 规则订阅。
+
+:::
### 体育场馆中心
-
+
-| 通知公告 | 活动日程 | 新闻动态 |
-| ---- | ---- | ---- |
-| tzgg | hdrc | xwdt |
+| 通知公告 | 活动日程 | 新闻动态 | 健康知识 |
+| ---- | ---- | ---- | ---- |
+| tzgg | hdrc | xwdt | jkzs |
-
+::: tip 提示
-### 国际处及港澳台办
+表格仅呈现了部分分类栏目,更多分类栏目参见 [大连理工大学体育场馆中心](http://tycgzx.dlut.edu.cn),并按照上方 [**通用**](#da-lian-li-gong-da-xue-tong-yong) 规则订阅。
-
-
-| 学生通知 | 教师通知 | 新闻速递 |
-| ---------- | ---- | ---- |
-| xstong_zhi | jstz | xwsd |
+:::
@@ -1595,7 +1723,7 @@ type 列表:
将其替换到 RSS 路由地址中即可:
- 或
+[https://rsshub.app/**nuist**/`bulletin`](https://rsshub.app/nuist/bulletin) 或 [https://rsshub.app/**nuist**/`bulletin`/`791`](https://rsshub.app/nuist/bulletin)
:::
diff --git a/lib/router.js b/lib/router.js
index fee0552378..4a312e2496 100644
--- a/lib/router.js
+++ b/lib/router.js
@@ -510,7 +510,7 @@ router.get('/dpu/jiaowu/news/:type?', lazyloadRouteHandler('./routes/universitie
router.get('/dpu/wlfw/news/:type?', lazyloadRouteHandler('./routes/universities/dpu/wlfw/news'));
// 大连理工大学
-router.get('/dut/:subsite/:type', lazyloadRouteHandler('./routes/universities/dut/index'));
+// router.get('/dut/:subsite/:type', lazyloadRouteHandler('./routes/universities/dut/index'));
// 东南大学
router.get('/seu/radio/academic', lazyloadRouteHandler('./routes/universities/seu/radio/academic'));
diff --git a/lib/routes/universities/dut/index.js b/lib/routes/universities/dut/index.js
deleted file mode 100644
index f778039b3b..0000000000
--- a/lib/routes/universities/dut/index.js
+++ /dev/null
@@ -1,60 +0,0 @@
-const got = require('@/utils/got');
-const cheerio = require('cheerio');
-const { parseDate } = require('@/utils/parse-date');
-const timezone = require('@/utils/timezone');
-const subsiteDic = require('./subsite.js');
-module.exports = async (ctx) => {
- const subsiteMap = subsiteDic[ctx.params.subsite];
- const typeMap = subsiteMap.typeMap[ctx.params.type];
- const frontUrl = typeMap.url;
- const basePath = typeMap.basePath;
- const response = await got({
- method: 'get',
- url: frontUrl,
- });
-
- const data = response.data;
- const $ = cheerio.load(data);
- const list = $(subsiteMap.listSelector)
- .map((index, item) => {
- item = $(item);
- return {
- title: subsiteMap.titleMethod(item),
- // description,
- link: subsiteMap.linkMethod(item),
- pubDate: timezone(parseDate(subsiteMap.pubDateMethod(item), 'YYYY/MM/DD'), +8),
- };
- })
- .get();
-
- const entries = await Promise.all(
- list.map(async (item) => {
- const { title, link, pubDate } = item;
- const entryUrl = basePath + link;
-
- const cache = await ctx.cache.tryGet(entryUrl, async () => {
- const response = await got({
- method: 'get',
- url: entryUrl,
- });
-
- const $ = cheerio.load(response.data);
- const description = subsiteMap.descriptionMethod($);
- const entry = {
- title,
- link,
- pubDate,
- description,
- };
- return JSON.stringify(entry);
- });
- return Promise.resolve(JSON.parse(cache));
- })
- );
-
- ctx.state.data = {
- title: typeMap.title,
- link: frontUrl,
- item: entries,
- };
-};
diff --git a/lib/routes/universities/dut/subsite.js b/lib/routes/universities/dut/subsite.js
deleted file mode 100644
index c289ea05ea..0000000000
--- a/lib/routes/universities/dut/subsite.js
+++ /dev/null
@@ -1,50 +0,0 @@
-const titleMethod1 = (item) => item.find('a').text();
-const linkMethod1 = (item) => item.find('a').attr().href;
-const pubDateMethod1 = (item) => item.find('span').text();
-const descriptionMethod1 = ($) => {
- const main = $('.v_news_content').html();
- let attachment = $('form ul').html();
- // attachment = (attachment ? attachment : '').replace(//g, '').replace(/<\/li>/g, '
');
- attachment = (attachment ? attachment : '').replace(//g, '
');
- return main + '
' + attachment;
-};
-const subsiteDic = {
- teach: {
- listSelector: '.list > ul > li',
- titleMethod: titleMethod1,
- linkMethod: linkMethod1,
- pubDateMethod: pubDateMethod1,
- descriptionMethod: descriptionMethod1,
- typeMap: {
- zytg: { title: '大连理工大学教务处-重要通告', url: 'https://teach.dlut.edu.cn/zytg/zytg.htm', basePath: 'https://teach.dlut.edu.cn/zytg/' },
- xwkd: { title: '大连理工大学教务处-新闻快递', url: 'https://teach.dlut.edu.cn/xwkd/xwkd.htm', basePath: 'https://teach.dlut.edu.cn/xwkd/' },
- qitawenjian: { title: '大连理工大学教务处-其他文件', url: 'https://teach.dlut.edu.cn/qitawenjian/list.jsp?urltype=tree.TreeTempUrl&wbtreeid=1081', basePath: 'https://teach.dlut.edu.cn/qitawenjian/' },
- jiaoxuewenjian: { title: '大连理工大学教务处-教学文件', url: 'https://teach.dlut.edu.cn/jiaoxuewenjian/list.jsp?urltype=tree.TreeTempUrl&wbtreeid=1082', basePath: 'https://teach.dlut.edu.cn/jiaoxuewenjian/' },
- },
- },
- dutdice: {
- listSelector: '.list01 li',
- titleMethod: titleMethod1,
- linkMethod: linkMethod1,
- pubDateMethod: pubDateMethod1,
- descriptionMethod: descriptionMethod1,
- typeMap: {
- xstong_zhi: { title: '大连理工大学国际处及港澳台办-学生通知', url: 'http://dutdice.dlut.edu.cn/tzgg/xstong_zhi.htm', basePath: 'http://dutdice.dlut.edu.cn/tzgg/' },
- jstz: { title: '大连理工大学国际处及港澳台办-教师通知', url: 'http://dutdice.dlut.edu.cn/tzgg/jstz.htm', basePath: 'http://dutdice.dlut.edu.cn/tzgg/' },
- xwsd: { title: '大连理工大学国际处及港澳台办-新闻速递', url: 'http://dutdice.dlut.edu.cn/xwsd/xxxw.htm', basePath: 'http://dutdice.dlut.edu.cn/xwsd/' },
- },
- },
- tycgzx: {
- listSelector: '.list li',
- titleMethod: titleMethod1,
- linkMethod: linkMethod1,
- pubDateMethod: pubDateMethod1,
- descriptionMethod: descriptionMethod1,
- typeMap: {
- tzgg: { title: '大连理工大学体育场馆中心-通知公告', url: 'http://tycgzx.dlut.edu.cn/tzgg/tzgg.htm', basePath: 'http://tycgzx.dlut.edu.cn/tzgg/' },
- hdrc: { title: '大连理工大学体育场馆中心-活动日程', url: 'http://tycgzx.dlut.edu.cn/hdrc/hdrc.htm', basePath: 'http://tycgzx.dlut.edu.cn/hdrc/' },
- xwdt: { title: '大连理工大学体育场馆中心-新闻动态', url: 'http://tycgzx.dlut.edu.cn/xwdt/xwdt.htm', basePath: 'http://tycgzx.dlut.edu.cn/xwdt/' },
- },
- },
-};
-module.exports = subsiteDic;
diff --git a/lib/v2/dut/defaults.js b/lib/v2/dut/defaults.js
new file mode 100644
index 0000000000..b704fc4962
--- /dev/null
+++ b/lib/v2/dut/defaults.js
@@ -0,0 +1,33 @@
+module.exports = {
+ // 新闻网:https://news.dlut.edu.cn
+ // 默认 -> 头条关注 https://news.dlut.edu.cn/ttgz.htm
+ news: 'ttgz',
+
+ // 教务处:http://teach.dlut.edu.cn
+ // 默认 -> 新闻快递 http://teach.dlut.edu.cn/xwkd/xwkd.htm
+ teach: 'xwkd/xwkd',
+
+ // 人事处:http://perdep.dlut.edu.cn
+ // 默认 -> 通知公告 http://perdep.dlut.edu.cn/tzgg/tzgg.htm
+ perdep: 'tzgg/tzgg',
+
+ // 研究生院:http://gs.dlut.edu.cn
+ // 默认 -> 重要通知 http://gs.dlut.edu.cn/zytz.htm
+ gs: 'zytz',
+
+ // 软件学院:http://ssdut.dlut.edu.cn
+ // 默认 -> 焦点新闻 http://ssdut.dlut.edu.cn/ywgg/xueyuanxinwen/jdxw.htm
+ ssdut: 'ywgg/xueyuanxinwen/jdxw',
+
+ // 开发区校区:http://eda.dlut.edu.cn
+ // 默认 -> 通知公告 http://eda.dlut.edu.cn/tzgg/tzgg.htm
+ eda: 'tzgg/tzgg',
+
+ // 国际合作与交流处(港澳台办):http://dutdice.dlut.edu.cn
+ // 默认 -> 新闻速递 http://dutdice.dlut.edu.cn/xwsd/xxxw.htm
+ dutdice: 'xwsd/xxxw',
+
+ // 体育场馆中心:http://tycgzx.dlut.edu.cn
+ // 默认 -> 通知公告 http://tycgzx.dlut.edu.cn/tzgg/tzgg.htm
+ tycgzx: 'tzgg/tzgg',
+};
diff --git a/lib/v2/dut/index.js b/lib/v2/dut/index.js
new file mode 100644
index 0000000000..cf63769e67
--- /dev/null
+++ b/lib/v2/dut/index.js
@@ -0,0 +1,73 @@
+const got = require('@/utils/got');
+const cheerio = require('cheerio');
+const { parseDate } = require('@/utils/parse-date');
+const defaults = require('./defaults');
+const shortcuts = require('./shortcuts');
+
+module.exports = async (ctx) => {
+ const site = ctx.params[0] ?? 'news';
+
+ let category = ctx.params[1] ?? (defaults.hasOwnProperty(site) ? defaults[site] : '');
+ category = shortcuts.hasOwnProperty(site) ? (shortcuts[site].hasOwnProperty(category) ? shortcuts[site][category] : category) : category;
+
+ const rootUrl = `https://${site}.dlut.edu.cn`;
+ const currentUrl = `${rootUrl}/${category}.htm`;
+
+ const response = await got({
+ method: 'get',
+ url: currentUrl,
+ });
+
+ const $ = cheerio.load(response.data);
+
+ $('.Next, .rjxw_left, .pb_sys_common').remove();
+
+ let items = $('.txt, .itemlist, .wall, .list, .list01, .ny_list, .rjxw_right, .rj_yjs_con, .c_hzjl_list1')
+ .find('a')
+ .slice(0, ctx.query.limit ? parseInt(ctx.query.limit) : 50)
+ .toArray()
+ .map((item) => {
+ item = $(item);
+
+ const dateRegex = /(\d{4}[-/年]\d{2}[-/月]\d{2})/;
+
+ let dateMatch = item.parent().text().match(dateRegex);
+ if (!dateMatch) {
+ dateMatch = item.parent().parent().text().match(dateRegex);
+ }
+
+ return {
+ title: item.text() === '' ? item.next().text() : item.text(),
+ link: /^http/.test(item.attr('href')) ? item.attr('href') : `${rootUrl}/${item.attr('href').replace(/^[./]+/, '')}`,
+ pubDate: parseDate(dateMatch ? dateMatch[1].replace(/年|月/g, '-') : new Date().toString()),
+ };
+ });
+
+ items = await Promise.all(
+ items.map((item) =>
+ ctx.cache.tryGet(item.link, async () => {
+ try {
+ const detailResponse = await got({
+ method: 'get',
+ url: item.link,
+ });
+
+ const content = cheerio.load(detailResponse.data);
+
+ item.description = content('.v_news_content, .conbox').html();
+ } catch (err) {
+ // Fo example: http://dutdice.dlut.edu.cn/nry.jsp?urltype=news.NewsContentUrl&wbtreeid=1006&wbnewsid=9820
+ // do nothing to the cases which require fetching resources from the Intranet :P
+ }
+ return item;
+ })
+ )
+ );
+
+ ctx.state.data = {
+ title: $('title').text(),
+ link: currentUrl,
+ item: items,
+ allowEmpty: true,
+ };
+};
diff --git a/lib/v2/dut/maintainer.js b/lib/v2/dut/maintainer.js
new file mode 100644
index 0000000000..ced826f99e
--- /dev/null
+++ b/lib/v2/dut/maintainer.js
@@ -0,0 +1,10 @@
+module.exports = {
+ '/news/:category?': ['nczitzk'],
+ '/perdep/:category?': ['nczitzk'],
+ '/teach/:category?': ['beautyyuyanli', 'nczitzk'],
+ '/gs/:category?': ['nczitzk'],
+ '/ssdut/:category?': ['nczitzk'],
+ '/eda/:category?': ['nczitzk'],
+ '/dutdice/:category?': ['beautyyuyanli', 'nczitzk'],
+ '/tycgzx/:category?': ['beatyyuyanli', 'nczitzk'],
+};
diff --git a/lib/v2/dut/radar.js b/lib/v2/dut/radar.js
new file mode 100644
index 0000000000..36f8b8390b
--- /dev/null
+++ b/lib/v2/dut/radar.js
@@ -0,0 +1,69 @@
+module.exports = {
+ 'dlut.edu.cn': {
+ _name: '大连理工大学',
+ news: [
+ {
+ title: '新闻网',
+ docs: 'https://docs.rsshub.app/university.html#da-lian-li-gong-da-xue-xin-wen-wang',
+ source: ['/'],
+ target: '/dut/news/:category?',
+ },
+ ],
+ perdep: [
+ {
+ title: '人事处',
+ docs: 'https://docs.rsshub.app/university.html#da-lian-li-gong-da-xue-ren-shi-chu',
+ source: ['/'],
+ target: '/dut/perdep/:category?',
+ },
+ ],
+ teach: [
+ {
+ title: '教务处',
+ docs: 'https://docs.rsshub.app/university.html#da-lian-li-gong-da-xue-jiao-wu-chu',
+ source: ['/'],
+ target: '/dut/teach/:category?',
+ },
+ ],
+ gs: [
+ {
+ title: '研究生院',
+ docs: 'https://docs.rsshub.app/university.html#da-lian-li-gong-da-xue-yan-jiu-sheng-yuan',
+ source: ['/'],
+ target: '/dut/gs/:category?',
+ },
+ ],
+ ssdut: [
+ {
+ title: '软件学院',
+ docs: 'https://docs.rsshub.app/university.html#da-lian-li-gong-da-xue-ruan-jian-xue-yuan',
+ source: ['/'],
+ target: '/dut/ssdut/:category?',
+ },
+ ],
+ eda: [
+ {
+ title: '开发区校区',
+ docs: 'https://docs.rsshub.app/university.html#da-lian-li-gong-da-xue-kai-fa-qu-xiao-qu',
+ source: ['/'],
+ target: '/dut/eda/:category?',
+ },
+ ],
+ dutdice: [
+ {
+ title: '国际合作与交流处(港澳台办)',
+ docs: 'https://docs.rsshub.app/university.html#da-lian-li-gong-da-xue-guo-ji-he-zuo-yu-jiao-liu-chu-gang-ao-tai-ban',
+ source: ['/'],
+ target: '/dut/dutdice/:category?',
+ },
+ ],
+ tycgzx: [
+ {
+ title: '体育场馆中心',
+ docs: 'https://docs.rsshub.app/university.html#da-lian-li-gong-da-xue-ti-yu-chang-guan-zhong-xin',
+ source: ['/'],
+ target: '/dut/tycgzx/:category?',
+ },
+ ],
+ },
+};
diff --git a/lib/v2/dut/router.js b/lib/v2/dut/router.js
new file mode 100644
index 0000000000..e324afdbb5
--- /dev/null
+++ b/lib/v2/dut/router.js
@@ -0,0 +1,4 @@
+module.exports = function (router) {
+ router.get(/([\w\d]+)\/([\w\d/]+)?/, require('./index'));
+ router.get('/:0?', require('./index'));
+};
diff --git a/lib/v2/dut/shortcuts.js b/lib/v2/dut/shortcuts.js
new file mode 100644
index 0000000000..0b7516a9a3
--- /dev/null
+++ b/lib/v2/dut/shortcuts.js
@@ -0,0 +1,49 @@
+module.exports = {
+ news: {
+ xwjj: 'xwjj01',
+ rcpy: 'xwjj01/rcpy',
+ kxyj: 'xwjj01/kxyj',
+ jlhz: 'xwjj01-kxyj',
+ yxfc: 'yxfc1',
+ dgrw: 'dgrw/dgrw1',
+ yxdg: 'yxdg1',
+ mtdg: 'mtdg/mtdg',
+ },
+ teach: {
+ xwkd: 'xwkd/xwkd',
+ zytg: 'zytg/zytg',
+ bhgs: 'zytg/bhgs',
+ },
+ perdep: {
+ tzgg: 'tzgg/tzgg',
+ gzdt: 'gzdt/gzdt1',
+ zcfg: 'zcfg/zcfg',
+ },
+ gs: {
+ gzdt: 'gzdt1',
+ zcfg: 'zcfg/zcfg',
+ },
+ ssdut: {
+ jdxw: 'ywgg/xueyuanxinwen/jdxw',
+ zhxw: 'ywgg/xueyuanxinwen',
+ xytz: 'index/xytz',
+ xsdt: 'index/xsdt',
+ bkstz: 'index/bkstz',
+ yjstz: 'yjspy/yjspy/yjstz',
+ },
+ eda: {
+ tzgg: 'tzgg/tzgg',
+ xqxw: 'xqxw/xqxw',
+ },
+ dutdice: {
+ jstz: 'tzgg/jstz',
+ xstong_zhi: 'tzgg/xstong_zhi',
+ xwsd: 'xwsd/xxxw',
+ },
+ tycgzx: {
+ tzgg: 'tzgg/tzgg',
+ hdrc: 'hdrc/hdrc',
+ xwdt: 'xwdt/xwdt',
+ jkzs: 'jkzs/jkzs1',
+ },
+};