Finalize resume template with modular config and layout polish.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
MORRO 2026-06-23 16:30:26 +08:00
parent 226f74c22c
commit 350d101e0f
7 changed files with 270 additions and 180 deletions

View File

@ -1,8 +1,6 @@
# GreLin · Typst 文档模板 # GreLin · Typst 文档模板
GreLin 内部 Typst 模板库,按文档类型分目录维护。 GreLin 内部 Typst 模板库,按文档类型分目录维护。目录结构如下:
## 目录
| 文件夹 | 说明 | 入口文件 | | 文件夹 | 说明 | 入口文件 |
|--------|------|----------| |--------|------|----------|
@ -14,21 +12,10 @@ GreLin 内部 Typst 模板库,按文档类型分目录维护。
- [VS Code](https://code.visualstudio.com/) 或 [Cursor](https://cursor.com/) - [VS Code](https://code.visualstudio.com/) 或 [Cursor](https://cursor.com/)
- 扩展:[Tinymist](https://marketplace.visualstudio.com/items?itemName=myriad-dreamin.tinymist)(搜索 `Tinymist` 安装即可,已集成预览与导出,无需单独装 Typst CLI - 扩展:[Tinymist](https://marketplace.visualstudio.com/items?itemName=myriad-dreamin.tinymist)(搜索 `Tinymist` 安装即可,已集成预览与导出,无需单独装 Typst CLI
> 勿安装已废弃的 `Typst LSP`、`Typst Preview`,会与 Tinymist 冲突。
## 快速开始 ## 快速开始
1. 用 VS Code / Cursor 打开本仓库 1. 用 VS Code / Cursor 打开本仓库,打开要编辑的入口文件,例如 `resume/cv.typ`
2. 打开要编辑的入口文件,例如 `resume/cv.typ` 2. 看效果(预览):`Ctrl+Shift+P` → 输入 `Typst Preview` → 回车;侧边会实时显示排版效果
3. **看效果(预览)**`Ctrl+Shift+P` → 输入 `Typst Preview` → 回车;侧边会实时显示排版效果(快捷键 `Ctrl+K` 然后 `V` 3. 导出 PDF`Ctrl+Shift+P` → 输入 `Typst Export PDF` → 回车PDF 默认生成在同目录(如 `resume/sample.pdf`
4. **导出 PDF**`Ctrl+Shift+P` → 输入 `Typst Export PDF` → 回车PDF 默认生成在同目录(如 `resume/sample.pdf`
仓库根目录的 [`typst.toml`](typst.toml) 将项目根设为 GreLin以便 `resume/``feasibility/` 共享 [`brand/colors.typ`](brand/colors.typ)。命令行编译示例: > 不熟悉 Typst可参考社区维护的 [小蓝书Typst 中文教程)](https://tutorial.typst.dev/);英文版见 [官方入门教程](https://typst.app/docs/tutorial/)。
```bash
typst compile resume/cv.typ resume/sample.pdf --root .
```
已填好的示例 PDF 见 [`resume/sample.pdf`](resume/sample.pdf)。
不熟悉 Typst可参考社区维护的 [小蓝书Typst 中文教程)](https://tutorial.typst.dev/);英文版见 [官方入门教程](https://typst.app/docs/tutorial/)。

View File

@ -2,40 +2,60 @@
GreLin 双栏中文简历 Typst 模板HyperLabel 配色),用于融资 BP data room 附录。 GreLin 双栏中文简历 Typst 模板HyperLabel 配色),用于融资 BP data room 附录。
## 快速开始
在仓库根目录执行(需共享 `brand/colors.typ`
```bash
typst compile resume/cv.typ resume/sample.pdf --root .
typst watch resume/cv.typ --root .
```
示例输出:[`sample.pdf`](sample.pdf)(已填内容,供版式参考)。
## 定制
| 文件 | 说明 |
|------|------|
| [`data/config.typ`](data/config.typ) | 个人信息、教育、能力、技术栈、经历、项目 |
| [`data/theme.typ`](data/theme.typ) | 配色、字号、间距 |
| [`data/layout.typ`](data/layout.typ) | 版式组件(一般无需改动) |
## 照片 ## 照片
将证件照放入 `assets/profile.jpeg`,或在 `data/config.typ` 中设置 `author-photo` 路径 将证件照放入 `assets/profile.jpeg`,或在 `data/config.typ``profile` 模块中设置 `photo-path`
## 结构 ### 编辑示例(只改 `config.typ`
```typst
#let profile = (
name: "姓名",
title: "职位",
summary: "个人简介……",
photo-path: "../assets/profile.jpeg",
)
#let contact = (
address: "城市",
phone: "手机号",
email: "邮箱",
website: "https://example.com",
website-label: "example.com",
)
#let skills = (
abilities: (
(name: "全栈开发", level: 0.9),
),
language: (
name: "英语",
level: 0.75,
label: "读写",
),
tags: ("Rust", "Python"),
notes: (), // 可选:侧栏技能补充列表
)
#let education = (
(
degree: "软件工程 / 硕士",
school: "西北大学",
period: "2022 2025",
location: "西安",
notes: "", // 可选GPA、主修课程等一段说明
),
)
#let awards = () // 可选:主栏获奖经历
#let experiences = (
(
company: "某某科技",
role: "工程师",
bullets: ("职责……", "动作……", "结果……"),
),
)
``` ```
resume/
├── cv.typ `bullets` 用字符串元组,不要手写 `-` 列表语法。
├── sample.pdf
├── data/
│ ├── config.typ
│ ├── layout.typ
│ └── theme.typ
└── assets/
├── profile.jpeg
└── icons/
```

View File

@ -6,6 +6,7 @@
paper: "a4", paper: "a4",
margin: page-margin, margin: page-margin,
fill: color-page, fill: color-page,
foreground: page-corners-layer(),
) )
#set text( #set text(
@ -18,7 +19,32 @@
#set par(leading: leading-body, spacing: space-none, justify: true) #set par(leading: leading-body, spacing: space-none, justify: true)
#page-corners() #let sidebar-content = [
#section-title("联系", sidebar: true, above: space-none)
#contact-block()
#sidebar-section-divider()
#section-title("教育", sidebar: true)
#education-block(show-notes: true)
#sidebar-section-divider()
#section-title("技能", sidebar: true)
#skills-section-block()
]
#let main-content = [
#section-title("工作经历", above: space-none)
#experiences-block()
#section-title("项目经历")
#projects-block()
#if awards.len() > 0 [
#section-title("获奖经历")
#awards-block()
]
]
#hero-section() #hero-section()
#header-divider() #header-divider()
@ -26,24 +52,7 @@
columns: (sidebar-column, stroke-divider-column, main-column), columns: (sidebar-column, stroke-divider-column, main-column),
column-gutter: (space-column-gap, space-column-gap), column-gutter: (space-column-gap, space-column-gap),
align: (top, top, top), align: (top, top, top),
[ [#box(width: 100%)[#sidebar-content]],
#section-title("联系", sidebar: true, above: space-none)
#contact-block()
#sidebar-section-divider()
#section-title("教育", sidebar: true)
#education-block()
#sidebar-section-divider()
#section-title("技能", sidebar: true)
#skills-section-block()
],
line(length: 100%, stroke: stroke-divider-sidebar), line(length: 100%, stroke: stroke-divider-sidebar),
[ main-content,
#section-title("工作经历", above: space-none)
#experiences-block()
#section-title("项目经历")
#projects-block()
],
) )

View File

