From a4bfcac82a04aa7d1f113ac4f0e1d7835f10a521 Mon Sep 17 00:00:00 2001 From: laoyang Date: Sun, 1 Nov 2026 08:06:22 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E3=80=8A=E6=95=99=E6=9D=90?= =?UTF-8?q?=E3=80=8BLaTeX=20=E6=A8=A1=E6=9D=BF=EF=BC=8C=E4=BB=8E=20sre=20?= =?UTF-8?q?=E6=95=99=E6=9D=90=E6=8A=BD=E5=8F=96=E7=89=88=E5=BC=8F=E9=AA=A8?= =?UTF-8?q?=E6=9E=B6=20#25?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 源:D:\Yongquan\code\sre =《软件需求工程导论》完整教材 (13 章 + 5 附录,78 万字节,265 页 PDF,elegantbook 文档类) ## 新增文件 教材/ouctextbook.sty 版式配置 教材/elegantbook.cls 本地化过的文档类(改过字体) 教材/教材.tex 示例正文(1 章 + 附录 + 参考文献) 教材/reference.bib 参考文献库(虚构条目) 教材/README.md 用法 + 踩坑记录 ## 核心约束:字体的共用性 用户明确要求「注意字体的共用性」。原教材用 elegantbook 的 chinesefont=founder 档,加载方正四大字体: FZShuSong-Z01 / FZHei-B01 / FZKai-Z03 / FZFangSong-Z02 这些是**商业字体,不能随仓库分发**(#17 定下的规矩)。 ### elegantbook 三档字体全都不通用 | 选项 | 实际字体 | 问题 | |---|---|---| | founder(默认) | 方正四大字体 | 商业字体,换机器就废 | | ctexfont | 系统字体(Win=SimSun,macOS=PingFang) | 三平台三种样子 | | nofont | 不设 | 不配置就报错 | ### 只写 nofont 还不够 —— cls 自身还硬编码字体 elegantbook.cls 第 176/184 行: \setmainfont{TeXGyreTermesX}[...] \setsansfont{texgyreheros}[...] 这两款在精简 TeX Live 上都没有,报 9 个错误连发: ! Package fontspec Error: The font "texgyreheros-regular" cannot be found **实测:在 \documentclass 之后用 \setsansfont 覆盖无效** —— 类加载时字体族已注册失败,后面重新指定救不回来。 ⇒ 所以本模板必须带一份**本地化的 cls**,改三处(都留了"本地化"注释): | 位置 | 改动 | |---|---| | ~176 行 | TeXGyreTermesX → texgyretermes + Path=../fonts/tex-gyre-termes/ | | ~184 行 | texgyreheros → OUCSans + Path=../fonts/ouc-sans/ | | \maketitle | example-image → \ouc@coverblank | 这是本模板与仓库其他模板的**唯一结构性差异**:别的模板只要 \input{../fonts.tex},本模板还要那份改过字体的 cls。 ## 踩到的三个坑 ### 1. 封面不写 \cover{} 会插一张 "Image" 占位图 cls 第 1288~1300 行: \ifcsname @cover\endcsname ... \else \includegraphics[width=\linewidth]{example-image} ← mwe 的灰底占位图 首页顶着 "Image" 两个大字。已把 else 分支换成空盒子。 ### 2. 占位盒宽度不能是 0(这个坑耗了最久) 第一版 \rule{0pt}{0pt}(0 宽),立刻冒出: Overfull \hbox (5.00002pt too wide) in paragraph at lines 44--44 试过全部无效,溢出量死钉在 5.00002pt 不动: 改 \hspace{2em} / \hspace{2.5em} 无效 改 minipage 的 0.67/0.27\linewidth 无效 改 tabular 列间距 @{}l@{} 无效 改 \colorbox 的 \makebox[\hsize] 无效 根因:0 宽空盒让 \linewidth 在 titlepage 里与 \textwidth 差 5pt, 后续并排的 \parbox{0.8\textwidth} + 两个 minipage 整体超宽。 ✅ 正解:给占位盒满宽 \newcommand{\ouc@coverblank}{% \rule{0pt}{0pt}\hspace{\linewidth}\rule{0pt}{0pt}} 实测 0 Overfull。 ### 3. 封面色带改不动(一行 \colorlet 的位置问题) cls 第 345 行 `\colorlet{coverlinecolor}{second}` 在**类加载末尾**执行, 把 coverlinecolor 绑到 second 色(black 模式下就是黑)。 ⇒ 导言区写 \colorlet 会被覆盖,实测色带仍是纯黑。 必须用 \AtBeginDocument 排到它后面。 ## build.sh 补了 bibtex 支持 原来只跑两遍 xelatex,教材的参考文献出不来。 新增:目录下有 .bib(排除 *-blx.bib 这种中间产物)就插一次 bibtex, 再补一遍 xelatex,最后跑统计那一遍。 ## 验证 8 页 error 0 Overfull 0 Underfull 0 封面色带 RGB(32,178,170) 青绿,实测 fill=(0.125,0.698,0.667) 封面无 example-image 占位 字体(PDF 内嵌实测,全部来自仓库): OUCSerif-Regular / -Bold 中文正文 OUCKai-Regular 中文斜体(楷体代) TeXGyreTermes-Regular/-Bold/-Italic 西文 LMMono10-Regular \texttt 等宽(TeX Live 自带) → **无方正、无 SimSun/SimHei、无 Times New Roman** 全库 16/16 通过(新增第 16 项,已加入 verify_all.sh)。 ⚠️ Windows 端本机未能编译:TeX Live 写字体缓存 (C:\texlive\2022\texmf-var)被安全策略拦截,属环境限制非模板问题。 模板只依赖 TeX Live 标准宏包与发行版自带字体;原教材本身就是在 Windows + TeX Live 2022 上编出来的。 ## .gitignore 补充 新增 *-blx.bib、*.run.xml(biblatex 中间产物)、*/.preview/(预览图)。 ## 与原教材的差异 | 项 | 原教材 | 本模板 | 原因 | |---|---|---|---| | 封面图 | cover.jpg | 无(纯色带) | 模板不附图片 | | 字体 | 方正四大字体 | 仓库开源字体 | 商业字体不能分发 | | 西文无衬线 | texgyreheros | OUC Sans | 仓库没有 Hero | | 正文 | 13 章 265 页 | 1 章示例 | 只抽骨架 | --- .gitignore | 9 + build.sh | 16 +- verify_all.sh | 1 + 教材/README.md | 210 ++++++ 教材/elegantbook.cls | 1489 ++++++++++++++++++++++++++++++++++++++++++ 教材/ouctextbook.sty | 225 +++++++ 教材/reference.bib | 24 + 教材/教材.pdf | Bin 0 -> 121062 bytes 教材/教材.tex | 225 +++++++ 9 files changed, 2198 insertions(+), 1 deletion(-) create mode 100644 教材/README.md create mode 100755 教材/elegantbook.cls create mode 100644 教材/ouctextbook.sty create mode 100644 教材/reference.bib create mode 100644 教材/教材.pdf create mode 100644 教材/教材.tex diff --git a/.gitignore b/.gitignore index d3b29b7..cb14806 100644 --- a/.gitignore +++ b/.gitignore @@ -16,6 +16,15 @@ *.snm *.vrb +# biblatex 的中间产物(教材/ 会生成) +# *-blx.bib biblatex 自动写的"引用收集"文件,每次编译重写,不是输入 +# *.run.xml biblatex 运行时状态 +*-blx.bib +*.run.xml + +# 各模板的预览图(截图导出,不入库) +*/.preview/ + # 简历成果统计的自动生成文件(每次编译重写,不要提交) # 见 简历/awesome-source-cv.cls 的「成果统计」一节 *.cvnum diff --git a/build.sh b/build.sh index da55b66..ea4b5da 100755 --- a/build.sh +++ b/build.sh @@ -56,7 +56,21 @@ build_one() { # 第一遍:产出 .aux/.toc,允许非致命错误(TOC 还没生成时会警告) ( cd "$ROOT/$dir" && $TEXBIN -interaction=nonstopmode "$name.tex" ) > "$log1" 2>&1 local rc1=$? - # 第二遍:交叉引用稳定后的最终结果,统计以这一遍为准 + + # 有参考文献库时插入 bibtex(教材/ 等模板需要)。 + # ⚠️ 判定依据是目录下存在 **任意 .bib** 且不是 biblatex 自动生成的 + # "*-blx.bib"(那是 biblatex 的中间产物,不能当输入跑 bibtex)。 + # biblatex 的 bcf 后端用 biber,但本库统一用 bibtex 后端(elegantbook + # 的默认),且仓库里的模板都用 bibtex,故这里只调 bibtex。 + # bibtex 失败不中断构建 —— 下一遍 xelatex 会用旧的 .bbl, + # 参考文献可能不全,但正文和版式照常验证。 + if ( cd "$ROOT/$dir" && ls *.bib 2>/dev/null | grep -qv -- '-blx\.bib$' ); then + ( cd "$ROOT/$dir" && bibtex "$name" ) > "/tmp/oucbibtex.$$.log" 2>&1 || true + # bibtex 之后必须再跑一遍让引用编号落位 + ( cd "$ROOT/$dir" && $TEXBIN -interaction=nonstopmode "$name.tex" ) > "$log1" 2>&1 + fi + + # 最后一编:交叉引用稳定后的最终结果,统计以这一遍为准 ( cd "$ROOT/$dir" && $TEXBIN -interaction=nonstopmode "$name.tex" ) > "$log" 2>&1 local rc2=$? diff --git a/verify_all.sh b/verify_all.sh index 4096aff..561c78c 100755 --- a/verify_all.sh +++ b/verify_all.sh @@ -37,6 +37,7 @@ TARGETS=( "课程教学日历|课程教学日历.tex" "课程大纲|课程大纲.tex" "会议预算表|会议预算表.tex" + "教材|教材.tex" ) filter="${1:-}" diff --git a/教材/README.md b/教材/README.md new file mode 100644 index 0000000..0cd9056 --- /dev/null +++ b/教材/README.md @@ -0,0 +1,210 @@ +# 教材 + +中国海洋大学 教材 LaTeX 模板。 + +版式从《软件需求工程导论》(sre 仓库)的成品书抽取而来, +保留其全部排版特性,正文内容为占位示例。 + +## 编译 + +```bash +cd 教材 +xelatex 教材.tex # 无参考文献时,单次即可 +``` + +有参考文献时(本模板默认就有)走完整流程: + +```bash +xelatex 教材.tex +bibtex 教材 +xelatex 教材.tex +xelatex 教材.tex +``` + +或仓库根:`bash build.sh 教材`(已自动处理 bibtex) + +## 文件 + +| 文件 | 作用 | +|---|---| +| `ouctextbook.sty` | 版式配置(编号层级、封面色、宏包、断行) | +| `elegantbook.cls` | **本地化过的**文档类(改过字体,见下) | +| `教材.tex` | 示例正文 | +| `reference.bib` | 参考文献库(内容是虚构条目) | +| `README.md` | 本文件 | + +## ⚠️ 唯一的结构性差异:本模板带一份 cls + +仓库其他模板只需 `\input{../fonts.tex}`。本模板还需要一份 +**改过字体的 `elegantbook.cls`**,原因如下。 + +### elegantbook 的三档中文字体,全都不通用 + +| 选项 | 实际字体 | 问题 | +|---|---|---| +| `founder`(默认) | FZShuSong-Z01 / FZHei-B01 / FZKai-Z03 / FZFangSong-Z02 | **方正商业字体,不能分发** | +| `ctexfont` | 系统字体(Windows=SimSun/SimHei,macOS=PingFang) | 同一份源码三个平台三种样子 | +| `nofont` | 不设,交给用户 | 不配置就直接报错 | + +### 但只写 nofont 还不够 + +`elegantbook.cls` 自身还硬编码了两处西文字体: + +```latex +\setmainfont{TeXGyreTermesX}[...] % 西文衬线 +\setsansfont{texgyreheros}[...] % 西文无衬线 +``` + +这两款在精简版 TeX Live 和很多机器上都没有,会直接报 + +``` +! Package fontspec Error: The font "texgyreheros-regular" cannot be found +``` + +而且是 9 个错误连发(类的每个字体档位都失败一次)。 + +**实测:在 `\documentclass` 之后用 `\setsansfont` 覆盖无效** —— +类加载时字体族已经注册失败,后面的重新指定救不回来。 + +### 所以 cls 必须本地化 + +模板目录里的 `elegantbook.cls` 相对上游改了三处,都带 +「本地化」注释,便于将来对比上游版本: + +| 位置 | 改动 | 原因 | +|---|---|---| +| 第 176 行附近 | `TeXGyreTermesX` → `texgyretermes`,加 `Path=../fonts/tex-gyre-termes/` | 用仓库自带字体 | +| 第 184 行附近 | `texgyreheros` → `OUCSans`,加 `Path=../fonts/ouc-sans/` | 仓库没有 Hero | +| `\maketitle` 内 | `example-image` → `\ouc@coverblank` | 无封面图时不插占位图 | + +### 中文依赖链 + +`nofont` 模式下 elegantbook **不定义** `\songti` / `\heiti` / `\kaishu` / +`\fangsong`,但它的 `\cbfseries`、章节标题都依赖 `\heiti`。 + +这层依赖由 `../fonts.tex` 补上——那里已用 `\def` 定义这四个命令。 +**若哪天 fonts.tex 改了这几个命令的名字,本模板的章节标题会立刻失去中文字体。** + +## ⚠️ 封面:三个坑 + +### 1. 不写 `\cover{}` 会插一张 "Image" 占位图 + +elegantbook 在 `\maketitle` 里: + +```latex +\ifcsname @cover\endcsname + \includegraphics[width=\linewidth]{\@cover} +\else + \includegraphics[width=\linewidth]{example-image} ← mwe 宏包的灰底占位图 +\fi +``` + +首页顶着 "Image" 两个大字。本地化版本已把 `else` 分支换成空盒子。 + +### 2. 空盒子的宽度不能是 0 + +第一版把占位改成 `\rule{0pt}{0pt}`(0 宽),结果**冒出 5pt Overfull**, +且只出现在 `\maketitle` 那一行,怎么调 `\hspace`、`minipage` 宽度都去不掉。 + +根因:0 宽空盒让 `\linewidth` 在 titlepage 里的计算与 `\textwidth` 差了 5pt, +后续并排的 `\parbox` + 两个 `minipage` 就超了。 + +✅ 正解给占位盒一个满宽: + +```latex +\newcommand{\ouc@coverblank}{\rule{0pt}{0pt}\hspace{\linewidth}\rule{0pt}{0pt}} +``` + +实测 0 Overfull。 + +### 3. 要真封面就写 `\cover{文件}` + +把图片放进本目录,导言区加 `\cover{cover.jpg}` 即可,走插图分支。 + +## 版式参数 + +``` +页面 A4 210 × 297 mm +边距 上下 25.4mm,左右 20mm +headheight 2.17cm,headsep 4mm,footskip 12mm +字号 10pt(比仓库其他模板的 12pt 小,原教材如此) +行距 1.2 倍(elegantbook 默认) +封面色 RGB(32, 178, 170) 青绿 +``` + +## 标题编号 + +``` +章 1 +节 1.1 +小节 1.1.1 +小小节 1.1.1.1 ← secnumdepth=3,编号最多到这里 +第 5 级 (1)(2)(3) ← 不进编号体系,随小节重置 +``` + +第 5 级为什么要单独处理:`secnumdepth=4` 会排出 `3.1.1.1.1` 这种过长编号, +教材里很难看。改用带括号的序号,与正文行文习惯一致。 + +## 章的标准结构 + +原教材 13 章全部遵循,做模板时保留: + +```latex +\chapter{标题} +导语(3~5 段,概述本章问题、结构、与相邻章的关系) +\section{...} +\section{本章小结} % 用 \oucsummary +\section{习题} % 用 \oucexercises +``` + +两个小节做成了命令,避免各章写法不一致。 + +## 字体(全部来自仓库,无商业字体) + +| 用途 | 字体 | 来源目录 | +|---|---|---| +| 中文正文 | OUC Serif | `../fonts/ouc-serif/` | +| 中文黑体 | OUC Sans | `../fonts/ouc-sans/` | +| 中文楷体(代斜体) | OUC Kai | `../fonts/ouc-kai/` | +| 中文仿宋 | Zhuque Fangsong | `../fonts/zhuque-fangsong/` | +| 西文正文 | TeX Gyre Termes | `../fonts/tex-gyre-termes/` | +| 西文无衬线 | OUC Sans | `../fonts/ouc-sans/` | + +PDF 内嵌字体实测: +``` +OUCSerif-Regular / OUCSerif-Bold / OUCKai-Regular +TeXGyreTermes-Regular / -Bold / -Italic +LMMono10-Regular ← \texttt 用的等宽,TeX Live 自带 +``` + +⚠️ `LMMono10` 是 Computer Modern 等宽字体,用于 `\texttt{}`(代码、DOI)。 +仓库 fonts.tex **没有配等宽字体**,elegantbook 也没有。它由 TeX Live +自带,WSL 和 Windows 两端都有,所以跨平台一致,不算问题。 +要换成别的等宽字体,在导言区加 `\setmonofont{...}`。 + +## 验证 + +``` +8 页 error 0 Overfull 0 Underfull 0 +字体全部来自 ../fonts/,无商业字体、无系统字体 +全库 16/16 通过 +``` + +⚠️ Windows 端本机未能编译(TeX Live 写字体缓存被安全策略拦截), +但模板只依赖 TeX Live 标准宏包与发行版自带字体,不涉及平台特有资源。 +原教材本身就是在 Windows + TeX Live 2022 上编译的。 + +## 与原教材的差异 + +| 项 | 原教材 | 本模板 | 原因 | +|---|---|---|---| +| 封面图 | cover.jpg | 无(纯色带) | 模板不附图片 | +| 字体 | 方正四大字体 | 仓库开源字体 | 商业字体不能分发(#17 的规矩) | +| 西文无衬线 | texgyreheros | OUC Sans | 仓库没有 Hero | +| 正文 | 13 章 265 页 | 1 章示例 | 只抽骨架 | + +## 已知问题 + +`\texttt{}` 用的是 Computer Modern 等宽(LMMono10),与正文西文 +Termes 风格不搭。成因是仓库未统一配置等宽字体,见上文字体表。 +目前仅 2 处用到(示例里的 `booktabs` 和一条 DOI),不影响观感。 \ No newline at end of file diff --git a/教材/elegantbook.cls b/教材/elegantbook.cls new file mode 100755 index 0000000..d0a7f0f --- /dev/null +++ b/教材/elegantbook.cls @@ -0,0 +1,1489 @@ +%%%%%%%%%%%%%%%%%%%%%% +%% start of file `elegantbook.cls'. +%% Copyright 2013-2022 ElegantLaTeX (elegantlatex2e@gmail.com) +%% +%% This work may be distributed and/or modified freely +%% available at https://github.com/ElegantLaTeX/ElegantBook +% +%%%%%%%%%%%%%%%%%%%%% +% % !Mode:: "TeX:UTF-8" +\NeedsTeXFormat{LaTeX2e} +\ProvidesClass{elegantbook}[2022/12/31 v4.5 ElegantBook document class] + + +%%% +\RequirePackage{kvoptions} +\RequirePackage{etoolbox} +\SetupKeyvalOptions{family=ELEGANT, prefix=ELEGANT@, setkeys=\kvsetkeys} +\newcommand{\ekv}[1]{\kvsetkeys{ELEGANT}{#1}} +% ----- Colors ----- +\DeclareStringOption[blue]{color} +\DeclareStringOption[en]{lang} +\DeclareStringOption[answer]{result} +\DeclareStringOption[fancy]{mode} +\DeclareStringOption[normal]{device} +\DeclareStringOption[cm]{math} +\DeclareStringOption[marginfalse]{marginpar} +\DeclareStringOption[onecol]{toc} +\DeclareStringOption{scheme} + +% ----- backward compatibility +\DeclareVoidOption{green}{\ekv{color=green}} +\DeclareVoidOption{cyan}{\ekv{color=cyan}} +\DeclareVoidOption{blue}{\ekv{color=blue}} +\DeclareVoidOption{gray}{\ekv{color=gray}} +\DeclareVoidOption{black}{\ekv{color=black}} +\DeclareVoidOption{nocolor}{\ekv{color=none}} + +\DeclareVoidOption{chinese}{\ekv{scheme=chinese}} + +\DeclareStringOption[ctexfont]{chinesefont} +\DeclareVoidOption{ctexfont}{\ekv{chinesefont=ctexfont}} +\DeclareVoidOption{founder}{\ekv{chinesefont=founder}} +\DeclareVoidOption{nofont}{\ekv{chinesefont=nofont}} + +\DeclareVoidOption{en}{\ekv{lang=en}} +\DeclareVoidOption{cn}{\ekv{lang=cn}} +\DeclareVoidOption{it}{\ekv{lang=it}} +\DeclareVoidOption{fr}{\ekv{lang=fr}} +\DeclareVoidOption{nl}{\ekv{lang=nl}} +\DeclareVoidOption{hu}{\ekv{lang=hu}} +\DeclareVoidOption{de}{\ekv{lang=de}} +\DeclareVoidOption{mn}{\ekv{lang=mn}} +\DeclareVoidOption{pt}{\ekv{lang=pt}} +\DeclareVoidOption{jp}{\ekv{lang=jp}} + +\DeclareVoidOption{fancy}{\ekv{mode=fancy}} +\DeclareVoidOption{simple}{\ekv{mode=simple}} +\DeclareBoolOption[false]{usesamecnt} + +\DeclareVoidOption{answer}{\ekv{result=answer}} +\DeclareVoidOption{noanswer}{\ekv{result=noanswer}} + +\DeclareVoidOption{normal}{\ekv{device=normal}} +\DeclareVoidOption{pad}{\ekv{device=pad}} + +\DeclareStringOption[numeric-comp]{citestyle} +\DeclareStringOption[numeric]{bibstyle} + +\DeclareVoidOption{newtx}{\ekv{math=newtx}} +\DeclareVoidOption{mtpro2}{\ekv{math=mtpro2}} +\DeclareVoidOption{cm}{\ekv{math=cm}} + +\DeclareVoidOption{margintrue}{\ekv{marginpar=margintrue}} +\DeclareVoidOption{marginfalse}{\ekv{marginpar=marginfalse}} + + +\DeclareVoidOption{onecol}{\ekv{toc=onecol}} +\DeclareVoidOption{twocol}{\ekv{toc=twocol}} + +\DeclareStringOption[chapter]{thmcnt} +\DeclareVoidOption{chapter}{\ekv{thmcnt=chapter}} +\DeclareVoidOption{section}{\ekv{thmcnt=section}} + +\DeclareStringOption[bibtex]{bibend} +\DeclareVoidOption{biber}{\ekv{bibend=biber}} +\DeclareVoidOption{bibtex}{\ekv{bibend=bibtex}} + + +% ----- Math option ----- +\newcommand\mailto[1]{\href{mailto:#1}{\nolinkurl{#1}}} + +% ----- Title Style ----- +\DeclareStringOption[hang]{titlestyle}[hang] +% ----- backward compatibility +\DeclareVoidOption{hang}{\ekv{titlestyle=hang}} +\DeclareVoidOption{display}{\ekv{titlestyle=display}} +% ----- Default Options ----- +\DeclareDefaultOption{\PassOptionsToClass{\CurrentOption}{book}} + +\ProcessKeyvalOptions*\relax +% \ProcessOptions*\relax +\LoadClass[a4paper,oneside]{book} + +\RequirePackage{setspace} + +\RequirePackage{csquotes} + + +\RequirePackage{hyperref} +\hypersetup{ + breaklinks, + unicode, + linktoc=all, + bookmarksnumbered=true, + bookmarksopen=true, + pdfkeywords={ElegantBook}, + colorlinks, + linkcolor=winered, + citecolor=winered, + urlcolor=winered, + plainpages=false, + pdfstartview=FitH, + pdfborder={0 0 0}, + linktocpage +} +\newif\ifELEGANT@Hy@later + \@ifpackagelater{hyperref}{2022/05/16} + {\ELEGANT@Hy@latertrue} + {\ELEGANT@Hy@laterfalse} + +%% device settings +\RequirePackage{geometry} +\ifdefstring{\ELEGANT@device}{normal}{ + \geometry{ + a4paper, + top=25.4mm, bottom=25.4mm, + left=20mm, right=20mm, + headheight=2.17cm, + headsep=4mm, + footskip=12mm + } + \ifdefstring{\ELEGANT@marginpar}{margintrue}{ + \geometry{ + marginparwidth=5cm, marginparsep=5mm, + left=2cm,right=7cm}}{\relax}}{ + \relax} + +\ifdefstring{\ELEGANT@device}{pad}{ +\geometry{ + paperwidth=7.5in, + paperheight=10in, + margin=16mm, + headheight=2.17cm, + footskip=4mm +}}{\relax} + + +\RequirePackage{indentfirst,comment} +% fontsetting +\ifdefstring{\ELEGANT@math}{mtpro2}{ + \let\Bbbk\relax + \RequirePackage[lite]{mtpro2} +}{\relax} + +\setcounter{tocdepth}{1} +\renewcommand{\baselinestretch}{1.2} + +\PassOptionsToPackage{no-math}{fontspec} +\PassOptionsToPackage{quiet}{fontspec} +\RequirePackage{iftex} + +\ifpdftex + \RequirePackage{newtxtext} + \RequirePackage[scaled=.90]{helvet} +\else + \RequirePackage[no-math]{fontspec} + % ===== 本地化:改用仓库自带字体(原版用 TeXGyreTermesX / texgyreheros)===== + \setmainfont{texgyretermes}[ + UprightFont = *-regular , + BoldFont = *-bold , + ItalicFont = *-italic , + BoldItalicFont = *-bolditalic , + Extension = .otf , + Path = ../fonts/tex-gyre-termes/ , + Scale = 1.0] + + \setsansfont{OUCSans}[ + UprightFont = *-Regular , + BoldFont = *-Bold , + Extension = .otf , + Path = ../fonts/ouc-sans/ , + Scale = 1.0] +\fi + +\ifdefstring{\ELEGANT@lang}{cn}{ + \ifdefstring{\ELEGANT@chinesefont}{founder}{ + \RequirePackage[UTF8, scheme=plain, fontset=none]{ctex} + \setCJKmainfont[BoldFont={FZHei-B01},ItalicFont={FZKai-Z03}]{FZShuSong-Z01} + \setCJKsansfont[BoldFont={FZHei-B01}]{FZKai-Z03} + \setCJKmonofont[BoldFont={FZHei-B01}]{FZFangSong-Z02} + \setCJKfamilyfont{zhsong}{FZShuSong-Z01} + \setCJKfamilyfont{zhhei}{FZHei-B01} + \setCJKfamilyfont{zhkai}[BoldFont={FZHei-B01}]{FZKai-Z03} + \setCJKfamilyfont{zhfs}[BoldFont={FZHei-B01}]{FZFangSong-Z02} + \newcommand*{\songti}{\CJKfamily{zhsong}} + \newcommand*{\heiti}{\CJKfamily{zhhei}} + \newcommand*{\kaishu}{\CJKfamily{zhkai}} + \newcommand*{\fangsong}{\CJKfamily{zhfs}}}{\relax} + + \ifdefstring{\ELEGANT@chinesefont}{nofont}{ + \RequirePackage[UTF8,scheme=plain,fontset=none]{ctex} + \xeCJKsetup{AutoFakeBold=true} + }{\relax} + + \ifdefstring{\ELEGANT@chinesefont}{ctexfont}{ + \RequirePackage[UTF8,scheme=plain]{ctex} + \xeCJKsetup{AutoFakeBold=true} + }{\relax} + + \AfterEndPreamble{ + \setlength\parindent{2\ccwd}} +}{\relax} + +\ifcsname heiti\endcsname + \newcommand{\cbfseries}{\heiti} +\else + \newcommand{\cbfseries}{\bfseries} +\fi + + +\ifcsname kaishu\endcsname + \newcommand{\citshape}{\kaishu} +\else + \newcommand{\citshape}{\itshape} +\fi +\ifcsname kaishu\endcsname + \newcommand{\cnormal}{\kaishu} +\else + \newcommand{\cnormal}{\normalfont} +\fi + +\ifcsname fangsong\endcsname + \newcommand{\cfs}{\fangsong} +\else + \newcommand{\cfs}{\normalfont} +\fi + +\RequirePackage{anyfontsize} +\ifdefstring{\ELEGANT@math}{newtx}{ + \let\oldencodingdefault\encodingdefault + \let\oldrmdefault\rmdefault + \let\oldsfdefault\sfdefault + \let\oldttdefault\ttdefault + \def\encodingdefault{T1} + \renewcommand{\rmdefault}{ntxtlf} + \renewcommand{\sfdefault}{qhv} + \renewcommand{\ttdefault}{ntxtt} + \RequirePackage{newtxmath} + \let\encodingdefault\oldencodingdefault + \let\rmdefault\oldrmdefault + \let\sfdefault\oldsfdefault + \let\ttdefault\oldttdefault + \let\Bbbk\relax + \RequirePackage{esint} + %%% use yhmath pkg, uncomment following code + % \let\oldwidering\widering + % \let\widering\undefined + % \RequirePackage{yhmath} + % \let\widering\oldwidering + + %%% use esvect pkg, uncomment following code + % \RequirePackage{esvect} + + \DeclareSymbolFont{CMlargesymbols}{OMX}{cmex}{m}{n} + \let\sumop\relax\let\prodop\relax + \DeclareMathSymbol{\sumop}{\mathop}{CMlargesymbols}{"50} + \DeclareMathSymbol{\prodop}{\mathop}{CMlargesymbols}{"51} +}{\relax} + + +% ----- Handle Colors ----- +%% 章节以及页脚图形 + +\RequirePackage[table]{xcolor} +\ifdefstring{\ELEGANT@color}{green}{ + \definecolor{structurecolor}{RGB}{0,120,2}% + \definecolor{main}{RGB}{0,120,2}% + \definecolor{second}{RGB}{230,90,7}% + \definecolor{third}{RGB}{0,160,152}% +}{\relax} +\ifdefstring{\ELEGANT@color}{cyan}{ + \definecolor{structurecolor}{RGB}{31,186,190}% + \definecolor{main}{RGB}{59,180,5}% + \definecolor{second}{RGB}{175,153,8}% + \definecolor{third}{RGB}{244,105,102}% +}{\relax} +\ifdefstring{\ELEGANT@color}{blue}{ + \definecolor{structurecolor}{RGB}{60,113,183} + \definecolor{main}{RGB}{0,166,82}% + \definecolor{second}{RGB}{255,134,24}% + \definecolor{third}{RGB}{0,174,247}% +}{\relax} +\ifdefstring{\ELEGANT@color}{gray}{ + \definecolor{structurecolor}{RGB}{150,150,150} + \definecolor{main}{RGB}{150,150,150}% + \definecolor{second}{RGB}{150,150,150}% + \definecolor{third}{RGB}{150,150,150}% +}{\relax} +\ifdefstring{\ELEGANT@color}{black}{ + \definecolor{structurecolor}{RGB}{0,0,0} + \definecolor{main}{RGB}{0,0,0}% + \definecolor{second}{RGB}{0,0,0}% + \definecolor{third}{RGB}{0,0,0}% +}{\relax} + +%green color +\definecolor{structure1}{RGB}{0,120,2}% +\definecolor{main1}{RGB}{0,120,2}% +\definecolor{second1}{RGB}{230,90,7}% +\definecolor{third1}{RGB}{0,160,152}% +%cyan color +\definecolor{structure2}{RGB}{31,186,190}% +\definecolor{main2}{RGB}{59,180,5}% +\definecolor{second2}{RGB}{175,153,8}% +\definecolor{third2}{RGB}{244,105,102}% +%blue color +\definecolor{structure3}{RGB}{60,113,183} +\definecolor{main3}{RGB}{0,166,82}% +\definecolor{second3}{RGB}{255,134,24}% +\definecolor{third3}{RGB}{0,174,247}% +% gray color +\definecolor{structure4}{RGB}{150,150,150} +\definecolor{main4}{RGB}{150,150,150}% +\definecolor{second4}{RGB}{150,150,150}% +\definecolor{third4}{RGB}{150,150,150}% +% black color +\definecolor{structure5}{RGB}{0,0,0} +\definecolor{main5}{RGB}{0,0,0}% +\definecolor{second5}{RGB}{0,0,0}% +\definecolor{third5}{RGB}{0,0,0}% + +% corlor definition +\definecolor{winered}{rgb}{0.5,0,0} +\definecolor{bule}{RGB}{18,29,57} +\colorlet{coverlinecolor}{second} + + +% ----- Title Style ----- +\ifdefstring{\ELEGANT@titlestyle}{hang}{\def\style{hang}}{\relax} +\ifdefstring{\ELEGANT@titlestyle}{display}{\def\style{display}}{\relax} + +% reference: +% https://tex.stackexchange.com/questions/58506/how-to-make-a-new-command-similar-to-author +% https://pastebin.com/C8W4axzV +\newcommand\email[1]{\href{mailto:#1}{\nolinkurl{#1}}} + +\global\let\@title\@empty +\global\let\@author\@empty +\global\let\@date\@empty +\newcommand{\subtitle}[1]{\gdef\@subtitle{#1}} +\newcommand{\institute}[1]{\gdef\@institute{#1}} +\newcommand{\version}[1]{\gdef\@version{#1}} +\newcommand{\extrainfo}[1]{\gdef\@extrainfo{#1}} + +\RequirePackage{mwe} +\newcommand{\logo}[1]{\gdef\@logo{#1}} +\newcommand{\cover}[1]{\gdef\@cover{#1}} + +\newcommand{\question}[1]{{\par\citshape #1}\\[0.2ex]} + +\RequirePackage{enumerate} +% list/itemize/enumerate setting +\RequirePackage[shortlabels,inline]{enumitem} +\setlist{nolistsep} + +\RequirePackage[labelfont={bf,color=structurecolor}]{caption} +\captionsetup[table]{skip=3pt} +\captionsetup[figure]{skip=3pt} + +\AtBeginDocument{ + \setlength{\abovedisplayskip}{3pt} + \setlength{\belowdisplayskip}{3pt} + \RequirePackage[flushmargin,stable]{footmisc} + \setlength{\footnotesep}{12pt} +} + + + +\RequirePackage{graphicx} +%\RequirePackage{enumerate} +\RequirePackage{amsmath,mathrsfs,amsfonts,amssymb} +% \providecommand\qed{} +% \renewcommand{\qed}{\hfill\ensuremath{\square}} +\RequirePackage{booktabs} +\RequirePackage{multicol,multirow} + +\RequirePackage{fancyvrb} +\RequirePackage{makecell,lipsum,hologo} +%%中文结构名字 + + +%% 章节设置 +\RequirePackage[center,pagestyles]{titlesec} +\RequirePackage[title,titletoc,header]{appendix} + + +\RequirePackage[ + backend=\ELEGANT@bibend, + citestyle=\ELEGANT@citestyle, + bibstyle=\ELEGANT@bibstyle]{biblatex} + +\ifdefstring{\ELEGANT@lang}{cn}{ + \renewcommand{\baselinestretch}{1.3} + \renewcommand{\contentsname}{目录} + \renewcommand{\figurename}{图} + \renewcommand{\tablename}{表} + \renewcommand{\partname}{\color{structurecolor}} + \renewcommand{\thepart}{第\zhnumber{\arabic{part}}部分} + \renewcommand{\listfigurename}{插图目录} + \renewcommand{\listtablename}{表格目录} + \renewcommand{\bibname}{参考文献} + \newcommand{\ebibname}{参考文献} + \renewcommand{\appendixname}{附录} + \renewcommand{\appendixtocname}{附录} + \renewcommand{\indexname}{索\hspace{2em}引} + \newcommand\figref[1]{\textbf{图}~\ref{#1}} + \newcommand\tabref[1]{\textbf{表}~\ref{#1}} + \newcommand{\authorname}{\citshape 作者:} + \newcommand{\institutename}{\citshape 组织:} + \newcommand{\datename}{\citshape 时间:} + \newcommand{\versionname}{\citshape 版本:} + \newcommand{\notename}{笔记} + \renewcommand*{\proofname}{证明} + \newcommand{\definitionname}{定义} + \newcommand{\theoremname}{定理} + \newcommand{\axiomname}{公理} + \newcommand{\postulatename}{公设} + \newcommand{\lemmaname}{引理} + \newcommand{\propositionname}{命题} + \newcommand{\corollaryname}{推论} + \newcommand{\examplename}{例题} % + \newcommand{\instancename}{示例} % + \newcommand{\problemname}{问题} % 问题 + \newcommand{\exercisename}{练习} % 练习=习题 + \newcommand{\remarkname}{注} + \newcommand{\assumptionname}{假设} + \newcommand{\conclusionname}{结论} + \newcommand{\solutionname}{解} + \newcommand{\propertyname}{性质} + \newcommand{\introductionname}{内容提要} + \newcommand\bioinfo[2]{\gdef\@bioinfo{{\citshape #1}:#2}} + \newcommand{\updatename}{更新:} + \newcommand{\historyname}{版本更新历史} + \newcommand{\beforechap}{第} + \newcommand{\afterchap}{章} +}{\relax} + + +\ifdefstring{\ELEGANT@lang}{en}{ + \setlength\parindent{2em} + \newcommand\figref[1]{\textbf{Figure}~\ref{#1}} + \newcommand\tabref[1]{\textbf{Table}~\ref{#1}} + \renewcommand{\chaptername}{Chapter} + \renewcommand{\partname}{\color{structurecolor} Part} + \newcommand{\authorname}{\textbf{Author: }} + \newcommand{\institutename}{\textbf{Institute: }} + \newcommand{\datename}{\textbf{Date: }} + \newcommand{\versionname}{\textbf{Version: }} + \newcommand{\notename}{Note} + \newcommand{\proofname}{Proof} + \newcommand{\problemname}{Problem} + \newcommand{\definitionname}{Definition} + \newcommand{\theoremname}{Theorem} + \newcommand{\axiomname}{Axiom} + \newcommand{\postulatename}{Postulate} + \newcommand{\lemmaname}{Lemma} + \newcommand{\propositionname}{Proposition} + \newcommand{\corollaryname}{Corollary} + \newcommand{\examplename}{Example} + \newcommand{\exercisename}{Exercise} + \newcommand{\remarkname}{Remark} + \newcommand{\assumptionname}{Assumption} + \newcommand{\conclusionname}{Conclusion} + \newcommand{\solutionname}{Solution} + \newcommand{\propertyname}{Property} + \newcommand{\introductionname}{Introduction} + \renewcommand{\appendixname}{Appendix} + \newcommand{\ebibname}{Bibliography} + % \newcommand{\problemsetname}{Exercise} + \newcommand\bioinfo[2]{\gdef\@bioinfo{\textbf{#1}: #2}} + \newcommand{\updatename}{Updates:} + \newcommand{\historyname}{Version History} +}{\relax} + +\ifdefstring{\ELEGANT@lang}{it}{ + % \RequirePackage[utf8]{inputenc} + \RequirePackage[italian]{babel} + % \RequirePackage[T1]{fontenc} + \setlength\parindent{2em} + \newcommand\figref[1]{\textbf{Figura}~\ref{#1}} + \newcommand\tabref[1]{\textbf{Tabella}~\ref{#1}} + \renewcommand{\chaptername}{Chapter} + \newcommand{\authorname}{\textbf{Autore: }} + \newcommand{\institutename}{\textbf{Istituto: }} + \newcommand{\datename}{\textbf{Data: }} + \newcommand{\versionname}{\textbf{Versione: }} + \newcommand{\notename}{Nota} + \newcommand{\proofname}{Dimostrazione} + \newcommand{\problemname}{Problema} + \newcommand{\definitionname}{Definizione} + \newcommand{\theoremname}{Teorema} + \newcommand{\axiomname}{Assioma} + \newcommand{\postulatename}{Postulato} + \newcommand{\lemmaname}{Lemma} + \newcommand{\propositionname}{Proposizione} + \newcommand{\corollaryname}{Corollario} + \newcommand{\examplename}{Esempio} + \newcommand{\exercisename}{Esercizio} + \newcommand{\remarkname}{Commento} + \newcommand{\assumptionname}{Assunto} + \newcommand{\conclusionname}{Conclusione} + \newcommand{\solutionname}{Soluzione} + \newcommand{\propertyname}{Proprietà} + \newcommand{\introductionname}{Introduzione} + \newcommand\bioinfo[2]{\gdef\@bioinfo{\textbf{#1}: #2}} + \newcommand{\updatename}{Aggiornamenti:} + \newcommand{\ebibname}{Bibliografia} + \newcommand{\historyname}{Cronologia delle versioni} +}{\relax} + +\ifdefstring{\ELEGANT@lang}{fr}{ + \RequirePackage[utf8]{inputenc} + \RequirePackage[T1]{fontenc} + \RequirePackage[french]{babel} + \setlength\parindent{2em} + \renewcommand\figref[1]{\textbf{Figure}\ref{#1}} + \renewcommand\tabref[1]{\textbf{Tableau}\ref{#1}} + \renewcommand{\chaptername}{Chapitre} + \renewcommand{\authorname}{\textbf{Auteur: }} + \renewcommand{\institutename}{\textbf{Institut: }} + \renewcommand{\datename}{\textbf{Date: }} + \renewcommand{\versionname}{\textbf{Version: }} + \renewcommand{\notename}{Note} + \renewcommand{\proofname}{Démonstration} + \renewcommand{\problemname}{Problème} + \renewcommand{\definitionname}{Définition} + \renewcommand{\theoremname}{Théorème} + \renewcommand{\axiomname}{Axiôme} + \renewcommand{\postulatename}{Postulat} + \renewcommand{\lemmaname}{Lemme} + \renewcommand{\propositionname}{Proposition} + \renewcommand{\corollaryname}{Corollaire} + \renewcommand{\examplename}{Exemple} + \renewcommand{\exercisename}{Exercice} + \renewcommand{\remarkname}{Remarque} + \renewcommand{\assumptionname}{Supposition} + \renewcommand{\conclusionname}{Conclusion} + \renewcommand{\solutionname}{Solution} + \renewcommand{\propertyname}{Propriété} + \renewcommand{\introductionname}{Introduction} + \renewcommand{\problemsetname}{Exercice} + \renewcommand{\updatename}{Mises à jour:} + \newcommand{\ebibname}{Bibliographie} + \renewcommand{\historyname}{Historique des versions} +}{\relax} + + +\ifdefstring{\ELEGANT@lang}{nl}{ + \RequirePackage[dutch]{babel} + \setlength\parindent{2em} + \newcommand\figref[1]{\textbf{Figuur}~\ref{#1}} + \newcommand\tabref[1]{\textbf{Tabel}~\ref{#1}} + \renewcommand{\chaptername}{Hoofdstuk} + \newcommand{\authorname}{\textbf{Auteur: }} + \newcommand{\institutename}{\textbf{Instituut: }} + \newcommand{\datename}{\textbf{Datum: }} + \newcommand{\versionname}{\textbf{Versie: }} + \newcommand{\notename}{Opmerking} + \newcommand{\proofname}{Bewijs} + \newcommand{\problemname}{Probleem} + \newcommand{\definitionname}{Definitie} + \newcommand{\theoremname}{Stelling} + \newcommand{\axiomname}{Uitgangspunt} + \newcommand{\postulatename}{Hypothese} + \newcommand{\lemmaname}{Lemma} + \newcommand{\propositionname}{Voorstel} + \newcommand{\corollaryname}{Gevolgtrekking} + \newcommand{\examplename}{Voorbeeld} + \newcommand{\exercisename}{Oefening} + \newcommand{\remarkname}{Commentaar} + \newcommand{\assumptionname}{Veronderstelling} + \newcommand{\conclusionname}{Besluit} + \newcommand{\solutionname}{Oplossing} + \newcommand{\propertyname}{Eigenschap} + \newcommand{\introductionname}{Introductie} + \newcommand{\problemsetname}{Probleemcomplex} + \newcommand\bioinfo[2]{\gdef\@bioinfo{\textbf{#1}: #2}} + \newcommand{\updatename}{Update:} + \newcommand{\ebibname}{Bibliographie} + \newcommand{\historyname}{Versie Geschiedenis} +}{\relax} + + +\ifdefstring{\ELEGANT@lang}{hu}{ + \RequirePackage[magyar]{babel} + \setlength\parindent{2em} + \newcommand\figref[1]{\ref{#1}~\textbf{Ábra}} + \newcommand\tabref[1]{\ref{#1}~\textbf{Táblázat}} + \renewcommand{\chaptername}{Fejezet} + \newcommand{\authorname}{\textbf{Szerző: }} + \newcommand{\institutename}{\textbf{Intézmény: }} + \newcommand{\datename}{\textbf{Dátum: }} + \newcommand{\versionname}{\textbf{Verziószám: }} + \newcommand{\notename}{Jegyzet} + \newcommand{\proofname}{Bizonyítás} + \newcommand{\problemname}{Probléma} + \newcommand{\definitionname}{Definíció} + \newcommand{\theoremname}{Tétel} + \newcommand{\axiomname}{Axióma} + \newcommand{\postulatename}{Követelmény} + \newcommand{\lemmaname}{Lemma} + \newcommand{\propositionname}{Előzmény} + \newcommand{\corollaryname}{Következmény} + \newcommand{\examplename}{Példa} + \newcommand{\exercisename}{Feladat} + \newcommand{\remarkname}{Megjegyzés} + \newcommand{\assumptionname}{Sejtés} + \newcommand{\conclusionname}{Összefoglalás} + \newcommand{\solutionname}{Megoldás} + \newcommand{\propertyname}{Tulajdonság} + \newcommand{\introductionname}{Bevezetés} + \newcommand{\problemsetname}{Feladatok} + \newcommand\bioinfo[2]{\gdef\@bioinfo{\textbf{#1}: #2}} + \newcommand{\updatename}{Frissítve:} + \newcommand{\ebibname}{Bibliográfia} + \newcommand{\historyname}{Korábbi verziók} +}{\relax} + +\ifdefstring{\ELEGANT@lang}{de}{ + \setlength\parindent{2em} + \renewcommand{\contentsname}{Inhaltsverzeichnis} + \newcommand\figref[1]{\textbf{Figur}~\ref{#1}} + \newcommand\tabref[1]{\textbf{Tabelle}~\ref{#1}} + \renewcommand{\partname}{\color{structurecolor} Teil} + \renewcommand{\listfigurename}{Abbildungsverzeichnis} + \renewcommand{\listtablename}{Tabellenverzeichnis} + \renewcommand{\bibname}{Bibliographie} + \renewcommand{\appendixname}{Anhang} + \renewcommand{\chaptername}{Kapitel} + \newcommand{\authorname}{\textbf{Autor: }} + \newcommand{\institutename}{\textbf{Institut: }} + \newcommand{\datename}{\textbf{Datum: }} + \newcommand{\versionname}{\textbf{Version: }} + \newcommand{\notename}{Notiz} + \newcommand{\proofname}{Beweis} + \newcommand{\problemname}{Problem} + \newcommand{\definitionname}{Definition} + \newcommand{\theoremname}{Theorem} + \newcommand{\axiomname}{Axiom} + \newcommand{\postulatename}{Postulat} + \newcommand{\lemmaname}{Lemma} + \newcommand{\propositionname}{Behauptung} + \newcommand{\corollaryname}{Corollary} + \newcommand{\examplename}{Beispiel} + \newcommand{\instancename}{Beispiel} % + \newcommand{\exercisename}{\"{U}bung} + \newcommand{\remarkname}{Anmerkung} + \newcommand{\assumptionname}{Annahme} + \newcommand{\conclusionname}{Abschluss} + \newcommand{\solutionname}{Aufl\"{o}sung} + \newcommand{\propertyname}{Property} + \newcommand{\introductionname}{Einleitung} + \newcommand\bioinfo[2]{\gdef\@bioinfo{\textbf{#1}: #2}} + \newcommand{\updatename}{Updates:} + \renewcommand{\ebibname}{Bibliographie} + \newcommand{\historyname}{Version der Geschichte} +}{\relax} + +\ifdefstring{\ELEGANT@lang}{es}{ + \RequirePackage[spanish]{babel} + \setlength\parindent{2em} + \newcommand\figref[1]{\textbf{Figura}~\ref{#1}} + \newcommand\tabref[1]{\textbf{Tabla}~\ref{#1}} + \renewcommand{\spanishchaptername}{Capítulo} + \newcommand{\authorname}{\textbf{Autor: }} + \newcommand{\institutename}{\textbf{Instituto: }} + \newcommand{\datename}{\textbf{Fecha: }} + \newcommand{\versionname}{\textbf{Versión: }} + \newcommand{\notename}{Nota} + \newcommand{\proofname}{Demostración} + \newcommand{\problemname}{Problema} + \newcommand{\definitionname}{Definición} + \newcommand{\theoremname}{Teorema} + \newcommand{\axiomname}{Axioma} + \newcommand{\postulatename}{Postulado} + \newcommand{\lemmaname}{Lema} + \newcommand{\propositionname}{Proposición} + \newcommand{\corollaryname}{Corolario} + \newcommand{\examplename}{Ejemplo} + \newcommand{\exercisename}{Ejercicio} + \newcommand{\remarkname}{Comentario} + \newcommand{\assumptionname}{Asunto} + \newcommand{\conclusionname}{Conclusión} + \newcommand{\solutionname}{Solución} + \newcommand{\propertyname}{Propiedad} + \newcommand{\introductionname}{Introducción} + \newcommand{\problemsetname}{Ejercicio} + \newcommand\bioinfo[2]{\gdef\@bioinfo{\textbf{#1}: #2}} + \newcommand{\updatename}{Actualización:} + \newcommand{\ebibname}{Bibliografía} + \newcommand{\historyname}{Historial de versiones} +}{\relax} + +\ifdefstring{\ELEGANT@lang}{mn}{ + \RequirePackage[mongolian]{babel} + \RequirePackage[utf8]{inputenc} + \RequirePackage[T2A]{fontenc} + \setlength\parindent{2em} + \newcommand\figref[1]{\textbf{Зураг}\ref{#1}} + \newcommand\tabref[1]{\textbf{Хүснэгт}\ref{#1}} + \renewcommand{\chaptername}{Бүлэг} + \newcommand{\authorname}{\textbf{Зохиогч: }} + \newcommand{\institutename}{\textbf{Сургууль: }} + \newcommand{\datename}{\textbf{Огноо: }} + \newcommand{\versionname}{\textbf{Хувилбар: }} + \newcommand{\notename}{Тэмдэглэл} + \newcommand{\proofname}{Баталгаа} + \newcommand{\problemname}{Бодлого} + \newcommand{\definitionname}{Тодорхойлолт} + \newcommand{\theoremname}{Томьёо} + \newcommand{\axiomname}{Аксиом} + \newcommand{\postulatename}{Постулат} + \newcommand{\lemmaname}{Лемма} + \newcommand{\propositionname}{Таамаглал} + \newcommand{\corollaryname}{Үр дүн} + \newcommand{\examplename}{Жишээ} + \newcommand{\exercisename}{Дасгал} + \newcommand{\remarkname}{Тайлбар} + \newcommand{\assumptionname}{Урьдчилсан нөхцөл} + \newcommand{\conclusionname}{Дүгнэлт} + \newcommand{\solutionname}{Хариулт} + \newcommand{\propertyname}{Шинж чанар} + \newcommand{\introductionname}{Удиртгал} + \newcommand{\problemsetname}{Бодлогууд} + \newcommand\bioinfo[2]{\gdef@bioinfo{\textbf{#1}: #2}} + \newcommand{\updatename}{Шинэчлэлтүүд:} + \newcommand{\ebibname}{Ном зүй} + \newcommand{\historyname}{Хувилбарын түүх} +}{\relax} + + +\ifdefstring{\ELEGANT@lang}{pt}{ + \RequirePackage[portuguese]{babel} + \setlength\parindent{2em} + \newcommand\figref[1]{\textbf{Figura}~\ref{#1}} + \newcommand\tabref[1]{\textbf{Tabela}~\ref{#1}} + \renewcommand{\chaptername}{Capítulo} + \newcommand{\authorname}{\textbf{Autor: }} + \newcommand{\institutename}{\textbf{Instituição: }} + \newcommand{\datename}{\textbf{Data: }} + \newcommand{\versionname}{\textbf{Versão: }} + \newcommand{\notename}{Observação} + \newcommand{\proofname}{Demostração} + \newcommand{\problemname}{Problema} + \newcommand{\definitionname}{Definição} + \newcommand{\theoremname}{Teorema} + \newcommand{\axiomname}{Axioma} + \newcommand{\postulatename}{Postulado} + \newcommand{\lemmaname}{Lema} + \newcommand{\propositionname}{Proposição} + \newcommand{\corollaryname}{Corolário} + \newcommand{\examplename}{Exemplo} + \newcommand{\exercisename}{Exercício} + \newcommand{\remarkname}{Comentário} + \newcommand{\assumptionname}{Assunto} + \newcommand{\conclusionname}{Conclusão} + \newcommand{\solutionname}{Soluções} + \newcommand{\propertyname}{Propiedade} + \newcommand{\introductionname}{Introdução} + \newcommand{\problemsetname}{Questão} + \newcommand\bioinfo[2]{\gdef\@bioinfo{\textbf{#1}: #2}} + \newcommand{\updatename}{Atualização: } + \newcommand{\ebibname}{Bibliografia} + \newcommand{\historyname}{Histórico de versões} +}{\relax} + + +\ifdefstring{\ELEGANT@lang}{jp}{ + \RequirePackage{luatexja} + \setlength\parindent{2em} + \renewcommand{\contentsname}{目次} + \newcommand\figref[1]{\textbf{図}~\ref{#1}} + \newcommand\tabref[1]{\textbf{表}~\ref{#1}} + \renewcommand{\partname}{\color{structurecolor}} + \renewcommand{\listfigurename}{イラストカタログ} + \renewcommand{\listtablename}{表カタログ} + \renewcommand{\bibname}{参考文献} + \renewcommand{\appendixname}{付録} + \renewcommand{\chaptername}{第 \thechapter 章} + \newcommand{\authorname}{\textbf{著者:}} + \newcommand{\institutename}{\textbf{組織団体:}} + \newcommand{\datename}{\textbf{日付:}} + \newcommand{\versionname}{\textbf{\citshape バージョン:}} + \newcommand{\notename}{ノート} + \newcommand{\proofname}{証明} + \newcommand{\problemname}{問題} + \newcommand{\definitionname}{定義} + \newcommand{\theoremname}{定理} + \newcommand{\axiomname}{公理} + \newcommand{\postulatename}{公準} + \newcommand{\lemmaname}{補題} + \newcommand{\propositionname}{命題} + \newcommand{\corollaryname}{系} + \newcommand{\examplename}{例題} + \newcommand{\instancename}{例} + \newcommand{\exercisename}{練習} + \newcommand{\remarkname}{注} + \newcommand{\assumptionname}{仮設} + \newcommand{\conclusionname}{結論} + \newcommand{\solutionname}{解答} + \newcommand{\propertyname}{性質} + \newcommand{\introductionname}{内容概要} + \newcommand\bioinfo[2]{\gdef\@bioinfo{\textbf{#1}: #2}} + \newcommand{\updatename}{更新:} + \newcommand{\ebibname}{参考文献} + \newcommand{\historyname}{バージョン更新履歴} +}{\relax} + + +\graphicspath{{./figure/}{./figures/}{./image/}{./images/}{./graphics/}{./graphic/}{./pictures/}{./picture/}} + +\RequirePackage{tikz} %% load tikz without tikz +\usetikzlibrary{backgrounds,calc,shadows,positioning,fit} +\newcommand*\circled[1]{\tikz[baseline=(char.base)]{ + \node[shape=circle,draw,inner sep=1pt] (char) {#1};}} +% https://tex.stackexchange.com/questions/7032/good-way-to-make-textcircled-numbers + +\newcommand*{\eitemi}{\tikz \draw [baseline, ball color=structurecolor,draw=none] circle (2pt);} +\newcommand*{\eitemii}{\tikz \draw [baseline, fill=structurecolor,draw=none,circular drop shadow] circle (2pt);} +\newcommand*{\eitemiii}{\tikz \draw [baseline, fill=structurecolor,draw=none] circle (2pt);} +\setlist[enumerate,1]{label=\color{structurecolor}\arabic*.} +\setlist[enumerate,2]{label=\color{structurecolor}(\alph*).} +\setlist[enumerate,3]{label=\color{structurecolor}\Roman*.} +\setlist[enumerate,4]{label=\color{structurecolor}\Alph*.} +\setlist[itemize,1]{label={\eitemi}} +\setlist[itemize,2]{label={\eitemii}} +\setlist[itemize,3]{label={\eitemiii}} + +\RequirePackage{apptools} + +% appendix chapter: + +\ifdefstring{\ELEGANT@lang}{cn}{ + \ifdefstring{\ELEGANT@scheme}{chinese}{ + \newcommand{\xchaptertitle}{第\zhnumber{\arabic{chapter}}章} }{ + \newcommand{\xchaptertitle}{第 \thechapter{} 章}} +% Hyperref 2022/05/16's changelog.txt said +% * nameref is loaded always and earlier (issue#235) + \AtBeginDocument{ + \ifELEGANT@Hy@later + \patchcmd{\NR@chapter}% + {\numberline{\thechapter}}{\numberline{\xchaptertitle}}% + {}{\fail} + \else + \patchcmd{\Hy@org@chapter}% + {\numberline{\thechapter}}{\numberline{\xchaptertitle}}% + {}{\fail} + \fi + } + } + {\newcommand{\xchaptertitle}{\chaptername~\thechapter~}} + +\setcounter{secnumdepth}{5} +\titleformat{\chapter}[\style]{\bfseries}{ + \filcenter\LARGE\enspace\bfseries{\color{structurecolor} \IfAppendix{\appendixname\;\thechapter\;}{\xchaptertitle\;}}}{1pt}{ + \LARGE\bfseries\color{structurecolor}\filcenter}[] +\titleformat{\section}[hang]{\bfseries}{ + \Large\bfseries{\color{structurecolor}\thesection}\enspace}{1pt}{% + \color{structurecolor}\Large\bfseries\filright} +\titleformat{\subsection}[hang]{\bfseries}{ + \large\bfseries\color{structurecolor}\thesubsection\enspace}{1pt}{% + \color{structurecolor}\large\bfseries\filright} +\titleformat{\subsubsection}[hang]{\bfseries}{ + \large\bfseries\color{structurecolor}\thesubsubsection\enspace}{1pt}{% + \color{structurecolor}\large\bfseries\filright} + +\titlespacing{\chapter}{0pt}{-20pt}{1.3\baselineskip} +%\titlespacing{\subsection}{0pt}{0.5\baselineskip}{-\baselineskip} + + + +%%define the +%%definition theorem postulate axiom corollary lemma proposition +%%and proof environment +\RequirePackage{pifont,manfnt,bbding} +\RequirePackage[many]{tcolorbox} +% \newlength{\normalparindent} +% \setlength{\normalparindent}{\parindent} +\newcommand{\ELEGANT@tmp@tl}{} +\ifELEGANT@usesamecnt + \newcounter{ELEGANT@samecnt} + \counterwithin{ELEGANT@samecnt}{\ELEGANT@thmcnt} + \tcbset{ + new/usesamecnt/.style = {use counter = ELEGANT@samecnt} + } +\else + \tcbset{ + new/usesamecnt/.style = {} + } +\fi + +\ifdefstring{\ELEGANT@mode}{fancy}{ + \tcbset{ + common/.style={ + fontupper=\citshape, + lower separated=false, + % before upper={\setlength{\parindent}{\normalparindent}}, + coltitle=white, + colback=gray!5, + boxrule=0.5pt, + fonttitle=\bfseries, + enhanced, + breakable, + top=8pt, + before skip=8pt, + attach boxed title to top left={ + yshift=-0.11in, + xshift=0.15in}, + boxed title style={ + boxrule=0pt, + colframe=white, + arc=0pt, + outer arc=0pt}, + separator sign={.},}, + defstyle/.style={ + common, + colframe=main, + colback=main!5, + colbacktitle=main, + overlay unbroken and last={ + \node[anchor=south east, outer sep=0pt] at (\linewidth-width,0) { + \textcolor{main}{$\clubsuit$}};}}, + thmstyle/.style={ + common, + colframe=second, + colback=second!5, + colbacktitle=second, + overlay unbroken and last={ + \node[anchor=south east, outer sep=0pt] at (\linewidth-width,0) { + \textcolor{second}{$\heartsuit$}};}}, + prostyle/.style={ + common, + colframe=third, + colback=third!5, + colbacktitle=third, + overlay unbroken and last={ + \node[anchor=south east, outer sep=0pt] at (\linewidth-width,0) { + \textcolor{third}{$\spadesuit$}};}}, + ELEGANT@title/.code n args={2} + { + + \tcbset + { + title= + { + \csname #1name\endcsname~% + \ifdef{\thetcbcounter}{\thetcbcounter}{}% + \ifblank{#2}{}{\ (#2)} + } + } + }, + ELEGANT@label/.code n args={2} + { + \ifblank{#2} + {}{\tcbset{label={#1:#2}}} + } + } + + % define an internal control sequence \ELEGANT@newtheorem for fancy mode's newtheorem + % #1 is the environment name, #2 is the prefix of label, #3 is the style + % style: thmstyle, defstyle, prostyle + % e.g. \ELEGANT@newtheorem{theorem}{thm}{thmstyle} + % will define two environments: numbered ``theorem'' and no-numbered ``theorem*'' + % WARNING FOR MULTILINGUAL: this cs will automatically find \theoremname's definition, + % WARNING FOR MULTILINGUAL: it should be defined in language settings. + \NewDocumentCommand \ELEGANT@newtheorem { m m m O{} }{ + \ifcsundef{#1name}{% + \ClassError{elegantbook}{% + \ #1name undefined, \MessageBreak + Please check in language setting + }{} + }{\relax} + \expandafter\ifblank\expandafter{#4}{ + \tcbset{ + new/usecnt/.style={} + } + }{ + \tcbset{ + new/usecnt/.style= {use counter from = #4} + } + } + \DeclareTColorBox[auto counter,number within=\ELEGANT@thmcnt,usesamecnt,usecnt]{#1}{ g o t\label g }{ + common,#3, + IfValueTF={##1} + {ELEGANT@title={#1}{##1}} + { + IfValueTF={##2} + {ELEGANT@title={#1}{##2}} + {ELEGANT@title={#1}{}} + }, + IfValueT={##4} + { + IfBooleanTF={##3} + {label={##4}} + {ELEGANT@label={#2}{##4}} + } + } + \DeclareTColorBox{#1*}{ g o }{ + common,#3, + IfValueTF={##1} + {ELEGANT@title={#1}{##1}} + { + IfValueTF={##2} + {ELEGANT@title={#1}{##2}} + {ELEGANT@title={#1}{}} + }, + } + } + % define several environment + % we define headers like \definitionname before + \ELEGANT@newtheorem{theorem}{thm}{thmstyle} + \ELEGANT@newtheorem{definition}{def}{defstyle} + \ELEGANT@newtheorem{postulate}{pos}{thmstyle} + \ELEGANT@newtheorem{axiom}{axi}{thmstyle} + \ELEGANT@newtheorem{corollary}{cor}{thmstyle} + \ELEGANT@newtheorem{lemma}{lem}{thmstyle} + \ELEGANT@newtheorem{proposition}{pro}{prostyle} +}{\relax} + + +\ifdefstring{\ELEGANT@mode}{simple}{ + \let\openbox\relax + \RequirePackage{amsthm} + \let\proof\relax + % \let\proofname\relax + \let\endproof\relax + + % declare new theorem styles: defstyle, thmstyle, prostyle + \newtheoremstyle{defstyle}{3pt}{3pt}{\citshape}{-3pt}{ + \bfseries\color{main}}{}{0.5em}{\thmname{#1} \thmnumber{#2} \thmnote{(#3)}} + \newtheoremstyle{thmstyle}{3pt}{3pt}{\citshape}{-3pt}{ + \bfseries\color{second}}{}{0.5em}{\thmname{#1} \thmnumber{#2} \thmnote{(#3)}} + \newtheoremstyle{prostyle}{3pt}{3pt}{\citshape}{-3pt}{ + \bfseries\color{third}}{}{0.5em}{\thmname{#1} \thmnumber{#2} \thmnote{(#3)}} + + % define an internal control sequence \ELEGANT@newtheorem for simple mode's newtheorem + % #1 is the environment name, #2 is the style + % style: thmstyle, defstyle, prostyle + % e.g. \ELEGANT@newtheorem{theorem}{thmstyle} + % will define two environments: numbered ``theorem'' and no-numbered ``theorem*'' + % WARNING FOR MULTILINGUAL: this cs will automatically find \theoremname's definition, + % WARNING FOR MULTILINGUAL: it should be defined in language settings. + \NewDocumentCommand \ELEGANT@newtheorem { m m O{} } { + \theoremstyle{#2} + \ifELEGANT@usesamecnt + \newtheorem{#1}[ELEGANT@samecnt]{\csname #1name\endcsname} + \else + \ifblank{#3}{ + \newtheorem{#1}{\csname #1name\endcsname}[\ELEGANT@thmcnt] + }{ + \newtheorem{#1}[#3]{\csname #1name\endcsname} + } + \fi + \newtheorem*{#1*}{\csname #1name\endcsname} + } + + % define several environment + % we define headers like \definitionname before + \ELEGANT@newtheorem{theorem}{thmstyle} + \ELEGANT@newtheorem{definition}{defstyle} + \ELEGANT@newtheorem{postulate}{thmstyle} + \ELEGANT@newtheorem{axiom}{thmstyle} + \ELEGANT@newtheorem{corollary}{thmstyle} + \ELEGANT@newtheorem{lemma}{thmstyle} + \ELEGANT@newtheorem{proposition}{prostyle} +}{\relax} + +% define an user control sequence \elegantnewtheorem +% #1 is the evironment, #2 is the theorem header +% #3 is the style #4 is the prefix for fancy mode +% style: thmstyle, defstyle, prostyle +% if #4 is given in simple mode, an error will be raised +% if #4 isn't given in fancy mode, the prefix will be set equal to #1, +% and a warning will be raised +\newcommand{\ELEGANT@newtheorem@warning}{} +\newcommand{\ELEGANT@newtheorem@error}{} +\newcommand{\ELEGANT@usesamecnt@warning}{} +\NewDocumentCommand\elegantnewtheorem{ m m m g O{} } + { + \renewcommand{\ELEGANT@usesamecnt@warning}{ + \ClassWarning{elegantbook}{% + [#5] won't make sence with option \MessageBreak + `usesamecnt'. + } + } + \renewcommand{\ELEGANT@newtheorem@warning}{ + \ClassWarning{elegantbook}{% + Because you didn't provide a prefix, \MessageBreak + we use #1 as the default prefix. \MessageBreak + You have to use \MessageBreak + \ref{#1:label} to refer a \MessageBreak + \begin{#1}{name}{label} environment. \MessageBreak + } + } + \renewcommand{\ELEGANT@newtheorem@error}{ + \ClassError{elegantbook}{% + You can't set a prefix in mode ``simple''.\MessageBreak + Just use \MessageBreak + \elegantnewtheorem{#1}{#2}{#3} + }{% + We are using ``amsthm'' package to \MessageBreak + generate theorem-like theorem. \MessageBreak + The 4th parameter ``prefix'' isn't allowed. + } + } + \ifELEGANT@usesamecnt + \ifblank{#5}{}{\ELEGANT@usesamecnt@warning} + \else + \renewcommand{\ELEGANT@tmp@tl}{#5} + \fi + \expandafter\def\csname #1name\endcsname{#2} + \ifdefstring{\ELEGANT@mode}{simple}{% + \IfValueTF{#4} + {\ELEGANT@newtheorem@error} + {\ELEGANT@newtheorem{#1}{#3}[\ELEGANT@tmp@tl]} + }{\relax} + \ifdefstring{\ELEGANT@mode}{fancy}{% + \IfValueTF{#4} + { + \def\ELEGANT@temp@prefix{#4} + \ifdefempty{\ELEGANT@temp@prefix} + { + \ELEGANT@newtheorem{#1}{#1}{#3}[\ELEGANT@tmp@tl] + \ELEGANT@newtheorem@warning + } + {\ELEGANT@newtheorem{#1}{#4}{#3}[\ELEGANT@tmp@tl]} + } + { + \ELEGANT@newtheorem{#1}{#1}{#3}[\ELEGANT@tmp@tl] + \ELEGANT@newtheorem@warning + } + }{\relax} + } + +% main(green-def): example exercise problem solution +% second(orange-thm): proof note remark +% third(blue-prop): assumptions property conclusion custom + +%% Example with counter +\newcounter{exam}[chapter] +\setcounter{exam}{0} +\renewcommand{\theexam}{\thechapter.\arabic{exam}} +\newenvironment{example}[1][]{ + \refstepcounter{exam} + \par\noindent\textbf{\color{main}{\examplename} \theexam #1 }\rmfamily}{ + \par\ignorespacesafterend} + +%% Exercise with counter +\newcounter{exer}[chapter] +\setcounter{exer}{0} +\renewcommand{\theexer}{\thechapter.\arabic{exer}} +\newenvironment{exercise}[1][]{ + \refstepcounter{exer} + \par\noindent\makebox[-3pt][r]{ + \scriptsize\color{red!90}\HandPencilLeft\quad} + \textbf{\color{main}{\exercisename} \theexer #1 }\rmfamily}{ + \par\ignorespacesafterend} + +%% Problem with counter +\newcounter{prob}[chapter] +\setcounter{prob}{0} +\renewcommand{\theprob}{\thechapter.\arabic{prob}} +\newenvironment{problem}[1][]{ + \refstepcounter{prob} + \par\noindent\textbf{\color{main}{\problemname} \theprob #1 }\rmfamily}{ + \par\ignorespacesafterend} + +\newenvironment{note}{ + \par\noindent\makebox[-3pt][r]{ + \scriptsize\color{red!90}\textdbend\quad} + \textbf{\color{second}\notename} \citshape}{\par} + +\newenvironment{proof}{ + \par\noindent\textbf{\color{second}\proofname\;} + \color{black!90}\cfs}{ + % \hfill$\Box$\quad + \par} + +\newenvironment{solution}{\par\noindent\textbf{\color{main}\solutionname} \citshape}{\par} +\newenvironment{remark}{\noindent\textbf{\color{second}\remarkname}}{\par} +\newenvironment{assumption}{\par\noindent\textbf{\color{third}\assumptionname} \citshape}{\par} +\newenvironment{conclusion}{\par\noindent\textbf{\color{third}\conclusionname} \citshape}{\par} +\newenvironment{property}{\par\noindent\textbf{\color{third}\propertyname} \citshape}{\par} +\newenvironment{custom}[1]{\par\noindent\textbf{\color{third} #1} \citshape}{\par} + +\RequirePackage{multicol} +\tcbset{ + introductionsty/.style={ + enhanced, + breakable, + colback=structurecolor!10, + colframe=structurecolor, + fonttitle=\bfseries, + colbacktitle=structurecolor, + fontupper=\citshape, + attach boxed title to top center={yshift=-3mm,yshifttext=-1mm}, + boxrule=0pt, + toprule=0.5pt, + bottomrule=0.5pt, + top=8pt, + before skip=8pt, + sharp corners + }, +} + + +\newenvironment{introduction}[1][\introductionname]{ + \begin{tcolorbox}[introductionsty,title={#1}] + \begin{multicols}{2} + \begin{itemize}[label=\textcolor{structurecolor}{\upshape\scriptsize\SquareShadowBottomRight}]}{ + \end{itemize} + \end{multicols} + \end{tcolorbox}} + +\RequirePackage{adforn} + +\newenvironment{problemset}[1][\xchaptertitle~\exercisename]{ + \vspace*{10pt} + \begin{center} + \phantomsection\addcontentsline{toc}{section}{\texorpdfstring{\xchaptertitle~\exercisename}{\exercisename}} + % \markboth{#1}{\rightmark} + \markright{#1} + \textcolor{structurecolor}{\Large\bfseries\adftripleflourishleft~#1~\adftripleflourishright} + \end{center} + \begin{enumerate}}{ + \end{enumerate}} + +\def\relsec{\endgroup start} +\def\endrelsec{end\begingroup\def \@currenvir {relsec}} + +\ifdefstring{\ELEGANT@result}{noanswer}{ + \AtBeginDocument{ + \excludecomment{solution} + \excludecomment{proof} + \excludecomment{inline} + } +}{\relax} + + +%页眉页脚 +\RequirePackage{fancyhdr} +\fancyhf{} + + +\fancyfoot[c]{\color{structurecolor}\small\thepage} +\if@twoside + \fancyhead[EL]{\color{structurecolor}\cnormal\leftmark} + \fancyhead[OR]{\color{structurecolor}\cnormal\rightmark} +\else + \fancyhead[R]{\color{structurecolor}\cnormal\rightmark} +\fi + +\renewcommand{\headrule}{\color{structurecolor}\hrule width\textwidth} +\pagestyle{fancy} +\renewcommand{\headrulewidth}{1pt} +% \renewcommand{\headrule}{} +\fancypagestyle{plain}{\renewcommand{\headrulewidth}{0pt}\fancyhf{}\renewcommand{\headrule}{}} +\renewcommand{\sectionmark}[1]{\markright{\thesection\, #1}{}} +\renewcommand{\chaptermark}[1]{\markboth{\xchaptertitle\, #1}{}} + + +\newcommand{\ouc@coverblank}{\rule{0pt}{0pt}\hspace{\linewidth}\rule{0pt}{0pt}} +\renewcommand*{\maketitle}{% +\hypersetup{pageanchor=false} +\pagenumbering{Alph} +\begin{titlepage} + \newgeometry{margin = 0in} + \parindent=0pt + \ifdefstring{\ELEGANT@device}{normal}{ + \ifcsname @cover\endcsname + \includegraphics[width=\linewidth]{\@cover} + \else + \ouc@coverblank + \fi + }{\relax} + \ifdefstring{\ELEGANT@device}{pad}{ + \ifcsname @cover\endcsname + \includegraphics[trim=0 26bp 0 26bp,clip=true, width=\linewidth]{\@cover} + \else + \ouc@coverblank + \fi + }{\relax} + \setlength{\fboxsep}{0pt} + % 本地化:色带宽度用 \hsize 而不是 \linewidth。 + % \newgeometry{margin=0in} 之后 \linewidth 的更新时机与 \makebox 的 + % 宽度计算有时序差,导致实测 Overfull 5pt(原版有封面图时被图宽度 + % 掩盖,换成占位空盒后暴露出来)。 + \colorbox{coverlinecolor}{\makebox[\linewidth][c]{\shortstack[c]{\vspace{0.5in}}}} + \vfill + \vskip-2ex + \hspace{2em} + \parbox{0.8\textwidth}{ + \bfseries\Huge + \ifcsname @title\endcsname \@title \fi + \par} + \vfill + \vspace{-1.0cm} + \setstretch{2.5} + \hspace{2.5em} + \begin{minipage}[c]{0.67\textwidth} + {\color{darkgray}\bfseries\Large + \ifcsname @subtitle\endcsname\@subtitle\\[2ex]\fi} + \color{gray}\normalsize + {\renewcommand{\arraystretch}{0.618} + \begin{tabular}{l} + % \ifcsname @author\endcsname \authorname \@author\\\fi + \ifx\@author\empty\else\authorname\cnormal\@author\\ \fi + \ifcsname @institute\endcsname \institutename \cnormal\@institute\\ \fi + % \ifcsname @date\endcsname \@date\\\fi + \ifx\@date\empty\else\datename\cnormal\@date \\ \fi + \ifcsname @version\endcsname \cnormal\versionname\@version\\ \fi + \ifcsname @bioinfo\endcsname \cnormal\@bioinfo\\ \fi + \end{tabular}} + \end{minipage} + \begin{minipage}[c]{0.27\textwidth} + \begin{tikzpicture}[remember picture,overlay] + \begin{pgfonlayer}{background} + \node[opacity=0.8, + anchor=south east, + outer sep=0pt, + inner sep=0pt] at ($(current page.south east) +(-0.8in,1.5in)$) { + \ifcsname @logo\endcsname\includegraphics[width=4.2cm]{\@logo}\fi}; + \end{pgfonlayer} + \end{tikzpicture} + \end{minipage} + \vfill + \begin{center} + \setstretch{1.3} + \parbox[t]{0.7\textwidth}{\centering \citshape + \ifcsname @extrainfo\endcsname\@extrainfo\fi} + \end{center} + \vfill +\end{titlepage} +\restoregeometry +\thispagestyle{empty}} + + +\newcommand{\dollar}{\mbox{\textdollar}} + +\RequirePackage{listings} +\renewcommand{\ttdefault}{cmtt} +\lstdefinestyle{mystyle}{ + basicstyle=% + \ttfamily + \lst@ifdisplaystyle\small\fi +} + +\lstset{basicstyle=\ttfamily,style=mystyle,breaklines=true} + +\definecolor{lightgrey}{rgb}{0.9,0.9,0.9} +\definecolor{frenchplum}{RGB}{190,20,83} +\lstset{language=[LaTeX]TeX, + texcsstyle=*\color{winered}, + numbers=none, + mathescape=false, + breaklines=true, + keywordstyle=\color{winered}, + commentstyle=\color{gray}, + emph={elegantpaper,fontenc,fontspec,xeCJK,citestyle,FiraMono,xunicode,figure,fig,image,img,table,itemize,enumerate,ctex,microtype,description,times,booktabs,tabular,PDFLaTeX,XeLaTeX,type1cm,BibTeX,device,color,mode,lang,amsthm,tcolorbox,titlestyle,cite,ctex,listings,base,math,scheme,toc,esint,chinesefont,amsmath,bibstyle,natbib,pgfornament,addbibresource,printbibliography}, + emphstyle={\color{frenchplum}}, + morekeywords={DeclareSymbolFont,SetSymbolFont,toprule,midrule,bottomrule,institute,version,includegraphics,setmainfont,setsansfont,setmonofont ,setCJKmainfont,setCJKsansfont,setCJKmonofont,RequirePackage,figref,tabref,email,maketitle,keywords,definecolor,extrainfo,logo,cover,subtitle,appendix,chapter,section,hypersetup,mainmatter,frontmatter,tableofcontents,elegantpar,heiti,kaishu,lstset,pagecolor,zhnumber,marginpar,part,equote,marginnote,bioinfo,datechange,listofchange,lvert,lastpage,songti,heiti,fangsong,setCJKfamilyfont,textbf,elegantnewtheorem,thmcnt,colorlet,usesamecnt}, + frame=single, + tabsize=2, + rulecolor=\color{structurecolor}, + framerule=0.2pt, + columns=flexible, + % backgroundcolor=\color{lightgrey} +} + +\newcommand\bmmax{0} +\RequirePackage{bm} + +% add the list of change history +\newcommand{\dateinfoline}[2]{ + \noindent\makebox[0pt][r]{% + \makebox[-3em][r]{% + \small + \textbf{\textcolor{structurecolor}{#1}}}\;\;}% + {\citshape\updatename\ignorespaces#2}} + +\newcommand{\datechange}[2]{% + \noindent{\makebox[\textwidth][r]{\color{structurecolor}\rule{1.15\textwidth}{.4pt}}} + \dateinfoline{#1}{#2} + \addcontentsline{dates}{section}{#1 -- #2}} + +\newcommand{\listofchanges}{% + \begingroup + \renewcommand{\contentsname}{\historyname} + \let\old@starttoc\@starttoc + \def\@starttoc##1{ + \old@starttoc{dates}} + \tableofcontents% + \endgroup} +% https://tex.stackexchange.com/questions/472931/list-of-all-dates-in-a-document + +\newenvironment{change}{ + \begin{enumerate}[label=\small\protect\circled{\arabic*}]}{ + \end{enumerate}} + + + +\renewcommand\tableofcontents{% + \hypersetup{linktoc=all, linkcolor=black} + \if@twocolumn + \@restonecoltrue\onecolumn + \else + \@restonecolfalse + \fi + \chapter*{\contentsname + \@mkboth{% + \MakeUppercase\contentsname}{\MakeUppercase\contentsname}}% + \ifdefstring{\ELEGANT@toc}{twocol}{ + \setlength{\columnsep}{2em} + \begin{multicols}{2}% + \@starttoc{toc} + \end{multicols}}{ + \@starttoc{toc}} + \if@restonecol\twocolumn\fi + \hypersetup{linkcolor=winered}} + + +\renewcommand*{\cleardoublepage}{\clearpage\if@twoside \ifodd\c@page\else +\hbox{}% +\thispagestyle{empty}% +\newpage% +\if@twocolumn\hbox{}\newpage\fi\fi\fi} + + +% https://tex.stackexchange.com/questions/56839/chaptername-is-used-even-for-appendix-chapters-in-toc +\RequirePackage{calc} +\RequirePackage[titles]{tocloft} +\ifdefstring{\ELEGANT@lang}{cn}{ + % \renewcommand{\cftchappresnum}{\beforechap\space} + % \renewcommand{\cftchapaftersnum}{\space\afterchap} + % \setlength{\cftchapnumwidth}{\widthof{\textbf{附录~十一}}} + \renewcommand{\numberline}[1]{% + \@cftbsnum #1\@cftasnum~\@cftasnumb ~% + } + \g@addto@macro\appendix{% + % recover \thechapter in the \NR@chapter's \numberline + \ifELEGANT@Hy@later + \patchcmd{\NR@chapter}% + {\numberline{\xchaptertitle}}{\numberline{\thechapter}}% + {}{\fail} + \else + \patchcmd{\Hy@org@chapter}% + {\numberline{\xchaptertitle}}{\numberline{\thechapter}}% + {}{\fail} + \fi + \addtocontents{toc}{% + \protect\renewcommand{\protect\cftchappresnum}{\appendixname\space}% + \protect\renewcommand{\protect\cftchapaftersnum}{}% + }% + } +}{ + \renewcommand{\cftchappresnum}{\chaptername\space} + \renewcommand{\cftchapaftersnum}{\space} + \setlength{\cftchapnumwidth}{\widthof{\textbf{Appendix~9}}} + \g@addto@macro\appendix{% + \addtocontents{toc}{% + \protect\renewcommand{\protect\cftchappresnum}{\appendixname\space}% + \protect\renewcommand{\protect\cftchapaftersnum}{}% + \setlength{\cftchapnumwidth}{\widthof{\textbf{Appendix~999}}} + }% + } +} + +% restore the tt default family to lmodern tt family +\renewcommand\ttdefault{lmtt} \ No newline at end of file diff --git a/教材/ouctextbook.sty b/教材/ouctextbook.sty new file mode 100644 index 0000000..14384f8 --- /dev/null +++ b/教材/ouctextbook.sty @@ -0,0 +1,225 @@ +%====================================================================== +% ouctextbook.sty —— 中国海洋大学 教材 版式包 +% +% 从《软件需求工程导论》(sre 仓库) 的版式抽取而来, +% 底层是 elegantbook 文档类,保留其全部排版特性。 +% +% 编译: xelatex 教材.tex (单次即可;有参考文献时 xelatex→bibtex→xelatex×2) +% +% ------------------------------------------------------------------ +% ⚠️⚠️ 本模板与其他模板最大的不同:它是**文档类**不是宏包 +% +% elegantbook 是 \documentclass 级别的类,不能 \usepackage。 +% 所以本文件只提供**配置命令**,正文首行必须自己写 +% \documentclass[...]{elegantbook},再 \usepackage{ouctextbook}。 +% +% 顺序不能反:\documentclass 必须第一行。 +% ------------------------------------------------------------------ +%====================================================================== +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{ouctextbook}[2026/11/01 v1.0 OUC textbook style] + +%====================================================================== +% 一、公共字体(本模板的核心约束) +% +% ⚠️⚠️ 为什么必须在 \documentclass 里写 chinesefont=nofont +% +% elegantbook 的 chinesefont 只有三档,全都不通用: +% +% founder(默认) 方正四大字体 FZShuSong-Z01 / FZHei-B01 / +% FZKai-Z03 / FZFangSong-Z02 +% ⇒ **商业字体,不能随仓库分发**,换机器就废 +% ctexfont ctex 按**系统**字体配(Windows=SimSun/SimHei, +% macOS=PingFang,Linux 视装了什么而定) +% ⇒ 同一份源码在三个平台排出三种样子 +% nofont 不设字体,完全交给用户 +% ⇒ 不额外配置就直接报错 +% +% ⇒ 本模板用 nofont,然后在正文 \input{../fonts.tex} 接入仓库字体。 +% +% ⚠️⚠️ 但只写 nofont 还不够 —— elegantbook.cls 自身还硬编码了两处字体: +% +% \setmainfont{TeXGyreTermesX}[...] % 西文衬线 +% \setsansfont{texgyreheros}[...] % 西文无衬线 +% +% 这两款在精简版 TeX Live 和很多机器上**都没有**,会直接报 +% ! Package fontspec Error: The font "texgyreheros-regular" +% cannot be found +% 而且是 9 个错误连发,因为在类的每个字体档位上都会失败。 +% +% 实测:在 \documentclass 之后用 \setsansfont 覆盖**无效** —— +% 类加载时该字体族已经注册失败,后面的重新指定救不回来。 +% +% ⇒ 唯一可靠的做法是**本地化 cls 本身**:模板目录里带一份 +% elegantbook.cls 副本,把那两处改成仓库字体: +% \setmainfont{texgyretermes}[Path=../fonts/tex-gyre-termes/] +% \setsansfont{OUCSans}[Path=../fonts/ouc-sans/] +% 改动处有 "本地化" 注释,便于将来对比上游版本。 +% +% ⇒ 这也是本模板与仓库其他模板的**唯一结构性差异**: +% 别的模板只需要 \input{../fonts.tex}, +% 本模板还需要那份改过字体的 cls 副本。 +% +% ⚠️ fonts.tex 已用 \def 定义 \songti / \heiti / \kaiti / \fangsong, +% elegantbook 内部依赖 \heiti(用于 \cbfseries、章节标题), +% 所以这层依赖是通的。若哪天 fonts.tex 改了这几个命令的名字, +% 本模板的章节标题会立刻失去中文字体。 +%====================================================================== +\RequirePackage{etoolbox} + +% 检查是否已加载 elegantbook 且用了 nofont。 +% 若用户忘了写 nofont,给出明确提示而不是让方正字体报一堆乱码错误。 +\AtBeginDocument{% + \ifcsname ELEGANT@chinesefont\endcsname + \ifdefstring{\ELEGANT@chinesefont}{nofont}{}{% + \PackageWarning{ouctextbook}{% + 检测到 chinesefont 不是 nofont。请把文档类选项改为 + \string\documentclass[lang=cn,newtx,10pt,black,chinesefont=nofont]{elegantbook}% + \MessageBreak + 否则会加载方正商业字体或系统字体,失去跨平台一致性}% + }% + \fi +} + +%====================================================================== +% 二、标题编号层级 +% +% 原教材主文件里的自定义,很有用,保留: +% 编号最多到第 4 级 章(1) → 节(1.1) → 小节(1.1.1) → 小小节(1.1.1.1) +% 第 5 级(\paragraph)不再进编号体系,改用「(1)(2)(3)」形式, +% 避免出现 3.1.1.1.1 这种过长编号。 +% +% ⚠️ 这段必须在 \begin{document} 之前执行,用 \AtBeginDocument 会太晚 +% (编号层级在导言区就被读取)。 +%====================================================================== +\setcounter{secnumdepth}{3} +\setcounter{tocdepth}{3} + +\makeatletter +\newcounter{paranum}[subsubsection] % 随小小节自动重置 +\renewcommand\paragraph[1]{% + \par\addvspace{0.9ex}% + \stepcounter{paranum}% + \noindent{\bfseries (\arabic{paranum})\,#1}% + \par\nobreak\addvspace{0.1ex}% + \@afterindentfalse\@afterheading} +\makeatother + +%====================================================================== +% 三、封面色带 +% +% 原教材用青绿色 RGB(32,178,170),比 elegantbook 默认的蓝色沉稳, +% 与清华社的封面观感接近。保留。 +% +% ⚠️⚠️ 必须在 \begin{document} 之后才能改 coverlinecolor +% +% elegantbook.cls 第 345 行有 +% \colorlet{coverlinecolor}{second} +% 这行在**类加载末尾**执行,把 coverlinecolor 绑到 "second" 色上 +% (color=black 选项下 second 就是黑色)。 +% +% ⇒ 在导言区写 \colorlet{coverlinecolor}{...} 会被它覆盖, +% 实测封面色带仍是纯黑,改了半天没反应。 +% 必须用 \AtBeginDocument 排到它后面。 +%====================================================================== +\definecolor{ouccoverlinecolor}{RGB}{32,178,170} + +\AtBeginDocument{% + \colorlet{coverlinecolor}{ouccoverlinecolor}% +} + +% 需要临时换别的色时,在正文里调这个(不调则用上面的青绿) +\newcommand{\oucSetCoverColor}[1]{% + \colorlet{coverlinecolor}{#1}% +} + +%====================================================================== +% 四、图形与表格 +% +% 原教材用到的宏包,逐个说明为什么需要: +% array \makecell(表格内换行) +% cprotect \verb 等脆弱命令进表格/标题 +% graphicx 插图 +% float [H] 强制定位(教材排版要求图跟文字,不能漂走) +% longtable 跨页表格 +%====================================================================== +\RequirePackage{array} +\RequirePackage{cprotect} +\RequirePackage{graphicx} +\RequirePackage{float} +\RequirePackage{longtable} + +% TikZ 绘图库(原教材的流程图/关系图用这些) +\RequirePackage{tikz} +\usetikzlibrary{ + shapes.geometric, shapes.misc, + arrows.meta, arrows, + decorations.pathreplacing, decorations.markings, + positioning, calc, fit, backgrounds +} + +%====================================================================== +% 五、断行宽容度 +% +% ⚠️ 教材正文长、中文多、行内夹英文术语和公式,默认 \tolerance +% 会产生大量 Overfull(原教材明确加过这一条)。 +% 2em 是原教材实测的值,既消掉大部分告警,又不会排出稀疏的行。 +%====================================================================== +\setlength{\emergencystretch}{2em} + +%====================================================================== +% 六、常用排版命令 +%====================================================================== +% 表格里的色块占位(原教材 \ccr 的用途:图例色块) +\newcommand{\ouccolorcell}[1]{% + \makecell{{\color{#1}\rule{1cm}{1cm}}}} + +%====================================================================== +% 七、章节末的标准小节 +% +% 原教材每章固定以「本章小结」+「习题」收尾。 +% 做成命令,避免各章写法不一致。 +%====================================================================== +\newcommand{\oucsummary}{\section{本章小结}} +\newcommand{\oucexercises}{\section{习题}} + +%====================================================================== +% 八、封面:无封面图时不插 example-image +% +% ⚠️⚠️ elegantbook 在没写 \cover{} 时会插入 mwe 宏包的 example-image, +% 也就是**一张印着 "Image" 字样的灰底占位图**,铺满首页。 +% 源码(cls 第 1288~1300 行): +% \ifcsname @cover\endcsname +% \includegraphics[width=\linewidth]{\@cover} +% \else +% \includegraphics[width=\linewidth]{example-image} ← 就是这个 +% \fi +% 交付给别人的模板首页顶着 "Image" 两个大字,不合适。 +% +% ⇒ 解法在 cls 里,不在本文件:本地化版本的 elegantbook.cls 已把 +% 那两处 example-image 换成了 \ouc@coverblank(一个占位盒子)。 +% 这样不写 \cover{} 时封面只有色带和文字,没有占位图。 +% +% ⚠️⚠️ 占位盒的宽度**不能是 0**。 +% +% 第一版写成 \rule{0pt}{0pt}(0 宽),立刻冒出 +% Overfull \hbox (5.00002pt too wide) in paragraph at lines 44--44 +% 而且它只出现在 \maketitle 那一行,改 \hspace{2em}、\hspace{2.5em}、 +% minipage 的 0.67/0.27\linewidth、tabular 的列间距,**全部无效**, +% 溢出量死钉在 5.00002pt 不动。 +% +% 根因:0 宽空盒让 \linewidth 在 titlepage 里的计算与 \textwidth +% 差了 5pt,后续并排的 \parbox{0.8\textwidth} + 两个 minipage +% 就整体超宽。 +% +% ✅ 正解:给占位盒一个满宽 +% \newcommand{\ouc@coverblank}{% +% \rule{0pt}{0pt}\hspace{\linewidth}\rule{0pt}{0pt}} +% 实测 0 Overfull。 +% +% ⚠️ 不要试图在本文件里用 \ifcsname 覆盖 \@cover 来绕开 —— 实测 +% \@cover 即使定义成空串也会走 \includegraphics{} 分支报错。 +% 改 cls 是唯一干净的办法。 +%====================================================================== + +\endinput \ No newline at end of file diff --git a/教材/reference.bib b/教材/reference.bib new file mode 100644 index 0000000..aee680f --- /dev/null +++ b/教材/reference.bib @@ -0,0 +1,24 @@ +% 教材模板示例参考文献 +% ⚠️ 这两条是**虚构条目**,只用于展示 biblatex 的排版格式。 +% 实际使用时整份文件替换为真实文献库。 + +@book{example2020, + author = {作者甲 and 作者乙}, + title = {软件工程导论}, + publisher = {示例出版社}, + address = {北京}, + year = {2020}, + edition = {第 3 版}, + language = {chinese}, +} + +@article{example2021, + author = {Author, Alpha and Author, Beta}, + title = {A Sample Article for Bibliography Formatting}, + journal = {Journal of Examples}, + volume = {12}, + number = {3}, + pages = {45--67}, + year = {2021}, + doi = {10.0000/example.2021.001}, +} \ No newline at end of file diff --git a/教材/教材.pdf b/教材/教材.pdf new file mode 100644 index 0000000000000000000000000000000000000000..027b044ad3171993f56e246cf17b31893c1b8b59 GIT binary patch literal 121062 zcmd3NWpEs8vZXA^VrI!=i>O?W_u==qgpBk;LU!)j48Q)w$nd{ky7aOJ&W;xD+Kj)>{W|me zs7tS8;$-LIXk_99!~W}p61|v(wX=yMy_mIuvx$g_k)5##y^M*inX@?|6EhzljFYpY ziGdA_`ilc$8lf8kXiLH?by|6O9h>5F( zk%_pYfd?Po9}J$A8dkl|Ojh06X?4UjH?O@Nav~^v`(X-@#hx4_*(# zj{m*aOn(iZ{QF-2GurugyjJ^z*NdQyHH7kCXfgjY zruZMB#r)SW!oSUf%>RrySpFTf{vZASLdy#F`A^XLYZ&DZX#F#)_@ANm*HFU0kJdk9 zj(-a+#s9l({X#1m_Vw@4V)=vH|M+Q$g@f^r2|blGWeZ?{^9Optbo-+#p;1C(MZD_6 z&uWLPN8sa*jadxL;oUtI(y~vb7|YrQ(#{tQ#iCij+zI%*B8wm@Hb`TSvn$isoW6ZI z8ja*-Exjy9?xvfe$hFgK3!Qe{8Zsb^qnQ@}sOFBZ5Bp79XA^(d`qBbE(hHP8M1DDx@PkyJgTjxzK1wEM znbR=$uTR^F?)*2wtM`Fsn@KuUx4SKn7Y1h0e!a}bsf#BfX0A9i#t6HEN?db{gi5ng zO>Ar1dNJ0WukK?gbHw2sgBcP|E1NDUbUbC9H_inxE@W@WLs6#`ZAj#FmnA5eom3Et z1~F8hj*98WxysU0*m)HJw#dcN7xCZR$IuHf23Oe2EeBwz*2TPf90Se6DKmXJ1 zmix}M{+cp!>gpl)^2$Mw?%qs_Q=S$^ZXr_U*oo#UlXSxuj$2K5J^gg3(?d-eHIJJF z2h;mM4iHo28WY*BSnyGn#1g9FeX;=N5=Nq9Z*PeuS$oGDc4=F}e^T7A|KV}`A4drr zGut1da8%yQ>xM_P+Q_Bbks-n}ChqXL>t$eZWOdHWbh z2Dc|3M3keR$`vfy6g-qRMWGZ``FBIr+kRjS-#tC8$@+Gc$CBUPe1+jfs#h&-Aja!O zDF=hl4?I@!^Kwo8Y$fIO;`>y|mu>3FO^aOcd6|lnFz~w`URGc)Cf+8?l<3m8t z0!Zj#Y!@hSvTZ^-H{7AV9Su?>qYi=L>QXYZl9dQ!ODeq|!dwlEn;scv??0{Ka|3RI z7N^QkKQxSrBYscAK5WX|0+cL6bV}6^al%rUexg?E@;3tQOnUVSPLySB>rl2ir8FS<7VTp-={BuJN97K>(wi+!{gs#W}l+eyQ76~ z=EG)VR#FxD@u-$JRvz9oj(H!zkZXSpa;OAlRBO?l)!+0&>8*=!_G%HE1x3@I&l|faG{^pj%IO~mFbgBo9|PD%sUrf95$^07{Vm{9tN!+@L4<%S zk#7H)5Db6I8u8;h@!k3eodKg*Ki7dh$;7L}RzJ@ccy_G^tNM@qfr-wV+(8%L?)8M8 zn)8z(Ufw{kOQ@uE6Arjz)B=D2uc&?Moz=)(W`4-d{a(kjtH)uswc~ztJSL|Hgv+No z%;ZGNCP4_?H116kP)TmWLEa`kXogMLr6RIgjyR)w6i8Iu3hrR!co;{@TeO5(69I|O z>_ufdkCn1NJwbvtG(mHDl#{wFqA_Og=-Hy?BO3VH!0}P$ z+7>4{TAMc4cx2a>nmt|=0|H&{+;zi{T0;mQankKNW54+yqSgY)?#Cr(N64QT9MCqv z*jheUKZozaKha6%_r7y`#PWB)fUzTW!~Z?N9KTDr|GdEPUsVUk?`rP9(@XwGRR_nv zwEQwLar{k*cBVNNv)hW?^-O&OR!kHK2La9Uq`xxXyS_%(8`_84sBji&6?He%1H>#U zDq>1*x-&o!Ys%0X)zG7X6LbB+4Zwa`l`Bh(drE6Rf~N1@db*2He1E$$>3W=LIiHE$ zkmmT?cJEVMF7p<|qkWQh!4t|=EIA1M*KL@0|^ zXwI*ND+~>t8#0|`1QQI>Z#QS!I*p`F=tfQftefdfFuUL5LwZeeuuqs17hDE3az?^W zM%TOTJPwdTJPBlf*2R^x#9onQI%1D?NX@IP^%akEV{ipZc&N4JEvp<1mnVOwt86-ZNRXA(HSXMQt9|V$pT!|Z zz*JSim}1DOWcJEz=iy$c1@t_R&5ZDF(C7q!IkT^ECO0u5JXo)eF}w`ifl<#!HwzH* zFm~W^)hi>`2BiJ;Rf>qTZ+8p%x%N3Tr-dLGPnJ0 zyI7 zvac0+w83VgMw4nhN5ba$j53BIifDw#tAe}LEiZTL)y&XH)QPL`AS@U z4r@HJmBrS1u4)K)+nL%Gva`~sAz2sIHn&@t6-x=pa{{?DV?zRy`P>wSQ4SLvrVS^5 z_xN0uP~tIYgP=LNdmBx#^vuUJ)=`KBg*P&*PJS<)Gy$bTZqbQ>DV`qkz_`e=ge79i z<7q}qqMiNk<`|3H`m}I-VWBIV;%=C+1Oc#;c3J#aN;;d-vW{I3tR05eR(*;B?h@OI zZDSlUNr}sx2p#cizU@Q^DUAY9W_wT-4nRAmc|4w&IYHUfU6k1??8p1yaSVboY z_>evX8hHoh}qVryH2_xTsiuiUXK~taeuXv8YU0~Dy-zpH?)*Q zfA6rki-94gEDh?XwWBDuuoq4%I(@*V3-47`X+p`{GQ(?HnHO;Vp6OL>hd4WEgAODh_ce zmevLbG6L3wx8n#Z?pix`G6y8_8)2a(CN7eBVF!5gvNN3z>~Zp3;60V5g`PKXypgGf zSwb_u$X5B1H z#>c#MU8XhPVQ4p3w@usSNqqTr^NhlVproK`H5cIZ8lsr6p!)1{-PL=q&{HEU_;T`% z=K54<{&nv4=~D={RnOLwtI&0y5h99p6W^JN-_s-X`CF=A;L>YwOTV}7`;uQz4g0cU z-LODr01O^P_8J`y*~tJJh3pbCLZWO6w>#JP&)1g%GYp-`8RYc%!q`=d6pNX4|ErhAK{JgqCq8Dz*FfxQCtKLEAI}EM#l80y~&6-K5wdVFsTftw*KW zGX9a96n89$1B%!s`hhYVuBr}iT%Av_+Hlr4CL%*b&7AZNKvKL8?llr03+A?l%dz~7 zACpj7ZndGc!%A**6Cf zEKgKw`6j77&NLDZ>AFVrT2?QjJyg1P#qHdMB*8#$EfQp;EhPJbqsj`pkixT;B~)8c zkV#^7qG-cSb6wCVgipPZJkk(vubW}f)!uZ}Y^NRC$$^=-pjYNgJ;a}0MQe7JPj42m zRy-h!gVwBP&yAZORj2GjF#SY;e{#Qru$6xXHL)5Yr5)3|a$)7B`t`1sJ=`jFN%Xcz z_7m-Op{y%?@l4=ba7D`^(!D2=zHwV)do7H;BcI^q+2g7A>#vI!=c;}^ER>%YhlUduSH~V9yIYX0#J3Wm{OGZ^Eyi#`;noiM5=^T@h3eXJRm*h!3rEt>ax28Qg>W@l0rJrLGO zn-{EOE$F!&*bn->Qq$o?ALGbf1sT&bdy*^E$MB@X?$*PvJ_XWS3C1<6x4E(x zOWnDyIeXV5fXBUD`SYo+=iB?;`Weveb4YQ<2dFX8JE+}rL;_nO{YEjr+WL50AI+T)c31H63uo^R5oB z>@I7{y5iK_nM9+#R2XdJiMa?rQh68D`W#daiE-LDX zty$#JI84#Z8KtX&EgY0wl*}21{DT6+6d5`0^gJARx(fEzT=l->OHl$0pOYX}$Blld zBV$l?s_7l~p%L_fB=3D|7>Z{Ri`$9GVV&5I@=?s6TCkY;rU%p6RXM)eQ2bQxAnN_8 zvn)p#-4;NH%-madc6QdbKuE7Bn+svbT~IcGw6+K>8hqd)d3~}85xNUD7hYo5b_5D# zDxV>D;KYSSVqy@c%deCYe^};;W^tzLl7>O&!-Q#1cePGH3=j7h=ZOazzmmgLismDa zu)N6@Y926feHwhmeDARdI4Er={UO#&o(^B1N0!a$k?=W=hcrVny?so3nZlm-M!@=$ zRRIcK46k@ETR)-hvM>N&`M9HCxpUbG(ZcOLkLx3c96F zSmqk{sJOJ5fW%2%C_)lUikh_2k;Anrox*>sEFHlI>j!o*2ooKgN1l!V%y$N;5hpY2 zk916$?RA}oFg_@hF6WV-AY(p9-#CF%ZFgMSJ#J|4W4{lgEb}6Z#wO4v*3l|`9CA!C zX@NZwj@P1+Rx4C9Fj5pGGlKXQ3ZfuA*!d|y7f4kePxMhW=cY=jHYone^n*>Ze>fG% zx3U_68X;vj#(SYx(ujf+&-M!3KntV=sN z`19=Ni|_c5nXkWNwJ}9#Y9HFkpO~(+I9%v@NqMJz*17pZtR-Wwe#8EiExIQ~xy^0` zI;%X(5*eaXK}$5DD+GftY*LWj`7R3bcCn!-gem0@QgK;@oo)TbUPg!w6{^JF;ExbgAw~p?IO$*PZ3eBQs(* zA*)tW^hR6=MYMe5H*AT?D=&d*_~<@xX~Uj)sD_*_?O2t>P=cgQVP@Q4VTkR7xUB#x z-)igJ2|oq0g>M9_2uk;=8#G7}$Q7NO4hc16tmIkOcMoqYAQh%~A(2+Hmf-kl zR2kGQq8(9f6EQy}hr`m#@zgA7wB4KKw`G6rgedH&n~yPxt$o4mcTeljb0y&=o~x6! zc|Hc0~{A$fe>rT5vOWQU^F^Z9sV`p3=A;IQojiB*I>hdS&1vi_kKPr zHGQ;6U$1Py1e-F}M= z7SFKKv3Mh&*fBQfIF%ghNtwXb>rW|meiOH@^Yfdbm$%hYz3(n^eV~PKq=b6<8WM3s zZ&{WnPnx^vTEnI?r)f5Mkv-E0OC3b6tFaf}0t8ypYkj!lJo5NK)Fb9sw=`wY8&v7O z6-X#YA>W`S&0Ev({Lyi08z_= zZaSRB8XJA&DwZzR(2RHIW7`BtJv?{kaEiLIZ!f$mbpzMdYao#>5rUks($8_*l3^=F zUX+Yh-fM^YtFoo!r7-V+>aRbXB?_7Atd-W0n%Uq3pq}D zace4y#+u~zaL_w0Qa%g?p6fdt1(!N^AMLWHshmLA0_IY@N;bK+Q>GTFERFWY2P}jy z$2O);_eAPs;6(2NG1!mZ6Ju*N!b-1 z`u1E$j(Gk|V2v59x)2yN$AIU{jJ65VHzTM38oi$&=#$-Vkh4Q@pHVt6;>gv{H*m`f zTJaezga>3bs|bo)Mh;ZSc7|OPFl?{`NPS^=bv;64Q_pBLxxqhKbxwUpm)pe6e8Hj< z=~_Tqc$TBO;ysW-WiX51{#qBArceG|RQiizIL)Gv;r_v%wL?i-PI>$CrQ> zUcD|bGb$&MKe=)LlGee<{x^$uwtN>1C?njaPeiAGon&U?M+c;vUfClugq$jN&ckQK z=FowSyuhHi*o({8UQ{RLrRuLW^+w+9D6Ry(3Qe64Kl8fu(4nM2&U0Ez-@ zZvtopsl;Pv_tQEzpks;@kBVRJkxgx7j-`OnT6~V~)npo-dL*3_Ggot^fnw&X438LT zK$xOtW}I;GnjqR@kS1gbF$zbA;ZWGjk8ONRyKnSz)qn3VBf}pWfd4pB*jO3<7%9;z zva#!ga9#K67my)_pBN+xajBZ9ZRS^?oSLgB9-u=qpNd{!<*Qg>0e?DGX=P>%g zVUZ(Zi48CUlBRCR`1N*uc(HCDALq#YzD%V?KEA-i)rvxG>exasX*gTU#aRd@BPK?*)e-3nj$=|{ ze0pDKG%@LBR>Q-Zj#i>(;2ofVFZ#qkt``3hNUe7eLAZ*$-gZ3KWhGnTy3d;B?w`}> zT_yvsNc$~E3FjxATtgwNI{JPcoe{5(1H8+Dh@+5RNp*Joy-iE;S(&DlJLRmHmZOCB z`PIWSy0mt-^f4XMP0a|KP|DY#iy zJCWzA_EzZyCcOJ`H(t!Fu|~?hl!^n@Ajq3UqQo7zb!K~1{h1ga?8VR$4LC|>T zXwMa60dkb50%M^Z4|@@xt>hvWmB2a90En_QDqTvd!H;4Yya!;4m1pH7@H`DSdHIl( zD-d#;R@g^3d}LP(Qi||C3AL0~0!v>Z>M2u5%%JiTiMgj921|uzmih`VFk4_fW(b>ofX}Lj2E^dbXVJ_smL~3Wj;$Gao!~ zP|N7ajNK7oCX%eRUyx|B(&7MMnx|=Cha8ulzshgjM>DgsrE^8ZMZ@?iMoPp3n8Z^o;@W+jYGg@6 zo3K@NOo~OIWA>+NNtBitY%LO81KuX4k`2|g(Hbf&+W;Del~!WEPjkARi1K1yA`|{V zHjW4FCW|bFi0&_0UiIjI0x8??DW!i(SB&hef77+rO#|5KwjlrJt7j%rWOv#eXeu|KfdJB z6Py#A=Tv{;^Ydx%((~={?eueZ$(Y!9J-ddzdA#Ux8EeTDDI*6H^BL z08zeX(K`+~MNDi8QAJcz#V^L4t4!=EXR>TzBn^@*gvoJ91nqR%gA7GL6W7sEhVjConjEx%M3U6OwBGX;_Ys9UQHU-!_Ad^Kqw zJ#c@N0)h(bYg=tdvK*U46fu4Z)E0z%>l@2f6O}UjT--;!kujS^NuPRi%0Pupm6`qBPs6ZFD^!WmASLs=Jf9iC`%w zXCc+eu;q`#IATlWFEX4&YbMCZO(n^A$0;jS&UatsPQuI7UmB^tJ8VTxWew!PblN~D z!8M~RVz?l8uf))QmSig;o#-EYqIlRwAjct=bE3FDPfGC>h=O4j4p^XTFzjPhJ2zZm zX*OGG*Uja-Aris}2`Dgbh%AtxrmhoD%p2=IY*}8Cze;DK78aBygZQ*7T>@caj>-kL zkPS7{Kg$<5ofbwvLf7vp_mG}te3L7i<1~ur<>H8-n!}o{VN$lTU#q7aLflr}78YS1 z7FMIg+sv5ZUA49xR;JX^%&g#(tx4k5AehtHXe5MQlleKM`r2w?m1~|i+?#+ndtl3Y zqkI#WO)wBkZ2db|Ap(JgkTMh3$ST+j*|LAbacemJbVYS(rS|Or9Dw-%RLc~QeGGbw zf>5#eQI0fgE}?8m-#RE{bjOShOzI&auM8HG{n_e0f zow$tr*_vNOZ*Y9`!lQ|n1!pjLcj0@V_#M2hzv!;3M&oIwYohn1Ds`JZrlfT2Y+R)@ zIqzOcpJ!g^vH*J=kza#~#O2hSC_NJs#>FJTWE82Rf}j}>i4h%*6!GWrSrYp1EQ)A0 zux~609*tQTC-I;3qkR?oH_Mg7Sp`sQJ~tglPjliS8=3|gf1!v>kf5gRP9t$VbY7Pw zde)`gbgRT{=$H|IB2!Uh8nvvAW744RF6zTx6!YdZ5`5i{Bo9%ePP%M>=b?_q0YcVS zP#vD5!N(hS3&cNU44gRV`(zzv9ZYN5PiC0w1aaJp0`$VjcU$L$nk#Q)mg3S!9dyNs z$0`H7(N!tj!ces-S5z^<$T75fg|_f&CF&_PldKJE6ssIK8_E%BL@e2FJR)it$|}>! zmQ=kS(mjxd16MGKxYL*F;%3ZgwWLrPtBms13-)XylAoetBBB;eC?Zj)c@ycDny;~q z24>j4YvSGAIBKgN=W&T*Tgs`33KsdyX%^nGp6#Hch_@8bNfi+F%XcYkW6dQ*mkFbL zT_^EwiaX%kxil8-^a{zBjz(sLb)I5AlF7qe^W-&~97S~q&5fPqOh=_8Cd!3ir^B_F z);}an@(|&#jM<*N=Z^lQ2jl!$J+ym@Kt5$uN9iBCnHHnVs#S!m z=^ZQGG7IJOI+vcjlx@74tM?JyjCYm>(3_Qxn7#`#EIwX*8i@eKg9}->Hp}!mU4FbG z>ki2!9{J42WU5AX6Ru1YDw{N6<`kPJa`tFUKinI*XK!gz6DOSF&QQ}xteqajQJ3Ix zZldc}e4#TFKO$w}U9yK(w@jjK(qh5UxEqx+*5X3P6Thr(x;2m`{mXC@MdY*O`NKYM zrmKS|l-)MDOgfk+=M@ao3-agD7nMcYr}Ipgcc@yw&WG!kNI;GJFMc=k{kbI`@#@w8 zI&eEfAc)V;f3Ev-&#$yLX8&hP2%nSJ&6T*Adj$C+B--;ve5{9s;XdTE_Xi zbH*1ULg+Xg+G9ybuJbuIOVith{jdj3QK6CPN7gLv+%9WvLYRFtesn#Acmuu+4OscY z*~PRtco)VzX_6?W1lv>6EC~zGYb@@5dz1Q3rdcgxJ-#bC*Qszs~t<`E7!$g(Ka#FKFy?Zb}Za)o^%zJ%?(1-BPDy3i)F3?@-3BPiv~LN@K# zLeN*tzTc=Nmjw+gTrBs*jBo*fg}OgFzl6}dfb>69CobLHyv1ULI`E>O_l!t=JpHqP z`NNpaKbAC@|8|Z_H(u6i;CGq)h|c92l>l@OMv|CEbUb8BL2EX$q}I)=i%!J90%B_C zhhkg1zev^ZF4KQ(`dKjaC)J;sUZ>)Aq!0 z46VkQs_xC`Mvzf>J_xUtT2RlvC|u5cM%pro6iXcfqSH1gvW&Ephn2um9f0QJpAP@_c=&{aBi z1j-7nNbq!K<~SGnk@zLy{T1kFrla;O^(|oV$8;DD#2f`J-i@g<=qS8aabXa0`5=Sx zLqrUKf=+(j_Xv5HA1XS6c!g9Wn*qgh;v+}3 zc9&ki`o!~CMtpKdCiErsRe_6VTzrc{6Sw)pU{u=u8mj;ABM;I- zVr#FB8q+Y;dW(T-TtM05BR#C?grsX0?Y+R2-y6elW3y3@3gDtPYaoyi+DSTdRIyWZ zEzd3=PidPXhS4$h=4&@-xd2r>f&`?v_6rdwu?=2vKw%rSI5Nsxj%{46R76*i^yW1D zuM`+*QsPZAbgMcj=H$)Bb#)Tz7j|T&$lRMINUKPb{<9SL!zA+m-3u%%DI#WP>->8s zFoW=av!|Ew*MRchZ0im7hSWe?U9$PCf`puW?pUEcGK|Y`lE!GJz^IRqXNZ9YCShG) z1i_WayaAdJ2>t#XUHvpBeS zTuR@-z@TH$Wyui{m<;*T?qLc&>AQ_;IvVn^>bpJem89j2U!3)W@p8R7m0U&X z3V|wFmFPi->h`WX3iQ*g*L}!sV|%@H1yzI$2=+%?fsq1_{;Jl;3_D&> zGsFVx76}3yEm}Mz8`;C{e9F)o=mZHwsAF#Sw7Ju$T^zXHnhq2<^*H0+?s9sL3A`&5 zkHO)$z8U>)bT-Alg1F{zvDGd4S?uBA0nY892JXjpliT1{{v97T;(6_teTUwG=h_jq z=Qh0@$TQ3i;B75I>-tIDJw|N6z!?DH)D6GZt%d*atb5U@rsLk$tH$Px6?oIg-#Rd` zx#)BtsMB{9cn-;Xk)5M0?(PBb`iWxqOsf~lgXjso;b6dxP3`jNJ$?M}ysQcMwBO?wbEc0`fM5-$ldbNBW(s;@4ns&cz2$WsqxYC>T33QEv;YW=54WaeV>`}p?wCj z&Rky%lE2p(T&th0d)klq(Wf`f9`#_p-Lr2)->sdWb=!^j(YQF?JHN{>>vmouxf84( z?HzR=ysN)`!MWqNdjw8tkF^L8A|VC5Lf+-h`Z>M#ztKOvv*rQ(%L4Eq+7UW=cSDKf z@f>ll@O%ll%v+}}9tXh07osn*=MP&A#9}o+G*o1ziT2RG*12emxp0 zJS9tKd(EkUAGXh}3nL#{rLtpWv zXvsBw8!JfbN2yg%vuEoDwKk9Zr|PEtT#;Qi7N)+-5ob}=qmqXEo_4=y65geY%o~Zs zF7u-Q5W5+V*8|cXDX-Qzy+eYTB0iYJ4Q#0jzhNJ9ReC=FKi|im^A9^%zXNf*nWH-x z4Q>WK5|zjgWLLMacyAXPpRg;^XUuLhnk<{0@2I?to#q}6CRoYO-gqpWIVpKA$?FZG zRC7W3)Z=yd=gA;8wnC7Ht4S&ts*Ho&0{CCOW1e^%nFk04;8FPqEM5|S#v=Kda_6Hp zr)sHO@{9Tf%!BW57Ej!tbAEAjc6M}i?mTst*RtHJ@6K;(>VDI)dVMOEUarxmYT6?a z#URZs(ZZ>*C!GWrLCsZsG3{QxbOz9Wm zLuynF`v(8I-GpeEeF!ZmAr_>Pn5D%7b~cm2(pqy#>I^8n5HRhmJlTZOJWlvZ>WpxR zJUnxRdg-J(`v=m=P?LKDG#`RTMsp>Y%k;5)xty_ii8d#d0G<4J@_F~9)3%8WGYD8C zvX!uU{qA_feiI;jzrTT-X?T814}X~qo%ms0iNhrCf_7q=61l}t9>@n8cZkU=bV;ipq+Q(F1``#5YrEWn@=vZ>E{tk<}{XBq_rA_4U2*4?dbhHS3GqNrh#TT;iU zlVXLcVmlTKRcmDpq-4>*RhFP8H*4v=b+z?62XJBoGR?R=g^|)cgOxk?9(d6}r zeR)A@r0{mD+ILsqI~W>zFyTTTmO*cEf=1HJN}IVI#Voix740tWiIlCe2E32WI-U4j z`1429(x?6py;I{q-tQ3!L|aVyLz#9wc48+Fc&Hed=75C9d0}Vh60D(n;H8fSn71i* zrGiDW-@2$7LzFzAEmgf?XkTcA)t?y6>Gm$%+hFU0(D)LHS&y_-%*@kl*+$%t_Uk=p z>k>#~z^@Lvw#eroWmmtJ$O{YEKxu31s;N6O`M4c72W5MN!WJ+mflncjZ&y@LjcH6{!gLpv~a~Pjn&7P+xitUK0tO9lQ#hW*uX<)pb(&F&<%-HzDs+kVs5L@Zg(6{QWI3gvU0+743ySK(oi0w zYA{J@XBm-Fn<3s}N={6x7%sDWj?nFn6Zo9Zy_}CXzoaTRgb)h`L{Mf6BpWbKlR2)s z=u`04*NVV{|AG@Jrfd#JV|ua3XigD4kU|T`Aixh+8-gg{d30u}zdJm4MlJ&UNUTQ4 zL$g(pm(j;zs5SZ-$*u6!C6jvps?V3|Ws)XGB9BSwK{D>`L#P)kq7hiE_#_~77#E)u zAq)x*9vZAqr}>TMg8)Rq*t6mY@1}Da4a-`~NWhpRw3S1v9aI&<=ml!&Bk4JSv`wRm zmLfij0aJ27*Ay->Xc;5*^=*IS0~_IYJ_3kU`LLdP9#%X%P`Yc#0UNe-iB#(dhQ z3g|AK9oa>WC}^D>(0-{+nbf%D$;FA1IQS%>+uHC}{__yvxr z3s`-Jez;j!n+hdyp|hi!qaF-~D*2~v87ceiPER(RC%d*ivhQFRggqhaJFBGW#Vk=I z>V@D7(2s=l3%cRDySNZ0$PaoSOmcLhk$diIPKn7uZwYTp>!*vdN({8U7B*B^Uxg|M zEm#b=A-WmwUWgym$R3CZjX`~6!#98g(>=V1csboZASnfOOa=|7^C&y$5b!c&d}a!Q zSPuxd!>`bJ8U6Kvb1_8^+i%u|`5kQV+Et8Ut>Q@o2f6y4c@wF=O(;pW zfx}6_m}I5A@mxR~J#lAq>1LHDZM)e!*!LEV=E#nUI|MN!Wg&y$R4jBJG9ZQZL+B zv}9QU|E5o2x2lW}$U#1!h z1^=C%-J={%_xGaZ^+fvsm6-LY z_gqW?Y*ZY@JvH7hT^f}L>f#lJ7S7=#kMdn>2A0BmD!9D|(WJAES3(Q)g*Q0_aBm}<+!y%jbrw2y<8rMEr_;E zmtYVfT-P9>X0mjb8cS}zcW^rL#@*2=K@oz5{ZJ{X&lhQ*RI#_Q4{6OT#me7#H*W&Z zo<6g>f62?k5l*oAR7;~-K|m{$MJdghU>;Ma+f?oy1;6hjPAZ=-J3jM@{qvXzbit0~ zrcmz~dvf?of;n_Xf1YpQMKPwQDcVX8;dd@xBdvI`#YKZVJ=l>f=CXQbO^)F{aVly? z&Ej62Tj&mySP7=^GEX6i2=HP;GX-ZDmjXt0+NmJ;4yN*iC1<`g&a~XVLJ1yIbpv~? zDDg}152>>l5H=vt)`X1Nhq%@LBD^byeNu=%@UCfDTD%}vZh2omkXq)@S=%yl1#qL{ zxVjE4)_Kei&RRUl6AJfu%MZATF*X>(7*zDC?860AE10{0b8(r=|838K)X z_{TbUaAP{t=SFHqjeWmiPJHEtDKS<=ehbCB5P%8P{#rI%TbYOEhts2UklV`d3ke^^ zRd^{59n`&+BdMA-y(dnbJ1)g=KYnbs?mq07PyDZAEAKJx-1H*g5vx=w zkOFeJEIeO-0tb%_+TDY{if!bR&mUa&3To6Un!mv~D1lg0fxMH?K8ADf3Za%N%!Pp< z2hyC&;6;$-#gx@Fa8M$ZsPt|h^zfsVikj~vCf$6HizxL+(xbntUQuj}juA?nEi)%M zyzIQWPdu=!k3ClTHDPRH5=`GrBdpd%ewuF*4_RnPS{hfSRINavVu+PV;7qvX|Neo| zlEfoENpc#8%N*{wQ6%8|Y8&#?+ZzNpiwvPQ@}(oOvtA*uPi3PPYG^oJasbI~jJkOl zlaX`hLY3i?h0L*oxeaOXOyk%wnu{YHe@@1u=qY_Uf3e;|@dF8g+T&dRGNHx>2>xMb zKr>#z6tyxU24d$8(%0`(*iNX_xahcfnTK_wvJYvW1|At0sSDMDD@(qAa$*K10^$c0 z7Etl9(t{qajxyatPCpqSzzcHd+^_MkoFL)R!G_=cYPeYv$1Dk|_?WBeXV7P#=WdOO zTgm!{-^lDa5Y8J2x^}WjmLI=n=>}zwCZfHS(@0XuQp|+USL~KImb0%L2F1$aHI%~^ zr&C#=E*m+pxwH{eOTsi^-7HEep z;svGFq<;pv>qKa*?*nR%oIzKg06j7uRmm76*j)zWO=%p>yNOe1#9Wd(rNGLWSixh} zeC;@SthBH)J(jzQzA}9+xlkOBq?hxSDmj(MvOq9LVH}*BlQul@x#`C1kpDyI(|l)0 z0Kw(FDgDt!n#)l4k8BaV6X>1kqnASAM{(#Eio0ltx9`*p&Tzgr))%uBepaDpg*6dHFy;QW;{nZR$PIW*0_p84)QK*s8BsdIgF`{C-+t^Kn$jDzd zWH&Jom;eidR5JPdL2LK-dr1g z*-^#OlAcnYl608P4}PpKIX-^c-d}fj=@b&)N#*9z>&y}`lC){((oG-kVg9Uz7t4yz z_4bJ5l-0q-oL#|d(<^KyGyE#AW(co;o29!ilZGR?P?i2*rcbu$ER;(%l-x%%J-Um5 z$`H!)Yij$~%r<$7V&ATVX^Y`i8_UJnRF~5x zCiKmycmpuY04~vgZ8<5&)5*fV`=RM6o{#Il+p@1Ir{l*q+35c6freq0Uh@6{(XyhYT z^hez1%Q3HuAP3+dgYjSQS?80g9hzo=k)N^r(lC4)`uJ0Pf~;l$MvTU^rHv4-8PVVl z_aP}%lJVKmVtP=lK3=sCvSED%$KFd8YDuOuq$Z9~5_^(06gayrxmmBj4F54`E?oIj z{PQ<(2cR3453Dn@x670J=sKOhw5#{&=WiXxt1Yg2*b*Mld>lr4-8ngCn>`1~964ku z!xE>nYwcdxUfo9&nGdx;uqf?w}L$@y$Y7-bLL*-x7d>r9i=} zuB3D^*(yOb_3T?&fUL&7X4H@{Uj3vRg15x*c@g)6a+CcA!g{5wg|UN^C(;YwZY|WG zyEvUd*_CZ;B&|73Bt9Z7uxU(KCyMYj>$LHI8n1SbyD81(oJ?DvNuk zBMCymp|i1MM)Y{x%5XJm6s|N~*zE|tbBk-bqTTq9Q=Ib(hMpaeZkh@^jGL&f-MUQfBuib&2AAY$Vk0 zn+7X2#IZ;bTuVr2!r`rvj1TK(loA5&5p7yqug$}*R(L^whM<8HQYbb1Lq=dm0rqa( zR)nftzwK1|`7UtW6i5;BAY}s__H0P#+6^Uky;Gu*t{c!Rf#y+*LuZV>DNJdQI86n! ziR84BaK+Km%M_#%20mv9+;#;X$!&;5HXoE=*)2~dpml_j-Kp^XoUvq)M6&`#=u;eb zf3AiMl43GB@RnFTonF_F5hDy7%za-3jk_ljiZCwJ6y&ssbxGvfpu_r-xH4w>ZxX;5 zOHn|42Lv~aN^Tu(Zz1BD|z5F(r`N!_n8Wrbd2 zG+Z&ADSd(b=_9E1kvVV0=Q8xlVRn)WO(+eL!hk}e@9z?l2a;AM9^sPb#ShY}R3jzR zYRU3;YJcfJ)jc%wxsr#jX-G*y6dNR~IHjB0h3> z1)Rk1!k3; zcBA|fU7;SR{s~jpv3SBzu})>&Qf5CS%_nsDEN!`A$<|sTI05O#6fw@=9-&>yR#*9?E$)Wb(xr3kXf7&I|*nFxWs!LRV;ZW*m< zB9p7!$XpZ6YO>pO9ZBh-}f8#-MA9hdO#z^CF z<)R^S&^jn95M4}J)vHM@^37naW@n}S`mgzwgO?-4kHkvN}B4NmE)3zlo zCLursBO;JuvMXe4|CkHy%>j_SgOh!aXL)B~l#w-otI&ZOW zE{gt}bt&q2G#pi_vvYY1^+yGV;c;NVI>-zRc^CsDtm5-jW;mPfT&qyhiUyZDOs>r@ zH_p&?`k;?Fo~6SLo|V)}?))=#@AHHUprku6Rg=D3+h&0!I!Ac`Dbq)pf^WUpZCr|p z3%Vs>8#kD_>fH5s9*sT?EFDr7KUp!sxZIt$x^UP`cF$>{cxRZ5KQr(d4G>?ju}m$| zq69u4u_FZ4?5&s)f;vGwt4CUsKMA7Ek_n8;GDMuv38S07C>%6;5JFsLD;;@(uKybH zn=@Q6B2McJ)aF)I`{k$l`+R(G=b;B0E5E#FG(2+9HLA}NJKz%400R!GoGAk#TWrm_ z%4#zoGr6wS6C6?S%8YiL)47sDNxS%-QFs!4MSrfmK|x<;M3bMKWeo{%_Wks}-7^@zUX>0C3B}@_JJ@?B zc=5*2Kj$a^oQn@x{DkK)a-ZE+I)@;guYY*Gv0)-L9{(GETl_*_c7-AIh#M5$u`izw ztpqu-oIchblZ#iK*wn8aj-VJJjZTNo6wnx?-)A`>GrLjvtM&;sFeny>%ZnZ^svp@E zP~?QHCQQybR=I4=aV+UX+ZfC^RS{n21Oi7R#Z_`fw?Vug$3;iCV^LNGSX`%HR;xJ8 zj!L3MlXXe#v)aPA;JyEZmkjvrU{)s|!%|uE4=}MDU||7&kMsj!>H3nA+6eQ2RkeEp zS22~o^m=)Wb=v5q_rb9NdA!JTKoy-O+>sY{-h&1X#K*SdK1!goz)rT3mcciu7`ZH- z@;Q6`Vsy-%!OQRw#o+W+gt_H4=C?P%^g92N+y-T{cvVjCB@&CyB`>6B_LN#vvh6h| zhU=>fpWLU{8Ed|sJl+|D1?Sf%-67hkc1y~$c!FZ_qs?n#{(W9rmnN@SEZOJ$BMYp0 zq|H~no775T@H{Db%kU`GCCeY^e@#sMWh7qCe4<{X93E(lQ)Q_|i?Hb^m{$7bK%?YP zxdeyipSN$q6hhj4N7y=bHkhXlMVp+jGX})@vJir}2S%)P$1#2)jLqsaL(_Xw!l9z-LPjn(%7r#Xt>t>LF!=!Qp`VOgn?l|6QoAlX z1F|6s(0KUP( zm05B0h^q}q>Xmhw)6L_v{f*h%@9umC=#6e&&c;Ud<*gPj9l8Fm>!|ZUR@~2PvHa#* z4;V8*QjU8Eg!1%<{>FERI-`t=vENXB_2>Ci|47s!MrW>SRlx!F7jE_~eG$$mlUg7Z zG1O#1##lRWgkr!pAOJJop-YIY>O*c1wBMz}IuFXAsK$4+6gjScDc2`}9gWi9NT-RV z3z}qF&`}QZ?B5CGkXhS97i2I{kQ?R1-J~4kHqra2X`vm)fN*OfEZ5{vo9W}Tkn)?{ zEr}-#ERfg5SmM_Sy7v*yvv=Y4lEdf!d*Yq7n@)0VYrC~vG1*`x39GCcpdUJx)4VpR zV3Wd^{(vIS{fIx|A~cJ8e?8z9pMVw;dva8Sf_)nePAWmC!J#eFU-ko~0FrjlBF6){ z+c_Jn$`X6sC!v1LQa0K}>K+Lm?TwUrS#0-aG8EZN9K3N(Ze-MR?Od0p_x4L1d8GEh z@@{U{RT@*~(7$0)fWdOLgFm~9@uEi|TM5r5vE-I<6VGU9{Yz>#9u5gQAvB{=cUa06 z*YKpXc_#{H)6V>nu+m>okh!q-FfBmIV5C+hrTlX#wO#=*T%L9C;q1_5Dzb6Z^*%aW zZFbp9-yV-%8&ACitlJ=`-Uvs=ig_WUVhY#GS5_F0o6$#7ddbw3<qwPqW=@IC&u( zyeZ8~Z2=)pJ5|C8k|7vF-($(4wxC4G*HgLBxRW`O=M~zY(+q=KY;BMQXg-MjUHhRh zSgQ^o?bbrPK%Aa82S;XTNfre6$%p4(gNWblhtR!Cid2R0(*ktU@91>1mAb`mm_zKC zQwpO`Sb092Xm}Fr~v)`@gR@v@H_Rzv(%wk?WBT94EyZEJ2sPB}&x zJPatl(Q+q@cXH}BBqL&gY-PdYP;td$^N|8xi(_qwMYYH~snV10?$$1+B@rvxkHjKR z%j+5+v5s?%*b^;wsLx1Dy{^hx9Ona>U0%c?^kxdWB)~@eb&YnxamN=t`#5z8SJs-s zs&`b4y{Ve&U}5Yc+@a)oBR`5#@nKwo)hKSk&1Orl;e|weC_}WzN9onsUJZt|&Gu|2 zz>Q)dd1m-bZH`N!C7#w+yC)15wba_T#sMtzLv%Jc3f@_2)DL&5VU-qP6eK}_v-yC1 zrEkn_XjH6jB3dd+8hZ3W4#&L^`l4_IcJgFS!{@^!NA+df@%4VPkfzKCI>DqO>3I3C zE`asEK#|k}m9ld6^`R{bp(cuqfV@G-n%ZqUGU_7ZGZiKstOu>ocmtYA@k0DS_%!NL zEz2~Lx`aPr#KqiHGsVH7xfrPg5e^w)$xBDI#ttAUCtCBCkIrrS>hkP|QY7t8LkukT z{al)8C%A~zoROa8NPnP;#b6dI^W=wbLz=3`wNUVy>Yy%*`+J3`4)W9_NT_+%l$y@l ztoj{UC_vUjxkb7;;n8Ymcc;SUsgRb=G9PKoHgkqH)md=|=e`(08iIB9errW5$!$>^ z-)N~+u+A#Msf8V})-Z*Z=0i57j6z;X|Hf?U{C3~8aI3>nY?iWqv7Ebqvd^Cs zofG*lOYCn#v8#s$hu>X8w(gZJ*^E!d+9Euv&C>Y5;LeAYHr;8g>usSc7=;w=rraVm zN`1LsaHoX;)!mOXq(*9zW}F(;=X zpwp)kg+TFPVd8X&&M-#=K*)v>2_TZZ#%v1z)-0rK$Jy&9QOOa?CoB%At!^WEhqtN+ zhg^$V&9$0Wff@A!)pbK0HW*Z6UC)XwXq7q185QTN#*`zbBnNmfY@si)L|MsCSyO8) z;ZSQZ2Cj*TjSlgLc_Y0FWo@=(*)=c+Glmtwop>IPO10Dy8tXqZudm2$k^o;V4%z}+ zGpqMmpH0Am<&POVv*H=fu`TMaiRIUTojhjJT>LRIh-mW1=HUyh;CGY3rDqLMUJs|F zD#lv>8KKLOPU}bv;}sQ9gNfVHZ`x!@dukW}|GWc4Q%AB*!DG9mEyM#RQ`^b!+irEVFtP=M&eO?4>G`qmcsGM0S zfzwz@ZvfH-yDfCwZqPnlJv8&0t!lTQxCF<_no~cre0dU8hqRjJIgG81RJ1|k3dewz zHX!9Uw`_NoE>~8rGG2!j&VKe)Epggdg9dqVi-x}}{G+IL`KKYnzJS|kyA8~1zZ0*=>0(^$@^Od24hA{MNa z_(L#B?scoXbKHg66{$qf~|3U)#41QDR%I>gtCNo3GGg-Bc0fVGR@>mRa@mkyxPy(oH4cBQ4?MUl=g9zBhS_R%hpmhhyc4c{sRZ_vba$<| zCLJ;jw}C=YNIWoT2=w=jPBLtlFdDK3f*UOfi9qf?_3w2G#BK#xZB;x!%IR=x3^&<`>B@*hYm?1O zx>O!t5t&MMjofU^JSB3Ixd`*$wpZ29>Bpx0s=3Z%X9wx+a3^Qj^z-BvPR~p_4o)TX z>*iEe%;`urb_KJgOp&Sfv1T9Qz?5)cVjyARK|YRunKqCoLNmkr1sedY{UQiM120go zzdy6$ESkBp`z^W@$C=?kb@O@q(Vg+;lnq*3qE(QjL7_-?%i7(}Cww|WP{7EGuB3KR z8=ikp#9@SmYv&j`aratr^#aNVCp17V#4MRvFf(YjmWQ%1s;U0vPneq-DwJHh3t%qM ze6nZ3z!>K+O$%p|t{L*`Th!sYac^mDc#~k2V@A#O8v<6xS_U|2wc#-)@^W6;V(|mH zqO%B9C-Ss#72s=jQBFn5krEli@Y^SXLVlW#-uDjb4eK&JKv~GR6`iQpr5>O1!;-1B4*w~Lc0l)^rAZv-7@v6p3-}( zTUUj!bV7_^9L-6C$i2vBMByq|=JNN!iQYly?3N&@l9i}yq-tgOb6R{(9@??p76=VK z9Sooimmw{Sk=O&u1L2-epPFJWs4ua(cptWH^87h|2_DPj;>(1(ZyNeLy<73tt~{NO z6<^b|PVsupy9A-tj5Lc6TA{?~O_-3C-XT$V^x3P4WI*8QX2&s}1OlPvrJD3YiMyen z+5j4v47At^BEeT>9WxkwTDmKdxCKui*h_7Fch9^Wp1Z5ZWk;naS?{q{80~bI7nECb zmV2pzDz!ON&M$m=>mpMTDkZ<4BjD4kn{0~k3}FN=wCHme2Pv4JoA*@x@-W95IYPSQ z_w)IpKg^L?E`p31VZP39Z);g_hKCHF&{#Y+wJ~A&u}%&AUH9t_WtQBIJsl*5{2_dn zI;f8#hK5KSTr^EQB`-SGCr@m)g4@kE%e)Jds1p+e0~pg(6QY%wfD&yX_p`l>Z54HmHineEhJ3iuNB=n z5$J-Z?SqMjhqduIcE=$^KR{@6=3)e2tm>;JP~*a9rr3m>GxOzpJM(85NSXs1j3k!oSM=l}_&|4EQ^fnGqtCd~RSD6tP~yME z3z5%I zI7=%W8Apm0T7~n*GP!4^?xE2WlzsrV^bL6NGrClC(RG;I?ufft3b@Ya1UN~FQ@K zaCSAeYbOkzH{&B3V&`KV==Ra}*G|OSXf5*;|69{HaU^;=jB%4wZGXB=hET?8YUD`n zMw8DbZBmzu=p-P5w`Oe*C-vqjMV#TivMK0zH=^ zIjR_sf9oGAl_Hs!Kew_QqW9;bM)LZ8?nX z>-51(&cQNsV#^iWe9z70n_qR2L?xhwv?lj1&(j*O-So*eWCJ1s=I7@VsE@6%AlZk( z;9VYiQN+Q)!-n5qI+!aN4q*APOQ^f(k0AQ6kM(pXI3-t15m_kD*OQmeu}arSDp7s% z8t5=6ZwRXf&;s^0Ghfmkd)36w0`3sqs%_VN=KF_qUMmprG!%OQ;z2aMqBL3@c0^ON z&-)M%+Gq(tEQ6_=-+d8r?BrlE*_|{7D&@uaosl|E0cg!b``gz7NJU#=BuP-!{o_{( zVj6FcJ6EF=o`Nm02Xd{)`O8-^z}qc)X-)qn$`(gX>`OqQLq9Uu-e{?ctsLMo23A)R zQUmO@jG;G@K;cX5&-cZ_po8}+qhR6nD!N6SA{s0N_I#sDoOIiF*Tsv_I6}l~l$gCv zU`E~04s7bt{^Wv;F`n>%3J0OrI3*o2Tj&DGHsi_`)-4}Xl(1=M1UobLgG+ma-%vCJ z51uQ}`27-c5B+Q6HI}D19&`skrR~Ffd45_3Y{{bKi+W*xVZzrTIdc|hS0@yBN&?zQ z?}(4SLs_UOKf%spJlLb_7T-*yST3Pt#L8Bv zj*v&lV5Yf{e%NgGnNW zcxfwF&KXM{2hVm=3$3a(>GA2>zrqdH`S$30O?q;x!{jee6Dzr&-I4@o6L~ly2CSYL z8gRfqy4DZISNPo5r!V9#6c3=_%I(`c@-KsD7_@(sEfuPYACKi&pgm==s2 zHoI@C)Bj^dJ|a_vt^mI@K$9++#+KG<;bjx1bNF z34;#kJp6e)E_M#OO4qOXtV_mS?`7o84>Fo!)80_7A@XheY7|5JnU*C=xLQUxKsCL{ zzHPQfQvUMQ{~cx~JETWjLf!0gDtxp>{{fd3X_`1&KG3o~mfgTd}3evsqi zGU3B}eWc?2^l)PZI^lO|(D_x;o9B0_=wKPpb)l}9#TzV1)dM*L$ zx?;bgflsJ-dTOZEU?b4`cTzO|zvDrNWzAf<;#MMR(L-8+GU+9Dja7YXmn@zZ?UgUL z7)Hh?giP5eD{a9HTZuwA+e1DAJDE;?jRN5ET`Y3mI9)YxVu#ExEgJGamKVc?+p}6X61@*sexNeu|rU z&XX&AEJci9pn*8r4~I7OeQ-t8TY5G=ZybEQvy4ntNg>&WBkDzq16lZ@eWcEh$phg`rI*>GBc>iEHb6^)W@6? zo+CH;7VqAD#jY~A(S!FPga!~#qyek`jX(aTe)>@to({|DM;ti)rM#{IfP|Y-?F&|h5(I&(A2aaw%Hnmh#r)b;Wz!Ldy{>1UeLqb2!kcKH6qXJvIk((F5Bmv*9k_N|>ZnN+^=4j322x4Z-}Y#!0R`gq}jSx_qDEVufSlXe%Y8 z6vQfHnpbuwXcSAWj=Au$T)dyWaIHPyM6RCk!eK#|VZY>tA&gm>uw2gkalkBMX5)l@ zkqO>@eg;oaStp+>cRSen^^XAIU|S>bOnM4-y}ohgzW{TuJ$X4W^^5RIE({X-fsEA6 z(tx)0shrWg{Q<>bjkq%8SXt4}iclFqqeaxF9o~2xnPB%4nR9zAYVCBMMfmW!68df( z10H{O2w^+SudkxzPd;PzSDAiv_gf`J6XfUhd z0l30@wvZsfAbYngkAU7|Iit5$O&A(22M^@UE$Twcr<|W=aiM@D9OL-LV(B*`ndeLR?u3LR){fcv-xHFQhn8g&U14+*sxO_}|NLz6u1BNKbkpFO?g13qg%1&0R`L6_L?UMyZ04v|Y#h3Ftb$s7cB^#ye?g9f_|u zd?gGF95$VMfT<`KpZ1z|Mg_wDvhEHEy*x!{;KzE)|N8+Z5e#p$Rx@rJb9}=}u^l56 ze4{OpqZP?ylCLB0qob@)QxP$d6@}8e$^ZVz4M8--d4Xb#Q-kpl*a1*lBCuu{afF0% zq=*osKT>q*7z5ZH7cKfiu&Y2A5E?k4^L<(wf&_C0CXl%9LN1y5*+QL9#Dik{2Pv)bD?4?bD^{q8C+5aH=v z_2u{e08fwo6snu+&5Y6!4n@})E~E+}5&*}P?-P&R=6E9mN4mt_F8Hg1X{@PgXqe%A z4Ftr?{F>Hl0y{wzTwG%dt_*L6H?EdUo-#Q(wX0lARGy%cS0iX%WyPNy_5Jf_I6Lc; z1Dmoj6rMbN| zINzINC%IuschJAfQ>^0gj9M`@;X9Il6zLEzaJK}EbaAAW z9_Sr~Q)1s^Z7`5DvI%5>l_`4~o1b|+AcY3gO_alU(^O+gk|W+gw!(XsUJ{nm4)O`? z&4S#O_ym4;P%hw+z@+1T%79I{`S9Ve`z8QVK9JMvG-k#5JtKauC*SoE{T!U=OwU3m zgK$k0th6V_3YfMV(MGF~b~E15V~8^G=D%g9WsVM#FWK?dk)7wH8-*_w@s&~>sCxJF z!JYHl-yq0nt|m4zcaP=J1E0I75rTDB<_4J1l~XyiwKg7-FcG1LW5xYoWyE#o!b3df zIjT}>D>5pw$$hwwQLV*BeTw?A=@{|Slelc(VT9b>Nw6Z4FI?sr3~oY4aW!gU46&)? zSkEI943UhG4=iw)PlV{EvL(E8tTrrmR&BmjPSW@>+_0nx_^(`PuQ56*?PZhYEhUvK z9JPsHn=uw#E=WL$rs8ZJ`!PHd7-$D#){<&d4%WhG6e~GzvWIXmM~e)>dTpsDimgL^ zGpr1*ekzYkF-N#%1i<`1VnyAF6p}zh4fM{TzeiuB`cuPq#r#otNcY}>e#v|;O?;4) ze44v#yrx0kkOW{n{Bxg@2xb-E*cpq|pnBGRDSJBUMI`S84uF?_E$BCg1su~Yp)uf5 zs)m1Wyb#yMKnmhVs1BV?x0BKbN23b%p<~-G+Ki9lCNi3mCM{2&<+PIfuZFiCKbS>X zG$mo_`5|yU_Z@;s$s6TOf=O;A;_-qRgQA|&uRA%;?9*tT%=KAt4|~Z+3P%APo$93M zgNad`J)T}KH)EX!Si+@Hzt<6!(w@z~8JZkOE-D~RE@N{kYAcFmDcAp)D0dWGbAN*1 z1+teku%=Ghq3zmzqNKM>hicT}nrig%q)}V?S9zTni;8+5u1v62^0rjz==C&9PPnuV ztYTqp)KqJY>NTP|*Vmm<;oh8e*{;SHZUkI3vgbO!umSg=LV$SR$AVgN*SKw3$p1VA z;jWfmC;iTbqir=Dezau29LVpkJAD7>bkt?yuJ&I48OV)kIs|LVe)tWa9|(5c>iczQ zOvPnC^WCCpJp^mbe%X_Ub=`{dWjET#H<75y*6rp3)ldb+mO^wT-j7V&;6X+0}PZaD6BX_Wnswqj!)lRfdP z`4t}?eN1I!Abl07-mr$XCO7P<&6)Yzds)*|bM?n#cLeO0IrVGcYd5+FRa)gCx{{`$ z-b3e)c~3a^NA2ikwSjr5C+^zb1g#}h587{~S~gd*u1sV7JNLCOzj@uy+IXCSky9zf zqc3~;L`Q}4vcpy`mF)K_(=JR61!~Hn*zt&^;d6bdVL6o5*>ZWnExUTN%cQ%Uan_Jm zb;&wbh>Il{v^JlN8C@t7;w$c9uH{yoREmc1sho){8ymh7i;d0a`>(A4=C0pSLM`kY zzvp4H^?w5i{NHG_9RI=6xK8DT^CN%>zBfA?L*#Nth+XLq#0Ezu#6VS`>av?h5R%ry z`!iLG0Sk~v$z^2x`M}rLiD5n1$iM0@Uwmjnc^=!ML$(VlStmS$<;Kp6K3R0hI_LYk z9%ZHY_uQA!2BnVh{U6c~&IbR@>VbAmuy_t!WRNt9kGKAQfp)y5dB^hguw|}wJpd&@ zzEVu;+CiqO)9~5SrP;iH%|5zx;KDxesZEJ90096%AQ=WiklIG%)J!mHmHU_x}Gfbw&af1{M~!|AoxJ&cyy75Zr5T zNPF$&^c#(vo?GeKRxQhB607=-gz-pBxE zz1S+f%wz}a<8DU&BCe{=;{xu@9A21ZuabJ055R{k>8}LFhh0C zQodTny)sm;v^d!;^{zIcmNSJ~v>uMVn)4bdG7=}$saB|}g6}_;%?q=CJ|n-6%_&k0 z3TKLH$LnNzdR43Y&Fb^r%-SJ^ky7P0LRO0HV}AqBEDQ%;E`GNcG~3a$lg#TOQ++Pg z^ZAFJYka%>K*cUO*BxcKCzYsG$z0wC44z1J5WEt#N*nZ^kx`&Ue>Z849NB<}M?oPh zwhv86mV48lSSwgz8R4s=D8phMtWqp4I>bHAPi5p$F$VAXbj{O!#wM`dQM#;@d#f#d zeTWqS;xgNzd!sh{+V>#(M`>3r2^sbm)*vuO4K+qd)yPD0>SS+3(nKrm3^XDMRI2~1 zDX@vKn6#=^BDhXN0LxJu+4f`18F}nsaD!cX3*kQ*OFnc7&R& zw0PVkL^gqhnDFOMRAY5Oq5;*A*;kyFPYIbo4>356J`~mXIBpi}N()^SZADccNp)l! zmbpaosO+%T!7Q8K{{)FUCF%1I6U#X{ll1yT5KH~dtuMr`Kxgf665WXDBb-CXgE$k}j{!E*q|N`pADu3H z8uY|UfB&-{VD%J411|TCZ_CQ_FKTGl53Zy3=xhddrW+y_DGtVr)9AHm7MCquQB563 zInEadzCy-wKA<({eJX+UfExNr#>Gn!)E^i{AYE{rbqw73U5S}2(fRoMa@R%n`6q^$Z%3^+6yk%KXOl|z@Ql`61w?k zt^@*NEyB4(wGgv_I5|124`rKRLwsdc#8m})GfRO`_CZ^ilX1ST-H`*r6Y}7eV2mJr z;R%U$9uwbjakp7}7cq=^?m2j&^Uh+Lg$M1@v{%9xyMn?1WgZ%c)XF=_vZYTas$w~J zfq&JMi3e@rdDMHH&A|;EMcG=VM@No>i1gzum$gkhILn|&iQUXwF?GnU+}>r+Xlx-t zrB|)HQ`i(C@ZI@ag0VRh|rsG@*qHKHmZ?=XS!k&xhcP6c&NvGE7}&Qb%Ns#4^v ze9+|9^`u1_J*7TJ8^q4?lo2>lx5J0->T7B6*uSX~Te76`vLQhyYaVB`t&LXasc5jL0>T=%K=)B5rGW%>fCF+QaZ`N^1loC9h zw_6>lJ|eMtQ%eojML&LE2_aH_(SU^Jr{L`GCHFMk&nj9`qe$oV+^riRE`OvgXg2wq zw^tX(Wh}Jm;voX5y$_7u{!b`Rx7gdvf;hZSY^R6s=0ibWsr% z&3H@r@8V=nk@*!!yK1fzBATo#HW-YE){LHl2gvJU%4bxCD++VR9>4>d9&$HDnpRsz zVSbxLqHbAAM^eI>Wy=-uB}+o98*S3a=m!nf)e=4TN-EL~a}Fr?ge(kc59ZstJSi)~ zNzVh+szOGT!j1e5h}Xgq$^AoyM?(YDdt^E@f<;7)b6~hRV-TJpR60B?O(oFJXA2_e;@|fdN~rRh5ua#PBIk0YhZlEsOlKLKDhC@|cjq zu4UL9BAB{Lv z3#I{WP9o$3bRqB0%esEBmDW;4Y~=D%_RmTm;;H4!nvpK4;1M^Fdu73T*qycLs?KQ$ zQAU-MYNj{IE#BK5kFD2}1k0!{10$Y)cF{loEXUR00e$=434q6w1P}5T6$NROWX1QdDP6NiKTd381Oij(PHDA?kF};uE zA&<0SI-nR-%eRyeVtcOai&JjV`yF-qJ$EcV8xPH0Yg&~*>&b9$*gkHPjv}dLj&tb| z*t_Dsd&k|b;Bh@oVT6?O0IP5M&`(n$w3d{oPUFx-I(j0euR3YNVSjovdA3suTg4R< z-ZGNRT-5wW|H1VhLVN|lnB#i{{X*RW>gWfwhjs_^g8oAGFEI`+FePgJ!}y8qDjk3+ zSc;X-e!rJ5O<&#Dq(xUP;*?J-1r;U@-OPmjK_R7Qb{=v(*4Z>S05( zVd@A|h)JV|9U8;XG?!ZJhCjiG!iRruOCHb<^r6gL5Jnl*k{b>#C6qWX58w^1u;Y59XiBTrm&L`}S z_elx$L0S8QvQ(E8oOxM`0NnqayBH_@cXk3*Q#6y-*`O?)&DbPexb+1zVo~l-o4RhU z5hYu@`6LABJ9%_a)x^OgO9|(s@PTVeO6y~c0sPvtEFSIOHdYCpe>-Oy7#!}=3hl2p zY3{Mfw7QgLnZgq_fsq@Kt|TwJ3hvMih8j8u^UtkBWZ5iUu!rR$T=p%zi7J~@V0Ha8 zg!6o}p49QnlOR&1wTgUxywHN)4Gd3gzmQV;9qnoFIY`D0uxI$D&YwyUFgsNScn!v6low*zegrSz=b)#HI{Et=3OTUHZcj~laA0%eT7;2=SUtFB?Kk$i%l4*3vysLW5;MU zJa1R>b)Z$#cF4t3Q*d*V({ezi13sFXsM-|_H>Q~++f#6GS#4ye6cso>5Q-Atmwe~o zuWo26phxn-K9L|b5|itl&Qr6RWbWyno#L5g0V}=7QJ`U$%lWS!;V%5hBn6E>ZpM4p z`X)F%C-bwZks&ozUGcd8MkI1p<@WlV4o~dv)LAz>ZFG?P#$lT0GbA=?wb3LvwFuDG zz5Ps+5L=~t_+7!v68J9ixKT}AP@=6yK35l$heU z#zT?@+1`-#Z}*vMiW3d!xLhPjojqyxOvBOUR9f1qN%0Rd*OppGRzTawZf-Zl+jKkY z=$!3Ge6VuFfc}}_X3yr!r6#Z+(dXD-h!~=Ev)DlIy-AR91;EPXby<=@ zHujC7Rd#Iy5Py%Y;pGo2RM2J|@S5rcRWfX)kH81AgGx(-wruh;L(+slHaj!jiZv`m z?k+2FmQKaFaxS$T9qOqnYT{esDdf)0+g&k6$v>i!vJ><{VD#~I5y#$>oMISyZXqV7 z#t`dr_egCsiA+NVf{WEc$%~6DOJz(0AIMvZf%D zNaXvdu0nN#MA}(Pqzl)TcTYuhQXao_VKGgP0i6x967QIJ)H>`)+p_Nx+T+h^3oRR~ zI{cGHB$1Gs$ab5U_0FeCvY%UO8X_RFj3|1|u*t3>f%!G{9iYTn`Y=j8LY=p=9M76dq(VR>JIH-1@(KsAw#Z3~OzUq$W-IBJD=M^I)xk zUXd~RkxquDnFHF9{X<+sUy$3I6d)~^g(%(*=lMF=m^RyWn?sZ>$<|3q&5d73q!PGU za-=hBW$1T4h%UiFRNoJk@oJv0s&{oRWRZ`S$FvR^yo>z8XDvYCnWx}L8uI*gvvS%zY z&@Af(h2<7492`Z1*K9AX=~7c=#c!QUOWf#%!#Bd{e^&2M4*H!aWd&T%q3eFXV!oSi z&6W6pej%B*N9hpnhcQCfIv&Q#gkvfwUyzRE8eHXKtF~yC0y%Yj(S-Qm6v)?(vQ-kMR;sk z+ipN(FcjjD4ak{Q!jz9oV@}`-c)+w9%M4yVP^Fx5qGJ9H)9Yg!kEPaU3|AH2!%z%v zXNe_oJI1=nmHpV#EZ-P&!E%f+PHiJY*SK;ir&wAC5$*_h;6x|!!p#{(DM1(ohh0N34?|wTFkH{W>y089 zMX;o!D|9CKPFGI0O-hTDW3YPKiRgMGJ~wHP5)}8FixbOHoFyKWDa=DMK6|0Ej8keN zX$lpabqGOpy77~6@!nv^gg^a&Ipd)I0=>E@!iH^{Ga`?)Zmy4@4MEmtVnC;;<$ty7 ze*@n47pS8;y6f)uz&mp2dEf`toGshqKa6uouXB!>pF|2qpbLciKd8vDK1eP1|32w#y?!>oAnU= zxq7BU5k#fk#B1CS_V?l`Vz60bveiDP`?{Os_oCHaw?X}CvIl>z#fM;f=>3E`-9L!N zXj2s<;{f;ArdPT}W)X)1u!8KsmCMTPq*9Rp*? zj8FVUsTa~>a7<0oAeI(KH!ClIYw0}*im%=7o z{x%PT^&qcHGT~EF*}D9uC^`SSvHWGgET3+}_nt#g>1?16Bt^J#k1r&i!5Kz#;kVvp4Z#v?(*Nmfa&DW)w7 zVpZ+Yv$89rE9_hu-G^t12ZQTrGefy_0=^jnb)fnGC_ASZU!tzfpSF$Dwr$(CZQJhC z`nPS{ecHBd+qQ99)9?Fbl9^;~=B83v*(+`5(;HI=JK;yrU8HfcM3BRaN}oDQc$C z8HPbr437%P4Vs7|Ft!H?vnwh^8MK+dJEPYnN%kWB62lBYWW!pe-OU{s1y%$UFSGT!9|4a2CckFqUpSKRJbmFpYT zZ|9Q++L60&CFde1)44-C15iIAcVJEK?S;BAdBN} zfSzI7;^|_)mPMA+VzbCTYlac6eBNJ|xW&Q7=baA|Nz;2>tLl){u3(}0ZRcx6-dK*_ z3%MJt8!c;Ejh%MUiXSY+HR16>z%tB(_16UEnhmwy4J>!cC}aU=hB@o@DD)WR6k}0i zi*xAu1!D(mfI7E9s#pV#<6EHvfyG3Tyk-c2ki9vWR(*Qi6W60_xb@l9)cSM;>G^%m z)bcPjx~_` z6?=V}qyhRsCY!QYgb{)0RUv0~JYmh5j1e=4=d_CG;B310lb>!5iHjRald%$#Gv2Z z9~J(v@LhEzi1YD^^YABg;6!BSTgBJBXzNH9=9#+Tv2ETp6^9q4yv93kN#-oneQJuf~2^KJQN4U6< zabb8oYVY9scb@ldar3cx<#nH72=>|g?1jl*OUtk;c;bvFepC7g+b7nN`O+Latit{+lIOgZVj}x_F?5Dqt{oqqF z9sA$to9`>TKbDL>)&o8ab8h7S#Dda!`TvvhHZX|ul)tP0b;t01!}v|8;lX5b2T1eh zr+NBMt^XFh*~9nK(D;&@WW+Z=di!skgQ}eW+0Fx$4`bMuy8S;@4{nA(;IrOe^7K*X z;IDT&@2=701=P}3(M&`~@~jgWue-};=@~1b;G(z5X6ZoCuZ9gYK_h+GQ}w_~w|Gpz zMIKB65Iu7=!g+bA8KxrR{MIRq6#4EMrdE3RSg?D|KRJ{Pe?;~Vb*$~*c?STi0&rhJ-BV#xRzj2_|#n;8i13%8=4F)9mG#b221|-yLT?bMU zL*;jnZFIXlAI|e>v6rJk2Qq`22879NSL+Qu!WO{;mxRs1vDsm>MdEO=VV-4VulQSw zTHF(4x*{hxeHwnASBE$MDV_!lS)ZQ+6vwaOKD$~7nSeiyELH~wz)^u+MW(1YMDEWb z?(hj-+!#REy#$nSK>?>72#;~{5N+Ux+k_54XY9*3w!hop18og>SEZ!1CEr0;C5CYz zbc^`VrkZ1KF;+2`$j4lHH9(~DWQJ)(jp5^$%THz9knqUuS>?u+r_A9KwO;+A-4O~f z-Pm@T=MI4DhY8M^pTBGS@#?D=px6W-c-a$6-4gMp=d~Q zsW^fb`yEHdUQuKl(Zx8X_01jn8yZG&iS9Wu@>#^pR>c{<^4?nFSfj+5u)>ZrA`X#a zSVR@DqQ#&xc!glyMKq=gTqyc&Y5E<|D-RO3@t?B!?{}eygXevElAlG9H!-Ky&75$Fp5P30A1@g! zp&)QCe1fmQ*g>0toww|tyrsCX4E$lSplRMXJp1^l zy9a0%A#i4PwHiCD>TPe|^zX7wybcz*nH}nJu_NC%zf;~WpP-;W5cC_kJx=p>1aE@A z_imZ+f5x!wzV9x35Was95RdmGH{T0f>b7@xui)JT3M9wsu8FUeHoy4Whs6xowKkjG|rdODpR9*&77 z*2sQ&N-ZW0Qf?`m%h6`98?X*qB`=v(+NxEnkyoLr4XLrJJ*l~uyvbQ-JWoubG2@zn z&%ma8Iv(pcc%LLqS!OtUPX}?@A4{E(%`~L9xbBUJ3Zrwaf5Q=xO-gQ_Rnq3t<}xft=A2o1uF+AcP&_!?qnGZtinaIzuIy% z0C8$_hH`{*igT9Q-LHQ*NpCHeYg4!QbMt+>N(7&aTfPajq5dvSSj-QZp~ zEROVz%$bMEZ+}HXY$D)rAUf=Z?8N$gKlA&JzRsqGCW4eg*ui~}TG+&WjHbm+hq)r< zAn_r+6T^#uiUy0}M2AI4#KeiRh(F>)b748NaE_CBS;)A^h+SS8PmOd-L&`HtVP}{n z$J1kzyz7|JCsvqMqL-Y^X^?f+v{q(pkkVmo7_NR^!oFem-g*6M z-&c>-@A_W74Sf)R4FS#F-RsG{OAFwcGv`?d_yJlef8O=Bt-N+c_q%<&)&|jb?gp7Qc822z4ElC(X@fb4l2DjmkQ;&rZ6eZi1ty`0j@MC~cMu;M2Yu{~`bdoWZU%|e zjppbF_u-8sx#}8|YB?oVhmqZKA>U61>*WXUeT+mQ>x9IsuzpZNDAwr6*6zp`LSav~ z!NL%Gue^1J7<)XCtF5`Kmx8UUDB8f`wEl?NJ;crQ#Lc+`ZXYt2>$0uz1a8WMIViy! zC&3#p!SB@lg~_+DM4h%_T`yt2){yuJ{p?w*xq>(x(ytpx5UPWFq#^>iNF)R?7)X8W zVY3EAKF~;hAz?a_BIn_StRjy(LR^3_B*Z$DFylTE9eAW%2@)L=EL_eU?}?j zP7h+w&xpBhSZoUz#c=3(#Xf$Jqoq-6JlHp*xTp-vvj) zE!UGN__A8=v!#HXz1+bNNZ$J+i^)A{bue#Qx0a6F{B^y-yhhvK#vDLl*zXfy2psVJ zhC%2PaHDX}Bgrc$C@Lx-$^$)6?FC|f^&0$MG9Q*E3~|Sr2NxPwD&b%kSH{T2SEIVK z)mw=GEJ_cE?o?Yll>jF+Vxd5pIY;tIH_1#p-fsG?Y1JHfl+F? zM@_43YOG zeov#`#6Fpr58N1uVS3`N3tDM!9@RCqYJ5w48jVsiR^OAfTdtUQ3;(w7sI$;s!ctB6%Aq`5$L6b_R* zCc@x{ZupJF7esII`C?U}k(ixBW7t#Zq@0Xt8FA%V061P(v!#Yh9i>U`3k0Wbt2)M} z_X5+?(kKVRrbW27udn9qN4V_S<7)8b)u(4qd!}bvFbMKhoi?wtBwn+eRP$l@lhiV% zHGdwFm^99^6s)B9@fc)bd%HRsJZjA7h`=66RrzMag&E#_B|gCeKRaKRb|5Z;Ag^S? zA)U}qH>?{y9f^D*#oR9>vyR0)K~0iMw>$vAS=EorN+(REzee?JeRv|55RE)9*(aO& z5;3dz*8)sG;4!w)io+%jr~7fDBPskH;9y46qC*Wb`?yctukj3`X@cCSchsXug+ zonOF0+U5lH9);W}K!_P6b}2v{kGoG@2SmQ*`RY4`fUwe&u4DCJ;>}7UG-Xi0m*~jV zlmpQ6g~p6WbU!4(D&eps3k%Dm8?iQiFt!kMc9Rhk(SrQUBx)#G3YN{2D?Xwysprfl z!guGRB1^1%?X68LrwQ7*X2o!r@alFf1K3W2`rF(uYM-sP~n9wK7Xl=O2o2Wb+@Y=QFQmbLCXju z?acm(VJ0niQk6pAFBe%RFCEgzJd=epw2=8%=(`Zd%@vtq1_^eIwTP+e;7(h9yhg)UWj@6Cj8+tSI@+ccSYDibrl6*gM3RCDWFF-Qz?LhVAkU9nIyX z&$x-MKoa9a3dpbmS*+SCq_P0W!T(93{4{K~<;AxJBdz`1XlhwM+muZFYyH-R!XXj# zA`$K-0SoSc%bGY$ZEzpoznALT1N~eJ)(#Dh^miei94k^#DD2h9l||zlIMIOa)*!W& zf>AjqzW@x3K?i?E1or^uS!dH_>bMg(B1Xh-&O!rNBLGq@=-rxuQld9fRYUJLt@r`s zt_dL$mdwZ?I7t>ud9zy4II{^AV-^jFJe&qPdfSO7#mgSGe@6w><{b8INwoXRAeCR0 zL1}r6b*TC$r>=)i8eLgnkBj`RSo3vfw?dQHhr47H<`mn<5o-pw)7z; z<-JHqYr)%mb|AEA2@@-Gf|zi({|U^rfRFoqbos7823t)TQ8qe@iQ-*Yv)s?IyHOyx zNpE)Dgf!?nd;|VTV8TiCR7z!3=uEQ3zZx`ip=`=<3Klf(C!I!D9NWv4znP_b zpOmj6unEZhZUnA|n|5`!McdH6vCRaPJRgTB4gOreu1g4r4Noqr063QIu}TT>F^ZJ= z3&gmK}(7sN|KMn8sIRR+OO42oYcCc+V=v7U8(k+N9Z(OBvZ!j z>baG8@PfLvmDmM#dLJSf2Oaw4ps~e>MciX~Y|yrP*}oy5*~`Mz=Mu;j^zEa13L3c2oj(tMTSXairzBOb63eKo;0*XlSL&`dMY&K zH4{OEm=5>cwW76r!grA#Q&Ug<(~bN|cIC=7(W= z7HntlUH-PzNxGj$rLUgGY8zA>(R$yx2Qb!(@ZZDP7P}iyYf?KX$tp(@-k3Z1!YOwY z%tj!xEZz{{y0Tn*Ilf$V;71z~3&3cQNR*5?xF6U&{D^Fd z2g!}Pl3J;&P#VwFF6bB->)5w)Hq`8pdmiU|VO89M#Hb_E?l53p3YbxUhoMn`p1~2m zW%~J{YZi^5FP|EW#v> zv+MIToZ7igjKOK>B-9*l=SiL1Pd4J#95~ojbBGcnQ@3uPj*01Oi6fOb|CGL5xHBRG zLzF?H_OoBl)ejwYrtphHZD{)$IZQ8~{acIjzRFlmB*VUZ?IK=d6Z4C!(e7o$g5}d= zwWiBqS!<25?`*(H?o#_dv8z|ChUHsraCPr4Tx?^u8-V*3m58v?C=^j0o?+1F ztoL^AtyB!+Ak}mBhF;C4;wzK-t>eBXc;mcH*T&IEs#7S{lT(OziI4L{A+(eU`S3kc zJkKak+SO=kpWGB1VynhgD3F=UsYX0jmeIED%}jm~7m%PbsCg z7DClQkrzomh8OaY>&lYHK>cj4P?`DAb~Y6ApVgvIP`Br3cGWa9^7e7 z>BD+FCysvhU{0iKoyh`3kyWEo$MnZN@AUNiLnW>w;?=g-Y3nD zk>}k3h(}t{(oeN@`8Hd{{bSHrm* zu&h7kpl6xabeX%^y}mo<`!oAev9a%tY~7}WbEZmQLV0l97e^fvI7S3%KuhJ3IEwPm|hs5LBUvD0Q4_W7`? zW5NP&`t>P0qU)&GNkj{hS^vmF9PQb7*Ao6TF*viy!hrqsOEw65W6+>GvR+cq+Pjhq z$)fQu37guY&n`fD`?(4<{;PJc&HFtUduP039f+CaQK2VL@GPx%qwuO|dpn@~&r?|z z7ZyG~P8h%;m|>kP!78#QY$|^KweeCz(?bgKQ!rk2!3;P}`$kbQM0Jg6GNMRDP>aq? z)R|jUFKuI*=!*L7G&_N6#l&19N>d+>MdiUj7U9E3+#WVq2iz?=RYt5;#px6!vTVH` z{hlm|N3t>^qj4g*{M5*4=I5v~vfU~3AK4ehk zI+u~7t9PF+Z4K;z+rZDO}UU2o=)3nT-EStn}?)e3Gy1s=XOQDr%!7;cI6B8#mtpfjCGN!?Nf)o@)$TZ0azn zSXQ1qsGVFrt7ya6(%kvaytQE8D_i%rmMj`(6jyY=3B<8JZ_M*xEF2ut$k0f37z5l+ zPRcnwROvVh%ScjPBNZ7Mb>lges$qUnyVxBgTEV^Yk|k5ylsIp11RlDPz4X9o5f5aYsVl`PsaEV<3VCR)+b-q1MA?YCdD&1Xh1*R&uxyYLe$$xMoOE9iVe`iHV8{6DP?90jPVlD{!d zTovvtXbFh^1pSvEus&d}VmTPYpYQ|Q{GC{tq(UEPqZUs>>KVQwq$?>!<+aA)YwT@N zyR7K!cmJCDBr0A+;Ehxvvpm4b_<2DCUcU-P!p7^qtZcb2h2Uym@uF0E3t(^a!Q7>k zk}Fg$GxN2YAzkLDej4MSm z=g6oVUD5yXP>Z?bpM4w+!)y6Z?P6krXF8!psDMrRErv30;JjKedg7Bk{!zvagGpp0 zGbJiSo-<@|<-Xqxud-a6*wSLJ?m?}saY9jt{uPkoI^Ww*g-3G=aM$f8j~mc4+jOdE zZ+eNukBC%pa?LPtIkIbXBy`dY21GO%PiJv&sX5D5^^_e8#Bc20ypNMgWkd_%W4QnB z#=S@qYcBlcFF0cGh-xpOsG&g%0>kE*&Y{5-euA2PEE(v9&k8Bt7S;RH}g zM-5+>1?&^>05$>3GD6m~kSs(ng$0}#pU@~=287Xkgxb*jDCn(rnkJ5#DLTN`hIGl6 z0&hVXx=))R)hqp8a8--92D-m_&XDSD@KVyWZ2)SM5y&hl=<{ICoYA%5_fA~a@5|JTxf$usyN6ZmCKq4yD7{u3 zYUoF?66K1Cr9k7E?Zu+KWx=m#r2wixvEjyTucd|#+5q!!YS=N77eOv!U9CX8n^kfO zNr}y&=6p<*v|^B3`$LP_Lo?a8Vrm|}vL^hS*hsWEW=R|SrL{`477WfQH8fH{<6$dA zo4rRHTEDgbaX0FGzrYFeZ$VrWPIOgW>yk^uY0d{VR*Jpi5Ac;!C!Hv1`~;fq9t>lG z=gosMOnDUTGpDP@$k{(e_cdTcg_LaDpaj7r4maH=1Hrg2WqwA$8bbqQVwQtyEHbv+ zu#gdlYeop$9DDcna&5TzpLOHc{WlCeZ^MuH=C2gO36AAHybG)OXxdKMXe?MwEoUgs+wfM`f3y@8o>myel6fwR#--@ z@zh4yHnO?POaE`>`g@5twStAMd0+bG@MQx_6v3xrBOE#(_ACdh+X)87`>&W~0T;mt z;2IOm5_UWvk%YD1s(+m(BXs{w#PDU%u6DQ??!Qbp4`ct;3(8V2%-5_dI3JFP%#d#U zN{FDMnt0oglCmk*GI2CH*VOBMQm1iNC6GDs$@yuo@g^_7DaA~=9-y_%} zcjIbUKnz00=#ma+UsH%2zo`+OxI~|f_a)+Qfl1Z(-ZC0Q13Eh zMSTBQQI2Xs>N8V7`o=CXu1730Z)>vZqP<9Q+8j1}+az0b^vND$)ZW<`3sawv*{;e; zajux`D0*6g+pqxIq@HWl@-gAnT5`5fBS6_T>+I;5RmWB?9I5E1hUpwID~W?(ehFny z&YN|ZqOi-{Ayy9fE&RIapP=4X4%d*NI^8K{jHK6!5jOhqL=dfl1esuFC_#zpM$45_ zC>lk3?0}lQRI`b1vnc0XZ;;JG0uQY)1e1ejP}ISwkxHhte8jkT9ZP&KT0^#tzI=xkaUf&*U*%Ku|s#@6p@6f>cfLG^2v6yU2olbd(4S^ zudcWkDZ>nB=vCjO>(LJe;*%_vQPxxo+l(*7b*d8`aDcAi)?QEx50{9HprV`l;`fbU zOR*wQfDzLQ>$7W2Gd5G@Ww-yFBVCkUquQdD5w-HYz-4xe=xEj-P%&A6!?KGyUX0() zt!%4%c^}G)UCxU!BT5LDqS#P03?fxM0oY-Lt9=O;dRAiI*kmEyr1CPE47x0(S;@q* z%Zt-B#4~O`IiFx{$mxG)Qk#CvARlQQO&>YY8jTJ=17iA_!N?aYP)Ygt-QEo=^HdxC ziU?6MJ`$lga~Eo6Zwv?!yM+Rh{7@H}|K&?noU5n-ilDlkR20!f*DR4O1`9OP;|W`O zi0+>b3pa}D9%$Wa!D}@#7WKoQ&N;W>Sl9a5^JbeEzD9jO{yAOYbnZVl{I1UKmJWh& zTA<&Bu5yTp5`kDIK;mMGS1v2n>jcDyI0OR9y@=;Y+4tMl#H&WBm(Vn!?g`}LXHM`* z3sXdEqF^NB@c8kPMaV_p$l5aG$huJGok?$zre7uo|0DZK<&*($?k@9Zr$tBm=5>OR z8LFrmfMQ2B+=DlUkJn6bW-lqk6(y9K&JV||>;b@anlR|-C;Pd2DJ1UPw{6%xWM$Jlcv_mHuX)|I0vM7~> zbXIiBIsC+8wm4L%CKA)V;8xgLf#3x*3WHTqg+zk(+)2i2;JNw%Q!dO_#4X2SoeUre z!EI<()l5hv18xihHoWVK?ROd;MmGC*rzHPGirnYr78r}fiOfU2(rT3@(bTYl5AOUR zwPzs={SKG@U8u|DmcTG6Gn*iHY}j3A)lZG9pH$vk_LaKP0F-Mn#PCiDf>IY|75tm) z%YFL3(~E% znzvV%!`r`N6Hp!87E2a@#uUWaU`je9x*mlp<9dZ(81e&a5KA%;4Olub_-lcJ6}vgB z*XYrS0}{5Ny$UbA(Jv#vctO1X9M^>1mL>ZF?rg$i7sV{69BK_G|Ivfh{&pEd|C zuKx&^6n$d-Z<^TE`sB(DbJC=|kv-+{K7>;oy(MgH6JprP`S=nAiYtP{Ys=NSR#J!F zhle!vq+ofCrCMq3kj)T#CGo;|g7k!p!~OT~rPQToRVTbL#}duMrwR6(CH>xtpl@##uW{@j?2*#H$u8sOB{DQiG{@z2@T$jUf!gHqde zuX(Nf?`g0*hz;oLV2t6c9#?zqKSL)JzXSdPJ=%jTyK%S(6% zlJ9a=7OZn#>E19@muKDZ<(aD^W&>dNcqmdx5qC{kUHAB3DDwWqAN{C340``meb^?f z3~Y`ZcHIZw>@3dF^$;8D-x)t;wY>Wo4T+;0i*#9g)T>LzrJd1`w}8v?h2lTWSfJPP z1a)Rc&W{Rn&jY-=KOi0wH0jy0!Oa)pP?n5i&=yYMA+Tl1kU2^DU}mwt(SA#Sx86JLEaLis@y%HTT})7%Or|MZg|$2WMIMwtOg&r_kFItj_@DZ{)j=&CDs zn%?&mT3(3J_na~#Vk3A6Y;alB@;hXb(A>XwXr`iv$D^&sbtSm|E~D!6Xu};e^cE9v zGXLnCXNaC&w@;B0LzqXRrp!}#mm{E^0{U0zbn^V5>|{LQ^pFklv@e<`c&IqIo+4-> zFhUzk0Zn7Yo{a=~y2=XMSq`zwk`m?KtHTtzlN^e+st-r?|2|Ay>t(uc<1Jq7__|GM zFgV4dvmZI6w?0$BB*F)8mW4U7)6OVh-7`;PIZ)sb%|D}Sk2aCf22odSa{jrd(?Td z|LEm&VDIvUjgb?JO5$xeQBb`5F7D4Sr}jg+wG5ymPV-#pMq>oiM?(@?ikh1;Kjfg| zT;N_AEO6ywb=vi~Q#O5kq&L}^O)Rd3dD`%&nuh1l&1gsRm2UsBW9Y*?H%8EiAG^;I z-PR^$(@j>%mM)<}zpi76U54bd_(+>!*<94D#Rz-HGV{aBB>?tIjQVKf$>qe^3@k0) zoOts@;Ap5K7MwUtV-Ji(uwQq8-=}?BLTrQc#K-*>KO@8WhHLK1^qR(s7S8aZgfsOP zyr$5rS1vp)O_#;)K5=asFhe#=q@Q9j&-{W&<+Den#v>>>s2ajE1l~z2g&t%oAEdCA zNGxYQXR?_o$I6scGEG~00GAI2co}3um5&?pIZ?MILB^aY=Sr&*02E^Wcqqyc+P2>f zSVN{x=~S|TVbK02ZOB*IVZ&j}#@g%C+f`Sn7y4A?B{2>pT4QXrw`%xRuoPmf}5 zYLJSNS(q%-U;eNyGgdAUrt)oA3hoe-%RHCQH`esrn%3m8d|7^HzvYSp$afiY4M=ed zaR+maa?$}A*&Eb7`zs4pA2Y)|bx!kHTI%+ab%$=>k!$bIK zNs(re=<|dk0-2{31iFGqmQY?XmeB>P_-@|V(Gj5~LhAetvEVxab&)$Ci-NT2+vkkw zrFgZqRa{$y)cm!*FLKF5QnN%S@Ha@0B565vb-G#Sqp1&_bpd9z^BFQaMjQ0HkWfo0ZIm+pN`gVW@e~M%AZl;Q1MwB%W zq!mA(fmf4?hmVg1;=VJcqd%xCWA~+o91CBVvx3J@S2s~f)ptz9J&Rh=84a}Wu%~-< znibEGI+Wab4q7Hnb*^CIH=Ukcr{nTPV8eQo_X`+e;Z_SwC5+XBmF4ZQ6*m}^;xB0N zfuyv{rQQ>Q;95M10ZOz=&5aEr_bhYvc+#sBq*R zlL)otJB0qjvD#Y*153IF&QGckuos9iWAHd@M#is>Svde@kXZ z({rXoH`qAps=0W1SV4Y@(NL|bVh9*JL^uN8y%vosKGr!yj1dkwG z9vMSPy|_Ut{w4UqN5;>2sdLdWKE6sO4xec(jI|z@dNMMY+TW{+n}{n3+u7R%wNX63 zoN6de1$eE@>yGkZ`C>M3?Ac8uhMv@*;*De|au%wAs=vcf_)6@R?u>0&<4|%azts7| zrKROFTIA-()Ir#ijsT{@H_>+(go`9p#}}3mT~Ll2dw2g0>L878Pmd5B%+WX8?ju-m zVleC7bBKA;KwPpAEcTyd?i>EM$1F5dqWulN~S);lmA_kB7m|~b)+7v-u`MO!?xWV!1#*)lLiU4yv)GEog zWH!ib>?_a3-r_$rek}LxF4vHGO`IA9l5yENX*!>;k4t+Xg|@m_D{%TuDn>r0O}ft_O%m1YIQ-HWRY_%HWudd*PQ}eb!A~V}#m7`8^=-IB`dRyG3DlLZ zc_JKL(08gKNq6@rh&4cUSmTX6%Wr%*=jhvp8*6p2SaHrq=AD%;u^6t{0=qz}QiSDAOPP<+GV6R;h0w#a{(xOZ z4x4A|x(}J-Xtiv+hzF?=MgFx&p(p2GMjd!0L)-?>Ax^st852KTDut$EYF*@43lU2p zIKPZs-eBLjNhPgRLWSP&F8IqKfS>3&)Hb9!R6K%aX({!OsKU_Ze3`9HkDh8E0^p*1 zQ9EbHZEN#zF2zPY&)2uMuZfRUXZB*~wbCvh40ob)q*NfBCI?B5s3Wji`vdjCwoj~aGt;+Tw(<_aW~q#!k5$l zJTizgz<{@(lygif3H?{HEPN~q$y}-}M@!h(%(VQ_$C{2~{1;kD*}_o-DJ~H`yD*^_ zSvoWw05*-5P4Dr(2pqbJ-=b#)+*;qt|LkVId;ikR0?>UOJGa-{fv1D$gTiA6Xc`!t zcGYFrFJbTrQ^62N4BREW$_qj@Q=3B4{%!-J+uvMme}LOUQy(goD?2*Vc!t9jP)TN( zyHoX+qffO*(_fp5aXr1ywd_lC1=Se%RZYK-VDCrzUNj;&HN8MCyUF%YjNh8Ck@c5+ z?~q&&FUf#L_Cx4%#=MY*v;2YAOBnh&4JGWb`I>EHTM%1E(#8&0XZo&Bxv+=++tGy02dj6okFaF_T3ruE?+02raFC~gE{ zSI{atZsg^)rtXB5t>~i>IIF_*z*wf#oef^s5R*!}h zv7vMoN6!?cf)2B^zfz1W09FZUO8EQyUrX^8!9O-1=FTjCJ7$iVr>RTi)0+~|e|<=z z6;rBGrl(jb)Hd#2LxNX-b*zZ5|JSdJG+)XiLVTb508-H#P<2zoPLq0D^t(& z$|({Bte_&M8ulh?r#c@rIHH$C_h}4#npXgUKghk)L0$v?*zM^PtZW@a{>zbevm(D6 z_-o668^V*nCbBq@_sf9bj|lV6zXjwkW$5e`hSx%aK?RD{TyMjOKuKKQ%)Mj$i(U-i z&14frQ+V}jukd8IW*M>(rG9MTb)5RE$K*;`b!ZgkqqA|z-y(W2EmIGhVucrnOf-e+ z6=n7HHt9t;`imO&Gh;YzKu)R&tYA9CHmuy?=hO*a>YPqT39vt>@B&pp*i?CHyWp;Q z5uLSP;cfQl#d^djSBU*WyUi;EPS7e>&O_b8_R&2{U|JGkK9-m^wvKzxhT?ie+GeTE`!H^f)#TkDZ2H zeyu?{a~b-T)}F=WodwxJ9sgrwbZ_a*tZw?vzoQy$Sa$Ur>*~?CB>O>!#e1{y$;cEH z*5d1}^4WX8K*Y0MMzVp7OBx>esV7m|`mHQSXu~LOhoo_mhC2lz#h~&}V(mEShwJK>f2#M4`eP0(iI@ zCR!v&@eLHUO+5<_p4>U_oVxZyILn=eS(B^~31m2GYiSN8{zb&3MV1C;gc0Ja=FdN^ zER@vrEW%Q-m03iLX&NhC7NjYhSg{TV{R}_w6ray4_WjM*$t0JL>?q|+hE9kk@#(ka zYZT&CjYd9rIIcV2ff@DcTxzLay|P+6WT-}M_WXSG#IDoTgT1svR@zYs*%=A-Fv41f zN%GN?xLAxW29kFsr@E)rwJ@h+v!_x$0MgC&hs*%{{WM122~d-?o?@JSMoN@$R*hhx z9j%v?@W2k(6m)90CgrDsl0t@doN}CJ1&3gKPQI2VDKaWZv0v_+j4EQ1w+Lq7?=J^^ zLK&f<7Yk!H6&OVRiySh8w4G~jPpIU;K0z&NJ$;{~PKLIekB3c4nZy~(-5|0^qkzTmnLOGY7p0GSU}n_n#xVN(fkd6YJ`H7Z-ln5OJt?TA9;+8S zuG@5?!`V0aJnmibGFS!d4N-1>rt%=#?o6$O4qzc)CK7i2YF;)SDN9IV3MD6MTmTdG zB+8tH8zO2(qr^lIscuN)c79%Hy6H0D(4$#i6K>?W%6$mF;v%kMG>XY~@9E}oPkilr zR!a*jz@JA9Qe)V_ee+7-d7^kPKbJIgD&e6W`ADKL(<)kuKVvaNFV&K=GtZ`#8f??x z?N&o=TA1OQWh5fxk;8f!RaDWP3N0=|fyRh@Ccrky2xm8#f58{<`CXDi$JMfHja@l( z>P*hE7S!-nAZ0+;iH*o0P%4-<`nXYJ4feU zeUR(R^$^t_U>5rv%li5p?FL%F0p3mITVku->U7lFK_`#ETO9qnM`jc-a1>Vqq;1z- z3nJ&zpJTVDB&Z!k7gFhRZsVOjR{PqTCp;=M7Ck1av=Xa|$329`{7`gXyJ+yQkf}0% zOQZ#}`;xxwlJ(;s;NtBgkO(s=R!*QhpsGey$+UP4Gr`@#s4kGIY(Hc0c6b(jERMdD zbUpGxgrltN7Xxai$J}BhM^Bq2#lv9m zd`h#mIUfzsl(k)mNLek{m_>g6$@BN7;4e%WGQ(1=j|xK{QA-)S1R=qTi6^!wznp{$ zs!_RAm%0+^WED|IxeQPj6~PKBVqrUTi@{D*=Mh;?2$^%mR11E!Q^bZz> zVxQL@Zo_@ru!}#Iy8UeBKcbTT7DmYn0eT!Mr_O{RyY4p#S_&dQ&L410GNEE573t39 zIKj65E*hR>YvMAif9sIGMD>Z*#HW8pna$-}l5;3!lni^tL0AgHra~{_?Tg~M+hD~z z5$;VN2a;7REmLIfvG&m^zoxrS?n3J8-XCr8xP+=Jc6Wrdz_lsh-!QYt>aujBvxh4q zGaH<*kbf4M2T1-e09!z$zlem-cfx?_%`3#WwpQJ@>vFm@wi$`5XnieAGyLXZE;$`j zXAI=XVJg=gvbqIR-oPN>(J0$6@Wb7|n99K>OjYbti;ByN%Ja)WAqM!Ephx*WTvM`bTn0%mWPSqoNkfV9zOCW zS5)zP!_-uHagJPKoLdfgS{Se4^6cvIw!y<;1Pjk*{I?!1HeytVkenaV!md>0NbHnf^E{=rnkNECP89&!c7)TJ+f z&v~w`(t@WJmTQBRX%+sO;m@uB?+OgM_VT9F^{3atq(hj=3dd1GTSAbT$sW=v88n7t z4UdrPd=76PkgHBCi&<_qmwR)U4ByzLP#W0A_C?rB(A{Wr!_dr zH{6C}62IsMHv@-4$<-Bn{c0Sj#oSQ(F-^v9&q$B#v$zMx}AMoz~-UYoK5Y;8T z-_A7wpSSDoV0Z5I>$TMRQN4{uXLXi1XBTVp@gwU>xe(8gDHe2band`2Tvo&X>kGWR zBJS5RRa}bLz+X-Z9=5{>syM|k>5VTrLB&T4P^Te?733ylG8GBYAZryyB+=8~fat;8 z3tgik;}b%TAR|t?G;{NA31zXlG2HoCF&Rfw!|0zBs>)Uq_zUJ!eZ0oMVjCva#&KGp zG!S6;`RnHz-Y;Fyb_+VXg`e1eu>>QHtMskkq;L~ocH^es>^f<5|FWURy%q(abi*9b z<$s1Lcbq1<@h#WA=fm+S=*Ia*gK$p(6TX<3`96|`1rR;2Y%p^uUKho`4en@;PJP(GV)Z?_k zmasrVMlhO4i~uVi5IJ0R6ANslPs3C&Rd16=3yw+IG`5ZD_3t&+`Ez^Ps58Z|SzOV- zr`YB2p3d*v)4~61PX(V7(5y>jtm_UTPw%Xliy=@$=w@%#4 z4T%|5{CxhaD|fcN^nQC-uFXG%g^*e_BWG5bP5q7LmiGGVCCN%0VavNjyD`TLAl0Xo zr{wwhC)6ovN_r9+%w!kv;V9|1-DAg&JuX$QXZAPI#(`S6ss)#dRvbl#x}dpR_(Jzq zw}sj6z~%bli}@FGF3@F)40XB$@w5@^kF54zBS!TGT9{3)*`1RM;4pg|D;f6czYhi`vkroE`7yUl`Q|epZ z3D>&7szX>V0C>$J#?6Vp9fHWxG($%KQ?_hw!oZ)KFaUC0)Rve72@Nwu%2b6sRSjb= zeQbJAbv#RiY%n_h0Au{M2ljOt$#CXrDKK0$Eqvc($~v;CLq9X7d_R z_|8MCg16Hsi(IMY>qn@l5>C;;(pwB#3W-?TT|5GC0lb8&X;#qQ>B8ow8pA=BEiO$*mq%$bSERUE<(z4qOc+uzd23I@X5 z-4K&^>14jCAT*^cyP!0U7M#zbeAb*iY>I-BbuE~nfsz+sd=^HR!T7>dRkBQJ-y`yH z?4Db*b5DJKt|gidwn{O@vwsm5oXd4&As+Zm+PD^?6~5EjGU2~7n&N75heor9GF-Q#@GJ65rq3; zQdmZ1L7_GyITLT695JWN>+UsPZ)?6qm-S8A-r0^>)>z>#qW^c0u4pU%2b)c_KwIM)958+)){r9>Kt9HQmE4;tlph^N$hNT2R_Us8 zX2eikPB+d7X2hHmD&~X%5CI923@FJ+kkCXG$=ywplq}t31r-$)GubqTF~CyUcV@YGDn4iFD5;D`0aa?swI?W6%KvJ}BKDI_bm%gce zTz`K1MaLYMjxA+ae{9ZIwCfZsAubrQuq?B zK3kkqoLiX7z!M6M#_`oo)Dtz#Bfy*A+8_+uw;AA2grA~Jx5C=HS&XhzXc-)6g7Z}8Eo1DHVi+4pompTrkiV4*B>@nzf8=&K(!Qm zOYt=EMbgWnWYU?&7+XGx$%QTrNR9;>8r=HIMWn4`K&Px#a)KQNRh=g|O}Yy2*~r3Z z+u*5tCd!aZxKkM_0QK6As9np?`(E?7?CLyu`8BdMd`<#wpfGyF&NBS#unzMANXWi5ls+3@ z5}h5%u%*~<3`q`Vepad~E|~y8RClR-)DA829J}Jt60Yn;1@tJz){UVe(ZIdP*aeBU z<$L5i6)?uHwES*OsdfM_?s(S7{HpcxDjcq-sa z${&5T4fWr-@XGdfm!^%5GZrl#W=90XG(2g$`u!>I8t=lbP21~VA}i?K0bdrv&@332 zm#j)kS1xQ9AXj}Uwj#GJ>xSwK!&jqWoUQ`x<}2u~X-0p+ZZi^6<`R#xFLuU{lAyIi zK=gP~ODn})$=LTS#Ib_T1I}@*uKb5;>=F~An!!{Q8nq9ZY(NylR(KXU6|cqGn68Bk z&7(i}<=??C8Px<8%}Gs?>+ElxNu3k9$mm+{dONMH3=NG&-^5Hm^yJxVFh2KEK=dnz z)k)c>zT>8%`O6kEF|i@>hfQi{q$j7PrDe##A`b=?|9B*0mvVRV9)|txzRg8gfpQ7? z%{~~&l`8bgC1yMH`o$nl&@VC3uN{JZZNKi;=;AtM#r*MWu=qY+x_7JbajkciSN_)P zKJ_oqY@%LtF_>h7X+e?_OAo8pW>4`@iv2C`yPS@U^9Ir@28?u9lo#Y3OC=?TVZ~^A>$qnO{PDTSP8?4cTS80n z74?JSrRt8VP<}K)rC59y|MM*<&mCr^ybQ%UM^XfHa!mDN<%YfmwdM(teT?O^Y*Nyn30s8X8BO+wn@xd>-j%w!iFNA*T=!hcZ@Y(=hyT)aDeAAAL4?DPN8!}|xVWI*$e7rh z?fLuZi*cG*g6%EKC!JZTK?G@B(P#qEys06*i66VIoS>bIEuY5az_!u=kox>BG9iJ$ zTe+z6UmBrHepvaAO6b)D#vQI5lA?+1ut4zaY~>lTa{d#r^zp^Pq@W&np2_PyPbpm)G^Z2r8gSNtH_3=E9N|uy1EgHfve}P zHC3N0IHXP|?TGvs%>$TAO0VNI{$+57kRsIa3p$@;Wjen7#M-otvO5mVFdBJYWcX$1 zHv!lDHFfM#;f37erH7RGhzu)}?sxNBqJ8FQEY#;M@vq%nsk~`VVn0khwjLXmDXu4ozqkcubhTonShh) zx`t4Pat|DdJIcVfM%}}j?-)2p`I@;+U%q^G&f?tJIgGJQdqgIvG_YEmte42x z&qu6I#Fkn8{~xhc-nL%*WZg^D%JKP1Am{6(T$^|7BtBn5DY?&n_sBqXthBng;bd`n z9;r5UFY=U}oUbyg?(=m@&c8%+IoI`K-FYE=yr{FGrkAX}u<4iFQ|i;oQ}|v_Pstiy zAPqv3*P#_?5bBX3mqL%$o9|Bji$P9Lfc1dT%RnD)7{u`nKeth`lEI z|B_9*?rSbOx?x+pb>T+YeeV-65*=t@9)md-6@6;^jdg_{vb$SOV1F~{3^NX7|FndAV|F1!zlUYQ0GWrtl%}8a}CAS`H8ATMf#ivf*=zGL0%IHg2Xzaly_R`rf^Ox z#VDOR_QPQiB}4zhWTEGRt&k5>iP5lR^rf%)VBKWFSPiC}P(Q>>M7c{9_*%)n3SWQU z{wK^@0e!|cSU>eD2W#D`UlcitoU|N37gv_FQ*ci;Ofq|TvS|fK#^mTm#k&OZQ#(t1_q?aontjqN2tY! zLw@v<3bD>7L!Z;W0K3tFOj2@Cm_h*Tvj3dm{`9|@@of|i-`~>sDa9#z?BR<#Sc67# zIO5v{-_WoNT_dm*GXhJggIVPB-S~5K%?N+C8=2AQE`OB^!KbgEJk8q2X7gTbY=V`0 z8MdEQ#-8fLV!S0itd1QmK6$8x>0Crbdxts6cVxy$E6PrtFTy7fUmof6?n&L<#cU6G z*8&PJ;86B~ocLVEI8qA^8mNZ_L^7kWWNx?ey;~)B*~k3C&SzXyOy#Z`XN9-y=BA4< z7}=CCFbVl{QSt{~@8?yml0Eau1WR<`8V-hcag$HFFPJcPf-OOT^f>kL`^)XJf&&8g z3Cf2F!V8$EuGqH5b6-$oL=aj3aP{8m#3H?`2rCsI}`}k1y!EC&C7}a%=tLJ;K5l|nb>Z+o1lQYxP(ygwM{5ASF zX&)%f$>92*A{{Y;|k7%ne!*tky7Q#aGttJ%ulY==5 zAI!uyr(<`UfNtA(6`cMS^&!r~mvT|NqI++^1`H3EwkTw&PM-Xa*Lv*1SKlU9KC(rhDR1}o{JlniB3_6Y28?V!Ws z!ee4$o;XQMtHr$1CX*^IRVz%{{2peIN*5CteD-ja6o-eQG~2I-2qI|mt%b=Xm&mX^ z%|yD9d_3N2VW0QPg5>&*?%7Y&z15<1qVCPMprW_Q-J*#dE-N`vUs!%bzuEUlu+56x zMP$42cOJ?*m=mAFu)TX)K_HsKO~C6vKqrPT+&@niFFBuDy1<~@te=1*yU(LOF8&>2Kr)lXd}g5H$)BUcF93T$sIkP(M-}2n(Yd z<22Dnum{tS6PZq6-hU|7HH{{G6%Hc}rGaus?7(!TT5;h~ZELSvo}D9Ghlb8ZCL=~< zM@oTu`-0%L`c^L~U6$o=d`icqHDI#ujBlgYr3MgHfVl8eVG<6>R10qk*{6Gg4}Xga znXq%r)^QuJue-kZ3S+$BVSG01y6C6%`&$%asHqsb{v~qJCFoE3tp>o_Hhxe?LHmlo zMQP+8eIS32Ra>IC#SZ%j$#8%$=y^6R%vmS9@6>>mGVT_W#49;|5BgTOhgu06IrNNP zUKT|tg{_YCl8461-e0`)QSPT&uuoaa{_;d3y*zg4n}B7F6u9Pv!D^;(MQeLUJAcprkV80H8G*#{KQ#V+@5<%;_^k9)<-F5Ue$+qx5X5-FHWQT zwjBE=Xe>4%MrfRH7)M}_%?4kJ`!nApy?$U)$G_h4Ih#GV8%QYdaOm2oxs_s6NF(Shc_28VSUp}1zX&!L0^Z+q-7(%J=xY&T;!56L4Qqt2?RI(Rm9-li^6rU|!y?52V zjr$pVKKj!)&}#U~9PDkC<@x!gLZPAO(eYIa8kpQ z4S`Jz|3x>|o4&gXyN6%GAei1=m(e=a3hkDwDfXv14{7%0oPuNpVWwl>3oqOYt)$sk zGrlKs$WK-(6V=!k34$@`D2G9t^{B0F&I9ktV#>>w4cg%{6pSVj$^{?Q>}q5Ftc@a zD_FK}X_K^Vl!!*K&$j%#cV`rb*FX0YMcOoyvk7nGFq(bx2+ac#CG?YIkHVjgKr?Cf z>BdjAzMw=32gA`uA=0-&L)BE#G19kX3^UOXQXC_H=mYbRjQl~3|3JYq1CI@Us-Mt; z*|h`Nb72(w!amaZLW^h6rZRq(8%;o)!h5U zsp=X_9m+e9A6Llyr7Pqh3*2;K@+9me!oO(t*=BG+PE>e&d}z?*G}6IQ7hf2Y8J!uO zLTbRT6&aedCSa#$U{g*Lz&FVHK2<0b=q&K-_Ck*Il5#QnO@+U0i-3$U-u@^?0altn zH84Q?8lV000hi(HfZWj1sJ6`3kme5rU_Y)^-6m-mF2@H!#9EFM!S2p>Y?*6)POV9G zl65#;!K&|ajd9W4=TId$%+< zycchGWM;xhO7BpU4x?45icZKrNPJq>a3HZjv}K(kIj-JTNOpT2!p@r#9?o{YABhiGh6V;K@XO|y6>iCs`5VQturshn__QQ$pO0CdIMb7q8SOa$qVffZcTl^_ux88}xm{)bAxt;uzj-Q9E^ z%#dFr!!I!BobmVaf@#yxXkj#3Jq{b@tSB)Ihfx`@4W^mEw$43k)v9|o^v+p*Qf zW0VXy>Vi193j67O9^38rZpYhDU*3A9;7*CxXJsZ650dATcjR zrJQ$Dx&_B0w!)h%r+gPVm~CDjaUeW4I_}0ssisH_y(szUps|~0FnC$64O`p&-Y}g@ z;1GvK{Q;vWBsCg_M*T@c;Y-fbP8{@uq3~@fTuSI$iaj0Jfo);BzKA*$trbk+(h;aY zNLXYILu)C+CoaM#>xbeHocxf024Ww-BvWPj7o4X58`dpwBo*1BYCCC7Npaz=oF}ZdVl5R@gcYfD-Q6TVi5EkK&PEx_> zsBrbFs93aYBN~mo(O0CTp!#$LtQ3U6ELrDCP7GnGUj+)o%661*AT&*@#mEAh!1aIn zt8|-mUvf|jNvH`W(Z-8E!Urv(2v}6v1GH`6^|xpx_E6nBtvfGp(b1;^uQ?TNmfhN+ z!B_V7A_k2r<`yI`N?kfwmnP`zVX6onxr4*<8Hlal(&S%UuF5!&<9Ff+jFmksWp5+M(--*NRgV0-fL6u9MsuOGS!O zK`4bCI$+r4k9G06QnYWK7#i@sq!%WBCoD;V)p$guW1%fWZPfVP^FlVoFvc-T_(SzZ zOPq0I%>aIL8%(*os#Q|YcEK`!JQo#xadZ39JbT%9n@+-LbfAstTm}+u<2vyQN)1Iv zk`&453faONI7HUv3z^QNR2(uE>tcm2rT_3D_>cX?T~a{~laW1z7S2Yq7cSn}Y$YX4 z9f@if`V@NHeA>vMtu(&Zg7=x>dtpC)?m$U&PE@8mJtUEEd8unInDD0bT@(c0px!Wj zmZ~g2za%wDB^^h zyU%-ZC?8FNd>Xl+d_qzTER}#3grF7ZOEfA=E`?d}Z2`C>!6F7G=?LV(2{<8(v>@b_~3t{e9G9Tm474jwf2BXRiD~;b3+3?zpV2v z7ZKCE^dah*KU4O2?Ri*=v@n+0j8+LN zWzj+LQStHn6PSbhToP6eLPIFKC{?j3e~A`SZ8l5{u*0Hc12iZr! zkWa^A$4)*)^#qP`v%L}eOT2x(g=@j(!z%OkKziVG=6&XKjp_jHqZ)IOr zooca$g?3lYw79oAUI632MYH6hO;@4U-=ZbN3%o+YMN7HJ@w#J+60;|3 ze{OJvI;Xhcxavv39}G-^l|-QbG0!C3!b;Q5Ukr`@Os5GN#%*&H2U0AaHU1uamCR7Ibmr{zA_QZB} z2p32G#n+S)e`>t`Dh$yyYF}zzXj-+&FvCyl2j2{UCHWbxIW32pp-IrlzyJPIE^3pU zAIdgL`2H|Q$i~d0opK}J4u+u=Y^YF`sbdv;i4KYggTqF-S4>!Z)PaLx2~5I%=fl>6 z@RFPlBxjo9IOquR>2Vm+bNOt(mXpVo1Zp>?Zjm*)+yG-V|1>j1cbp4Nj9apCoyQ(o zkUTP25u6cJky4yH=e}?Z}(FM-7Ujr@TBiK8>N%1 z$>S8rko{GL?O_H#@xKV{WiBN5Q&O_`E*heUj*_zCp2zo{_CB(e(J=x7E|m)R+G7{w z#pp@}IxytZBPo_Fkg zg=M7Od}2+ev#j0iGH_`9Ekfbo%q3MOR%lINDz8NtN)DBxugy>_`|4 z{ZE3W8b-N{+Jca$gFhwUAihdnmK8^+)DFNP(#mNQX&V!EAUf_))FCDz%qPKR z&}hm%R#{{U_i6a2G+cQk7pafyXpVcoCP0M%#&2)V3no4^bc!ID zF|dFlBqd3iWAR$HV8vm5UMw#c8^>q^RFJ0u7tI9?*cpVex&>CY!oXG-+$O2DlB|>y zWmyP~oUTvz>4z8ALNSThi5mv|ygs>!B;W#RpR+*rhNR>OaG*NW%~=;Ri=vMlRx0M- zl8)Mh9Bt4f|CIgG`>BsI9^hlM3R?yur6lal^e0zHD{AH-30`1-xvLINa~0F^i6UC_ z@d7?jji`bSI}jgYP@LNMe1qa76U9*)6le59EVtp#VsM5&v>rzus3n+l9H{u=6ICp1 zlKw;u7aso&!q@1z#wB}gLw3Xx#>?F*@F<1xn%@nI^Fl6q=!c^=kZQCBp{>AY?E1Qv z+-5Lpf&Q&_Es_&uBFTagB8doxawp0~yhmpU$DSyY^IxM8gm9;>T9k_rhdPu5o0n!< z4~;^hNXS4O{>S)|_Fx*uL!cqewOwEwal;0l`JI3%h=;_UEfz&9zfr^z#tP8>d7 zWm3t1?W6xjl7h~`7j$a+!pqX_TgAFwlobyCi)pkW68Q{A3kGLLiP;miBA|e)g1IW} zy@3P5mf%FS$V}fImCS)1G$K2?>k3@ps%Hw?n<@LfLCo&_Mbv$Ury7jg|GgF1q<(uZ zJ_||R#NY(I=q!bPD@Z`*Nf_AvcPq?B`7VEDk{lVnRdPvfVZR=Iy(?76A1Oqe})sk3!gOz1;=h&+w?$xtz)e~lMHVH$nNd!B}ifK zXO_DS)C%AAyZz-SEu~~UMN-Dw8-$@LEIuwo&%_fF7)qaxFODG~yfcBBk*OgmLCjmF zstOyAzi6PJ#%3asgBWIg>Rx#L`v8p_p~%KERg&iVfy70Q{>@MOyFrjxr^~OMydjw^ zk}MbK>h{0jTLg;N@_=%u6c5=A*Xu9C zF#G9-qFr3^iPDCWvji{_ywGpmCTFK?o9t!T44Tg8avt{B2COsGzw{y>E{Oaaw4GWO zXdC1kbz-(uNq8jGzg;HGS;SC>Oinjk;W1f}1U8_K)N8szRe9M2p3(62_wkwk)#D;) zh?|`l^`lOltUX^`%j9PgV)aqSLhS<T31MddcxNtOQ9qKz_ zPG*Gk(dp|qYu_B!R++UhwBEht__JL8F>XM4F307bixKCI_x|sU{_-DZc|ta zTWNKMfqjjDJ#55gFaqK!Jzi;t)&Uz)xAkJ3y-=o!K|fMHPCRq4kI67hwc z$+%$G0?v;{=P6)~-oyEkH0pwZ9QswMXOXUk^G?J_vLSH87O0FiIce-i1 zyOx^g95d4xpUSNYjXlyrd*D)DxPx$o#_5L8AqV0D zA_kwFtVmI-(sE=Vy$@g9yIC8TB^}~6)O~?J15I?IRt#$iRe70!X(<(Y@zO}jk+>m+ zf>?`C1X@V(TKI)SJxaZi_bjww9O^I2mR~x5zUAb1vO?6WY(&Ep%aN$(Ok}Z=@JUU+ z2)*yT`r+z~`-?v~sI&#S+EhZlU{pW7b>*X%pDw__QhYl;{7g(}Zo3N5?&FwjC@I-#;00SL7im9gtF=v~Zw-nS z+p@bwk|bjD%uetZgr>P-DsZd+HeVkGSr`zz_VzYT)*cy=(kG|yUTV9+zyNChu6_Rd z_PC@IU6lHo+R&bK^c;RtvNnT!(8b?Ko+ep561XWpCUR7Gn zfJOHOSL#ZJggA<~QJ3zVx?6FxgurXmjf!Voh4D)e~p;FpHU?epKRQp7kV6ruk&C$bMteS zi)3p_C1VkF^is~1%xn6|8O&DQ1VUcj6toA(?YFQ zu7!E!17Q4>`ew;Gb_<`}nZ-@13SPf^ZO9f`PLx(tb4q(c;D<_4F}g8DTx6_vNBR0x zci9!UE5M*R?F`uI>^aRrr7|UBT$wa_cgPkT(WBAAHus};ItOgr7jP}|-tJc4bvAQ0 z4c$R_!uyu|aH`{4dGN8IqkAug=G`1}nPH=A&uA_ev@ivvL(P=+T;AlpMT|yLFv^b$ zwcG9F6&Aj#G`f=EleCv8|G)j*!u7!;SX?Vxsom{QKy+^J*8deE?GEpgL1!=?ep;2@w?|Q-(Zlr znl3EPRG7jzx?$%v*TT&={R-e~6i}3qAT9qGprns#vxxcYLuVyrrl+JWzbN(HF1BdF z@s@r^{7Q+tnvUW}pB2Mb&$MhqicC40EUmgcpRhKlnJ9FX^E&0*untum<^E(m^9fizhqb2JIyN&I67=0J0cYj*Iz{N1Z zHM6obuQG{@r$_yc^|&5hZzivG`xTTu_;%L*2v)=K5}!3%@eGg!IFk#k3V3{Ln`R6&Iwhz|?35}bkR19@?3xhg6pG%b+mT@5Mm=cbtQIbigec}o~tH18R2u7x?;0q|Gz>PK*< zP4a^Mm7hRTk1^*wt}asB$i8!IgvluEJBHtgMiTbe9?PIFsEjt%o75|W z20bOiqF8!xT?Aqx7l*}%#YV;6wUbs>i$78B$Yuf>gKSa%j0h=q9GE{~;#u%yAi|K9 z@+&8!bT(n_WT_+Xlz*m>Zh{5f!wa7#ZWjU@_BU(Yb6pM>8Kd1^?pEX?Tefw%kHby| z&e7~IiQuqBN#$z^0*n8GFf=IA6%77e%O(=HET9%tiMzb$po4LHBL>&aAq=)@DjECK z`gQZ;mc}}DfHELyCxahxbKO<2MEhX?{zD=X^P@Q}IG_p0fkxIwFoFC`8_y+#IxgDd z8knU~lhkg6X24_YFSmekE2vr}s`nBL5v!Wm`F&?Nhg^^fT@J+jo=8gibq`)NszEiDoStbt_;S2kX!tw2rcdbgpZhiZ0JTl4|-Z zteb=HI3Y2~U#9a?bN`{8noYQaT2Kf1#W4Jf#`ZTN)nKgwQ_X7)7->j{B<${hr5&)U zLvqoIz1Z04$?G^|q_e_Sfw$6d_=g_66{U;8FWjY~kKyakw4Arvl+g{+J1J~W8Ug8% z$&r)DNb}RWR4xF0y&UVwHxpEmQs{N*-lKER88qeQdmpgA3zH7F4q_u4lZrEs7UAId zVq+G4Xf9fO*lN&LpTs0TQ|zK%qdyOEBS}tSs){N9tsy!#e7Z*5r4}mKlW=rAC)e(T z$BQGCSyie^G8-&4lQ9m}LSHR>QTjv+k=USxwykfudD5d5`n5i8m+*}eBQy3(5iITO z!$rnbdQ>k@v6nU5x52l_<|V^FNaX@o_$&%=&xw-ORi3+0doKT=fVn}QaF7dj3$Wh3 zi9t)L%DlK&$o!-{R$8_Fl#R+&881a@Vpmw*3&=!~=!r0iqDMDeLBN}l(!MK1LeA%m z$_7IcV<}ZrURQgpynDV`8yd$!Km0ZQD9A^(9O|nZiz9A+td_$+e8G>Ubbh6rPNpKG z&(lng^JDFB#IK)r{(y`T`=`qE4S`e{M=4)`v7Z)b?H%o5=(9eU8Q z+XHG~TANp!?D}$9g`4c5&vBT6-eEUnr4fqv=cd)WtTmrE zd6P^T@ktB4u3c}GQsv236dm6M@v~FqmuAaUqxW*!PJD*1cqgL z=xl@<+YjAFVxqsA~16mXwK6qEb&ZhHdd|4$(R@plP+fY(Z(=e1BbLJnij(9maeF) z81Ud47~KGi8&|Is-FVj|X}%>9EoUD;1d~n=4zS3O5oH6#T$iPi*5u`+nmz-g6-qk4 zG$%dDl)ooDGfgp%jIkC^rWR|(*U$^{dx!Av!TrvG9EwBV3i*W|)E;EL5v`blhU7#@ z@Bi5Nu^MPbXN}!=!v4h{rP;@P$(9nwRIe+}m*ER!`HZ>$7p)c)Zg;6W$s9O}1HjEN z7?5F4KYYKKLs$}vqtS|SXoNs+W(LC)-~qEuPQKG!RMA?(SjLw>F{GIFSyy+g&O^YS zx}E)f;n}>x*xbZ)<(%u%?K^F^+66Mk`&Ce(0f~m3Mn>BM*0mDylfCVd$ZMU4h2bNk z5rei1T$~HAB9~xAt_Ck!z9GoP$HQH-wJM-4EK+*RrNaBT&&uV)?a{Q21hcX5I8Ybw zwLzb$VCexK`_e1&@-+%ZMI(15TBSwOJEzYVU&(A`AliY9T@%_w9(T{y)0b3s0K>Be z+|JhSDKVbdQ$&5yUVPBdaa6&91Omfo&qG_{w+%)3tvAlwtPGRB zD!+a5@`X$GH@%+wDJu$&mZm1Eq*L?fm#?Y6bmRD~V-E@m*i^Nsl?>lTr-{M4Miox3 zTy)lkDX--m&u+fH>pKSAsi0MUYrO1nq{p)a($^)Rd!QHkn{tfvjQ2lOK2xep5=htk zlzu3BRluOZWN-u-K?WxDze)}su?Q2x9p3#j>YWsrx=eI79P|Y18Ti(OCmdK)><#yc zWD-PQqo2Wg06##$zZ?w@_>jn9|07(=NHdUg&h}3?N-M-+%+XQp=$Z8oBx6OLqbGY4N2y z<;P}_6u=-EZ;lRAp>eVM3{9*N`{|41&W+R$%Lz@{%Y0B}R9`abw5Icu$?i`VhUMtQ z)Z7X&?@H{dt8O@*b~fqUS(EE{LC<1xV4R?{tOiEli?Y0hHxbAh`8l0WxiH5d`(5@7 zx+%!Go?3#23`3^KWDItTUN<~wZMn_p3RHBNFg#}`Z-Pwe{RiTL_6-x@ivrQS!0S(j ztrNn@Uj$lz-j*&%$yF+pliQ`+Hi>mTsbED#z4lD;85y7adHAD%En7o41di6^)MQnc z98#vG;D~p%E|kMhlITn*m}CSj{+Y%4I8@6|F7wyG%BlhU=5|RwTi^Mpb3W&|LX4EK zk~&5RDzb;Eae%Kg70NfSsfEZ6hYcIB2P{!zH_rx)U>Hn)1=b9DkNgGWvjqiYQUdJ- zIDo6c7;LZDfX|P!wRi%>KIA9U5Ao@ep~YZ6T3ue8uT4r)N!fZd{vnzUvnCOk-(R0S za)Ki_=CKuZ7czA{c=z^RoxM6wbJ6k(J6rAZH_7g7(ZWy^tYzRJ8p=6h&;Arvdc!OZ z9AC!kCJMMmM6E#E(O~@lS~P?#-wD2ip)mJ3!8Dx`TJ}_?{C`sD%P0c|B70bcsO++m zBU*t3cEgW&am!XgIKvP4yf_=OxcT>Ev-w+Eur+jkJ^x(b4sGLCwMmY#Rh_#!A8{xI zB?uzgMy*0i&{x<)9ETSXHWaS!^E=!1V4*4AUOqzR=eJ1Q+K zC7Ah5nOTYT;VKL^a2dbz)DUl&2JCKb+Ei$ly>YT1K-~B;zoN+J+{tMw2I@ zFEb;gPaZY@RR1TV3niT0gr7t~*Ls{@rFQOcybNZ@|0QtPWcLc$tD}|I+DEC z)8ZJzZzr+lWNYCoJu^NI2S2q-+}SV)==>5pO~)Nh&q-M&>sZ?cW3gM*li}kMIA6<6 zGkqMhqNEp2Tx+Rs&O4ALcugN5l|xf>VnH@tC|fsOI6Ga`EPQax@PAXrlj)WV9>FMJ zeuu$~u0PqVT$L%?z?;!e(F_tQSM%)~@cQ!2W=V-ik}6^! z$U8^zUvS}Zh2F)EM;vA2q9(?yJ=pf_HuS4`d6Z04Q;n^Y?wz;-&3CY3;^IQ%51SmH zCCt@O$=)4(Q`nTN3`h%1+;z?FGK@m&U=p*9U&#$S7KlbUqA~X7vh3)yjVEtaJ(R&S zDi-}K6a{VG%*f?22XUCZBt3PLX+rRcxH@@`T$UA;5*%bwUzc5R%=Fx~qp&BPX9|;r zD7j7Q?M`@Ea_e$VWu9gV)G9UJ*1zSb1etSqTQ|c-foLfydo(^QQE0ZX4?`(GG|mBy zorRdJaOvF#m)_L=%INly3}7}sC2CshQEsDfX?D5>9J2j^`4PS~q$7OwTy>D7ePuWh z|B{O`J8P$&}<6MZObP>^+MijQeRXnA~93>kS4of47| z%2ZdXjue_!m*u@x!kDAU>eRHfMS=^4f}#PH(J z6C`c*l(FcU`*#@)Pz_Ly9Z+WNg9OrB!?h*zE z{=2u(>m|&#BlH>z;RZKcH}nIInvH7tp^gFojX1ZpbZ&BXdRqECJ@AVq8MfU(shY+$!&?r1(~uNcna znwC2^AiPylCMPHHten39A2{>seMsbpCM*~!Q%C;twhg|i{9RU@pd>T0VN)>|9@{eM z2{O$ZD!ae(0@$NM@L}3`OCc0NLbcq%5R2(srY@o|fk11sP-#7&a~7Iif<_b594gmW zbF%PVeO9iHN()X3Vcsa!HRnxuR{~5|{gas2o%)T?|M*bsMLDe3BOJ0xL2y4Q2;#5q zP3=SzT=BxuSJ{!$mU|5^s()s5o3qGa6U=j&J3ef#%?{V$Yqb6c<`?Xi8O-xpxvy4# z-qvWqRtrN&=4ie_N=_~CcdO(+d!KjjyiYhZHl13cS}*IczYeBo(+>>$JHCbH5hJh_ zHcPbf;^8 zho2Yn4U=|U`0nn>OC(#6qO>lRLSuLRrktqBBOSwyZA9N<@jD6qk{r$Y9upuHMkfZCWqh1x|wJBN%h`35uf8 z#6&UMK;GhODgcdlLgOv5mPJT!K4^S%9Gmo=WH=Nt=?c2SwPLl>xykVo)-u~au}L?k zyEEGaxn&%!g=h`bX&-A}RrY}OE#TP<`K^)%@N=gHIYgfNhpX_zvBM-M;5+=-fz&QE z#syg{K)vx}TfRH@tolbr=SLo^4@N7zs~uDx&8`=rFS38kydbWPUWo(x>P}*{oAJbw?OoUlP1z5xiXfS{#-Z z5$2<-IM`6(+i=lUq5CYAvM;<-*;3nhM%HHY#Q9&F)3kZH$H>&uVaKM`E;`rNa{kWo z?~4-E$?1wE?E;Ty0F_awDpVE~=%+kmuY@bA6GIr~x7^d(!Pfqid&AaCOiY&%2hos^ zqG^(3>Zc(D#PhWwTIi`gQ#k-^n_+k>xHL(AYh-_G?EKhyMHme9j+%1<$7RBRxVX4` zPSWBUF~9SFW(Z;R*7fUj>3I!rYj3pt4b~>+f40@wz9mu(R+=*4{IqaI`;!6X z_m+6i0uU;<8HTh&pB70)K3nyo^JQlO(eN2R{TEbgpx#h@q`b$io;qVy#(wFmbGMq$ z-(!%Qnl2(U&tN5e+4F{NvFn{}$KYEOeVaK8t3InWnc9QIx+u1QbX4^q4lK~YNOawFBar&sPlTHDpnMw7m-=-*sB^=9E|#H zz#ePgslv#U%k9tVUdYhQJAZA14Xt2y_}U=W|3y+sW`1!BcIjVa(T5hH$%mH>a@v%X z;%y4EK}~*LN>xCjHSHBtR6pmi8@UBvR+!VGZ9aClu36h6`M6yoTF?Ia4(vL==TI;jD=bHfkNP-gG{zF&7ZK9d z+vguwzh-pqILr|4u|u@hvvR$9(>1q7V9?sPq`jT%_8PSYke)BtP(sUEHg?fa42NDR z_3+m!_>w;4b!cj$e=P(I{vTw0w0m|s^sHIwG7BSm6V>Qp8fa^RD`Tlk)Cd;Co63ts95%$ zKb(Ud9Q#`Y4oYs*?7L7>I8V+tS4xG?CJJ}C`OFM`pK%MA%~sLHB%5&q#&+wzAa-|q zvF&XNf1&;h81!8C4M(2)a6EcQL0_X^;h_bN&=U&by+%KqmG3J|9bG zhP%MthgqetL{@@Uw_+D^#c*X^es)b-l3I#FKgI)xOV-=(hfpors!_4{gui;bL4!^MSQ4~ zc(;uGH9V!gRRO-59^iNrw%n9F0Y^TC)1~O)-DJR?($I8Xf7pbS_KJ84n!2g|KhND> z4|jk!P#$b87uwcWin~?|l>$kZC)&dM80NE+09O;E`M&9}7FK9t(g(o67I@qYGg>4H zxn#MBb(ZtFoyFWxdTRKDu~vgK!o@J+ZZ?RYnY6bsm* zC2hq=;+2W%ikZz)7oXKz*ZW&lN_Fq)O;KB8cON)8U0~f!RiDU`q9sbYCP&ESEu*1F z-HWRBV+V4iNV!IgeW0z~`3a4a{)#~qOa(8)9i!(TH=g_SC5Z}QqxKK1=P5V%DQ)(x z5}xhizlM4)Mt(8imR+%{?2b2qDV94h#Mg6_o)eoKFGOlNSmwAt2_wn{r-1L~G(GHAmHbipjyBW9B zuQ2Q^ejasb(ShX$*D-(cGX?7JU@EIHt5{uJAXJ#l>!i*EQNdZx&6G>;p1pbV%5#R- z8Cr3-RuFP9-c+`1@%wG1pVw1a3c4u=9j70v&8Ql_;N1CLZ zn`Y%$%kJ4F~qPtW)~B%_ZF4d6JAP&zyViIrl#2 zc~JCg27WiHSk9I1LeV%O6T+nNs=})S1s}}XTJ{<)28os+(dp;{tktkD6XcF&P zy<+0(rCyi!+&J=>xy-R*^}5e*ri^@IK%^g5Pd z4TGD(s}0_Eq_&IlErhQKvfjfK7?04IF{wB(<^&|q4IIYoNl^Qx4=l+zT@`Pa@MK@r zIh!1Lk*e4>tpWd)Q_V2cFG-A!8Qo8wJidcD8XS#d;%aUf8yZ@5pmB4myX4OHQW%MR zvYE%Q4}V&_@AA5I7s=giXJITlUc?CdOS$)GA{!h^fW=kbwHu1pqlHp5D|AH6>&Jh9 z)urc|F&dmm4y_h%ABQZ^{F(Eau!!Thx~QBgOEhtduFit5^T0Agdq8zC=@7Z+!!;LR zEjkNAMwnxP^144`Ar0Q5G}<^G9ZBqb~6n>at8QdXWi z*qHe~A2fPvkTi0Gx|ZD&ofrO#JB*j|kg$u}S{7>8NFHoC4|7p8eh=t49$(GA#`S3~ zk~>~yILSOv$Sgv8+0c;c0}Wf!+$FcX&R~z)oy#;EhqEEOv9XWhRY)7H3C#*fo)b8N z@rhUYWehCJ$g7I8OMK*ej!0b>Dhh11=bu1G6$pu~7aAv=Jn6TSITjif8$1wZqdhE+ z?S>INvWq`+Fbh{3(F(W@Nt6i&wwGtbBYhd8Km&T}gUodm?|DXlJ{^ui8Wc|vq+!rVAV3Jm+Az$A(0lbw9UIy+Lw)(`6Wnc0XfKQ-Ik3srUu= z7+^XIBnCLxumwBAZR`xgNxQf(pvySm|29E_3i}%|0rt25F~Ro`Qu%+Gz#uUQ*<&kq zPu+{_|o_BlW)qbZ2mZTFq5Lc+N z$xbd%>TNaE4`E*=Fn)<*G|xz5JM3YOhD759(wQ5M?O%D|;^tIO$!$ErhNE4%j4;OL z9vmX`ac{$Vt*hj=do_$AQH>ju&4z>*?LD(G$z9U!Om<9GH!{#{^dTLoMjLvY;zXlu z9rY|%ldF!B@hF)u1wmBk#*h^efzjCX5wT2cRM1KPfqN+bm_)T5{6t_f{2pI_2lOt6 z9jg?e{xq^YjKpY=Jzo4_#Unioi-*3FS9DIiOi5&^hYW%R1IDNX##KbJ8s~#JEb>~x z8U}W7pYYntr}%dnNNw9_KV`{oCOj%2`lLJ8S zd3$ROOha)mfXjwHlJpju~_rQ7W<@-(duZS$Bi!2(1Oaph;AYjMl#u|qu z;mUF!8X(d7;aS!%6t>E^UXpAjAvbn0t|AC9x65-ewub3; zHwLrPy=Gt3#Arj(17$M5vQQ_|&m9>i!<71ISr@uwBO^&2&AlA9hi zFbwTD!&uFJ@KAR<3)fk&N&im&Qe_RFG(zYVID6f_ZDX70k%jO-Nt_Pquo=(nsamUc zmt5L@4g_fVbtVIR@u$W6sy1r3OB#1nfdyLJ!Wi998!PoOkH{QlW|^Z58P4esvnw`N zRv<4>pT7%!W$@{79A)f{gHN9H-^CmaC9}(g8;pN)`N29D?KT|9D_}74%wjs>1c`3@ z8#bl5;W<}<2ePk_F(iLO+!h(Almd-jrOSy@Bqb^b7m0n*XUoxq`BOBZ;&Y{y=g%}m zERl{6oWvj-%CwCb><~;6u84rJ(1=@3;(}s0EL4=(Rx*ND2E7k~bz_Pkj1M6O!2z5& zx|jJ6bU)}XU)-l}H5bn~Q0{Mok2{H${TXLr{|e}1xXOlwR_|-vkm@SAgQMDL!KO9k2%Qy6-gahyY);^Cb1W^&B+i@g*tZ71?HpO5 zT(7CU4@b+f=MwICqYaLwyO?7kQL)m2+z~@xR(QsDBnsmTcK=yuFV7?5JsD;5+ePnt znn?MyonQhN{Xj5${Mo_2e6n5Sj*Epa9)4(**~@DmlMg4gn)PIvcg7p+SakOd4R>`c zy89CDQbtieYuroPW>aN$uo&)+AboVlj+hl(Es6fz>9ABX%|A*Z8tccHH%fKUc^i0T zVvdrVMa-}8qKT!7m->{f2l~HsZ}C#}2B$IuaTL4vyKmdtRB&mBF&!dTmGH3&hp<;T zt0~=Iu}SG6>2R;dCBuda!VO_u)cpl3_3a4@(dy8Qz~t$HqZpxs1Gen(w1LGLr%6~C zBu#j{zb>|h$xSSj71}D!H-LXWSd+NW-#GH*$v`}p!iaSj@v;1d{W?BBr%!kYeDS0{mq z-~il4q7l^mLV?jvNf)K#NL|R$yU8vp$tBOx=?SW2nas=|Kk_Yj{KH&QdeR2rrJ02> zgV7jjZ!Bl4O^=W5JR8(r=6Ym>gRQ=dg!9jWu=^si&uyzS2$d8ynE|yHPCwKm&MDvF76b2 zk{rryQFaKayz5~@6@l&!igMix7f^`0@u*XD_ZwGF5;hpd*yBQ%;GjI7op3){4i z=YMB|Fdn8!Kx7mvC{ts)iFue1Lz(cOAHj4uO__=AsvQpHyW@A~y-DB)3TzW4k$=KA zKZh)7;e!S^M&pO&^6E(pmu>u+#U|MJ#QW`0qJ4Cf!e1U4yko@1uNYETEW*{8t|kAW z4kWsyd~2B73DY}ZY$w=virzdW-K^*-H`E|wjmHUJG7bghxL_KO4)BTWE}Y-qAi^L9 zyMF{-O~4T}6X&b`REnwhqp;@~NCe}--h+tL@Icq0|4Xs_Zz699K1j);*=Q`xreW^@ zT;$G1_SACN!s3r+!C0yj&0_I|J(@*#Uod*Jg)>aTLK67A^Zn&JWszDj8sj8@6taV@ zNHncK6+Ab@0ZPbPKqL&{1-p9)7+rD2>&qwX{ZJ%MsY%_@7nM?Y?5mG%_TL}QSUEfb zr5<+Zz*9#AMIp2kRGp%KLlAe8g;2Bu#Zt1%am|f3H!Q&uf8a@@W(Z=@Wg4v~0;3EX zZJQGE_s=z8l?MGKkbs^lsUp4v=l~T8;%n!lL?^_bt_{z_aaAi#Ce#kUC{@Kcb#kP$ zl1?dPiYZscyW9lE5<>E3piw=GAFYBNG^lXgR^dmhD62$0AuGWDUc!sP_ku4vLE8mc zU83K(ZQOkpB_b^(5*SwZVim0;5W{Bfr}^aQo_{HS(z!|LO1W~<4e@qY0aC&e{*)+z zrxxCiWc0!!0r$m97P9c2vZ!U~Jd1Cb0a~gHWw7`n3uVw&pwoe?9-Oef#GR0Fl|0|b zZ8!L`$O&bD6R$|w#6MqVcM&oWsOVxIW%U%YR`EZEFfbj(K_bO0Ve2U{J|VbdZs;oV za3}omrO2PfcXNdd>MC+&@kJJLrLFw+Fi;QfIvB{CfUktiiS)-fk$$hY{=4JP7O=Sj zl9oR^M6ccnU%fLJ4Xy0v6@u;z9_DM+vrAJ<*!_et{hLq}X>T{)>>fr7llyZzIww)B z<+G%Wnl7I9vQ!0_c7HN_)!giL?#Esg&&sU%3^yZtFTWgNodYR(-b6ncQN z*fa3JQ$c6y2vn8ZY6iTL(|nv}xAR(wEh-u(;mLMgmiTYkAa@!zKmfVN3e!DSu=vUb zt)Q*Ka2^A_^)N&Sk-C#Q>wC>N8*g9!r3Dh(M1@a98!UwIlzU`&z(d^Kflr z0;-ZmTe5Y&f?8D|=#Iiq%+Sj0+Q50Kg3ie2+m5%;2~kDr0_RNW}LmlLN-kjro+_29b#)S0SGWmZOvT9Kq=khnXG1wTkcezb6t)VRa27Oyx9 zAcx*K0Oc&g|3wX!H&MwV3Y?*YMI{TMgvK@GP!T9c;C8yUFZ7O$JGH1%t zVa|+@8N_|bO=b@*-?hqZoomI8y1f^5Rbs1o&uevXN(Tvg>z8fd-OkPG5(Nl@xJqs- zD-ExAYMH89BDuZ(GA`*Nh~&sF_!m1QC)DZ0!r;x4J=D@dK{pPP`PnIQyT{-??*p3O zz&8hcpcxTT+2y*68D&g{My5@)%SX#ulz_Y;fkuUv;EhfpZ;HEM*v<~q??Dq*qVX$6 zNwgsX;lG=j&fl(lLUx10(dz(oe8-L+Y|%nlk}FQcE5fUSQ>2m3!EFV(T#_cb`HNK@K1afjz9=-k3|S-hPg!Hjd9dY!}y<2GtRvEV9dWVyp= zxA8FLYl$!R;R~znykA=CK%j$O`akev4t8>ju8RI+cy0(K(+*Wq1@LiZyjq@+B0;@U zkD;kVFPiN2_o4iU3XnD7=Q6%R3&~z2IYa0n-!$oY@8mM5T!NrdPU#{s5`|L*e+am* zKhWN;!PD5-+>PUPZ*CFlO&b@%AQmj~wI#V8%z^-43&`~l7JA|9UbGc2BT-S_%O`Um=# zy63v5`d(1m$$i=>`i~Uy$sSr*@&58HYA;ErXFZ6}`f`SQhFaOJj$}9fRDP;1MbAU4 zO*>NgTTGN4D3{XYtMipQ!e^Y)!{CTZ3m063%%Mv4XG?PRnX!Z$ZMa^1!sEcY!yb$= zl+RjUP$9n3{lWVQpoDDkCsBdE{`*egKcC~*;S6d4qQ?wF^c;17_*MO*)@#=p<3K#Q zh+;!6_vwlrHDRt70fEatOs@Y>hm~1*nWxiFOSrWEp@KoyXgfRG_~`?h`xG^^#!tWJ zKBe@Q#!nyN|5|aqbr7xZ#cjPMYJfBxAorok%g~UylQdFs=lSOAHMm|~NySc$nJJye z80~ns?2lj3ya{Ls%0L43aWS+)?>}JFSy;oUsA4qsDOw6?NFXoGQlCjACvF9AP;VIS zNg$4P=EP_hPaR9nx-L_iy9tlupYsyeCeP-TZU|NE8tPPOYMG{z9I&Yq?X0jfwh`g* zG@Uib+gEn2=pZn%Bb_2I9$oc93J!+v*l*Dn&PcM(J|#q4Q(4|r+`&9VbE#Mt0ou(s zwY-$#Y9IuSb4T{*Yc!DHT1URP3VjRUqejQ}S?Q}7;m^`ro6q5VFAhGFmnD_Omol)S zC(+~2Wbw1y)(Y&YxHX`h}`Zf z9GR=2a|+1XBK$*YuqPDVCWYZ0cuMRfs$o#oJ)T8JxZmIiWwqdLNXk|0#V|piqI*MD z_=C8Nv~C5q_4`)5ki*apQEGr_m{d5^2y6aeg;Rfmb|9I5onZ-&x;V`{pEY#|&2vMG z<|3QaV6na|uOhpON1^D6eALgteuI}|y@q&~l{r5(ohuKbjw%WsWOn{+i0*!pQ=j@1*ok+3*^W~q=S2A;6Fos^Pa zZ^Na~DG8)VnBOWsfK!Ee)Vboi=E5_)299jrO~Po6##1>B0{px99wZf`Ha=&O9hFoa zS6yL~3lh3T&k8^Of^>!uc@p;lIHwpya*A0O*!<$Wv)Ppl%%M(r9$a^5Ctisu0`E`Z zyvQ$?zeVxAFy#cF>KjlQrlaf^ox(o|>h4?APO_WJ@nTJ*%C(;V}JqJp%mfP87d{9L1YaV32FwfKEv=_{Socr!?1_Z4aYgM(emO07yd>(K9^P4xSSiV za6SMB37PT(;~y+Hi>~xOzc$US%cB}3$oD3bMb|Z#x1Mg!j?=^`WbS0hsQ}0{A6#Kh>OAhW&v_t zD=<#tqpuH|hkd|Hwn7eE*7DA}y^Y<0Z={n5Jbm@DwP`Lx8BKacja;Q^JS|S4 zV61|5+;zOdeSb~Vz;a$HUYW9Yk2hv-3u4dlxu$i3~|X!#i%8 z;Wb{1^S>?hl<$_bZfk&#k%NvAS~?&rG#;m*IS2Aw6TKzPTRVV8(=RYWLn)W`l5FvI zk0st@i2s03B!_He-4tO9M*2U&$%}MN@kEhf1TSnNio_w!+{QyVNC{rJ0Gx&xC-GG0 zqtFDrjAd$Y)c%qan`f9=>rV_icAC-odzy1bF09e{8RtyFaJa-%a=KH(kNOwn73ed} zoSNec#DUwt-F$RAV?4wE%QzQfXoRASk0kzCN+;L=Y1m78>h6@c7E4gq?Q6K!?~9#gRn>3y%LM z9uDrulol&ev+U01<=j+4pNx2QB950W;vKj=DTGfbd|L?Fz)R*5cV1vN&D_fbFy8$s zpPD>H{qT_Ho(*>mm=m~35*XzlE)BoAL98zjfH(Ek2=wK6GBPYly9z{vZ5{KlX# zT*;E91imu7XGa$u816RAeT76TEiXP>Q`8_4&XL}r@_q9>l6EwDH2#V{Ze(C@59*I! zP6*}KE=rxH&QfMG_(x{Nsz~@Yem-Dqu^0Mu8S1-op+qAU2!CN?>DjK%cgD$tJI*%`w^JGT{l%-6%f)#)dHLA|%xy})N4GV>qsgQ3 zJ^HkhfdI<1<6~wU!FD`BX)`pqqRce$>8hFM1$~i0$bRG zmzk#ULcYg4<2c{reT?}-sV;7`fsNqaL$JXAQ1=aj;n%1vqIIrij0IdgyB+meIdau1 zoH8~RT|8fPg{h=+eR8(OZmV}~{sl4E7%r4nPBNtZ`7WhAyARIDH0kPpexB8w@4~f@ zNpmF#^z}bXDazHuC_EhowXK5nj#mP%xVOT#mgDIyZSoG$j4KX8%Rv_4%KgrUgbRed z`dgIjEn6pZW5~xHt_|=day-undpAhWqJHcsrNDSoLucn{`YUoZnR5g zM;GispRY!rubD0(REZYR7R?tLZq__zu24DqvpwQ>U2t!Dg#?!wSpI+bry6^wGKc@Y zIMY=o+6jAENV(&5+p zG%POIa6zWFeA%=PG1_C?&7y6!$j+xJ*}*nn|ocMf$Nv%yiK4X!UbUsrV* z-%NUq$~l|7^X4QsP@F_?z)iB_)GINWr47X*67lrj9`aZ8cID z2Er6r5eJ`3gfmBRmwY}%N*mL{Pg;9+dJBxjgl)JJ&18S)E)Ao{q9LsC*>>oMDAbQa z|3+RcEXH~GOa)z-PL3r;g5baZ&~Gs52@mvNl|)2U3Zl}&lwr!y1pjz{=AKNMUuOeR zW-XHGycUUZC$+3lU>u>ObMr{f+=Lw%KS}@;y=DNuVDW|3%BS+B#TflPbMhpa18!_nmj=!Bed+$hL3@`m=-+Ub9bGLD{&aBOLNwITk%^2X z_^FbwWbt^)DJ565m(!}X>!&ZVU+c_-M;whL-w~!RIsO437yo^>B_k$PJR)F3;5T9K zUw|c8H^0c>wW_|lBo6TT*6V-=S{x?s>bm<&ax?bljD`*uL|bZuj#!1<9X;+1pTt&lnHYAqAqeAG?EhPif*6#JG-5+ zn)Ms!TL`C%thv&g>zdbf3Ex%TW~-(UUf4uDF5BimF5WGVB1aZ(=&Nmu0vUs)!H;J> zZ&;t|F1hJd1%r@JIfLFEV8>SPpEVDSUA;mQ9z{%d<|{L2$^})urb6X3Z`IsQZcJFj zQT$!mWWMP|iA`4o7Q}Wb;$eZqg1!m=^Cgag;+7vXqHq$R`0AqAZ^wS;-J8+$DDjOO z5B{jSn_-Fw@TiO(tQJg6m?EEUi-!BD_TzU4U#7{{$k%B$O3)Tx)dARWI&FF8n$u2_ zkrNTK3<)>Na3=I+C0Jeh>tXrI3!6H;>i4uB$}W_vqEq&sNrkcEpoCzLW6r^cBw@$H zP99gUFLbZj)l^qmQ(MuL6NSy99M>S;z24h-oBPo!|8qh0aIR9UiC4(uRLqXN)r1sp znLzjhT6rL-F|0ZAiUiJZbaX&?hd1}|)Pf$)p{ z4s+4q)oYpXNR#Q4bLpIv>8S!jAh}kNrPUu-z3%Leg;qV_tp_ z=-qJc;k`lNZ}1`eoryBllxyN0E~F|6?v}CO4_U~cMp>X?afHf30pvP`1s{CvLtAC& z;0OIn9g#oc7PZ2tW*FTrdeYp))=X6pa62}F)#Xn(C16p}l8K#f zxc_kfrJ=vRfL0#n)c;Z&v;E4bg4BT4FqRVI$T&BTu z0F1`hqbcNR?9IXtxQhFMM&5=4Z1)?Ynx2|$cMJZWsigCB@ueZ0&Ph-w%N285c?qtU z6uj=nHye%r;%LeW@ZiVkVL2YZYX_8diE0c!AY+5VZq0m!*o<+K2P7COERN1@?-^Le1t~h5UIc}OEh2xwEWs|gFk#6=88sp zEDc~F%izt9#b#TK20N~mL`L}GuwIPkC3YOSBkVNi~#hQqj6R0_K`dXC)|;WeOs&%5Ozj9n%w?=KVOYQAg>l4VGP^R*|Fd zmowMdiit`B+QI|;qVaw0tuxVhfTO+9gxyP|3^W?t*fF*H9PH8HWosqjkz^316J^Bv z<&rjSOKPol&5Q;1tG5!rAn|-6o*DST68N+PdX-(tjK)C;2lPc@VEF<*1-AV~MuavQ zkFZ7T?{mm&p9gY`5Z`Nm`lj}J2DUnO4DPsbJ^_!TxBL#p8l*%8d@tztA2w)uQl=50 z#C1?g58#1RuJ$mKec=w43omYddh{d=N7vdI;h!Cs8e1w_m|S(dQf4RoW&X9T9s#FOS z(P{;mPg}d=SqOn<6ha$&!v)qjk^n|{@Nx4uN?Ol@k2}c`Ub0NS5a++!$&n0na})WF zH#-`~ogoKMW z;h0V$TG7`%({FAbjMlx)NZYI3Cp&n1T^-mX1&n5l^SL+dnCin0-=M)8)=DBG{UZ4Z zZSwaE+KVX_noToS*gI`y!o!b7lL@WB`HM^~d3WaL^7CW~o)$1Ia81aYmw$qFUGEyO$!rubl!ebeuF>!lr!9DEjzkqK3a@EMN^PqB91}8-T^D<{}QH1 zt{~AnWDULNCugUn=E@RPVnnwf3D9eyUq+M~r-qDGxE|zs_*~zR*Na=&4(B>VzZj%k zHcu*UI*NJPQ)lzjrrQM<$0aj}#Ys$KFZ@z{y@0UX4&RQ3?phPVK$YPzJHGP390xRf z%_?F7vJ}`Sk)%U` z3;pHgAHX*KkQt@H^L<90IB?%l@55ebMws~ewfnzU-6A$1^WD>!#UeR62XY!cv#f)2 z%XpILe=HzvU&g6Qldw1JGrVOdR?I`IkTsf)`i_%mg5dK9@EHtv z39}`akmy$={A->pKRqK~nV=TqvJ`y|z1Kot97~CqD^3}>dHU)i2r+|<-bgKQ8aKS{ zug0ntQH$_x#T~ZVo-l3`@e-=>X>DsMSv7@TNW5cB5c97-hL6}uB|#f}P@e;fC7Oup z*1E?zwS?+c6)(rtTOJz_sasb(Ic~Y+qEizH(Igncpd&5p*vfC`EJGtVuEzE~!3PJD z>dTapDrL30MB(PJaju&iPLWBtt(+n!IiOndtN!QW`ZR3buYxB_9V1?R{|kI};TegV zNs3AJ;-Ec8Jr22VjNKIL9oK&S#{06{X3AaeVfSG&#f<_=s4%E$9#NzntrB;iGxfKI z-*Oh`o)K`ndLT$|O}(t!xviw#bTK@@k%2S-j#G+_7HAP|I%L_0KH7r%e)E+&Q2gLd z%ggfj47#VGGkIlzX1aFuCHs`+SDlE`PXHcvCCsFI6zT|Q(Fzvopw8R~Zjf5&f&62_ zcyX^gf^UjSg%z9#-s7UJ^4q4Z={qFtd-HLby(O2q3BCAF8{E@(N!opL!3u3iXJ7|< z$c6?#^Z;sR^-9U(Jt{n_@7`p(`>$fl@FJ(+J)Wt1Ue%^2i`;;{$mYPBP?G%Y!f!+% zT=eaXm1yjy6-)%*_fawx8=ho&wc2yqQnmApHD7Px>lQx$!7(8@St0qe=$Eq%>G-9f zh&``g{RuXWKT3EW6~&|map0~a?gw1Z$VhSPt*$>x?=r%Q9;es4@&{HQQ^MI`VR|JR z0<0U3TzKnV?ue`ZeeFkRFuLxB1OPw<^*hEb((`GKtv=7Fy&KuTdO3$>3=S%KV_N#!FU2Zdkxn0&rMYhKLL(=9(HG9HsBdB zu;cpmx8-*j{EIT8`TlVD)_9ABp-<3I`aJSuVe3P*SVrfilKt-H6GO7fINCPyd7GRTWsSSV;gn^=%=gK*U#^w6C`kJ#yWP!tlQ zq3kRe`jE21S<4JPOx8ocf`d94d^t9)US|!zJ@dJ;KJA1KsFw0p=-(pxdAacC)!bvl z_iRXb;r`;yN!uiCTS;@q@@mFd+?~Rnn?`Ci9QppZbib~tGztgMe%p}M_H{VH2{G(r z$CU|$*3x4RYti7XYZzQIkfqXImXMr;6PZd)WlEviW2VzIH#}wdw6SCgUUbM(`9tBe zlIl}2TJhZAIl&vkzkmJ`gmo|Ev9goN@r=+?8X0mjBq;=6_17LRO4g<^!e0GT(iBC} zl?=Ct+P6p>k)2vzn3W+(k0TS|8(bZ27YK!ej7zB)O|<dm>Jpxc#`(vEyN(;%Vok zd;PqQdPtn3U7~lyGL#1z?8!1>_1?U<-pT3k}2Jf8_*8N{GHdSDIfbG0s)dS-Dz*i1VgX6I96wid|Z9?z!x` z^m_B*uGQ=Z5ox4JiqeBMnS`~93wR<9>=K=~5MGr2t2g(IFoz&_>gA1lcP`(`3RT4` zl#^S;%g2u&i!3KIvp@p7de~q2AWS%u>A$J$1hNS<3g>-8kb)0CaY%xG<-^Y!3Vk^Y z*-u1smdgUfe-yqg|EZR_M}_$YZ434Zi1d#L3BSHUTv$Lzg#*SOm~-d^6B-;Edu*UE zSo*EKEYZa-_C$3=O-QO#f`4SHG|}&bP0d+F`f0nG!ZWY6@KGjd4wX5yioNj)UqhV* zO2B>A(;f9e;k28&S$4IuwTAhSLGCRehniMF07pQ$zj_!!QcgkuH%4EhxT5a`Wt~l( zpy(7C9H0z>x$gUt2W5=0FHdPCv#aF#ts?|@{Ap*mnIhH9H+Y-6 zQQleAf*<+Pe7d@eXESwPEkKUco4XGmw0@V3Z7f%Q-7enevCDm%2eXIoek1hgmLM=G zL#qi%!zhwZ?<4v27(5hmFtLGh+P2PX?T)QkVps+FEF7d%@y?qzY+mgwSxSKdtznVG z*bgK$`r4A~hejCtQC5*kPOgI~c!-~M!1Ol4=$LV0UvB2D)$f@ujg6Y7h2>;_Vd4}uKsH{+p zRE1wx!cpd_LRs8k!};@aS~7zB-?fd@Pr9n2_R|dvH^}T%yLc$26}-yduZP9DR6X?7 zS^wDz5$oOgc{-89_t;`p8uD z@g4z}_TnD~2lL6>b23%08GodNNrMcTP|7nWeNM$U5sb@@4@^O3*PBb#UaajpUC(ob zs|M-BCzkt8AuWIkKD}On=1{R41jwIfYL+^{0V)^`cEU618`KY{MnVTE9EM((VX78J z7ol}+Xb>>d6-7j0HBKcKN(Z4&n(aZdjc83B>S0z*8f3!8Tg@YFVgeoX*8QbxZ-()@ zXxX)*eK?>8b+vYaP1}nu_?SPs6V;3pUbt|XyTYEEBTrDs@cR3<_TR4rft}@F+=Rij@c;~Djd5gW zfgGTG!%Y~8{UrR@5uPA1=z>3eF4A;5Qy-)aN%oIFMko@C>TNhnayUZ-#@opzgwc+0 z+H$|ZOV-tA%GNo180bf*^WyfC@Xt9*Z`B6ev;B*LF@-9fI$U-{ZWsMVAf-Y)rCt%i zk>QasA+bzs(C%1|fn%s$QHd#bujyx}e%80-d4j)xOH*|uJRa1 zmPO0)AeIwQ?G`p{OTaS!%?uhraK_!4YC1nRO>S4s9ay5Ea|%z%yg89#7I&? z&y*L{=^7;&h|v$K9lvVS)UVOUixfd(_^kP-TQ{Cvu)n_G)jFjoePhkj zyI@%fHrX(qx$%#Bof$&EkIHIFZ%Jv*j#J|Fjv0cEv#=H~c*4Dib{f9v#qRfqp*MqO zq77vKW)UU)_j}r;wLl!smH;2I!`Y+N)U<#l!P_FszY>$IJV_0!F2NVIzm~+LiP2$q z0nCR*J#<QuN6>5Eq~8x>s;m#vZ8fF;Czpu-|eky}>?knQi3u&^PQaK>pzD#iF#$PUH* zPU8>rdOn1?|NfHYa^Nf-g_cGli(^M|84wn8V&L)RNr~Qe!eb35=;Fw-5DlIM)eTx{ zg5NQlvNNjeEW46o1<;A$osmG033GYP@$N5qWKg}aT16gRl9ifhX9Ynz0%xbpAa;AH z1tEWlHH*5L`$9Lj*LObac->joDY}^{>g6E3_q5WmlO*-a0l0Q^yVn%U{_nH7=XT|ROgb; z*V|l%?X=aV7WgbH<6(FT1na<_SSsm%Ej74l!~LH++Pc89^Ks{WQyX+qn(%QD{=E}> z_y;mb?_OATP||wo6y{)p%0F#jQF?YM&fp(kNa#3pCbophQk+)h*`}5L4(rdo@=q4y zJ0KTy{p87`zKoxg^lNIk<+v8DK6G(Q>Nd&EorR=dGn1Ky#*-ei!}VLW9+KV@CdX@$b>M+hIJq6_1)G|4v4A(A%r*6%f039m{6zo&!`g8q3i`0@Qv z`1dsbp+Xs_HF4dbel%F4b*wR(UX|znt1XO(6@XW{vRD%?KZpYG#2xWQs}};fu~QZP2gtey8Z1Bf+uN zy{j_pWs|Y{pB}5C@`%IU2j2;5?66ttWScvLZ^;yO^c&5ZMC0yJLd!vU#01#M#lnv= zktOoIN8?I?w~L0%+WXg$C5?6)+u4v0?>0&kmKB`r82lBppMST7{JTxKcJS;On=E-g zq1!3@1KiHNJ&`O%&gh4eCy)8yml}04c%X`NAw7yd^_w!iC0)DE!l%fsf^k5j@k_1P zU%xrcOVYLDEDS*IB@E{YGuWL&=OU|Vi#1YlTWND+?UnqkB_0*tG4g}=Bt zrQy_tOa>JyOmYBcA(e1x7V`Y%hv?LJH7)@UW{CAch0?-Mg+3!aFA=8)Lo$byOs&6C zTi;OLoJ+bW2>Y1}PEPkw>U34Q@>F(=JQ3FhFx>c>MX8igBrCb4#&j*}fXhDY4c3#}TRAZXLMbh0CRjTgx*qK&9ax z>pXK5>NjB?k&o!p4!z&B-pr2V>Eau_Ss6|S3JzfG$)9 ztgajqk=)<9JeR9WFW7MIZ|MK#z_Wrj(2mkC#h%!#(jrg9jM;7SI z;b{C)xxe_8{@K}k=NROUV^#RBL$(*cNlKLApHBb`(CbQjQKVKpaqm}qmmXz6OJAxu zUvu_6qoFRNNU%j?!10@;!tCr~6`^$% zs&karMvsj?dtUfGId=Exu%&3IH(GZf@q`!x(qVEb^tlDpuAjWGdEec2_l>dd%f{M@ zmV!GBc=hZMUX+^Z8e=W;Ws6G7>dw>gTPb(@ge(uYb^csQQ2z=LzZu89!xV zGEQ#sjd#Q34-XlmW6_xRFov?)+5$)iT%I*Jb%E#a!@zb$2aLYge?64eO-{)Y30*|DHjKt;BhY2**7@go?= z8t<90pIj6tH74MaGmre?Ae|YnlF4NAT6nU0ToJf7z~%f39jwwrFI{PoHLPh{b!}z) zPgmO8|M+?Q-%brT+AnBDtp%b<0wMRxkOD8*=}H0mf%Z}bwAkLDpjWOYM-?qQMh5i- z;X_#;vN|FlDl{f06b~xw*h$}kj?^JuHmIUUHb}_*;Q_Z;A@^pyG8T0zQ4D&4W=qs~ zOxzz_UzidBCuPu(9j{Q4F&SSOSHc2<8$`R&2!4aYb_L}X>lL%j7ER*|TEk8lj|JNd zNwNhzau;P#O9}mfKmKP=cMVPT!%spv%%L@8D__XCtla_0f0k@;+%C<-`L%gyjJ51QI~hRIIBzo zA~fVfLx8u2;#<&Q6;TT?Q^uLW_=8~xEa(9no_0Nh-`*C%wD$xgOA_}5L@GXrk5r>@ zT}Zjv4_lTTC-&NY@MYb%IMP zI9wHVbK}UKcG#Ic<&N^LlCG_nzz%J0W;j=5!ACMJ`F)1}{1cf-@0b|Xu`cTc#sL1T z`^i5@13c~+7)G?XOw3i>W9q-Rll+aHtZ^}H;ucdpds`*9cmsCYVy(G*g5Nzh$@m(- z=8^cn4sN<0l`}}RIXDSobn&b@0{ku2smYxk&i=B2j?Qq}6aP~M$SId)R%bLW7 zzS~%`AT5GYGo9ivmAJbVo#KH<*8iNySDA_qFK#Cko0l__cD)sM2HSX1JD}!1T(aQ? z8x&r({=yXbQc1_gMi_y-z?w0Nli1*}N{@zx+6|IxE_JvN+WkEPAE94hrk+_k|FFRLr^5D)ybzMKmPRSWp!K!Txq|Zx^YA7od;f4l4~i@6tIp(@}EUqa3f}Aq9mELplkd8)mTM=?O=MA$EqX zGDrX`?`44Sg-s*4)53qFAlgF_&}@5&`ZZTW7(0*hjGZA=WK1~W1dEP188t9A%R)nr?vI7n#BO*sw9&)4avY7^@>VYtcV4=_`;tR}Vw+jKTI>*bc)xMc2R*XS>1SRc=iVDeL*^ zVTbnph@&=YU^5am@(`6lf29Xy_TGWOE zM~;70|Lg-2Q#CKEP|bozQS@rdgBL<{Cg zG}2e?uYbP@A4#&JG;&`i%@+zfp_>C#!zR93rK#Aqlbvy$xd{qYoMxy-JTq=?{Cr#Vmq|R*0p3z- zlwW~-zy?{C>~21gldn)lpE^{U0%OI&@xj~tU8M&lVaFq5191Z8(tzk6cY|j*gyX={ zb0Fd7U;@}#1?%CU{;duM>r=>?n>EqV!2VI%?$arH>p*h!w+_&cM9uI@my2_>j*_ce z>#?zR|H26G;crm$|3*$b-d?P6HHjAH*wyXLg;_p_|1Q3So*=o49;e%RL z-v6jop^HR(#Av0W^G=f^*K1J6qJ!uf9Hcpldrrt z^;;6KnL%^N_lDs;)ip03>$zUA7Zy>Z1zjea(@IX7(ITn2j*_Ax z6vKiOT8*Nql=@TG(yrmkZ@(Uf>A*sNR1eE=OkL8x68iks2?K7!=bfToq+}oWO#^&P z1R=uCIk(MBUxWRt7KWh{?-=3Z2Kdx8M@%O3!6qASUToHq-32~G@Bubea!;idoQVX7Rl7CL)2@?T+j0R1mHj_4s3I9VU%6|&gL<9h zD*ki`+Wr#*pZ&j{H`(<5P3u&T=aF^l;iEf`ODjWF;*Hxjdb#;9!tSTw3XW`c8y${p z595sb80xLXD@n>9XJDuXCNK|BE9Iv0@3g%`LEk)e-v3wDb;m_}QHdfd7&X#CjWw1e)~5x z-@UVtm-l{u_;KzIGjs2`=iXE9Ip32Ws}3Lny*IYo!ac%QL}9y4to9o2pWx@X6q{`- zY_`?5?ZM+^BNlhP}Qm_-O2q@yA zx^-FG6|K9=Na~V-VLz8#f?iy>^0a^5#%v!&^Ijts?Mn+7NJOu>2<5|d&~@}_H^svp z*)R^>e8reAndV}B;EeaB1=*g8>zmKx-Nok)!}e7E(Lw3|rx9%G(2j^qODCK9jmGB2 zawB2bkLF5+A54}|R1U1DBC(_ZseLjCg^A9g0E(3H(bCf@!{tT`$mby#{V$mFp)%k{>F^D zl=O_0JjJ!In{MzGSneU42~yz$6p9|Y$$!8gA1#HMhn#oc>j+cnfD?O8&BoTTD~X)X zPH`@w*((wl+J{7Z5rjc%1?o8rStI*tB=JRY?e`yVfi;8LbTk_-DbLGHb%uv@1M2;H z;O|SdWqEm}D&j4p&!HZ#7Z8LoT_;`NC@s}=Q1Jr}_n&1Yz`-z@U7>739EYz5BaUVr zCD=L`i~oS!q*%q@Z`ws^35rxV<5Rpj1{mHMZ8|prh#D@2I z2wlPICgudBq=RE(f{u+B%bZq47euBj)522%RY#fcwc4^v4yKXV_{&TcGw6J`OI@gf zlKist;({cdUX?Z^T^_eHYF*?`<`@M7%%eEu0^PucVtF5|(QM&-Jf)Gav!krW5ZtdM zG)MH#Of?r#!7;IcffG_mDqY8S2?lEb^H{5^xa=VCk2;L@Lk4ex00^W&CVn-w`FC)k z4c5rz9sZKt^gHlI{VfkH|4K{TB-pk)*#axuWoMN#xr7C!=~wuTTX`WjB}bQ-tbp+% z42xPbwMo>h4^k{rUNn4p>V$#GOHb5jobe-bu5HEKr=oIlvU4-COB2)Z+8S6OUpXB0 zKp!FdS=d55n_FG@MG1p^NL6IaoP}UdPoFh(8S1uCjm6NXXMk#WaW^|4^GLe?s4-~5 zSk!MFxiPp3CfotZU3Fl}v6N%|kpwLrie{`$Jtl`~RWR>9^mvv!H*Cql158v@RD7u8 zp*hJaZ|B6I%IFi}X;F%_2z6M1!&eo$f?Vgix@@r91U3yh@=NHG_oKjJg_h6lU~}gx zWdC3(NN*N@Z9HF`8=+0oXc&|!bmb21-R-?+AA>a1zO*XC3BJsz7)v-gfjYEt@8%ue z3>rlV<-l@?MVIMQU+~q%=Na%uqq)7b$ClCV)3+U}_x@_tdA&|K!pk5p)m3cViYgMAKo zD)66>k_^et%g`<^GW5-67%;ARk>ZKJ5+<7IYYeoS?78{a_S=E{~q%=^%9EV5HN=G10iiS}0E2L&8QOMxkpiLNwZv3Tpo%nA=KMyJw zI4Mcy?f|ZKx17fyZwf0$x~Eds;EGjnohqZhPLBH_3hQ4^59aZ`5}#`grE_45j?bleM+g4TWn;*HvtG z9Xr$&F&?^L`Pr<~*{AXta}P_AS?4-PSfHnkBEslZ;#o*lYi8p;bUTT1T2_3cs_ERt zIz`L;NA7=YRpb7aq^j`JvF68I_`I>9?cA*jQV7>_R7rqPMo0Rb*E6X9hZ2&- zmVkojW2W)k!9@h6ZTsoHH3w=*{rz4$+(D+UuAWJR7p+tn*!5$Ko9>l-oGdkijhG5G+3Y$OnaJYG8JC8r_A(9Lf?? zlv12|NZUpbafnOZ6;G=+B~?B5EBW5-B zu5K1qx5>g?*hm*)lyIC=Ml>%i8=19I(X#R?OvOfT7lw^Eg___FRus;Aw2aAFtoV9u z9SlUl(4ArD_?dFhr`$$2sT(%*EcoSvFfDhP?Zki=$~=<_66+OzL;xgWT}TPoG7+ap z4Pi63M(&-pPjY>dW9nm5r$$R7C z9H)v?9ZzJi!e>ZM*J#w^Z_B;c5bt9uR#rw(c5B-rHNO_abK_5E2>#5HX2GsW7R9Cs zW!Sn@Mpk=Ybkn+HOX&($zkF^pY?gUmD5lB<_qH*4ixjs!>tHB~gl-I5W6~p;=n)SU zz22WvK@W8)wSZsY#kRZFz0OtpZ+`t`kXO z^V2W8U?oUi5t^(~8FNIEq!EgA8<~Klj%XRO%Kc@Ob8K>)Di%}Z0bQD$iB;h7x8&PB zrARJPq%UQ+5mV%CF>K?1G`=qPu8Dmv$z>{w_x3UZi`GUXR|%un_4kR&bc>^ z&0dH}@+AyGL4;AVJWb)qftU{)VTz?TBT1q`n-SisGw;JRnuMdM(uvKo1@#v7wVr4) z6^|!qf(Xc#=>wlp5lFgs%#4{C;c~FLSMw8I@eH`3rZlQZOq@9hZXFRYd&L@r8<$C^ zgD(u~^uuI%?kV#msOT3w(RZkkOT0vC`^-hYv^fJMV?J|Rv2jo147pmZQpf5l>*{Y7 zmFqKfN%|lL$?re&$M3TGkr36(lQ3Etrs@SxLRQ8?R-d7%(8bj`HZ@ix>n+S^L~Q;S zS^H3SYg!{U?@Ih{hULI8{Yl8Q!FuK*hMW%bpM!ywiV*_0obz;|<<+_cE zw)Iy)jy#$ebT<-HxW>JH9HH=f7OJSl?(~+rQdK9vIA2ncFV^xISS1fy>o@PvS_Zulk0^prFVu~i zc`|xa$gEH=MMz9wv@+`EDmh;+gc zkePDCnFbhwWTQhvr0+X6xW{WIGU~`0DOfAGe?cOjht8-G0 z;7Kv|LU?EIG3kkRf*{mnQOw^4IiH!*goFm4KSH|W==p%LEDZz>(MDu%`np?rO} z?DX;T&R?86JUu#4{(ATIEhoKI$K~jNc<_6fpw?%qodstQNawoY&Y>Wb!J$dGqmwA! z8eeq77ue)CyO`&2TYML-*tDn7RjyGdX<{{H7p~qaD8r;qBzsM_*T49HJ6OF+c!g=r zBpb8y$g+rV&7h-^4PF+sBU+BE@_rua9G4uI6esS#r6RE>SeC_K#9rMTsrjJ<3i*@9 zYLbF(4=&BXHbK{`(53!Oi%kEPz4Z14rgUi3Y4=Ox(ibYeUQN!=_COED^yxYd-J|A| zNzntW01)hy3Sr(Z9c?Tm;Jb&gf}%}Tt3S7Z@80p{&_dLegf&n77~8rFQ5OoP!b0v1 zS~!?OV`gwAiF&M;4K&Dijv9*`U8big$OzV4pe{Tk+y4O|_oHPl>a z%`4OCvHZkD?ehBV9#{kPFA2Yj3~b2GHDaQshz#6wXacfv96T*0dx0}3+hHWwKZVIf ziMk|>cGh+IMyxc(P?%Dg`RRFSxs2WFrbx}x5-tCZzsH~E!;Q+c^ZXm0q&1Cecw4)! z@o4??M$g9gmlImnHpsMVm&@Y&<+GALjA@yP2>s&y#cNgGiYx2!M4(Yk3@gd+vmPzv zLSl2bLsnGH~#v=#`HbT_q1Xgw}r1PKbQVx6KJ~fJ=NNeFOH$4R4TEu4Bz1+*dz)YUx~F+}X0} z%%pU6O6vS8@;$qxthKvxBDK0Wr7Ec^>4XAgyRhBCrxQox9#XVhovJ1XNIRu$FMCNp z@mzWWjmE{Hl?%{BC$^WBBujbmp5aC2GX=V#6+c*1l#%NE^Am13c>j#o6(d2vqfBnc z{#9$Y`_+GL;Q>wQ*$d5iyjHJE$_Qop{`Bi!@Br!03BO<#kn~C}weUazBOy%C12aK) zva+b`XD(QdTLjJ{!fj-)xGCR(CxQ~W&5p9m<=e91Q~tdX0x=8NgJVlvOL@z8tvJfKi@)_>02yu_`PNBs?Ca~wXMLSxs42@4(B#_NX>SlGPAccvR#b0V?UCh z*NDP%Te_iaw#r@6;L!#jp&6v$H--9>OzO|5>PywF1!wZ(upz4(TqRd}`F(Z>tM*MI za%5&FmJ?4htl1y^&~5WV4)#G9+DD^{P{En|bR^nbgD^K8%@-2w{v1|x^{J_1#T{=c z@}q?DLOl0p7pxN#zn#ed6KTKk8_`Gm7cf6eIyH5=!)E1S|8S?6i0JsRBVGyn9Rq1& zTwx5BhT6!KfFllImHb6*{6Cn-8(*NFPn^!T-2nR&H<-fAB#p*-#(iRo4WaC|8ejnr zV~sGu2osG~F!?%!TnFWK*}q}3NynKF>1l%@OYK|(A!samCh9Q{(E{^S0-OIYiUe}& zL|En;5tbQM!UDM8aRm9F!sy;G7L*=3s<1LE)ma$a>HKe%Z{H#{XA=}@;SDwbCL$#s zB`A?QhbG`_%!QXf#vh)5LMT{e4HNP8MA~kn0Vv};<9p*JUqzlfNGy)Nq5@&T2PSp=*S7FM@L#(vA+?8{#*i z!`Lp6LzhHgus)?@Mv+SFm{t0HhW3%n6F7@%Idu3v9Hy@I=iY;Ve;U<*0{`@u{4|Jr z3;u&>yH&>TjQ5P+@OSujW4rMde*=m)9cA7yfP>XD(Q4|S)^}j_Y#O~pJ4iR+`^f~* z4fp4djx%LT03gY;I{h6y>2%f@$@(LOYC`V8x_y}N6=K%^rVc#yNp13-xC=|f{pn^$ zXG>tUD{Z%;Ei@e_V?#U;(STWwHg(D9q5CTw@a94jsPX`1ut@3Vi>|B{!aQ>is>%>*QEJ;mQY4bp;}d5JkG zTFvZsqJ)aa*}qYTXL=)M-`ud+(CCQh#`W@&B55NPJt=JJp*alc*TL!|Umk10mpMvd zun@f1|r;(fQ7D20gMJC3;z zmTaxWon0?I0OMbaG8O+;y75GU!wxSga-vGlmt4;Ol7X=u9KX-7iFifUNtaQCjA^{i zs3~FWgnm3+)L22{^{yb8u5w6{DK!s5s|jsk3HpWdkBRmPaJoD;m0+zAM5ksFM_d_` zAs?}Kr0=`{M(743>6_>v3`2up%Vb@7Q7*3{K{Y#?(R}!L8mwl7Ii1mD6{{=-ZOoBh zQZV;AEPnUT@A4vuUNf~-K5`VAMWBEuF;GJrRXPpv=uP`JDjQbukj{g{(+M2`B%D%$ zWt_APJ~i%Zg{W2-*d`n6$4)*4^GuJie5={~)toGM#hrDvSb6k+$gmUrPNLD=AieZM zP8wZI>bRRW(8NY1RhuW8+qlONHCsGvBs2cF)A!g+%pi1xax0UXH*~^kLz^P z28hGGUR`1TsukwmfI025`!X3@XW~qyT(L@{7jxm_(F+~A ziLRkwa*C{l(O-j4J{&Qikgw4`Y|Qu7oy^ayOeS8{a2PWiq7OkaW3GlF+@H33x{TzH zu-}?$U=)35>UPxa;9};!YuU^>4%?Ig$FP17h4q7DTN4gB2GPaG^P{v;j3y%ah`+;c zDJRdpc6hMmDYClnbhfz#n2J`WFaz&k&Ql+d`ow)HyXikfW`SEK{Az@$#^aUtk6OU) z`om_J()fL=tUO<)m9Vu>gp0yjtXEg9uA87;q-b-mCrMAxli35GiisR5b1@Yh6MZyb zAju^PdJ;sRi!P4H3}x7wC+T6S0ZIPMYn|rQRR^I0y3!Ur>jTD31af4R)DKpZlP{er zlepnRXmkPMIY0E#Vzgj9vPoCU%ggwaB~^_1fu1fd$|2FgO>~Y*o0_a$QYf$c_SBQ2 z8zsjzYJ#Vm62yJ@L)SsE+9#&3fT8`T`ylG@GNx@-!R*f+wnqj8MmWVpN5v~ccP9im z2GjX*InkOZMvX~!#NkzPc}@IF=9^vLkNC#vOhY|L%bE%kGw^zzc3-}Ei&QMlW#`cp zuDhL4rLWGqX#^|d0pqXyKaDj;`|p~;rtNXlMr;+nZv?kSnf}|$G6svHUR@-D)KtWU z#FV+87@xdI(YT@&oY6es7&hNpa^}N)Zu_B?8@C+1JWsAkNm9pY4W}+O?mEhHk>50GI!NlzRp3g?bs5g zG>Kl_F_ceMjv=coy-d+j^fbwt^nb4y!^Ya3yS#?vfxCefxKT!H|3erUxj#Q5 z-f^NIp93j<1WzV?cq!B7nm-FqW`uu`WirDB*;xRPZlNKQ)+?>l8r}w zR%rv}tWpWnF2aZhzx~Fbq;$I2n4xwi`Ra)p8t)M>a2)jAs3|YZDsShH_2ppeD72M=DC=jibsTLMse@hoGyYp+1Aou> z7}J$A?yHDs^#>oc20V7OoM^9WSpqB23fQS?mHoNURVLviGKsa4?Ilr~cwsMxcJ70n z6f5s5@rQ04THy;TC`3^IeD;A4#dhl@ISvemJbb}}LOPhs9gEkj+~=_~KoJlY8lVke zSSm`QKUA4mm{povcqX=)fv-@!j;hQj_Vy8YNJs1pSs%VHJxX3?IDH|%B9|0ySI@d7 z--b8FdynB^r-&EhzBjCtn%|3F!s`<$Rw|L8MoTBsV>4nh81~6RSJMVm&299Meuxu= z2}OnP58EAnfI*9?d03wX@pu(~y99NUq`ZQu$FD7BJvkT8sReo z48dj}-45ehVQDK&x=zZ((843`!(g2yx23`K(Hy+WN{H$9k}go`)f)Bm7WuACQgauo z&xY^r6%f9}3<-3s09cKAp6mX*okE7Cf)C+l!R_KpH;azv& zet1Ovmix1cRw{09H^LB*U8#Pk%Igl}nmZUf)phB=-q}W zvl4EJ(lx0xBhQGXtJYeQK_4HBJQ5~3BHK}^rL&!3ER5?ot=Vr_Pm(cLOXq?kOz7+s z?uxINrO9^5l%SLw+&l0ZKqIfUTt0a1(b0JpwC!v$IVe@buw8~prnZn6u0^6w-c?7F zCre65jN~F~R#GMr-(VMw*M<=|5%tE#U zZZclzF=xIjLU?GL&k0@&u{K;G=2fML)_y9f$+LY6iQOrxC^=Vnh7lY)Tpj=M^K78% z&R)DyepW;yO6zNs`>)zD(`OZ9K0$meLSHJ@J9VAh{CrTmwp8!(KuMfKno1uc5IZQOmX_3 zc4VU+DA`((;PAm4{lHaE>L@As{rQ%vGsSTk@ew}W+*~p zf}_HtZmbcjK}@8=k@r#5<-j2(GJ?QA1bQZ`e4XQu8Db1k`Upi@xGE^np`ub(Smb=V zst_10V3pTKnU|E7qSnl9l=~mnft3aZCO=T*CuOIqHF#4c+R%PclI*8qhAYva5X3Nj zDBUgnZ>cS0kcHx+GPxoH*S}oKy7uxzy}i+R-@Xj`QFK2xb|z$rg%k+a)6|#0UIh6U zK#MQX6TdT33JbUrG5uqpLB19B7>p(%Yf_U2dOmyuvR3GN2|2t%J)p~cbzy!+saVp= zrXI0i?FlSnH}+rCtW3_=y8dgr>1!@9Pl_DJBL~zMMLVEqz!%^+-YFaZ%>2|J2EYyn z*zq3!&-~;hJ_#qUb$w)d!373Lff?~04L~~_(2oB2e`bVJHvZA^DL6o1h<1QzgfEce zQztvD99*+{2t&HUJb!L;=9cVQhw>uB7Z-|lte)#LXo#m%Nb#*RMJ>ta6m~GtK*0MM zBTxpAV)>TTB=o)}`%`!YJ-DbKkgs{Q_@cYw=8E?)+Pw4`gQD}er3+DS7u3y*B!zrj z1)qNX@M=kHMv_|3ASXe?3B3_z?oB~IYmnk=DQ#W_{W$YOa)-a=&M+%jns`h~oS!Ef@l#uq*Dh26qt==J!ak$`#0cq>wHuAmJ( zub)nreJPQ(E5SoBaOQY=`WHd)u@eMRP=85tCPS&-rx7z;!>FS!p`Kv}qr#%1{o|Op z-P7Wc#1Vy3V?y=i&JYI$t8@fHQ!Qd4<#)zw?G&T)78;BA!pi&;3L%|}LfL_6_I zGCVTwnB&pqDJmc5_`r(jO0nQ~m@4py!x!;YX(h&*np_yEf%EyQv{bcvM!S3)9$*NS zU6xgmSy@0ZY4n4t6noNk<|!B7)sy}@%}t8O>T~*=X=aqJ7=pdRDQGU#;LZ`3<{&& z3<0m4ut@@otM!!`QR)La=QtQ54W&ZdLYGAZ#zaKNg&t?(k8O=#<%n!3Po>`A3|Ta= z&;NLH_n8Hu!cghG3N;%@VvkWDODnCezx_;bwjK1TL?Y?;sl@6t2YaE9rRhML)9i)5mZlSFuC^EY{jGV} zUg-a~rrKT@@V94A*$V?L%>ks@YA+13G(REDU+sm#mZkzXM|8IrhFF@8q}ktI82X<- z9x=mS7-ne>B~34TVYsE~Oq!AQ!e@VbRiV8w;&0E^+8@giigI96HigO(bP05I_lGvs z#kRJWOVVw7B-(!TuVC4+9FsDeD)0Wlrrg+WYx_Wds`Cy~C43^Cmq1l_uePZ!wY9C* zmUP}St>ONBlJJSmxde*u&fD-B{7%03uiJlc2?;_`0vt$aPN1r~-?XX9Y_+w$ssG=0?qBs|@2c1l z6_KlQWv-0()+ztl3xB-+7jF(=$|7)HAWxPJCOF2xsXq{6lDWxT z&b(Q(ojtp=sC9q59Q60^hIy$XI;xBR!G~To41qGWGjVotGBvdQ*UH|=3W|}PnSg=d zUn?FSdNE5I7gHyCF&je{QxQ{RdlOT78B;rR7YhOwb_PB^sQ>4u9-G%1(sn}x2swo1 zMhhd&m7QXWatkXg7l55tOyUJfDo+@kRXkJPaPl(0@Eu=hSUJ9!Fi2nGeK9j@NRo7$T<;Z)vk$v15aAF zE#+$ZB?_*mz)}D}x?Z&9V>+%`LyP0C#tlG7+nXl^%qiHm4{=V9<(-P@CbDi2D74L%5&Sy@jaXQ1p1UPfWOd0Qk zqV0I#BN4T<^qN6Na2F`t6$Lop`S&-Sie9*g)6d^#eV$wz)L&M_{tNG*YmBJ0O?vnq zx9ueNS<8tk+)1qKUBf_RQzWApAz1(yGC|4XBNyj|uie<)n|#V8hiFC;n0_52yx8)+1(gfod$YcQrqd2X{W ze=|3nI;Z!Tm7-HyGvD57K44sX*(QL@{l?0nFWqO#ai|VEy;qPe&YwMKV(aL{fxO5GDi&$?<-k5XuCE6Gnn@n4m(nkw7ck6|Ut?C2R1SYulclo{xFi zwJ!4Koi+D0U+W&%xk;{x%?mh7h!U>;6*;6E+#%=m&DPs|xzOWB%zW^(?q zZ%gw_nA5#2_FHvzq8Ys9(}StYPed>S`1p>BlT2)z>QMzA;GKa74Q z1RNLqjeryZLKvP{B*EbX!x;yWC_w@hDQ1+QK>~+JEJcE;*r4a^TM`S*4u4RK8??)p8X*o0VO~p(Dp}>U@K9Q&)~*EA|s@e!P>F z#Cp6|(Vz@oI%s)esb2a}7BB1nEVWOq-+ASTndj&ub`vv^`I$Mu+-2rDJDK+sUA68S zFn3D7pZ>=`3zxqOa>(G9v>q(PMVUIKCNlWxa=y6CJJW)$hQOYKvXkMk$tGVrgDh?m zFFPj4T0Wsv)s9gmMWfP?0TlRp`&Tq4nq;I(EH;zNC=C zX_w#f3)A)L+2)tY>FNGl{3~v=JN{~nm5ODil~AspV-!&MymO|TEbvCMOY>?L1kA!X zX$lLaD$U3->*VNY=jQw1cHuS>(^$5)R#02>+DmM61h9lXN@rgc6CUdQt0+_n85h_K z77RA`ioW|dmS=sr)`om`bNnk=Ny2=fBPb4ffs^PKfa9)3{otMTij>}VHKtzDzmA#v?v~o>hPX8q`^%fL zz=xvnOAg|%d3yu(Q`pY>tVr%(vqYFpxSDOZHVO^-{b&#&>DlB z6fd{VEpLJ4w#&V zBNfisK$MYDFSOGe@qyaW2Ow(*^x{Sdx{dd;hR3n6B<4e0^X|BQCpTf|L!Se^2*sB| zIwN0B__A@p^VXNDTF6+blCw4-@fxPVTI--nyAG-c&ASi&X$T^w zt5I7)o^fS`O?S)I^W`8RJ>fugAn_|BhieGG3E*8$Go; zq7QDqrwy4c@x3a|+fpX4^r7Gob4W&pMyv)%KvJAM$H zGWC$&je7-tf*022?+I9m^(y(uTo0J+K#1g`0)~zNxt(wnN(x3*#4x549L%#H=V!L$ zrBwlzpXR(~q1<8(c?MUkaTbnhD zHuHo@C$_25J0e0GaC5Y19r#qkGSX~mLeZgbh`+}JC}YVLtJ{grX`r>v5v*@jbIuwn zzLtAL0P~(E2)fYyEL8wspEoE0Fp3W-&A`6m&Cq?a?plO(Y*MP)WJw;S%-Z*#s^&oY zeDHIrtGo=np5fw+K=~U1Ue`@o7_xcAU^|-Szo{yL7~O$GgauUzz^J3^~W|?{DVSWLs@TMxKbQQ5@mRdVkULRw2?nByC-%k zrMJ>VD+5=;Y8lTbZx8m#{^kxc1HktvEv+isuS8c(gh)jfL|IhV+8I1om2%(HyPOP} zl~8B2kKh-+$o;LhNV7>=_?RODgy>8JdCAiWW$^qCXOj%ee6aVII|J#r1qj+2 z>+^?)G3um&E^C+gVy+A1+4%PPOOE=vuHLbmvFaKXwJ2wXn@NuS>)!M!658CpBGbv?l;fK(?F5BXEgDDjXh0)>@m8< z;ajMVsw1fqO`C@>`(dIar~A~C;Ku{smDyE3U7rtVj9H9#KnVJ#{T$o`K4|8$4oL@XnNLv{fl0%PS4wU;i-QS{Pb?70hJB)3)y@cKo<9g|t<*cTQC^0F z0xRlz)XIZViskZ9V?NLs0y=|cdrh!xwU((s#Xoukd_01>^dQs(o+B&L|7;4kSuL$G z^MZKD$Q|G+`YgPsr`N&nbHG3K2aUok_l}A&g;@anWg0Z~$!XQhlBaCYaFP`%=4^!l zx^l+WV@E!umU0Wmwxn<5CK{|klrBB|H!8;3msc4OSMX1>B~^bbRB41S+pK>)oq-x0 z^TF0XP2?G> zfTqGjeX((?S$blw$!5Z36C^JRZf|WYWWpL))f4A9^m1x0$Nf+sz-{|Us&Tq;Hq$xU zl`JME$6!L@SQ#~EfA_ar7>ZT+BO8TLgH82v>aK{TISlG>6`?P=(pX4ZNt$F00m%CKH8&#zj3_d(?VStc z3=8A|II@v;kOYGySoHE2c)#@e5BQ;E;#S|PJgJsVXlLljf6Y`7qR^Pdlz%y4nisP@ z8U%J`YnCI=P`9L{Bzz`@l@3(O9jf$1NP6>Jlr6n+S%q$gy`NN7jXIPL!L_=oz#|u} zK<1*v2>Hf}<+*?xJV|%IN7v@X1z#V1s&Rz|V(FxqVGamFz0+JRrpZ|N}uP0 zk~7RN;mSu%XPmz>b7cU1P}I*Mn>SQ25e9}{Nu$Hb7I~`?Hou_79hNZO#)E=Vq_3f( zxGb62CNaP)&bh8`wHJJUvEhm#W2`sB%m8BKupJSS5J=~?26S@FZ~WoC$IyY@0BR>$ zD0Ts!U5#eNkNe}->km5(0`jc}Qaa6a22(79R1r(W7P<|*Bt~7g%BtL=DtlZroGx6o z?-lOUuta@Ty;>(YvSz~tX2JO9qVaa$hGWc_k%aKhh0p=CcFrG=q(dh}a5hmlizJqa2^0f7w2e*&|pBbpWDze`X8r!>uKe0R4E*u4|dq$K3?^_ZMA55?L;#ra4~I z0EJFyjko?{rb9e=S4Gzk@i+UWIjwQAZ*|S(tf_FxR$9XA@VLV6b84Ze0~Flbjy<1e z@D;qJT6X;LR|67+VcLb`D+BlaN1J}a*euB^zLmVR>&J4HsL9^6^|o%WC1S6@W#+!D zRQF*~>syBM&P}eR^$p(1&UfR3I0L9VVB5oHKuJw2Zc2+fm997+@W-!!uA^D|C0Q0A z`zy^q?6)*qZHG1Nb#Z?RLDhxh*T3sV9Nt%{9?FM4l7A1_#VyX}^H^^w^;0ASzd zDZjgj;{0VwySIfJ2Nf) z%|NOIzGz1m0kgm5!oh}}w1kdk5J9qAFt~=+3NFE^b9H;yeNIq7;q(0{FRn9-p}wGe z;wKuLy@)fbBP64V50NIVQdMlM7h~Za7@m5%^kZ@&HoiU_fgW9h<;DyTN1*dTY5bOk ziAsM%%T6-gNqWGbbnP^^YI13LT+grqm)!~4x*Jh%&_CMfN%gDI{RlF7&1sZweJkyp zEwPz1T$IKtvWsd_D?bL$OM~_U)HyycSz{2_VCX>zK}l}RTEdRap}hUIrbeS((g(sGX?c8L&328ek!Zq@GwJt&I4-Jh+Hb zNyJpCA|et}MmDO1*f1gfb@x>E8SnsjFE{*lBrBAwsa%|L=p7`~M(6)Rm}(?@6RoSfM%!gh9Oi3Ri&i;5+Z_d=Krqx2S4`rgCn z1Ix!4a%GKDXyM@_Qb6ueUV7sbDrbhrX{jh^8WH#R*)d{NL%S)e;@f?GZ)nOd)sl}( zT{K(1-o#jffe_!|}wSnCeG~NOH7Q)frxPLZ4z+80}WD^U>jPC;` zY2m>NmP6d--i7l3OUt2dS=$_+>_k41JG|SlbwESL@s(U0mMgV*l=U#`>R>o-%gKiC zhyw=w8Ulb$={8u>U*e(xw)riicVyNdn=MA?U}aMdHai?TVROUHl~X3{4A00_s$gvD zB6ALk;&7>)uN-Xb`sL~6#oeD$tt|s>{{yg;=8S||0S1a#Vb?1cxSO|$&eYgJGnOK0 zcD4k29wzZ~HZH;{pPrkT7-)Wan&CA5vJZN5(OQ%~_so)eYv9&UN`0Z-`A|vS{-EFy zek*8i9^^vz)cgukQ7zvZvhs(IYiHRP(7*Y1u`!=P)dmGKFJDgOs?D^+cbk9tj?dAU zVwzeCmo!!B?hfgR4pTl_&vKlRMd|a3QMB$>&Zp&emlkp|X;eZ?M{TT1N+m?6MiL2@ z%8u7#ecS&R*Up~LTd6SbZW;DXV?VnLbW*@uMr*_ob_FXAVSXa?YVdV-UGDSl56F+> zbuj36ILa9D#JYuRwUxJS=@z`N?lnH*QBiLddq`)Up5Q>ve0Z|hk&N)7zFbxQsY?4U z9ys^d8ck}KO{ z>+&P}0m8O%E{D@#6l19%I`GpgJIvV_xG?($ZEPv$n;kd<_7I+@9b~?sHgv zWF=Ghbpp9&rgr3P;5%E2+<%Gz@dDrcU0pe*;1Xt;A~k{;=^9QPz13Y+;VW3jg&>tL8fCXedek?r0xjo?k0|M7@VS@k#J98S&Y_|O| zE)TH81ok;7K#y&Gs=3q6Q&vUH%gzogGdDRaJsg`kN}Bsh7rm2G7}nf<8u9ka!=TKe zys6=U1ajH=JNZ1OBi_#}kh2eaOCbK|PN|TueU zU~BD@suPc*-a6`GtZQN^&>Bmh+(3fr#mG#NYp9~h!lLuQfUU@#Xn~%;;+9u7=iIi# z3s^rlvQJ)IKPZZd*fN1{D6W#FVqTuU0UgbB-7J1C-;SQ1zV#$K zDhgUA&60j*M7FGUy+45Q9n8&tB6ivTP3-;`(*J)DxYh;+`-$UQuSP{}Z;`jEG0+(G z0H9z#{Q-e408EL%5x4-%;NXt`=`hZJANIdxkr~-onf}>$uvPU{KsLwPBi-03XCz?E zF%xFrf=X#6`CWaA!b>};AT2+@Sq~NEV@e2_FtQU1ScxD=4Rx&iRvDF~aV#C8rHEs_ zW$A5Yp3US=Y&&OsV#c+$WI4y_y>wb)f72cNGPkqM>(6t`-RIf6yZ6xjkPxCKoj_ta zjp}AonHr)aSczn^CDyQr8K^Jnc$SIA8_ofwDLE`&V9sjM!NwDRJEnM&hp#w?0J4FO zyReo%p!DT@5sSAlCLRF)2nm8Lnh=t!A(jCdXClFz`HBz8#xa6KxJ2oJ+NRXCc;iql zgfRxJpw5L;l}yZ)N{>vcR}&YXG6u~WwV%3EsD2`C^%m>)9ecP4wLq`l{$^B{ z>_5~yGHV{`hwAbmS(r|bs56pk+O6?S5+aXAl1ZN~qTlivlr!hrVY*8%h1%^UB~+q7 z11-0E>I#Ka*AC*h)S9jH&AL$aCu^s~N-MB!!$S`ZWVeK3#ac-TMZZHgWm0)k1)H@tUVH{FsXc@ytoocRz&=41xa)m-UP@qpc~gT?jq_}?0c5je2lgJe5*xYKRgV) zwon3F=>6Akp;2YRQigf>saDN~m@taOQKi=?1MBs^rUe>7!-$Q|+Q)3ukIt}JpF!Ae z`M`L*AJw|4vG)sXUGerPGbtlE!Tyl8rI!N+)AmKAB(a6LAtj1uaSc#7i4mM)%%cV4 zb*oM#=Ly!qj<6kIOkl40Sp8m>F}_Css5PfoG+Ug640`xHFKck@T0^%h>-F_vNr&`6 z*Zdyn6x1@-UopAp()X(hD_@=(;@^m?mifM`EW|R`R0!E!?s6$JI$7Nwsll4pF$@((gEya%jn>S`$?BZK zOEWYQLTn79g`)b{^h9%m)MP&CeuzJR_V-JKmp*3pqVT`Sl4mGsrWGr_!=*WmpDYwr z_wc0O@Ft#4%xmolQPFrq%>6%~@EJIbP`#+Ol(}cOy|KhBhR%Bs;IUE;;zI=``l$^< z7eYlM*aOX&CpD&QbmP;HS~4j&Cd_0QN9hYt$Ap1~mnthpLqIoQxgZ>JnD%eAgU-+g z_5yjI+YH7a4On+WZpwmUs)`EylSCOg)Xhq<<5|<{J;EqC*HsYqO-9cGd>)f6H+j`m zem|q2#d*`|ehFh8t`s;y!v9-ND zi|a$bxM<^69EJL{7e_llD5qTdm+FqZfVGe)fO2F87E3_5=m{`pxNzQIk-uIFTk( z?{c)3QTqqCw(gK_@ZsTwz){0JZQ$e=ZLfOUWxd;%TJ?w-n*A%Ba=-9&-Vc-`j@&HU z!3eDCo7DB4GI)Du190CDw0G6RQY~C#>n-VSf_EIJgEDOTPhyxG_Hl%|Uvs%Qn;uC^VT zAGp=QB>~~Wm3bhuW>5Wp&3a5+J0j8xL-^FxwO z0|4PN-e*=>N}W?h$vYJvdW|;uijP2|J=lCRS0kj$oLJRsrE|hbroFT{AMjCL(7q!W zM3)p`nvanec7&@U&(q-z--0SU5L@7ub`8&|WACE0@1zAI2D(hko0|)jQXd|t*?Rmw zeMcJB*5=mU+AjfqlvaAZ2&V6U=PkaJ{0BheVEi|r{ePn;6U#q=>tE=JU|=YLV1nRa z5M^Ki0D#~F#POdt|3^Rme~p$LjO_nB)K?AmUue0TU@|062O+&Id3Lj^JWLfRe5vBK z9f?+6;h-E@6W-%QAQ=%-Z8ONPF`3stdQVKmf4>GsS>RP3(?g|Nm+RJ$!`LEp{px&l zri`C5oT$1_qP88{3gMKI>T$&>PmA$^>Ymr6*PS|VkU>+no&_Hc zFxD&b^#s2_j|vfNWs1R{UnUIHXkeX)2B#~WFjEKZ&uejr4cSyT<<^zMh7M^%SVjgb zcBU?A^~|rMLSthiwYsDe*GDj5+v)AZDHKj;TbEMeEHk9+zE~|8fUrE z9U*44O_N;RI!oI4%hKH!zR2sa9GQptI zH1<1(O!%*Pa8tfQjk9N~aLrnthnbVMO3C^vI{Pndt@kn0?Xd3eM)%IJO|hNdd~IF! z^yfEM`Z>D>WCJAeQo65t;kA663UIEpAmYB>&#&v!*KJ8KRChPO z*qng%MxCC!1#6SvA7r5QhEef2r=L8>ryGz}iM1zqwP;F|A9xvDYJ*r}YmOT9F*`Z#g z^@~C&ERLN}WDtua9%Ml*4DTlTyvNZEBGH}>)w$?>9y7nELAsh_7ae$H{vZrb5x}*U zz`C2!lyIyazAx=qJqjrwexK&45yws-`)ExocP_yqx@3Pgcf}Y7kO$s-9~p+NT??I zYw^p$@$PC`mMDZ$W#pb?c|tDz8Dh#}Q}^7^_uWtANp&I{{sTanFo+N-guvJX_1SO# zju(<7S)(O9`5qFI@|V1PeO#K#^EZkiB+X#qv4}EJAfGIoB}OI28Sdhg*K@qawqH&> zX{l2~V}DI&MPp;&YAvg+a<4u<`}i%R6Z4nI%(uj29ll4H86t)3_~?D{75Io4;g>f% z9O#10ImtV@R~U^qs>ixb0WcULFc(1k?n};s@J-sq2^rsKg-9GqN8ViM9?)U7Zqp8X z5Rdcf)^ozEnDab4I2Hm6vG|E?{_2=9xd$vMqI~OT+}V$Ce>XGN`_?w8@V2i|_Yb+e zE%Kp)ggDKO`UTd=PaI6WT6C&=S-r5A>Zd9gtFFKG6*X(Lf%%}N^^s1qq1;x+tDiT7 zil#VMKFQ(MUbDsP70?`)XN$2Yd^J9!oFZ1wqf>iL`PclbpxoP)Cc^G7p|qO9>a^0C zRJ+(4xLO;BhGfSlqtxow)#1xEaV2d;B>qOA_Sc&SvGVNj#mS8gEj^JkN^9Tw*mp4N zK~WxbsuB+k%2*?il{$G%emfJ^j~CzT1g@ShJiZ+L z%6L<7C0mD4xR5Ga!{OkurviEGE3ylH&iBs*D{eV)X#yDNx7Uu=l)~}AcN;t$Zuw=o z6)FE2*ZG%(|Ir1$8hL47_k>7+PfBHVWo=E>{06TMyClnyI>*6}p7qwak7+1gkc&ys zW7AquJg*fRptGz&0JjLK$mcWmasIk;2^sGPsedm` z+z~o zOXthaanILJpr3F)?Ko(kGynEpVyA(2tYddpf~ci!~1$sFL}@m#H0EN&1D1sM1S;hV(- z`;he^BqRkNy$C>rki&o9!~Gc3*F_jvo3F*QhGS&m1DP_Gzt)fNGF_6IKekUTKP0{< zW!%ksciwvKUp{>Ma(2En6qJyLjT$^eP447!f@p|PTZ)-@)k#y9RcNrC%KuK@kkyG9 zB!Dtk6ajj2A!;F;7?*9Iko77q`N#``|N4OH#tPCfrcOWpL?#IB3d^kVNbPddyrX-; zq~HWJ60AS~DnJ;}8qk{Y3QT<}QsAaCJvOl;rBq!hcfn?AY-IZ@SmF|uRc(n{Pe^Tf zD>3azMVLSV2~N=nlS%$jJQCX{qgq0~I!%!5Ik|0E?DY-07EeTps zNfwy{4iz22ZmNWusINQ_LK^w#5~PqsqFAFe(PnB^c~Qk=5>+Ylmyn!J`P?s_*3nD< zKFJL#eEi(L$_^ULhDlX>^2JLnmeL?rH2dT~@h_%MptK4_im|TT>tf`lY}Z4{B%X)hE5*8TFg~* z3O}c0&1$(Lo&RbqB0bS}qPc0xq(RfLeqBCvIiAYuMX9CA?{afLtgd`}pnN+WBk!3shW(MU60~feRT#!-WjT!?D?C|_ZNNM? zua=}kD%*sYYGj1!(HQNtR63(T@Ikd193VwBnF3FS5X|Nz!6e6YX-05 zBA^|s=i2`LDF#903u=;9jEbxkAEBMzUMuNGc{H-l>gD0x$b|*M;gYVFsALri>C1e1*%NM22i{k) z@vZ$V#Yp%Fg=pf|<9k=uko(^TP5cxQmz^tC!E&m+dhX9tTl#@J%Io6$#u)YM1Bzy_ z*ftz~M&DFecFx?ty6xnFZ`?d~-~yS9&Mt4S&xe#AT#4b63u)GZMJDh6K{y#%cX1Xoa!Ve&eB^NOdMW~3H-6y40a9#pdpvx->)Yv93S8#{?(NY)k_GVl;w`GeCt^v%1D zz{%;yi1~IUuU@B*E8eAb4c7E|&cubQZo>4eOhD{*@Ol0F4Z7(xY#}aT=g_XXgY}h9 z3x11=*DEWZ&4z=GnfG~ulxAguL*eCyf?G5yCv}GM!;2n5>2F75vx^1civAvtF4%<8NI}DHo zm@VYJ)Si^M3r{DH*B>Z0q?#-GGD0{geNo$x#K3RLxD|4|-tg*5;A(&exKdXZ)mkH1 zdVgJsNEMdu;k*5I^TcVfw03wE#jZ?!KEYsVCHTd@*WbquuFLc2aWQEB7*MbEcW5I| zbwqVadLe1j1T{Xaub&-WpP!eP2^KFi$!2^Rm!%;}_l7j&Yy^?z@}xI};7Y(&cb6&i zhG+Q5*0UjT04O`_J8wpMEX^Y36CW`T&jLxC%8~}^j5&qM#x9%YWVa76f*1$sduy-5 zOU^ox9p0JcnfO2x0q`f1&ET51N5?(wAP`O8Rl+L))so2jD0#np`0f69=YY2JDZNM1 z9Lw|SHG1(Pr6a4ypZIR7WSIjCIm1?>`EmJVyXEL1C zr!m0xuA6-^78&kF$lLZIQW->+F!7(0C6^JZ7m(fXAaHgDIHgo zs~$zaCU5Llivd^1PSFxv_pv-;+@*X=P2h;lVTgl+?mTP`59`lX+-N4n@Zte+*cxQv z%!3hK*L?wL<6>GUW%zhIi;8X1IrP|E0r*w7b!kz%b*U+7tG{;iVKV|_ZPw#Hkr35*}W66Xq zZz5brw6VJQg7`tv330E7pTDf0+%qF5KGolJF4u_pg?o+YpIp}g+6VuAd3VjO&iTUq zMm8&%w}v|y91GZ`yzj8K5pO``1zYXAL%IMZ!rK`MPp=CG4gmhwU>W22G%Zhfz5qY> z_~hrB<>^&PrBPTD!);w20a12iOO$6lO{H zsivOph{Ef6b=JelE(^AlwEA;

