From e3e0c67d2e2b2a0d881ffa01704dbbde6eaf7b38 Mon Sep 17 00:00:00 2001 From: Eeeros Date: Thu, 26 Mar 2026 09:09:41 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B7=A5=E5=8E=82=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../resource/factoryVersion/detail/index.jsx | 125 +++++--- .../resource/factoryVersion/detail/index.scss | 85 +++++- src/factory/resource/factoryVersion/index.jsx | 125 ++++++-- .../resource/factoryVersion/index.scss | 289 ++++++++---------- .../factory/resource/version-active.webp | Bin 0 -> 482 bytes .../factory/resource/version-content.webp | Bin 0 -> 15720 bytes .../factory/resource/version-icon-1.webp | Bin 0 -> 3522 bytes .../factory/resource/version-icon-2.webp | Bin 0 -> 2728 bytes .../factory/resource/version-icon-3.webp | Bin 0 -> 3860 bytes .../factory/resource/version-icon-4.webp | Bin 0 -> 1052 bytes .../factory/resource/version-icon-5.webp | Bin 0 -> 1252 bytes .../factory/resource/version-icon-6.webp | Bin 0 -> 1252 bytes .../factory/resource/version-icon-7.webp | Bin 0 -> 822 bytes .../factory/resource/version-item-header.webp | Bin 0 -> 6884 bytes 14 files changed, 390 insertions(+), 234 deletions(-) create mode 100644 src/images/factory/resource/version-active.webp create mode 100644 src/images/factory/resource/version-content.webp create mode 100644 src/images/factory/resource/version-icon-1.webp create mode 100644 src/images/factory/resource/version-icon-2.webp create mode 100644 src/images/factory/resource/version-icon-3.webp create mode 100644 src/images/factory/resource/version-icon-4.webp create mode 100644 src/images/factory/resource/version-icon-5.webp create mode 100644 src/images/factory/resource/version-icon-6.webp create mode 100644 src/images/factory/resource/version-icon-7.webp create mode 100644 src/images/factory/resource/version-item-header.webp diff --git a/src/factory/resource/factoryVersion/detail/index.jsx b/src/factory/resource/factoryVersion/detail/index.jsx index 96e04ea5..11321365 100644 --- a/src/factory/resource/factoryVersion/detail/index.jsx +++ b/src/factory/resource/factoryVersion/detail/index.jsx @@ -18,7 +18,7 @@ function Index(props) { const id = props.match.params.id const [detail, setDetail] = useState({}) const [content, setContent] = useState(); - const [otherList, setOtherList] = useState([]); + const [totalFileSize, setTotalFileSize] = useState(0); useEffect(() => { document.title = '工具详情-软件工厂专区'; @@ -31,11 +31,46 @@ function Index(props) { } }, [id]); - useEffect(() => { - if (detail.id) { - getOtherList() + // 计算文件总大小 + const calculateTotalFileSize = (fileList) => { + if (!fileList || fileList.length === 0) return 0; + let totalBytes = 0; + fileList.forEach(file => { + const sizeInfo = file.fileSizeInfo || ''; + // 解析文件大小字符串,如 "2.31 kB", "181.72 kB" + const match = sizeInfo.match(/([\d.]+)\s*(kB|MB|GB|B)/i); + if (match) { + const value = parseFloat(match[1]); + const unit = match[2].toUpperCase(); + switch (unit) { + case 'B': + totalBytes += value; + break; + case 'KB': + totalBytes += value * 1024; + break; + case 'MB': + totalBytes += value * 1024 * 1024; + break; + case 'GB': + totalBytes += value * 1024 * 1024 * 1024; + break; + default: + totalBytes += value; + } + } + }); + // 转换为合适的单位显示 + if (totalBytes >= 1024 * 1024 * 1024) { + return (totalBytes / (1024 * 1024 * 1024)).toFixed(2) + ' GB'; + } else if (totalBytes >= 1024 * 1024) { + return (totalBytes / (1024 * 1024)).toFixed(2) + ' MB'; + } else if (totalBytes >= 1024) { + return (totalBytes / 1024).toFixed(2) + ' kB'; + } else { + return totalBytes + ' B'; } - }, [detail]) + }; const getDetail = () => { getSourceDetail(id).then(response => { @@ -49,32 +84,16 @@ function Index(props) { const base64content = Base64.decode(extendData.content) setContent(base64content !== '


' ? base64content : '') } - setDetail({ ...response.data.data, ...extendData }); + const detailData = { ...response.data.data, ...extendData }; + setDetail(detailData); + // 计算文件总大小 + if (detailData.fileList && detailData.fileList.length > 0) { + setTotalFileSize(calculateTotalFileSize(detailData.fileList)); + } } }).catch(error => { }) } - const getOtherList = () => { - getSourceList({ id: factoryZoneId, keywords: versionId, name: '文档' }).then(res => { - const detailName = detail.name.toLowerCase(); - - let filteredList = []; - - if (detailName.includes('docker')) { - filteredList = res.data.rows.filter(e => - e.id !== detail.id && e.name.toLowerCase().includes('docker') - ); - } else if (detailName.includes('k8s')) { - filteredList = res.data.rows.filter(e => - e.id !== detail.id && e.name.toLowerCase().includes('k8s') - ); - } else { - filteredList = res.data.rows.filter(e => e.id !== detail.id && e.name.toLowerCase().includes('x86')); - } - setOtherList(filteredList); - }); - }; - return (
@@ -97,33 +116,45 @@ function Index(props) { 下载量
- {detail.fileList && detail.fileList[0] ? detail.fileList[0].fileSizeInfo : 0} + {totalFileSize || (detail.fileList && detail.fileList[0] ? detail.fileList[0].fileSizeInfo : 0)} 文件大小
+
+ {detail.fileList ? detail.fileList.length : 0} + 文件数量 +
{detail.domainName} 工具类型
- - { - detail.name && !detail.name.includes("文档") &&
相关文档
- } -
- { - otherList.length > 0 && otherList.map((e, index) => { - return - - {e.name} - - - }) - } -
+ + {/* 文件列表展示 */} + {detail.fileList && detail.fileList.length > 0 && ( +
+
文件列表
+
+ {detail.fileList.map((file, index) => ( +
+
+ {file.fileOriginName} + {file.fileSizeInfo} +
+ +
+ ))} +
+
+ )}
diff --git a/src/factory/resource/factoryVersion/detail/index.scss b/src/factory/resource/factoryVersion/detail/index.scss index 80a1c089..8bf0dfc7 100644 --- a/src/factory/resource/factoryVersion/detail/index.scss +++ b/src/factory/resource/factoryVersion/detail/index.scss @@ -1,8 +1,8 @@ .news-detail { min-height: calc(100vh - 58px); + margin-bottom: 158px; .news-detail-header { - height: 752px; width: 100%; background-image: url("../../../../images/factory/resource/tools-detail-head.webp"); background-repeat: no-repeat; @@ -129,6 +129,89 @@ background-color: #091221; } + .file-list { + margin-top: 30px; + max-width: 650px; + + h6 { + line-height: 22px; + font-family: alibabaBold; + font-weight: 700; + color: #091221; + font-size: 16px; + margin-bottom: 15px; + } + + &-content { + background: #f7fbff; + border-radius: 8px; + padding: 15px; + border: 1px solid rgba(22, 76, 228, 0.1); + margin-top: 15px; + + .file-item { + display: flex; + align-items: center; + justify-content: space-between; + padding: 12px 15px; + background: #ffffff; + border-radius: 6px; + margin-bottom: 10px; + border: 1px solid rgba(22, 76, 228, 0.08); + + &:last-child { + margin-bottom: 0; + } + + .file-info { + display: flex; + flex-direction: column; + flex: 1; + min-width: 0; + + .file-name { + line-height: 20px; + font-family: alibaba; + color: #091221; + font-size: 14px; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + } + + .file-size { + line-height: 18px; + font-family: alibabareg; + color: #5d6a80; + font-size: 12px; + margin-top: 4px; + } + } + + .file-download-btn { + margin-left: 15px; + width: 70px; + height: 28px; + line-height: 28px; + cursor: pointer; + border-radius: 4px; + font-family: alibaba; + font-weight: 500; + color: #164ce4; + font-size: 12px; + text-align: center; + background-color: #e9f2ff; + border: 1px solid rgba(22, 76, 228, 0.2); + flex-shrink: 0; + + &:hover { + background: #d6e6ff; + } + } + } + } + } + h6 { margin-top: 34px; line-height: 22px; diff --git a/src/factory/resource/factoryVersion/index.jsx b/src/factory/resource/factoryVersion/index.jsx index 409c3bad..4e41c111 100644 --- a/src/factory/resource/factoryVersion/index.jsx +++ b/src/factory/resource/factoryVersion/index.jsx @@ -2,12 +2,21 @@ import React, { useEffect, useState, useRef } from 'react'; import './index.scss'; import { getSourceList, httpUrl } from '../../api' import { factoryZoneId, versionId, manualId } from '../../../constants/factory' -import dot from '../../../images/factory/resource/version-dot.webp' -import versionNew from '../../../images/factory/resource/version-new.webp' import '../../common.scss' import { downloadFunc } from '../../../forge/Utils/utils' import manual1 from '../../../images/factory/lessons/manual-1.webp' import manual2 from '../../../images/factory/lessons/manual-2.webp' + +import version1 from '../../../images/factory/resource/version-icon-1.webp' +import version2 from '../../../images/factory/resource/version-icon-2.webp' +import version3 from '../../../images/factory/resource/version-icon-3.webp' +import version4 from '../../../images/factory/resource/version-icon-4.webp' +import version5 from '../../../images/factory/resource/version-icon-5.webp' +import version6 from '../../../images/factory/resource/version-icon-6.webp' +import version7 from '../../../images/factory/resource/version-icon-7.webp' + +import versionActive from '../../../images/factory/resource/version-active.webp' + import { Tooltip } from 'antd'; import { Link } from "react-router-dom"; @@ -27,11 +36,47 @@ function Index(props) { getManualList() }, []); + // 根据name提取分类名(如"容器版(ARM)"从"容器版(ARM)-部署文档与手册"中提取) + const extractCategory = (name) => { + if (!name) return ''; + const parts = name.split(')-'); + if (parts.length > 1) { + return parts[0] + ')'; + } + return name; + }; + + // 将数据按分类分组,并处理子item的name去掉分类前缀 + const groupByCategory = (list) => { + const grouped = {}; + list.forEach(item => { + const category = extractCategory(item.name); + if (!grouped[category]) { + grouped[category] = []; + } + // 处理子item的name,去掉分类名前缀 + let itemName = item.name; + if (category && itemName.startsWith(category + '-')) { + itemName = itemName.substring(category.length + 1); + } + grouped[category].push({ ...item, name: itemName }); + }); + return grouped; + }; + const getFullList = () => { getSourceList({ id: factoryZoneId, keywords: versionId }).then(res => { if (res.data.rows) { - setVersionList([...res.data.rows, sourceCode]); + // 按分类分组 + const groupedData = groupByCategory(res.data.rows); + // 转换为分类列表格式 + const categoryList = Object.keys(groupedData).map(category => ({ + category, + items: groupedData[category] + })); + setVersionList(categoryList) + // setVersionList([...categoryList, { ...sourceCode, category: '软件工厂源码' }]); } }); }; @@ -51,41 +96,59 @@ function Index(props) { }); } + const iconList = [version1, version2, version3] + const iconList2 = [version4, version5, version6, version7] + return ( -
-
+
+
生产线安装包

标准化生产线快速迭代版本和稳定支持版本

-
+
{ - versionList.map((item, index) => { - return
-
- -
-
-
-
-
-

{item.name}

- {index === 0 ? : item.id === 'code'? 源码 : 安装包} -
- -
-

{item.summary}

-
- {item.createTime} -
-
+ versionList.map((categoryItem, categoryIndex) => { + // 判断是否是源码项 + const isSourceCode = categoryItem.id === 'code'; + return
+
+
+ +

软件工厂 · {categoryItem.category}

+
+
+ {isSourceCode + ? categoryItem.summary + : (categoryItem.items && categoryItem.items.some(item => item.summary) + ? categoryItem.items.find(item => item.summary)?.summary + : `请依次下载「主服务包」「仓库与账户服务包」「流水线服务包」三个安装包,并参照「部署文档与手册」完成 ${categoryItem.category} 环境的完整部署。`)} +
+
+
+
+ { + (categoryItem.items || [categoryItem]).map((item, itemIndex) => { + return + +
+ + { item.name } + + { item.fileList ? item.fileList.length : 0 }个文件 +
+
查看 + +
+ + }) + }
- { - item.id === 'code' ? - : - - - }
}) diff --git a/src/factory/resource/factoryVersion/index.scss b/src/factory/resource/factoryVersion/index.scss index 672f3e4a..09ff2bc1 100644 --- a/src/factory/resource/factoryVersion/index.scss +++ b/src/factory/resource/factoryVersion/index.scss @@ -1,11 +1,11 @@ -.version { +.versions { display: flex; flex-direction: column; align-items: center; margin-top: -50px; background-color: #f1f6fd; - .version-top { + .versions-top { width: 1600px; height: 120px; padding: 21px 52px; @@ -30,7 +30,7 @@ } } - .version-content { + .versions-content { margin-top: 60px; width: 1600px; display: flex; @@ -38,177 +38,156 @@ flex-wrap: wrap; .version-item { - display: flex; margin-bottom: 60px; - margin-right: 39px; - + margin-right: 30px; + height: 642px; + width: 513px; + background: #ffffff4f; + border: 1px solid; + border-color: #ffffff52; + border-radius: 12px; &:nth-child(3n) { margin-right: 0; } - - &:last-child { - .item-data { - opacity: 0; - } - } - - &-left { - display: flex; - flex-direction: column; - align-items: center; - margin-right: 39px; - - img { - width: 42px; - height: 42px; - } - - div { - margin-top: -21px; - height: 260px; - border-left: 1px dashed rgba(22, 76, 228, 0.31); - } - } - - &-right { - width: 425px; - display: flex; - flex-direction: column; - - .version-item-wrapper { - &:hover { - .version-item-content { - background: linear-gradient(91.8deg,#f2f0ff 0.4%,rgba(230, 237, 255, 0.78) 99.5%); - } - } - } - - .version-item-title { + .version-header { + height: 220px; + background-image: url('../../../images/factory/resource/version-item-header.webp'); + background-repeat: no-repeat; + background-size: 100% 100%; + padding: 27px 34px; + .version-header-top { display: flex; align-items: center; - - h4 { - line-height: 33px; - font-family: alibabaBold; - font-weight: 700; - color: #091221; - font-size: 24px; - white-space: nowrap; - text-overflow: ellipsis; - overflow: hidden; - } - - .new-tag { - width: 37.49px; - margin-left: 10px; - } - .version-tag, .code-tag { - margin-left: 10px; - width: 41.08px; - height: 21.5px; - line-height: 20px; - font-family: DouyinSansBold; - color: #ffffff; - font-size: 12px; - background-repeat: no-repeat; - background-size: 100% 100%; - flex-shrink: 0; - text-align: center; - } - .version-tag { + img { width: 46px; - background-image: url('../../../images/factory/resource/version-version.webp'); + margin-right: 15px; } - .code-tag { - background-image: url('../../../images/factory/resource/version-code.webp'); + h4 { + line-height: 30px; + font-family: alibabaBold; + color: #091221; + font-size: 22px; } } - - .version-item-content { - margin-top: 17px; - background: linear-gradient(92.56deg, #f8fbff 0.8%, rgba(255, 255, 255, 0) 99%); + .version-header-desc { + margin-top: 22px; + width: 443px; + height: 101px; + background: linear-gradient(268.73deg,rgba(255, 255, 255, 0.4) 0.25%,rgba(255, 255, 255, 0.84) 54.68%,rgba(255, 255, 255, 0) 99.8%); border: 1px solid; - border-color: #ffffff; - border-radius: 17px; - padding: 22px; - - p { - width: 100%; - height: 92px; - line-height: 34px; - font-family: alibabareg; - color: #091221; - font-size: 15px; - display: -webkit-box; - -webkit-line-clamp: 3; - -webkit-box-orient: vertical; - overflow: hidden; - text-overflow: ellipsis; - word-break: break-all; + border-color: rgba(255, 255, 255, 0.18); + border-radius: 4px 4px 0px 0px; + padding: 16px 22px; + line-height:25px; + font-family: alibabareg; + color:#404b5d; + font-size:14px; + position: relative; + &::before { + position: absolute; + content: ""; + left: 0; + top: 50%; + transform: translate(0, -50%); + width: 3px; + height: 50px; + background: #3a2ce6; + border-radius: 4px; } - - - - .item-data { - margin-top: 10px; - - - span { - line-height: 18px; - font-family: alibabareg; - color: #5d6a80; - font-size: 13px; - position: relative; + } + } + .version-content { + height: 422PX; + background-image: url('../../../images/factory/resource/version-content.webp'); + background-repeat: no-repeat; + background-size: 100% 100%; + padding: 26px 35px; + .version-content-box { + width: 443px; + height: 367px; + background: #ffffff; + border-radius: 12px; + padding: 5px 0; + overflow-y: auto; + // 隐藏滚动条 + &::-webkit-scrollbar { + display: none; + } + -ms-overflow-style: none; + scrollbar-width: none; + .version-content-item { + width: 443px; + height: 88px; + border-radius: 6px; + position: relative; + display: flex; + align-items: center; + padding: 20px 22px; + img { + width: 20px; + height: 20px; + margin: 11px; } - - span:not(:last-child) { - margin-right: 15px; - padding-right: 15px; - - &::after { - position: absolute; - right: 0; - top: 50%; - transform: translate(0, -50%); - content: ""; - width: 1px; - height: 9px; - background: rgba(9, 18, 33, 0.22); + .version-item-info { + margin-left: 18px; + display: flex; + flex-direction: column; + justify-content: space-between; + span:nth-child(1) { + font-family: alibaba; + color: #091221; + font-size: 16px; + max-width: 280px; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; + } + span:nth-child(2) { + line-height: 20px; + font-family: alibabaReg; + color: #666b86; + font-size: 14px; } } + &:not(:last-child) { + position: relative; + &::after { + position: absolute; + content: ""; + width: 396px; + height: 0px; + border: 1px dashed; + border-color: #164de41a; + bottom: 0; + } + } + .version-content-item-button { + margin-left: auto; + visibility: hidden; + font-family: alibabareg; + color: #164ce4; + font-size: 14px; + text-align: right; + display: flex; + align-items: center; + img { + width: 13.62px; + height: auto; + margin-left: 5px; + } + + } + &:hover { + background: rgba(22, 76, 228, 0.04); + .version-content-item-button { + visibility: visible; + } + } + } } - - button { - cursor: pointer; - margin-top: 20px; - width: 104px; - height: 36px; - background-color: rgba(255, 255, 255, 0.42); - border: 1px solid; - border-color: #091221; - border-radius: 9px; - line-height: 20px; - font-family: alibaba; - font-weight: 500; - color: #091221; - font-size: 14px; - } - - .shiny-button { - cursor: pointer; - background-color: #091221; - color: #ffffff; - border: 2px solid transparent; - } } - &:not(:first-child) { - button:hover { - border-color: #164ce4; - color: #164ce4; - } - } } } .manual { diff --git a/src/images/factory/resource/version-active.webp b/src/images/factory/resource/version-active.webp new file mode 100644 index 0000000000000000000000000000000000000000..ef8a9811d7ab7211411cbc519c8e78a10100baa8 GIT binary patch literal 482 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 Wbi~nN9UH&F!Tuqz?FCE#;Qs*@$*oEN literal 0 HcmV?d00001 diff --git a/src/images/factory/resource/version-icon-1.webp b/src/images/factory/resource/version-icon-1.webp new file mode 100644 index 0000000000000000000000000000000000000000..8c39ad302d8887dd90bc34d6e2e2ac64f9717d31 GIT binary patch literal 3522 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 iHbHbiOv(BUQUuaWLEJ(4`ZlJtGPe|>s=x!=r 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 WKY@7#hAfZ%cKDKC|MiT(0002iXMf57 literal 0 HcmV?d00001 diff --git a/src/images/factory/resource/version-icon-4.webp b/src/images/factory/resource/version-icon-4.webp new file mode 100644 index 0000000000000000000000000000000000000000..b40175b18a5c58dd3133ab7d90667e91acbc203e GIT binary patch literal 1052 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 O`xVa8nlU_-0001F(pWhF literal 0 HcmV?d00001 diff --git a/src/images/factory/resource/version-icon-7.webp b/src/images/factory/resource/version-icon-7.webp new file mode 100644 index 0000000000000000000000000000000000000000..1704e8439fd6084949e3407ef5a8f2a5cd3a7676 GIT binary patch literal 822 zcmV-61IheSNk&F40{{S5MM6+kP&il$0000G0000!001-q06|PpNErbD01beZZF|<{ znF2Be%@mX=Xr=&AP*4C<(4v4=K|ujjK~o2*gP>qk!|z9PxRZ#O0DyIB6rw(JsNNuJ zhi>9l_lWBzV~4a!lfnYJXGUFGB?hYRTIiXzGR)fSea`LZCE|#OX9=|gRJBcSx(%ZC zL4A^#z7IfhTmjb-QCAEL;94Queyl;o3UCO!^wTJJLfUKQcXlFdrF>9%gUbR^4Wz0K zCkD_yoPXHvD*_wPRPCdhkca%rf5dSCtI>y$+)UO0eS3Vncmpv0wK))P6B(a5RBvSN zx7cxwylygf%z5ddDwcBS(lO^{15BnU<*4F0x&wEsW15P@5f9H2&JR5H!yuxD2lYwf z9c|q%Zhi^X=0BRLWnKVQP&gp&0RR9n4gj42Dn9@<06s+?i9{lyp&R{F04M}RwgK1< z45NDs_fN&I#okUn^yK66_4+@wpLf65Im9;rew=@f{{in^(gFIb)=}sI`vK`Q`nB+1 z`%(Kn?7#ox6);(~mt7p&N%Y^hsN;}VJVb!h$kMbx6bOIJAK6!5U;zHhqM(1XP=Ec` zKmVVS{UZe}9M1#RAo2c3xxfD&(N?YBsE>lmH8J>(D8eFi?nf^4&^6Xoc)I0>wRGhxXq*Lm5hY1tIa* zstb)uJuz#&}HHVn}U56_7mu@c$fG^ zM9qa05io9L{vZ{l*T;^p)jDKzdYb~6PGfCA4XfMSM8^g9$a7rSJ@DcQFI?&wAAbak zN}ph-qo7pCYvKI^rt#|622*KThyUXGdg1ZL|E@5E_2@XMnySrO(cXtgQSaiR9b@vzU z?W$&8=3%<3XKK2uMoUpnZVdzg=*dcHfHeg5F#!Mo-oHdd1^hq+NUCTkj35F4*xx)> z8*9Xv8l6@foybk>R~v6|9art*xc7^=E1f*a?#X#*8L3}w|1R*A>Xm^z48JNgcTG+V z4^IsHB~!vJHq`o}k|4+dUr**sb*sSne@B&5r~;lx2jeJ+zCM8aq83}e+^uc?u<3nN zn9&1r7aqrGXTL%>MCeR5U8Vn6HNA%Nx6wLne(_)pyp6gpr@|k8dd*<3fZsAHQN<8_ z$>MV=?0O1}!;zy6f|X*Bb(LKtD;x+2*IrIsq_o{iy(FEa1rl1xG%#YdYQTZIFEs{X-O1>OD^fdBKCl-Hrc;8gZ=` zhlOWbPx>c+;+DHGuj9_8+CBdtblaPy!!<6~73vQIgSu~NEx`0Ir`{q!{Epc#TrfkK zo-ZX`r`dTf^smZ%oo~amgSZ}zD*)m6>lOtX^+&v|0d(n6HOH{~!Nn z48Y-h2>*7R`i%77j;kX4L|{QeO+*yeWKNK$%gfEBCWkS*Vq(}i!?#M%HU(x?8W)#8 z+=)6~!Ji(ZD0%cJy^sHRH14YNAz9>f!Ivug;VwFXMMFp?9O{#>!i%80*XL#=i*3?m zgv!Eu*Nq(xRwNVEbK2`}zPY7JphL^Q@_^&18|l-uzUg*HzY9H*i5d<9ar@izBpjiY zKnhbj04`#7(q<`?weG6ZP$j(U;gf1}X`I3}1VIQwR(y9Afq@j6Fxb|&p2(GL)nJiR zM7eb0NT%~O5}{f$IqYMgSoAW!pB%-MK70F^9|~% zzI1XCFu5fPg{^OW5NxKQ&T%kpFfY@8%34-`xHSmmX-I3XmZHH|oaU`@X7F)+=AC-x z#P$+sj@v6+(nqV?K>PgBS7Sj@;1)I4Lq-R+^6985uVz+NI%gA<_o?d{(X$?H_2>vv zF(3+bMOS$!Q5m9kk`Hd$T~Sls>wSUG?RbSD=@u4GQj)*ynB($d_KaM4a= ze(SnlGx6d=+PkIQ91?_2pmW|rZ1s)EGg*U(JtM!rkjbt zD_9OPJ4xn3)n1(2XdX%f9<3RVQg;gxD)lhlrV&qvmDVjcp*Mh0@Lx#S`b~+EWrL&d z2(|sA+XW^JRkcy?3$VWk%64jFS$nHyu#Hr;QvFe3LXBpr5_5Zz*Huump)u~9Lo)Gc z%mJOaD6-tYgzeE@_k6I_)-??Va5+%1*wJGk z7)VP3xWlrPNAaV!{{owy5>UCaj?U9A?`OmBH}m+8H65#Vbu9CwcSi5Y@qOj3q_Ig$ zb{c28B9yIUH+bK<9`kO-oj%Z#`2|0Jo0(al=_y%{CIY;lXdoF+B&9lZbsQGzpPYQX zp}$QaXB}^q4Uyv4VoN)9Y4@TJNZz%e-#o`kYOanHj=NBxt1E5`1W9K^x6@t*;C;aC z)qtmuL5`W(aKCTS0xn4#iE}tdInn zEQ5J;@;^U6s?_d(27W{C+w@*5NI%;98DXHmG__=7M8xnZHJR|O$qw64J{ph8zKpvl zX~tiaSM`HUCT!mB-(U(Kf&iSt{3SB|lpV|k`|Vr_T?k7lOFgdRO=I<6($wzP zi-CBTdmZ@=tURN9!i;%oa4-TU8wQYB#9ry4H4@xG28C#8{O%|(N|IC5!Ni&2(j>mK zL>S~XB3wxiOKXh;c1q(=URxPrH+-gyX5q&kmk^*%dysQd1`|?*DpEb?7f<|UR%Kbe z8J4_t3V9(VEPod&c$f6=z%^({)1pIgNy(*OaQOAfDZg~9)^m)Zj$fE+{9U$TNKk|N zEm1gTDI7O9J&b)44V0=d*Zn0wb*SoA7rz$&yJ%i59n*=pgHxB(SMMFgoKcC}?ulnP zU^wGtAU_yf3L0jA4>qH3R}GrxlMjr3$tKw{;@+hfU#4J1lNvWW38=Bq^^UL~MQ@v1 zzmx>jG`Cl4K22g+&9`KIj2Ps&2a$i{S<{VWeLVkL5#9~Q-3*IKu#U#{lS1%zAZIMK zA_}4-usbFP9L`k{U48$)S0GLfe8I2({6vR&7RzwPDX;fef9X4utH9+$*dD~hJr^I= zpC!3GfNiLRQ&uvBY>@o(3wktHkb$Tjh`N3;cE+)mZ(s*i~AFi#p$Yg`aH15>>qYxcM`UnS7fQy#BiS-6SoPDaG&JiYS%BS1A8TUQf& z5vYUIE~;%?+{8j2Leh7ig)tE%QfLlFnJ)a=HUpKfrC=KduyH~k`THEv20e?T3$HR>9G(|CP2J{a>roF^3Tr zH3LU_qN5V!87`r*@*fsdC-rEY>QmDalH{0|^ zTZjW(rzL_@Et+mA9jo;kp2)vLHKxw|WDlOVcdi;g$hbiHJ?NDfZ4oz-x?3I2vl1yY z9#n^zf{{m>ZS(UI3ZswRbVj4M!_YbdHnBTJx6iWta`SRR&KTuQeC5YWo-g_{{0f9A zA)%+fH)#*Cel+wI@k7%oiSkyXJ?>;z6SuBMRzmkdpp<@nFW6rFkL<=IFj&^*SA0xd zsF;?7I2BHtX9y-Kcj&)Cs+T55Jb=yj(&$KbuaMfl7LspmYfTdsF9DnIea-(#oNIf% zbVt7{vcylZaB`LS&_B(lH0kimqtt&B5PS#Iv28nQ>55%Hwa!x5xgv$LI?C<`JA!cT zO;j&}bgd_VjvkkJTJ}N1Q{zF`gKGzX;Y_!WoEnMX|Fvq&UHxXyH8uYXTrJZq#S87K zr~yqWL(tq|E`Za2MaGef?zix_qwa|m*zo=TG2xm`-Tq)qi~kF`+`VwMy3h}ir>2fET^in?HPFQPVmuODpJ0C;3L|{@=g_fVa+o%?^POB4~+S;{!pVvR#hFWf{J#^ zT+?gzepd`#NW0O6iqBDNEUE1N2C)MQsu)=a&*1o(5D+Xx@$pG{JcLYy7*0kQSLO*G zta;u5>_i8wT6x(>(AMG_AXZ*K7G1mPOt%Md7#IU@P;baTW8t~kOZ65D)nqBY2g&;r zeB4GkA+-thzDMPTZE)dg3Wm3RaS*I|m_Cl|tM$+V^@wZpP!FWCX`^O!67z&q3iup- zg*Cg13G|gaN{q-GfjPN(XV;nDKSS;*^9*k$X9H@hEcl_A77!&OjF$Rt25zFY}Yk(@$yV^qklOZN@C~&Y3u^uPRO>C} z>+`8IXfaR`wNA-GPnnPvf#_pHGU_=J6sA!8Df=eYIS^E9ET4i}DK?5wBSe>^uNrJR z0<`M*p6-pmF;Bp%#DXPKEQVOzx;tK2W=1~Ixtld}NBspM&2*2+* z5mdSA_;eHqWlkjJaF@pdDEr>E%8UgWu=pkRAP8c(UNV(fY6Zx)IVyVqi3gm8H}+en zr*7m2sm&y3B3V}yw#@Em2@O%jU4j*ny zgmi7Bk-iD5Ht^|8sU0Ufg$k7Rtd`wlvH39ef-P}C(!rhV=J&?~Cmj(fbfD-{RUV_Hv zbpMgXywqt|eF_EdiYq4BgA#?xdNn8-!w2k+K;>;#omcOe8tMn_rIH|UN~Zs#P;RkhI zts`X8xHAc;3j;ZeHJ_|ba^>O`g|v$1@6VrhCr-%dSZGE9NC1b~{9JC@I_X6p=W(ze@K1Bh;{weGegxI8?R=wbD52X?kyh&8(A7oqyr57?$xo> zdU^jC-=>ISy($uixF*siA9#>`hq)*t8%$`$^k_UAIQc8MhQD>0It~o$Cg80AjjV3< zML87N=+caX7NL&McC;-IjSin7$l2Idi2IZ;_DBw+b0dAhq#x3+N@30C66PfDDvikg?JND)_9bM$XQ0_Ml;x@ug*0sd?S{=`Yv1L<&i#`vGZ0YgPj(@`UYe{6&P520U->iG z{>14*cE0TrWj{hw+go@AksPiKpfBHEiw=SQ0&j>xf^KMY2pd4FA?e5Ycff|}9A0(i z^hbZHv~qlk4+*S96w4%EU0V$JRs`SAKe7AD7ufDvi%;-c)0}|!*j8Z<#;+;#EkE&d zt<<{SqdOZCC1|)(24ws_D5k8oWBj-qn<*xq>psZ3?ycp6P}>+=^qwQoPKi{=_h7tY4KobFQeR627jt$9(xH7aGON zLF0Zbc0cUv;(u-^MOIt=W?g zo^8n9tXfu@>MonkLv#_kPF3Oe_l3lT2ZMd~I1^H)rRzP7;hrH}7DsgYF&|R~1^+|{ zOW0@r&K&O}a_Vj4y37JwBZgUa@?rWtD&3NBtOd>>BIjxg!zJ-i`~5_xVFfBeO_w`) z`0hLvC5@_TUul|}-n74GIFCUYi|mB|_7&Dnew7vctR%c3ez1zqaDJZQ*br_!2HRvS zDW+ve=*pD*RHB6LZ(mQMX~a2UrjQ05s5AHcHF8#||by?C(Zmm zQ5_Roe+uchD4Sobdn!yWyp=L;S;=`=^8DG{&n4~GxiQ`-#}hnlW2L|1F^`x+Rj0sr zsJg#o&k|Axae0HD$@$wkbK%$d5w4VA+n)!1)#;f;=(>#%<=5PjT3#(VjBXdV21q+g zRMg9>m)Q>rER1|Nd65tVB!ZCs)^bn$Wy6kL*PI&1z+YSla8c8tx0ez)tu~Nd>cU)4 zf&cu*)RD=9FM@>P(K{Knm7@}Eb%qAh}S3&c8YOb=&P9X_qi8VHin*^q%VbXbvx z4dkm3OM+Im7B<6BMm(S*>uav%_RgkqH%;d$q>18VhuOAyionO1EmM#F5F~U0-If!g`gcpX!(zjk@=eNrnW(I8{J6k zNsf_%*=7J8(#e#?x8aCnWSFVBXTk3$74O}}FN)QKg0qBrlCm_&RTUQCOwLR$pa-I5 zII$0^Qfd<;XP+;19!qxy>_?Qqgp>0YRW|`K8I%nZG=menC{&lZBsG)5>#szN&lj0m zDl}e>PsB(47czurria(}X?}!7uZPp&bP9k}6M-tR^%^9M4ih1i5ZA7}$JO}&!T#uX z`Y2e+S(GMhDg=_X8DDcKs~Cp_}GIEKrrZGp^6x~ zkj~uCw>rdDr>-|Wrnp3LEMy=574_{5lKmnKJCA+{>($`|jK-4P!2gn%G k2VkA{;o0*603Kg)>Z&}9=FJ&;_Mp|Qi0u58q5!~u0FW-NzyJUM literal 0 HcmV?d00001