@ -1,59 +1,60 @@
// ============================================================================= // =====================================================================
// 个人信息 — 修改此处即可定制简历 // 个人信息 — 修改此处即可定制简历
// ============================================================================= // =====================================================================
#let company-name = "西安高岭绿能科技有限公司" #let company-name = "西安高岭绿能科技有限公司"
#let meituan-company-name = "北京三快在线科技有限公司" #let meituan-company-name = "北京三快在线科技有限公司"
#let company-city = "陕西西安" #let company-city = "陕西西安"
#let author-name = "齐梦璠" #let profile = (
#let author-title = "软件研发 | 系统架构" name: "齐梦璠",
title: "软件研发 | 系统架构",
summary: "西北大学软件工程本硕。具备从 0 到 1 构建业务系统的能力:在美团 AI 应用组参与大模型 Agent 类应用的工程落地;现于高岭绿能负责矿石分选系统的软件全链路交付,将算法能力转化为可部署、可运维的工业产品。",
photo-path: "../assets/profile.jpeg",
)
#let author-summary = [ #let contact = (
西北大学软件工程本硕。具备从 0 到 1 构建业务系统的能力:在美团 AI 应用组参与大模型 Agent 类应用的工程落地;现于高岭绿能负责矿石分选系统的软件全链路交付,将算法能力转化为可部署、可运维的工业产品。 address: "陕西西安",
] phone: "19829062833",
email: "19829062833@163.com",
website: "https://3506897731.github.io/",
website-label: "3506897731.github.io",
)
#let author-address = "陕西西安" #let skills = (
#let author-phone = "19829062833" abilities: (
#let author-email = "19829062833@163.com" (name: "全栈开发", level: 0.9),
#let author-website = "https://3506897731.github.io/" (name: "系统架构", level: 0.75),
#let author-website-label = "3506897731.github.io" ),
language: (
#let language_profile = (
name: "英语", name: "英语",
level: 0.75, level: 0.75,
label: "读写", label: "读写",
),
tags: (
"Rust", "Python", "Java", "React", "Tauri", "RAG", "Linux", "MySQL", "Redis",
"LLM Agent",
),
notes: (),
) )
// 证件照路径(空字符串表示无照片)
#let author-photo-path = "../assets/profile.jpeg"
#let education = ( #let education = (
( (
degree: "软件工程 / 硕士", degree: "软件工程 / 硕士",
school: "西北大学", school: "西北大学",
period: "2022 2025", period: "2022 2025",
location: "西安", location: "西安",
notes: "",
), ),
( (
degree: "软件工程 / 学士", degree: "软件工程 / 学士",
school: "西北大学", school: "西北大学",
period: "2018 2022", period: "2018 2022",
location: "西安", location: "西安",
notes: "",
), ),
) )
#let abilities = (
(name: "全栈开发", level: 0.9),
(name: "系统架构", level: 0.75),
)
// 技术栈 pill 标签
#let tech-tags = (
"Rust", "Python", "Java", "React", "Tauri", "RAG", "Linux", "MySQL", "Redis",
"LLM Agent",
)
#let experiences = ( #let experiences = (
( (
company: company-name, company: company-name,
@ -61,11 +62,11 @@
location: "西安", location: "西安",
start: "2025.06", start: "2025.06",
end: "至今", end: "至今",
description: [ bullets: (
- 负责矿石分选系统软件研发,覆盖运维工具、运营后台与产线部署联调。 "负责矿石分选系统软件研发,覆盖运维工具、运营后台与产线部署联调。",
- 与算法团队协作完成模型服务化接入,设计推理回调、异常降级与运行监控体系。 "与算法团队协作完成模型服务化接入,设计推理回调、异常降级与运行监控体系。",
- 产线落地 1 条 / 1 客户现场,单线 25 t/h精矿 A/S 4.0+、尾矿 A/S 1.7-、回收率 30%+。 "产线落地 1 条 / 1 客户现场,单线 25 t/h精矿 A/S 4.0+、尾矿 A/S 1.7-、回收率 30%+。",
], ),
), ),
( (
company: meituan-company-name, company: meituan-company-name,
@ -73,11 +74,11 @@
location: "北京", location: "北京",
start: "2024.07", start: "2024.07",
end: "2025.06", end: "2025.06",
description: [ bullets: (
- 参与大模型 Agent 应用工程化,负责前后端模块开发与 LLM 服务对接。 "参与大模型 Agent 应用工程化,负责前后端模块开发与 LLM 服务对接。",
- 完成对话编排、工具调用与业务系统集成,独立承担功能从设计到上线交付。 "完成对话编排、工具调用与业务系统集成,独立承担功能从设计到上线交付。",
- 交付 Skill 工具累计覆盖数千名用户、下载量 1 万+;定时任务类能力日均服务约 200 名用户。 "交付 Skill 工具累计覆盖数千名用户、下载量 1 万+;定时任务类能力日均服务约 200 名用户。",
], ),
), ),
) )
@ -88,10 +89,10 @@
location: "西安", location: "西安",
start: "2025.06", start: "2025.06",
end: "至今", end: "至今",
description: [ bullets: (
- 面向铝土矿产线的矿石分选系统,实现高光谱采集、模型推理与喷阀执行的闭环控制。 "面向铝土矿产线的矿石分选系统,实现高光谱采集、模型推理与喷阀执行的闭环控制。",
- 负责产线运维工具与核心软件模块交付;基于 Rust 实现 Ratatui 运维控制台与 ONNX 推理集成,完成「采集 → 推理 → 喷阀」流程联调。 "负责产线运维工具与核心软件模块交付;基于 Rust 实现 Ratatui 运维控制台与 ONNX 推理集成,完成「采集 → 推理 → 喷阀」流程联调。",
], ),
), ),
( (
name: "HyperLabel 高光谱标注工作站", name: "HyperLabel 高光谱标注工作站",
@ -99,9 +100,11 @@
location: "西安", location: "西安",
start: "2025.06", start: "2025.06",
end: "至今", end: "至今",
description: [ bullets: (
- 高光谱标注桌面工作站,面向矿石分选场景的训练数据生产与样本管理。 "高光谱标注桌面工作站,面向矿石分选场景的训练数据生产与样本管理。",
- 负责 Tauri + React 前端,以及项目、样本、标签等业务的 CRUD 后端接口。 "负责 Tauri + React 前端,以及项目、样本、标签等业务的 CRUD 后端接口。",
], ),
), ),
) )
#let awards = ()

View File