yAnEtBZot#|= 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 PGB7hXGzujpMNdWw-`00N literal 0 HcmV?d00001 diff --git a/教材/教材.tex b/教材/教材.tex new file mode 100644 index 0000000..3a2b8e1 --- /dev/null +++ b/教材/教材.tex @@ -0,0 +1,225 @@ +%====================================================================== +% 中国海洋大学 教材 模板(示例) +% +% 从《软件需求工程导论》(sre 仓库) 的版式抽取而来。 +% 正文内容为占位示例,只用来展示版式,不含原书内容。 +% +% 编译: xelatex 教材.tex +% 有参考文献时:xelatex → bibtex → xelatex → xelatex +% +% ------------------------------------------------------------------ +% ⚠️⚠️ 前两行不能动、不能换序 +% +% 第 1 行 \documentclass 必须含 chinesefont=nofont +% 第 2 行 \input{../fonts.tex} 接入仓库公共字体 +% +% 写错任一处都会退回商业字体或系统字体,详见 ouctextbook.sty 第一节。 +% ------------------------------------------------------------------ +%====================================================================== +\documentclass[lang=cn,newtx,10pt,black,chinesefont=nofont]{elegantbook} +\input{../fonts.tex} +\usepackage{ouctextbook} + +% ---- 书名信息 ---- +\title{教材模板示例} +\subtitle{副标题写在这里} +\author{作者甲 \quad 作者乙 \quad 作者丙} +\institute{中国海洋大学} +\date{2026/11/1} +\version{第一版} +\extrainfo{出版社} + +% ---- 封面图 ---- +% ⚠️ 不写 \cover{} 就不出封面图,只出纯色带封面,不会报错。 +% 要加封面就把图片放进本目录,写 \cover{cover.jpg}。 +% 示例不放图,保持模板轻量。 +% \cover{cover.jpg} + +% ---- 参考文献库(必须在 \begin{document} 之前)---- +\addbibresource[location=local]{reference.bib} + +\begin{document} + +% ---- 标题页(elegantbook 自动生成,含书名/作者/机构/版本/日期)---- +\maketitle + +% ---- 前置部分:页码用罗马数字 ---- +\frontmatter +\tableofcontents + +%====================================================================== +% 前言 +% +% ⚠️ 前言用 \chapter*(不进编号、不进目录), +% 与正文章节的 \chapter 区分。原教材如此。 +%====================================================================== +\chapter*{前言} +\markboth{前言}{前言} + +这里写前言。教材前言通常包括:本书的写作背景与目的、读者对象、 +全书结构安排、各章内容简介、使用建议(可作为哪些课程的教材、 +需要哪些先修知识)、致谢、以及勘误联系方式。 + +\vspace{1.5em} + +\hfill 编\quad 者\\ +\hfill 2026 年 11 月 + +% ---- 正文部分:页码用阿拉伯数字,章从 1 开始 ---- +\mainmatter + +%====================================================================== +% 正文示例章 +% +% ⚠️ 章的标准结构(原教材 13 章全部如此): +% \chapter{标题} +% → 导语(3~5 段,概述本章要点与结构) +% → \section 正文各节 +% → \section{本章小结} +% → \section{习题} +%====================================================================== +\chapter{章节标题示例} + +本章导语。教材每章开篇先有一段到几段导语,说明本章要解决什么问题、 +分几部分展开、与其他章的关系。这段文字通常在 3~5 段、200~400 字之间, +让读者在进入细节前建立整体框架。 + +导语的第二段继续交代本章的组织逻辑。例如「首先……接着……随后…… +最后……」这样的行文,既是给读者的路线图,也是作者自查结构是否清晰的 +工具。 + +\section{节标题} + +正文段落。教材正文 10pt,行距由 elegantbook 设定为 1.2 倍。 + +行内可以用 \textbf{黑体强调}、\emph{楷体强调},以及英文术语 +Requirements Engineering 和缩写 SRE。 + +\subsection{小节标题} + +更细一层的展开。 + +\subsubsection{小小节标题} + +最细一层。注意编号最多到这里(1.1.1.1)。 + +\paragraph{第五级标题} +这一级不再进编号,改用「(1)(2)(3)」形式,避免编号过长。 +新的一段从段首开始。 + +\paragraph{再一个第五级标题} +编号自动递增为(2)。 + +\section{列表与表格示例} + +无序列表: + +\begin{itemize} + \item \textbf{项目软件。}由甲方委托开发,需求主要来自甲方。 + \item \textbf{产品软件。}面向普通用户,需求来自产品经理。 +\end{itemize} + +有序列表: + +\begin{enumerate} + \item \textbf{系统化方法:}使用可重复的过程与标准工具。 + \item \textbf{工程原则:}模块化、抽象、分而治之。 + \item \textbf{质量保证:}通过测试、审查与验证确保质量。 +\end{enumerate} + +表格示例(教材表格通常用三线表,见 \texttt{booktabs}; +这里演示最简的带框表格,与原教材一致): + +\begin{table}[htbp] + \centering + \caption{表格标题示例} + \label{tab:example} + \begin{tabular}{|l|l|} + \hline + \textbf{列标题一} & \textbf{列标题二} \\ \hline + 内容 A & 15.9\% \\ \hline + 内容 B & 13.9\% \\ \hline + \end{tabular} +\end{table} + +见表~\ref{tab:example} 可见表题在表上方。 + +\section{插图示例} + +\begin{figure}[H] + \centering + % 有图时:\includegraphics[width=0.8\textwidth]{image/xxx.png} + \fbox{\parbox[c][3cm][c]{0.6\textwidth}{\centering 图占位}} + \caption{图标题示例} + \label{fig:example} +\end{figure} + +见图~\ref{fig:example}。图题在图下方,与表题相反,这是通行惯例。 + +\section{TikZ 绘图示例} + +教材里的关系图、流程图多用 TikZ 直接画,好处是矢量、可改、不用外部图片: + +\begin{figure}[H] + \centering + \begin{tikzpicture}[ + box/.style={draw, rounded corners, align=center, + fill=blue!6, minimum width=3.2cm, minimum height=1.0cm}, + font=\small] + \node[box] (a) at (0,1.6) {甲方\\(提目标)}; + \node[box] (b) at (0,-1.6) {用户\\(提需求)}; + \node[box] (c) at (5,0) {开发团队}; + \draw[->, thick] (a) -- node[right]{业务需求} (c); + \draw[->, thick] (b) -- node[above]{用户需求} (c); + \end{tikzpicture} + \caption{TikZ 绘图示例} +\end{figure} + +% ---- 章节收尾(原教材每章固定这两节)---- +\oucsummary + +本章小结正文。原教材的小结通常是 1~2 段密集回顾,把本章的核心结论、 +关键数据、与其他章的衔接一次交代清楚,不重复正文细节。 + +\oucexercises + +\begin{enumerate} + \item 习题一示例。 + \item 习题二示例。 +\end{enumerate} + +%====================================================================== +% 附录 +% +% ⚠️ \appendix 之后章号自动变 A、B、C…… +% elegantbook 默认已是字母编号,但为保险显式重设一次 +% (原教材主文件也这么写)。 +%====================================================================== +\appendix +\renewcommand{\thechapter}{\Alph{chapter}} + +\chapter{附录标题示例} + +附录正文。常见附录内容:术语表、缩略语表、工具清单、 +实验数据、参考规范全文等。 + +\chapter{另一个附录} + +附录二正文。 + +%====================================================================== +% 参考文献 +% +% ⚠️ 用 biblatex(elegantbook 已配好 biblatex + biber/bibtex 后端) +% \addbibresource 在导言区、\printbibliography 在正文末尾。 +% +% 本示例的 reference.bib 只有 2 条假条目,仅供演示格式。 +% 实际使用时替换为真实文献。 +% +% ⚠️ \nocite{*} 表示"引用文献库里全部条目",模板演示用。 +% 正式写作应删掉它,只列实际引用的文献。 +%====================================================================== +\nocite{*} +\printbibliography[heading=bibintoc, title=\ebibname] + +\end{document} \ No newline at end of file