@ -6,8 +6,8 @@
#let icon-mail = image("../assets/icons/mail.svg") #let icon-mail = image("../assets/icons/mail.svg")
#let icon-globe = image("../assets/icons/globe.svg") #let icon-globe = image("../assets/icons/globe.svg")
#let profile-photo = if author-photo-path != "" { #let profile-photo = if profile.photo-path != "" {
image(author-photo-path, width: 100%, height: 100%, fit: "cover") image(profile.photo-path, width: 100%, height: 100%, fit: "cover")
} else { } else {
none none
} }
@ -29,21 +29,21 @@
} }
} }
/// 左上 / 右下装饰条 /// 左上 / 右下装饰条(通过 page foreground 绘制,每页自动出现)
#let page-corners() = { #let page-corners-layer() = box(width: page-paper-width, height: page-paper-height)[
place( #place(
top + left, top + left,
dx: -page-margin.left, dx: corner-bar-inset-x,
dy: -page-margin.top + corner-bar-inset, dy: corner-bar-inset-y,
block(width: corner-bar-width, height: corner-bar-height, fill: color-skill-bar), block(width: corner-bar-width, height: corner-bar-height, fill: color-skill-bar),
) )
place( #place(
bottom + right, bottom + right,
dx: page-margin.right, dx: -corner-bar-inset-x,
dy: page-margin.bottom - corner-bar-inset, dy: -corner-bar-inset-y,
block(width: corner-bar-width, height: corner-bar-height, fill: color-skill-bar), block(width: corner-bar-width, height: corner-bar-height, fill: color-skill-bar),
) )
} ]
/// 页眉:姓名 + 职位 + 简介 + 2 寸照片 /// 页眉:姓名 + 职位 + 简介 + 2 寸照片
#let hero-section() = block(width: 100%, below: space-none)[ #let hero-section() = block(width: 100%, below: space-none)[
@ -52,13 +52,13 @@
column-gutter: space-hero-to-photo, column-gutter: space-hero-to-photo,
align: (top, top), align: (top, top),
[ [
#text(font: heading-font, size: size-name, weight: "bold", fill: color-ink)[#author-name] #text(font: heading-font, size: size-name, weight: "bold", fill: color-ink)[#profile.name]
#v(space-hero-name-gap) #v(space-hero-name-gap)
#text(font: heading-font, size: size-heading, weight: "bold", fill: color-accent-bright)[#author-title] #text(font: heading-font, size: size-heading, weight: "bold", fill: color-accent-bright)[#profile.title]
#v(space-hero-title-gap) #v(space-hero-title-gap)
#set text(weight: "regular") #set text(weight: "regular")
#set par(leading: leading-summary, spacing: space-none, justify: true) #set par(leading: leading-summary, spacing: space-none, justify: true)
#text(fill: color-text-light, size: size-body)[#author-summary] #text(fill: color-text-light, size: size-summary)[#profile.summary]
], ],
[ [
#align(right)[ #align(right)[
@ -110,29 +110,58 @@
] ]
#let contact-block() = block(above: space-none)[ #let contact-block() = block(above: space-none)[
#contact-line(icon-map-pin, author-address) #contact-line(icon-map-pin, contact.address)
#contact-line(icon-phone, link("tel:" + author-phone, author-phone)) #contact-line(icon-phone, link("tel:" + contact.phone, contact.phone))
#contact-line(icon-mail, link("mailto:" + author-email, author-email)) #contact-line(icon-mail, link("mailto:" + contact.email, contact.email))
#if author-website != "" { #if contact.website != "" {
contact-line(icon-globe, link(author-website, author-website-label)) contact-line(icon-globe, link(contact.website, contact.website-label))
} }
] ]
/// 教育背景条目 /// 教育背景条目notes 可选,一段普通正文)
#let edu-entry(degree, school, period, location) = block(above: space-none, below: space-none)[ #let edu-entry(degree, school, period, location, notes: "") = block(above: space-none, below: space-none)[
#text(fill: color-body, size: size-body)[#degree] #text(fill: color-body, size: size-body)[#degree]
#v(space-inline) #v(space-inline)
#text(fill: color-text-light, size: size-secondary)[ #text(fill: color-text-light, size: size-secondary)[
#school#if period != "" [ · #period]#if location != "" [ · #location] #school#if period != "" [ · #period]#if location != "" [ · #location]
] ]
#if notes != "" [
#v(space-edu-notes-before)
#set par(leading: leading-edu-notes, spacing: space-none, justify: true)
#text(fill: color-text-light, size: size-secondary)[#notes]
]
] ]
#let education-block() = { #let education-block(show-notes: false) = {
for (i, item) in education.enumerate() { for (i, item) in education.enumerate() {
if i > 0 { if i > 0 {
v(space-between-entries) v(space-between-entries)
} }
edu-entry(item.degree, item.school, item.period, item.location) edu-entry(
item.degree,
item.school,
item.period,
item.location,
notes: if show-notes { item.at("notes", default: "") } else { "" },
)
}
}
/// 侧栏技能补充列表skills.notes 为空则不渲染)
#let skill-notes-block() = {
if skills.notes.len() > 0 {
block(above: space-none)[
#set text(fill: color-text-light, size: size-secondary)
#set par(leading: list-item-leading, spacing: space-none, justify: true)
#set list(
tight: true,
indent: list-indent,
body-indent: list-body-indent,
)
#for line in skills.notes [
- #line
]
]
} }
} }
@ -176,7 +205,7 @@
#let tech-stack-block() = block(width: 100%, above: space-none, below: space-inline)[ #let tech-stack-block() = block(width: 100%, above: space-none, below: space-inline)[
#box(width: 100%)[ #box(width: 100%)[
#set par(spacing: pill-gap, leading: leading-pill-wrap) #set par(spacing: pill-gap, leading: leading-pill-wrap)
#for (i, tag) in tech-tags.enumerate() [ #for (i, tag) in skills.tags.enumerate() [
#if i > 0 [#h(pill-gap)] #if i > 0 [#h(pill-gap)]
#tech-pill(tag) #tech-pill(tag)
] ]
@ -186,7 +215,7 @@
#let skills-section-block() = { #let skills-section-block() = {
sidebar-subtitle("能力", above: space-none) sidebar-subtitle("能力", above: space-none)
block(below: space-none)[ block(below: space-none)[
#for (i, item) in abilities.enumerate() { #for (i, item) in skills.abilities.enumerate() {
skill-bar( skill-bar(
item.name, item.name,
item.level, item.level,
@ -194,14 +223,18 @@
) )
} }
#skill-bar( #skill-bar(
language_profile.name, skills.language.name,
language_profile.level, skills.language.level,
subtitle: language_profile.label, subtitle: skills.language.label,
above: space-skill-gap, above: space-skill-gap,
) )
] ]
sidebar-subtitle("技术栈", above: space-subsection-gap) sidebar-subtitle("技术栈", above: space-subsection-gap)
tech-stack-block() tech-stack-block()
if skills.notes.len() > 0 {
sidebar-subtitle("补充", above: space-subsection-gap)
skill-notes-block()
}
} }
/// 主栏经历 / 项目条目 /// 主栏经历 / 项目条目
@ -225,7 +258,9 @@
indent: list-indent, indent: list-indent,
body-indent: list-body-indent, body-indent: list-body-indent,
) )
#entry.description #for line in entry.bullets [
- #line
]
] ]
#let project-entry(entry) = timeline-entry(entry, title-key: "name", subtitle-key: "org") #let project-entry(entry) = timeline-entry(entry, title-key: "name", subtitle-key: "org")
@ -244,3 +279,30 @@
project-entry(entry) project-entry(entry)
} }
} }
/// 获奖经历条目bullets 可留空)
#let award-entry(entry) = block[
#text(fill: color-body, size: size-body, weight: "bold")[#entry.title]
#v(space-body)
#text(fill: color-text-light, size: size-body)[#entry.meta]
#if entry.bullets.len() > 0 [
#v(space-body)
#set text(weight: "regular", fill: color-text-light, size: size-body)
#set par(leading: list-item-leading, spacing: space-none, justify: true)
#set list(
tight: true,
indent: list-indent,
body-indent: list-body-indent,
)
#for line in entry.bullets [
- #line
]
]
]
#let awards-block() = {
for (i, entry) in awards.enumerate() {
if i > 0 { v(space-between-entries) }
award-entry(entry)
}
}

View File

@ -9,17 +9,18 @@
#let heading-font = ("Microsoft YaHei", "Segoe UI") #let heading-font = ("Microsoft YaHei", "Segoe UI")
#let body-font = ("Microsoft YaHei UI", "Microsoft YaHei", "Segoe UI") #let body-font = ("Microsoft YaHei UI", "Microsoft YaHei", "Segoe UI")
// ============================================================================= // =====================================================================
// GreLin Resume · Design Tokens唯一规范源 // GreLin Resume · Design Tokens唯一规范源
// 字号四档20 · 12 · 10.5 · 9 // 字号四档20 · 12 · 10.5 · 9
// 间距三档6 · 12 · 18+ 4 micro · 10.5 body 级) // 间距三档6 · 12 · 18+ 4 micro · 10.5 body 级)
// ============================================================================= // =====================================================================
// --- 字号 --- // --- 字号 ---
#let size-name = 20pt #let size-name = 20pt
#let size-heading = 12pt #let size-heading = 12pt
#let size-body = 10.5pt #let size-body = 10.5pt
#let size-secondary = 9pt #let size-secondary = 9pt
#let size-summary = size-body
// --- 行距 --- // --- 行距 ---
#let leading-body = 13pt #let leading-body = 13pt
@ -31,8 +32,10 @@
#let space-none = 0pt #let space-none = 0pt
#let space-micro = 4pt #let space-micro = 4pt
#let space-inline = 6pt #let space-inline = 6pt
#let space-body = size-body // 10.5pt:条目内块间距、列表行距 #let space-body = size-body
#let space-title-gap = 12pt #let space-title-gap = 12pt
#let space-edu-notes-before = space-title-gap
#let leading-edu-notes = size-secondary
#let space-between-entries = 12pt #let space-between-entries = 12pt
#let space-block = 18pt #let space-block = 18pt
#let space-hero-to-photo = space-block #let space-hero-to-photo = space-block
@ -40,9 +43,9 @@
#let space-subtitle-gap = space-body #let space-subtitle-gap = space-body
#let space-subsection-gap = space-body #let space-subsection-gap = space-body
#let space-skill-gap = space-body // 能力条 / 英语条之间 #let space-skill-gap = space-body
#let space-hero-name-gap = space-body #let space-hero-name-gap = space-body
#let space-hero-title-gap = space-body #let space-hero-title-gap = space-block
// --- 列表(行内换行与条目间距统一为正文级 10.5pt --- // --- 列表(行内换行与条目间距统一为正文级 10.5pt ---
#let list-item-leading = space-body #let list-item-leading = space-body
@ -71,11 +74,14 @@
#let list-body-indent = 0.4em #let list-body-indent = 0.4em
// --- 布局 --- // --- 布局 ---
#let page-paper-width = 210mm
#let page-paper-height = 297mm
#let sidebar-column = 0.85fr #let sidebar-column = 0.85fr
#let main-column = 2.15fr #let main-column = 2.15fr
#let corner-bar-width = 5mm #let corner-bar-width = 5mm
#let corner-bar-height = 21.6mm #let corner-bar-height = 21.6mm
#let corner-bar-inset = 11mm #let corner-bar-inset-x = 0pt
#let corner-bar-inset-y = 11mm
#let page-margin = ( #let page-margin = (
top: 2cm, top: 2cm,

View File

@ -904,23 +904,26 @@ uUL
endstream endstream
endobj endobj
126 0 obj 126 0 obj
<</Length 5382/Filter/FlateDecode>> <</Length 5381/Filter/FlateDecode>>
stream stream
xœÝ]û$·mÿ]ÅôåZu<5A>€O$ªZí®ÔƱݺ§<š8il5®ãêÎ<C3AA>»4vÓöoïçËyqvg)éV£Sïî#î3C  ‡|zöí«ß}þéÕ«fõáúèj¨yŸäؤ¤©¹zþôŠš«— UaRØsùòêE~ÿyãÕ‰>4Ô\<5C>™¡Èë²üë£/Ž>?úøèüÃõÓ<1E>““§—ßýÛ§|úýW¿uzºÚlcÇd"¥XbC xœÝ]û$·mÿ]ÅôåZu<5A>€O$ªZí®ÔƱݺ§<š8il5®ãêÎ<C3AA>»4vÓöoïçËyqvg)éV£Sïî#î †C  ‡|zöí«ß}þéÕ«fõáúèj¨yŸäؤ¤©¹zþôŠš«— UaRØsùòêE~ÿyãÕ‰>4Ô\<5C>7C××G_}~ôñÑù‡ë§Ï¾þôÅÉÉÓ×?Ú4tzºÚL<C39A>òÁeÛÄH†j‰Y¶Q¼Ï—^Ô±àÒµàŒÝÑ겡æòÛ§ŸS#Ô\~^6˜šËç¿|÷"ú„ˆ»_é~íñ¯.ß?:¿œÁ“kxz2Nm,ñ Þ)µ˜Xo2Ö1ÇàÒ6Ž,5]÷ë»ßÐýÆüûYN_×/Úçlóïç9ýv»¤Ö.qÆ{¡P6Ìi"«‚¦ù¡+¼Íÿ¶ÈÏ “ñwê€;7z¶¹¬{‹ãñ'»š…*ϸòL*Ï:ì¥Ã^:ì¥ÃCZìÉvuÛ®Û•i»÷m÷¾íÞ·Ýû¶{Ÿãþî´;ÝiR¥»³Aò'7£èvQTo¼…-ŒâŸ"ù3$¾?_“²&0¹eÐû $ð—ùæÝ›‰v<>ff£Q”F:wû'ÇHÿ
PJž4ˆ7v†£I¹1؈$ëZôŠÜÝñó‰ “ØÐ¨`DŸ}ýé‹““§®´ih¿`вmb$CAµD<C2B5>,Û(ÞçK/êXpéZpîæ£ÕeCÍå·O?§F¨¹ü¼ìj.ŸÿòÝOˆè"î~¥ûµÇ¿º|ÿèürO®áéÉ8µ“þÞ)µ˜Xo2Ö1ÇàÒ6Ž,5]÷ë»ßÐýÆüûYN_×/Úûlóïç9ýv»¤Ö.+†¼P(æ4UAÓüÐÞæ[äç†Éø;uÀ<75>=ÛÜÖ½Åñø‰wFØ“<C398>]ÍB•{\¹'•{öÒa/öÒá!-öd»ºmW<6D>íÊ´Ýû¶{ßvïÛî}Û½Ïq<77>î´<C2B4>M)ÉÒÝÙ ù“Qt»(ª7ÞB€FñOü<>Ÿ¯I³a&· z<7A>ä<EFBFBD>Rþ2gÞ½™¨aif6Eya¤s·rŒô¯<C3B4>¼‡ä¯oÆ8îbì¼a Ñ/Œñ“)+Œƒä):fMržl~=?œE6wQÖ^R38k.*!Q$?@òú˜j»“ý¤K J†CŠ IÐß 9Eò·HþÉ5ÍœV;Gr<47>äïü!yÉ<>ØH>œíNŸ~„ä{­?%Ò-- 缡VߤÌr©ç´õ³l¹H^qÃ8ï˜)ȱy¶þÃ{ó‡Æ5<76><5A>µ0•šë"Çl<C387>M>IÈÖP™=úâèYõÑ7!kÕ†&&g†äa§Úd$Iðôº€†(†™›ëâývôÅÑÏŽ^teo7¶-ˆ¸z]@Cd“²^%Ї)ÂöÚwdInP5˜”¢ó“`9 [¿£fóUGê<47>ñÿÖ†ò(TÞvxÝM¼Ÿð‰KÙ­ˆ|Ò÷ÿÔ̬ÙÃA‰Ö¥p€A\56;éEÅ ìà-v3T É{HþúfŒã.ÆÎÖýÂ?™²Â(ˆ¥z1Hž"¡cöÑ$çÉæ×sæ,²¹²°öšÁY\sQ ‰"ùÖõÀTÛ<54>ì']ªphHbBHq! ú$§HþÉß!9C²B²F²™ÓjçH.<2E>ü=@ò#$ï#ùñûɇ³ÝÒéÓ<C3A9><C393>üc¯õ§Dê휓“§—ßýÛ§|úýW¿µC-缡VߤÌr©ç´õ3ŒØÁEòŠ«(Æ1xÇLAŽÍ³õGÞ›?4®ù°3„Ôï¬%—-¡ñŽÙ|<><E28099>¡òöè£g-ÖGßd„¬Uš˜œI‡ye“Ðë¢fn®÷ØÑG?;zÑ•½Ýضl â
àu$;÷GèÀUdœOPOm?)òsOº¥â¿ W¤ënÞo¸ù.£sð댪Å<C2AA> ÜFNL n„M„+‚¼`0H<30>ˆ¡BH ³‰Þi<C39E>)̪Žï)lœ¾P××åPùUão|â(ÒÄþBÐYƒqœ$¦F€åðdùUf¤%ûdøe|HÞ7lÇ+`ΨÃí±ì2P§µm·6ix`x4âõˆ·‡"#êÍõ_u:t†Kw½šÈ£-…~Y$€ÛxA(&Ô·=@ê^ ú§-·&ÿ~\‘¦Á\{ÈkÜ•¦XH“OaFš èu MbˆàuQB}˜ò'l¯}GäUƒI):?)# ºõ;j6_u¤þÿoË&…PyÛáuG6ñ~Â'.ek8FðIßÿS3³f &Z—ÂqÕØì,¦3x°ƒ ´Øuh=oBÌP)€×<05>ì¡Wq>A=µ}ü¤¸Ÿ«xÒ-)HtpY'Mà#J¬<4A>s¯H×%ܼßpó%\Fçà×U¸2Œ;1<>¸6®îƒAjD Bj˜MôNƒLaVu|Oaãô…º¾.‡Ê¯×G‚ÎÔŒã$15,‡œ-æW™”dì[á—Mð!yß°¯€9[ ·Ç²Ë@-rkÛnmÒ<6D>ñzÄÛCu<>YsýW<C3BD><0E>áÒ]¯&òÀƒÑ¨ÄhK!_ àÖÍ<C396> Å„ú¶HÝ+Aÿ´åÖäß<C3A4>+Ò4˜ëcy<>»Ò4 iò)ÌHS½4<E280BA>u$MvU<76>@IÊËë,$<øß¥Ü‰ŒÉ%\0û|e½PŒ¸rÄ)øæ
èݤi¬ã i°« ï¨<EFBFBD>L“øÞ76Q
JV\^g© ‘äÁÿ.åN„`„H.ኄÙç+ë…bÄ•#NÁ7WxGmdÊИÄG𾱉R°€i¤<69>jKó<E28099>ÔD‡à >ùàÀO1…TÂþq™—ذ6œ  M21ÚD9Ë.ÛÅÃPbo$ŽÜ`Hƒ"ÈïXãT5&p°8r<>ç8ÛD#T]lİ4ÎpBƒÖpÑÚÆš ”¢ØFŒø Q "^|#&XƒW\y¹6b+^Þ°A“Æãaòê%yIUqÖ±½¸na¶ d0ªÄ¬©IFƒzh7´QCt<43>âqk"^UÔÄ6΄DÐk<C390>A6oH”بIÜã;i§ä¢õhw }£FI) /%—%ØÐ$\&7)<1E>£°M½ «cë]@ßøœÏÚÒ¥à\¾"EW(¨Á¥±Cq×-Ô³vO¢!Ê’{_ÙÃrâh\ÌA«¬Ð“±1JÌoyÉL<>eUǬG„|ÂKÂOJÉr 0<>RBmIò}'5ÑI²Ÿ|p৘B*aÿ¸ÌKlXN&¡ªdb´ ˆr4]¶ &Ї¡ÄÞH¹Á<C2B9>E<>߱ƩjLà`q,ä1Î%q¶‰F"©ºØˆaiœá„!¬á¢µ<C2A2>5A(E±<45>ñA¢4
™ÉŃ1¼QrQí( ]åöë*¯´˜®êcÿŒä’Ë!ÛÇG~2€ó?ÍIE<49> ®s©ŽhF<68> ÀR<C380><05>Sg#ôŽêl¨ãX³B ØK8u>6 FðÎ:¾ ` iaÏVïµO¯HŽEJ;Ö Üß§¦|¥\5(óº™T3\+7ðÔƒ D¼øFL°.¯¸ò„smÄV¼¼aƒ&<26> ÆÃäÕ J&ò’ªâ¬=b{qÝ$ÃlÈ`T‰YS“ŒõÐnh£†èEvk"^UÔÄ6΄DÐk<C390>A6oH”بIÜã;i§ä¢õhw }£FI) /%—%ØÐ$\&7)²ÀˆQئÞÐÕ±õ. o|
F~k(Fb‡82RdÑUUoKÅØn0¶£œÖža¤P‰hŸL ùYYÂOðÏ‘ü _ ùeE|†<>HÉþvF|`)>^æÄg„ÞQ|†:µzS /\*®ÚÛ‚¡&#{ „ÙòŸÁ#Y†'Šg¹xâX†÷ï(*÷ÒøŒÚó&øn¼ EVýÐ|X--xÈâ<C388><EFBFBD>߀¢ód¿¬¦Š¬ú°˜¬fáúä“Ñ|6H쯆䧥hþ| XþzˆUþ+’ß ùtx&ßýÅkE˜Šž°³×<>C,j|Ô°?r 5,(šà§3÷8èCtT™iª…6\Š&rœ†|ïÄ)7M5Õ¦:ü'™vféªÒžÚ” †¯¾vV˜6kðoeæ²”“ËÒÞþmýÙ^Ìf ÎgméRp._¢+Ô`<60>ÒØ¡¸ëêY»\¤èGˆƒ²äÞWö°œ8‡³BOÆÆ(1¿å%k05Um IFî^,*%Ë)d&ÆðFÉEµ£4Tt•Û¯«¼Òbºª<C2BA>eü3gH.‡Û>>ò“œ3ü4'u6¸Î¥:¢u6KutN<74><4E>Ð;ª³¡ŽCÔ™k`Í
¾…—+µ9Fç<46>Ñ€<C391>è£éøŽŽµ®·µ91á<>GØ÷½|v‡î¿¼kïßYK:qš-¦%ÅU°°á¤êbñÕ~fY¤Â[µùG£ag_w<•ÛOÈW 5½šd<˜{gþ$y†ÿß|1Aqb5[/Ï'PL¿$*RhAíƒ><>uMh8au<61>x) ×šÄ¥È)¶µ”0)Š¡TYB%Y-jq=M tØU‰ú½.Ú8KRt•LA]‰ÝÜË<C39C>¥¸ \±, î Ś׿ ïÕe«³\NTî˜<C3AE>Ó<EFBFBD>×XåTÇê¶«œ8˜ Ú‰½17ƒØÑÇS)‰5”¬/J~!b:¿ü»h+â"¾Cg". %¶¥¸,xn€MÄe€â2 vj)a=>q[9BÅhÄ¢<C384>¢šžº%>Å'¸÷ÐR^`I¾Öãóú3Òî1 Ì<18>†“ËóÃõ-„¥¶¢Á7"Œ ê½ Ë—Hþ£2Öí:URæ©EñºFò|¿ÄЦ®îç[Ð<18>Ø™Eµ{päúVJì-$vŽ7Ö2…<32>EŽÐP9B½ s¥E5=)K|òNpï¡…ÄŽÀ}-%¬Ççµ%¶ Ý#ØY¬•X[sæ%Øé3SwÖ‰èHðÆGŠîÎ ÊÅ`TxŽu(†5lqÕßGØ_à×<E282AC>DLNF<’Œ:rå{¨}ýj$ÃVXeô05<30>ÔiQ(“IñØPëÂüc0Èu‰ü¥¡`«½:ˆO·È|ûåV½×“óùÛBÎ<42>E®of¡Y<C2A1>Ö÷Ó—a<E28094>!êÅ1ý*GQ+kwã?É›`­õ<C2AD>ød¬MAî;ü3®™½üòΊÁ=ˆ^°ÑÄd<C384>¶*Øjž9÷ȹÛG<b|s„õ¼<B 5`/aÃä|l:Œà<C592>%t|ÀÒ0¢ž­Þks¯HŽEJ;Ö Üß§¦|¥\5(óº™T3\+7ðÔƒ
f<1E><><05>,9Výæ´Ã^Z¢Þ*š®"vÕŒ5w-Ù—S_#ùæø‰ )úw§ó-yBô½ŠâØ Ö1HÎ>«¶Ç¨9Ø °ÂJœ‡0)¼¯”¡×¢Íkdc—ZG˜t6 ƒ¤à0áPõSû‰}<7D>añ6õpݱŽÆçÙ—ÓßcyV ö!ç_"yuÌXEËÒjÕ1óAL¢Öqœš£°­š•tI£ƒLŠ˜ÍhHÁ²Ëà³ÖxO¢å#¬gòR0ùÈ¡àb€ª~±²:Þ&¢®9bÍ1±l("@²€grl!éÖÙôîðYÚËaVÍSÙ<53>C*ÖôZáF¬˜àÆÇeoâæÏkBmHÓ(ª¿nD±V"±XÖ<58><C396> þîA{÷€’»{Ø0,Ãb_ë45öÓù [ãí çáºb&ÎÎ4R|9eñûcfgÄÇÄ£<C384>Ãÿ™×€U¾cÞ <0A>² †YÂcUžñ©¾£x] ir¶Ý!B¢ñÑãZò7€Ot¬ˆÐu<C390>iˆ®1º\ì$B×Uû&“}„>0âùvô`uávcžìÃ@òM kò‡ŠŽ<C5A0>Šò(uDa£•)ºEjTñ¡Mk1³qA-úFnA|6 <0C>¤à`1l=Tý(Ü<>-b¤'Þ&¢®+lÍ !<21>Ï-/ Ö<>¿7ØßWTÅn°3©±^añQ0ê½}\ <0B>F=‰{Ma“!QCÐ÷w¶Úr^§áüTDó[À4˜ßŠX~[fáT÷u¾ÁÙ}4>(Nñ6ÐòpÅ0Ù$éɽ bø¯<-ä<E2809A>Hþ;+Šb˜ eÚ„ Æ`ç=JÍÀ.b<>£ñ0ë|?Þ%ÁámØ<6D>rÓ°[+Ândvë€Åx×< »uU¿Agc/±Œe¾=D=\WÌìVå¥'ûºb6ù?ƒeñUEm¤Šëñ(µÆh sR#´…ß=k <0A> ¬Ï¹ëÆ{ã•Ô"‡I­”<öÞa=ƒ<><C692>ÁG`φcÁ#“ŽU?×c؇h<E280A1>·Š¨‡k ­¸F«Iò<¾L<>þc­ù<C2AD>ú^kå$c½/4I°þõvÆJÓ·ò—\û>Úò»VAç‰x^~S¬ýÛzVö<56>äÆ×V¾öQìªúíö‡¿Û_¸Í~v2%TˆäS2Ö³¿ÿ} O°‡#g"‡_—³ùׯ‰|êò;Åóî÷‚(ÑéþÖìÆ„±,Ù±ÉAŸïiÌ QâÓr¬<72> ´RI†lˆq1”@_ˆl$²‰È*=#²+"ŽDœ@\l“I”„ 9>CªÑ¢I(9"·&rl¦‰½%‰Üjòn'O”PR$@äΉJT"wF”´Òc¾F„ð·¿K¾/ú¤3ì˜YÁ,Ôx)[Ñ!<0/űB ´Ê½j‰ä2¸"Jèù QBo_ z?)DÏ"e"•ÞRK¤ŽH=â±ØvÇo)JS"=#ÒU‡ÅºÒc©Fì+µý]ñ}ÑG×Dº!Òs"½he¬Ê[Zá-§açûâåy+P…xK¡ÚõÚBΉäzþT°u·Îînø=Ü:!ï<ýÙî£7”ÂDgBdñ çS츈ۮEo§¢­M*ÛBïÚ!ްÅ6¶cZŒ²ã2ßφµ¾•<C2BE>A®àð<C3A0>…À¹^²ûÏ|;DÑÅ~q »ÃºódHñð¢lþqžyÂh¬œÅ¬Áö·bfÛÂ7éqÁVÇt F~k(Fb'ÆÁެ.$É¢«ªÞ02бÝ`lG9­ <ÃH¡"Ñ>>™@ò³²„Ÿ àŸ#ù$¿@òËŠø !‘’ýíŒø ÀR|¼Ì‰Ï½£ø uj ô¦@4^$¹T\µ<>CM0.Fö³å;æA,CŽ"ï`"ù!ŽeixÿŽ¢r/<2F>Ϩ=o<6F>?àÆPÜÁªšk£Å¢·x§mãÃ7 è<Ù/«©"«>,&«Y¸>ùdG4Ÿ û«!ùi)š?–¿b•ÿŠä7H>òä§¿x­vÖáºsè€E<E282AC><45>öG´†E|Š‹úUfšj¡ —¢‰§!ß;qÊMSMµ©¤ÿÉM;³tUiOmJÐEÃW_;
Ïlxh<…+Œjz)FôÞ<C3B4>ôy©@~>ìhô¿H~\A}f¸ØÝ"Å´ ê<18>"Ñ™<12>AE^ùбèªeÓÚØRÅ#p>šé¶æ÷é4ÝõІCœ¦íîâ4­ÈbßÊd—qš„èl½ë4•zÈo¦NÓ~çj?(‚…®!>¬<>¹¦Béà3!âŒ<C592>œQÁ¼Þ¢H¿ö™3Ç—°âƒÉ CˆÄvŽ&¼GXû<ú±gð5ÑìDä/ˆBl}Wxµá-î½NŰ÷â8`…ö3Ã0vUL²,í[Ÿ­B¿ê Lbœõ œsB´Âá\±b¬(+,öxw¬¬j®èR(å¨Fç<46>ƒn+&Z ÑÊî¸Ö}4^7„ľuÜûÑ «Lµ ø·òæ²”“ËÒ>þm=o/f3ßÂ˕ڣóÎh@HôÑt|GÇZ×ÛZœŒðÇ#ìû^ >»C÷_Þµ÷ï¬%<25>¸ ÍÓ’â*XX<58>pRu±øj?³,Rá­Úü£<C3BC>Ѱ³¯;žÊí'ä+^M²̽3ÿ <ÃÿïH¾˜ 8±š­‹ç(¦_ <0B>)´ <36>e¶® ',j/ô:C“¸T9…"c[K “¢ÈJE%TÕ¢×Ó´@g€]•¨Ðë¢<C3AB>°$EWÉÔ•ØÍ½ÜYŠ Ê«‰ÐáR¬yý ú^]¶:¥D¥àŽ7pº³ë],º¬ª¶p<C2B6>„C;±7ÞÍ vôñTJb %+Æ_dˆ˜Î/ÿ®ÚЏˆïЙˆ‹C‰m).ºŒÏ °‰¸ ÐR\`ÁîC-%¬Çg".b"G¨<18>X4PTÓS·Äg ø÷ZÊË,iÑ×RÂz|^_`FÚ=&<26>™Ãê£Ñpry~s¸¾…°ÔV4XòF„D½waùÉTƺ]§ŠCÊ<µ(^×Hžï—XÑÔÕý| £;2³¨va¥ÄŽÐBbGà(qc-SØXä E#Ô›0WZTÓ“²Äg ï÷ZHì,iÑ×RÂz|^[b Ú="‰<>ÅjQ‰µ5g^b€<62>.q13ug<75>è<EFBFBD>þ‡o|¤èî¼Z F…çX‡bXc°ÉWýs„ý% ÞxÝHÄädTA@íëW# ¶Â¢(£‡© ¤NB™L¢ˆlC­#ó<> ×”†i¬öê >Ý"óí—[õn^OÎço 9¹¾™…f=Z»
žÏÅŽó¾òD«@´ŠD+<¦D ;ã|tì5ŸUzLkäÁwdž8=ô<>1ŒFQ<46>§Rm´ûy?,O¥Ú¸J­Ï™©ë¯43Úyìä#yc¬…P<!Š+¢ÕŠÈŸ­Öí_m@H3<48>â cWØEío…hì+ ~oe<6F>DD­ˆÖL´¢5FÆÓ'6àt<15>iæ,´áÞ ÑF!¢¿¨Î­Ñˆd‰­§²¶LØZmê0ZœˆÖ:Æ×gS3´E©ª$ûбn [d]lÞjËs¹Í¼U <ÜL_††¨CÄô«E­¬IÞ<49>ÿ$oµÖ7⓱6¹ïðϸföòË;+Œp>÷ zÁF“uÚª`«yæÜãÎåØ>âã›#¬çåR0óì™n,xdɱê7§öÒúåðVÑôp±®d¬¹kɾœŠøÉ7ÇOĨhHÑ¿;<3B>¢ïUÇn°ŽAröYµ=FÍÁ^€Vâ<„Iá<49> ½ÆØm^#C»Ô:¤û8
„%áôl¸³<C2B8>V?øn<_®9v&%Iýw ÃÑx•sÓœCŒóÈ/ݰâÔ¹Á¢Ÿw ïæ®B<C2AE>š¯-Á¡­Vóì[ªEµÅá·ñ ƒ¦ÖÂÚ‹á °a å88<>p(¸‡ªßœêØOìƒ ·‰¨‡ëŽÝp4>‡èȾœîøö˳±ùþ%WÇŒU´,­&yYQ3Ä$j÷Ç©9
¯¡ËÖDë Ñú¼ Áõ±nÖýór[æÖú¢ M[KÇ~ÃDunǨf`ºiu¼æö÷™ÖŒ +ÙªIQI—4:ȤˆÙŒv€ ïI´|s„õL>B
`¬ø°n€åº¥Å˜Ævþd“êú\¥ÆeMJŽšËl<C38B>ŠKáTÎòs®[Óµ™@á³qÆ·÷ž{;ØÒ©w&* cVDVêö“Î8Ôyk´X{g÷<ºÙ*Õ] ÀÁÇpÞ/Û9½ìV)¹;Ú»„ ’º!åË<C3A5>ŠãÕo†Å<E280A0>7PvfƒUð=âážQÿ`²¸qSÍõÆ:;çÄ.¢Ñ w½ë×BT»~f¼Ì‡L:[¹$¦5ÑfÓý<C393>×±dÚB­ÀX³8xiI4û<34>lŒDŒŽÍÅ8Â1bVC1ÅNr(bØ—v»§Û<C2A7>“蜉Ρ S<>DµQ”#ã@°é÷ÏÐW²0Õyá;Y†7oУxgˆ©O|‰ã› &<1F>Ã9\ <0C><43>Â%Ù"öAVÇÛDÔÃ5G¬9& EHðLŽ-$Ý:›Þ>K{9,êy*»qHÅš^+܈\Ðø¸ì ÂBÜüyÍC¨ ‰`×<C3B5>(ÀJDeÝøØ°àï4°w(¹»‡ ÃâPh1,öµ¾ASc?<3F>²5Þz®+fâìL#Å—S¿?fvF|L<Ú9¬ñŸy Xå;æÝ(Û`˜%<VeáŸ*à;ЇÐÁ<>&gS¡óÑãZò7€Ot¬ˆÐu<C390>iˆ®1º\ì$B×Uû&“}„>0âùvô`uávcžìÃ@òM kò‡ŠŽ<C5A0>Šò(uDa£•)ºEjTñ¡Mk1³qA-úFnA|6 <0C>¤à`1l=Tý(Ü<>-b¤'Þ&¢®+lÍ !<21>Ï-/ Ö<>¿7ØßWTÅn°3©±^añQ0ê½}\ <0B>F=‰{Ma“!QCÐ÷O™HÎë4œßŠh~ ˜ó[XËoË,œê¾Î78;²<>ÆÅ)ÞZ®f"$=¹T ÿ•§E<C2A7>üÉgeQQ 3¡L°Áì¼G©ØEìÀáaT!f<>ïÇ»$ø ¼ »Anvë`EØ­ƒLÃn°ﺂ'a·®ê7èlì%ö<>±Ì·‡¨‡ëŠ™Ýª¼ôd_PWÌÆ2ÿg°,¾ª¨<C2AA>Tq=¥Ö­aNj„¶ð»g­á±AõùîºñÞx%µ¸Ã¤VJû oްžÁGHÁà#°gñàIǪƒë±MìC´Æ[EÔõ†V\£Õ$Kyß ¦Fÿ±ÖüN}¯µr±Þš$Xÿz;c¥é‡[ùK®}mùÝH« óD</¿)Öþm=+{Hr c
¦9?Þ}‰Ë·¬u ¶¢ëOÊù¤ñã7ïl0¹àãBŽÎþñ6˜Ć}Lk2Õ"å‹!Õ2¤=~#ƒ³¡ÁètšçiþÜnåÝVÞOóëUï% NëL­2Âö;gÇû E~½ýB:Þè6àÛ€Në8ÛnhÜmˆåé;çië<1D>æWç[÷϶ò;ÄúhËw¶jÜiù'¯jÂ\[ ¨˱yY>ßtÃhuÄIٌшbËéÍÚ¤ÃR8µ9žF_·§yæèiñ8<C3B1>Û©.ŒãM° Ø[6òbÓt«½ŸnCž<>„¶¤Þ-G4hÓÎ0c O&HÎs¢ó<.ѲÕô6Ѻ ¶DBtaÙ5½ÁÜž97Ù)ŽÆ9¼K6ýÂ…s¢ OtqƒëÂã©É»žßòöË÷Ì!®Åò_œ-ŒM—àÌ|2ÑÅîʪÿ‰Â:S &êk+_û(vUývûÃßí/Üf?;™I*Dò)ëÙßÿ>†'ØÃÈ3ï˷ùׯ‰|êî=v,$ŠçÝïQ¢Óý­Ù<C2AD>3cY6³c“ƒ>ÞÓ˜¢Ä§åX;Ai7¤ Ùãb(<28>¾6ÙHdU"{FdWD‰8<E280B0>¸Ø&“( 6r|*,†T£E“,QrDnMä6ØL{K¹Õ$'O”PR$@äΉJT"wF”´Òc¾F„ð·¿K¾/ú¤3ì˜YÁ,Ôx)[Ñ!<0/űB ´Ê½j‰ä2¸"Jèù QBo_ z?)Dù2Êo©%RG¤žH-¶Ý±Å[ŠÒ”HψtÕa±®ôXªûJmW|_ôÑ5nˆôœH/Z«òVxËiØù¾xyÞ
T!ÞR(<28>v½¶<C2BD>s"¹€ž?lÝæ­³»~<0F>Nˆ À;¹?ÛÍzC)Lt&D¿àq>ű1‰xìZôv*ÚÚ”¡²-ô®âH ylÇ´eÇe¾Ÿ k}+ƒ„];Àá; <0B>s½d÷Ÿùvˆ¢ýâv‡uçÉ<C3A7>â+àE Ø üã<ó„ÑX9YƒíoÅ̶„oÒã­ŽéžÙð6=¥ø ®0f¨é¥M$^`Ð{wÒç¥ùù°£Ñÿ"ùqõ™á:`wÓ¨c<ŠDgJtyAäCÇ¢«MkcSH<15>Àùh¦Ûšß§Ót×Cqš¶|¸‹Ó´F"}+“]Æi¢³õ®ÓTê!¿™:Mû<4D>«ýL©f º†ø°Jäš"X¥ƒÏ„ˆ3þurFóz"ýÚgBÌ_ŠO $3| !Û9šðaíóèÇžÁ×Dg°qAbë»Â3¨ oqwèu*†½·p7ÌÄ+´Ÿ†±«beißúlúUaã¬_༘¢ïàúˆcEYÙd±Ç»{`eUsE—B)G5:ot[1ÑJˆVvǵî£9ðº!t ö­ãÞˆVð|.vœ÷•'Z¢U$Z!1ìŒóѱgÔ|Vé1­ßy^àôÐÆ0EužJµÐ:ìçMü°<•jàR(µJl<g¦®¿ÒÌh籓<C2B1>ä<EFBFBD>±Bñ„(®ˆV+"N´µŠc0Œ]aE´¼¢En ³®€øE~” ·"Z3ÑZˆÖ/NŸØ€ÓU4¦™³Ð†g'Dk…ˆþ¢:O´Dkv $¶BœZÈÚJÂÙFnéd´8­uŒ#®Ï¦f,þhRUIö¶È»Ø¼Õçr*KÂéØpg!¬~ðÝx¾\sìLJúï@‡£ñ*ç¦9‡ç9<C3A7>_ºaÅ©sƒE?ïÞÿÌ]… 5_[5B[ç‚>æÙ·TjÃ!8nãAM­…µà ^C—­‰Ö¢õyëcݬûçå¶Ì­õEš¶–Žý†‰60êÜŽQ7ÌÀtÓ*0ê6xÍíï3­"ÁXñaÜËuK 0<>íüÉ&Õõ¹J<C2B9>Ë(š”=4—Ù—©œåæ\·¦k3€ÂgãŒoï=÷v°¥SïLT,&AǬˆ¬Ôí'<27>q¨óÖ,øzi±öÎîyt³Uª»€ƒ<E282AC>á¼_¶szÙ­Rrw´w ,$uBÊ—Ç«ß o ìÌ«à{Ä+Ã=£þÁdqã§šë<C5A1>uvΉ]D£Aîz Ö¯…¨výÌx™™t8¶rIL7k¢Í¦û;¯cÉ´;„Z<E2809E>±fqðÒÙq„cĬ†bŠ!œäPÄ.°/ív¹Û<C2B9>“蜉Ρ S<>DµQ”#ã@°é÷ÏÐW²0Õyá;Y†7oУxgˆ©O|‰ã›
¦9?Þ}‰Ë·¬u ¶¢ëOÊù¤ñã7ïl0¹àãBŽÎþñ6˜Ć}Lk2Õ"å‹!Õ2¤=~#ƒ³¡ÁètzÏÓûs»uï¶îýô~½*î{ ˆÓ:Óf«Œ°ýÎÙñþBq¿Þ~!otðƒmÀ§uœm74î6Äòô<C3B2>ó´õŽNïWç[Ï϶îwˆõÑ6ïlÕ¸ÓòO^Õ„¹¶P=có"²|¾é†Ñꈓ*²£Å–Ó,šµI‡¥pj%s<<3C>¾nOóÌÑÓâq·S]Ç6a°·l,—`%åÅ$§èV{?݆<; mI½[ŽhЦ<C390>aÆ*@ŸL$,œçDçy\¢ d«éc£ul‰.„è³kzƒ¹=sn²S7<>sx—lú…#
çDžèâ×…ÇS“w=¿%å;ì—ï™C\å¿8[:.Á3˜ùd¢™•U·ü‡šÄø€{z:ÜmHq†£i÷¤ïÁÙË8‰†Ê»×øR-á U±¡Qœ3ª‡.?$¢ÿ¬˜:}
endstream endstream
endobj endobj
127 0 obj 127 0 obj
@ -4792,12 +4795,12 @@ T
endstream endstream
endobj endobj
129 0 obj 129 0 obj
<</Creator(Typst 0.15.0)/ModDate(D:20260623143822+08'00)/CreationDate(D:20260623143822+08'00)>> <</Creator(Typst 0.15.0)/ModDate(D:20260623162844+08'00)/CreationDate(D:20260623162844+08'00)>>
endobj endobj
130 0 obj 130 0 obj
<</Length 996/Type/Metadata/Subtype/XML>> <</Length 996/Type/Metadata/Subtype/XML>>
stream stream
<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?><x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="xmp-writer"><rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"><rdf:Description rdf:about="" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:xmpTPg="http://ns.adobe.com/xap/1.0/t/pg/" xmlns:pdf="http://ns.adobe.com/pdf/1.3/" ><xmp:CreatorTool>Typst 0.15.0</xmp:CreatorTool><dc:language><rdf:Bag><rdf:li>zh</rdf:li></rdf:Bag></dc:language><xmp:ModifyDate>2026-06-23T14:38:22+08:00</xmp:ModifyDate><xmp:CreateDate>2026-06-23T14:38:22+08:00</xmp:CreateDate><xmpTPg:NPages>1</xmpTPg:NPages><dc:format>application/pdf</dc:format><xmpMM:InstanceID>jKUOrUjtYX9DRppue0Iu0A==</xmpMM:InstanceID><xmpMM:DocumentID>jKUOrUjtYX9DRppue0Iu0A==</xmpMM:DocumentID><xmpMM:RenditionClass>proof</xmpMM:RenditionClass><pdf:PDFVersion>1.7</pdf:PDFVersion></rdf:Description></rdf:RDF></x:xmpmeta><?xpacket end="r"?> <?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?><x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="xmp-writer"><rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"><rdf:Description rdf:about="" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:xmpTPg="http://ns.adobe.com/xap/1.0/t/pg/" xmlns:pdf="http://ns.adobe.com/pdf/1.3/" ><xmp:CreatorTool>Typst 0.15.0</xmp:CreatorTool><dc:language><rdf:Bag><rdf:li>zh</rdf:li></rdf:Bag></dc:language><xmp:ModifyDate>2026-06-23T16:28:44+08:00</xmp:ModifyDate><xmp:CreateDate>2026-06-23T16:28:44+08:00</xmp:CreateDate><xmpTPg:NPages>1</xmpTPg:NPages><dc:format>application/pdf</dc:format><xmpMM:InstanceID>cyD771vaNfjg2k+HwoDFcg==</xmpMM:InstanceID><xmpMM:DocumentID>cyD771vaNfjg2k+HwoDFcg==</xmpMM:DocumentID><xmpMM:RenditionClass>proof</xmpMM:RenditionClass><pdf:PDFVersion>1.7</pdf:PDFVersion></rdf:Description></rdf:RDF></x:xmpmeta><?xpacket end="r"?>
endstream endstream
endobj endobj
131 0 obj 131 0 obj
@ -4932,13 +4935,13 @@ xref
0000123633 00000 n 0000123633 00000 n
0000124345 00000 n 0000124345 00000 n
0000143033 00000 n 0000143033 00000 n
0000148486 00000 n 0000148485 00000 n
0000148893 00000 n 0000148892 00000 n
0001010608 00000 n 0001010607 00000 n
0001010721 00000 n 0001010720 00000 n
0001011794 00000 n 0001011793 00000 n
trailer trailer
<</Size 132/Root 131 0 R/Info 129 0 R/ID[(jKUOrUjtYX9DRppue0Iu0A==)(jKUOrUjtYX9DRppue0Iu0A==)]>> <</Size 132/Root 131 0 R/Info 129 0 R/ID[(cyD771vaNfjg2k+HwoDFcg==)(cyD771vaNfjg2k+HwoDFcg==)]>>
startxref startxref
1011964 1011963
%%EOF %%EOF