This commit is contained in:
MarkLo 2025-12-12 05:30:04 +08:00
parent d46df56d1f
commit da7d05ecc9
46 changed files with 6170 additions and 242 deletions

View File

@ -18,14 +18,14 @@
**TradingAgentsX** 是一個先進的多代理 AI 交易分析系統,模擬真實世界的交易公司運作模式。透過 LangGraph 編排多個專業化的 AI 代理(分析師、研究員、交易員、風險管理者),系統能夠從不同角度分析股票市場,並通過結構化的辯論與協作流程產生高質量的交易決策。 **TradingAgentsX** 是一個先進的多代理 AI 交易分析系統,模擬真實世界的交易公司運作模式。透過 LangGraph 編排多個專業化的 AI 代理(分析師、研究員、交易員、風險管理者),系統能夠從不同角度分析股票市場,並通過結構化的辯論與協作流程產生高質量的交易決策。
> 💡 **致敬原作**: 本專案基於 [TauricResearch/TradingAgents](https://github.com/TauricResearch/TradingAgents) 進行改進和擴展,加入了完整的 Web 前端介面、RESTful API、Docker 部署支援等功能。感謝原作者的卓越工作和開源貢獻! > 💡 **致敬原作**: 本專案基於 [TauricResearch/TradingAgents](https://github.com/TauricResearch/TradingAgents) 進行改進和擴展,加入了完整的 Web 前端介面、RESTful API、Docker 部署支援等功能。並且支援台股上市櫃資料,感謝原作者的卓越工作和開源貢獻!
### 🎯 核心特色 ### 🎯 核心特色
- 🤖 **多代理協作架構** - 專業化的 AI 代理團隊協同工作 - 🤖 **多代理協作架構** - 專業化的 AI 代理團隊協同工作
- 🌐 **多模型靈活支援** - 支援 OpenAI、Anthropic、Gemini、Grok、DeepSeek、Qwen 等多家 LLM 提供商 - 🌐 **多模型靈活支援** - 支援 OpenAI、Anthropic、Gemini、Grok、DeepSeek、Qwen 等多家 LLM 提供商
- 🔧 **自訂端點配置** - 完整支援自訂 API 端點,可連接任何 OpenAI 兼容的服務 - 🔧 **自訂端點配置** - 完整支援自訂 API 端點,可連接任何 OpenAI 兼容的服務
- 📊 **全方位市場分析** - 整合技術面、基本面、情緒面、新聞面分析 - 📊 **全方位市場分析** - 完整支援**美股**與**台股**(FinMind)技術面、基本面、情緒面、新聞面分析
- 🔄 **結構化決策流程** - 透過看漲/看跌辯論機制減少偏見 - 🔄 **結構化決策流程** - 透過看漲/看跌辯論機制減少偏見
- 🧠 **長期記憶系統** - 使用 ChromaDB 向量數據庫儲存歷史決策 - 🧠 **長期記憶系統** - 使用 ChromaDB 向量數據庫儲存歷史決策
- 🎨 **現代化 Web 介面** - 基於 Next.js 16 的響應式 UI - 🎨 **現代化 Web 介面** - 基於 Next.js 16 的響應式 UI
@ -228,8 +228,10 @@ TradingAgentsX/
- 申請網址: https://platform.deepseek.com - 申請網址: https://platform.deepseek.com
- **Qwen API Key** - Qwen 系列模型 - **Qwen API Key** - Qwen 系列模型
- 申請網址: https://www.alibabacloud.com - 申請網址: https://www.alibabacloud.com
- **Alpha Vantage API Key** (必需) - 股基本面資料 - **Alpha Vantage API Key** (必需) - 股基本面資料
- 申請網址: https://www.alphavantage.co/support/#api-key - 申請網址: https://www.alphavantage.co/support/#api-key
- **FinMind API Key** (選填) - 台股上市櫃資料
- 申請網址: https://finmindtrade.com/
> 💡 **提示**: 本系統採用 BYOK (Bring Your Own Key) 模式,您可以在前端介面直接輸入 API 金鑰,無需設定環境變數(適合快速測試)。 > 💡 **提示**: 本系統採用 BYOK (Bring Your Own Key) 模式,您可以在前端介面直接輸入 API 金鑰,無需設定環境變數(適合快速測試)。
@ -299,9 +301,12 @@ DEEPSEEK_API_KEY=your-deepseek-key
# Qwen / Alibaba Cloud (可選) # Qwen / Alibaba Cloud (可選)
DASHSCOPE_API_KEY=your-qwen-key DASHSCOPE_API_KEY=your-qwen-key
# Alpha Vantage (強烈建議 - 用於基本面數據) # Alpha Vantage (強烈建議 - 用於美股基本面數據)
ALPHA_VANTAGE_API_KEY=your-alpha-vantage-key ALPHA_VANTAGE_API_KEY=your-alpha-vantage-key
# FinMind (選填 - 用於台股數據)
FINMIND_API_KEY=your-finmind-key
# ============ 後端服務配置 ============ # ============ 後端服務配置 ============
BACKEND_HOST=0.0.0.0 BACKEND_HOST=0.0.0.0
BACKEND_PORT=8000 BACKEND_PORT=8000
@ -492,7 +497,8 @@ docker compose down -v
#### 🔑 API 金鑰配置 #### 🔑 API 金鑰配置
- **Alpha Vantage API Key** (必填): 用於獲取股票基本面數據 - **Alpha Vantage API Key** (必填): 用於獲取美股基本面數據
- **FinMind API Key** (選填): 用於獲取台股數據
- 如未在環境變數中配置 LLM API Key需在此填入 - 如未在環境變數中配置 LLM API Key需在此填入
4. **執行分析** 4. **執行分析**
@ -678,7 +684,8 @@ TradingAgentsX 模擬真實交易公司的組織架構,每個代理都有其
- yfinance: 即時股價與歷史資料 - yfinance: 即時股價與歷史資料
- Reddit API: 社群情緒分析 - Reddit API: 社群情緒分析
- RSS Feeds: 財經新聞抓取 - RSS Feeds: 財經新聞抓取
- Alpha Vantage: 詳細財務資料(必需) - Alpha Vantage: 美股詳細財務資料(必需)
- FinMind: 台股上市櫃資料 integration (https://finmindtrade.com)
--- ---

View File

@ -90,6 +90,7 @@ async def run_analysis(
analysis_date=request.analysis_date, analysis_date=request.analysis_date,
analysts=request.analysts, analysts=request.analysts,
research_depth=request.research_depth, research_depth=request.research_depth,
market_type=request.market_type or "us", # 預設美股
deep_think_llm=request.deep_think_llm, deep_think_llm=request.deep_think_llm,
quick_think_llm=request.quick_think_llm, quick_think_llm=request.quick_think_llm,
openai_api_key=request.openai_api_key or "", # Pass empty string if None, service handles it openai_api_key=request.openai_api_key or "", # Pass empty string if None, service handles it
@ -100,7 +101,8 @@ async def run_analysis(
deep_think_api_key=request.deep_think_api_key or "", deep_think_api_key=request.deep_think_api_key or "",
embedding_base_url=request.embedding_base_url, embedding_base_url=request.embedding_base_url,
embedding_api_key=request.embedding_api_key or "", embedding_api_key=request.embedding_api_key or "",
alpha_vantage_api_key=request.alpha_vantage_api_key, alpha_vantage_api_key=request.alpha_vantage_api_key or "",
finmind_api_key=request.finmind_api_key or "",
)) ))
# Check for errors in result # Check for errors in result

View File

@ -21,6 +21,10 @@ class AnalysisRequest(BaseModel):
description="List of analysts to include in analysis" description="List of analysts to include in analysis"
) )
research_depth: Optional[int] = Field(default=1, ge=1, le=5, description="Research depth (1-5)") research_depth: Optional[int] = Field(default=1, ge=1, le=5, description="Research depth (1-5)")
market_type: Optional[Literal["us", "twse", "tpex"]] = Field(
default="us",
description="Market type: 'us' for US stocks, 'twse' for Taiwan TWSE (上市), 'tpex' for Taiwan TPEx/ROTC (上櫃/興櫃)"
)
deep_think_llm: Optional[str] = Field(default="gpt-5-mini", description="Deep thinking LLM model") deep_think_llm: Optional[str] = Field(default="gpt-5-mini", description="Deep thinking LLM model")
quick_think_llm: Optional[str] = Field(default="gpt-5-mini", description="Quick thinking LLM model") quick_think_llm: Optional[str] = Field(default="gpt-5-mini", description="Quick thinking LLM model")
@ -45,10 +49,15 @@ class AnalysisRequest(BaseModel):
description="Base URL for Embedding Model" description="Base URL for Embedding Model"
) )
embedding_api_key: Optional[str] = Field(None, description="API Key for Embedding Model", min_length=0) embedding_api_key: Optional[str] = Field(None, description="API Key for Embedding Model", min_length=0)
alpha_vantage_api_key: str = Field( alpha_vantage_api_key: Optional[str] = Field(
..., None,
description="Alpha Vantage API Key (required for fundamental data)", description="Alpha Vantage API Key (optional, for US stock fundamental data)",
min_length=1 min_length=0
)
finmind_api_key: Optional[str] = Field(
None,
description="FinMind API Token (optional, for Taiwan stock data)",
min_length=0
) )

View File

@ -2,6 +2,7 @@
Price data service for loading and processing stock price data Price data service for loading and processing stock price data
""" """
import polars as pl import polars as pl
import pandas as pd
from pathlib import Path from pathlib import Path
from typing import List, Dict, Any, Optional from typing import List, Dict, Any, Optional
import logging import logging
@ -101,13 +102,34 @@ class PriceService:
end_date = datetime.now() end_date = datetime.now()
start_date = end_date - timedelta(days=365 * 15) # 15 years of data start_date = end_date - timedelta(days=365 * 15) # 15 years of data
# 處理台股代碼
yf_ticker = ticker
original_ticker = ticker
# 檢查是否為台股代碼4-6位數字
clean_ticker = ticker.replace(".TW", "").replace(".TWO", "").strip()
if clean_ticker.isdigit() and 4 <= len(clean_ticker) <= 6:
# 嘗試從傳入的 market_type 判斷(如果有的話)
# 否則使用 FinMind API 判斷
try:
from tradingagents.dataflows.finmind_common import get_yfinance_ticker
yf_ticker = get_yfinance_ticker(clean_ticker)
logger.info(f"台股代碼 {ticker} 轉換為 Yahoo Finance 格式: {yf_ticker}")
except ImportError:
# 如果無法導入 FinMind預設使用 .TW
yf_ticker = f"{clean_ticker}.TW"
logger.info(f"無法導入 FinMind預設使用上市後綴: {yf_ticker}")
except Exception as e:
logger.warning(f"獲取市場類型失敗,嘗試 .TW: {e}")
yf_ticker = f"{clean_ticker}.TW"
for attempt in range(1, max_retries + 1): for attempt in range(1, max_retries + 1):
try: try:
logger.info(f"嘗試從 Yahoo Finance 獲取 {ticker} 數據(第 {attempt} 次嘗試)...") logger.info(f"嘗試從 Yahoo Finance 獲取 {yf_ticker} 數據(第 {attempt} 次嘗試)...")
# Download data with timeout # Download data with timeout
data = yf.download( data = yf.download(
ticker, yf_ticker,
start=start_date.strftime("%Y-%m-%d"), start=start_date.strftime("%Y-%m-%d"),
end=end_date.strftime("%Y-%m-%d"), end=end_date.strftime("%Y-%m-%d"),
progress=False, progress=False,
@ -115,24 +137,83 @@ class PriceService:
) )
if data.empty: if data.empty:
logger.error(f"{ticker} 無可用數據") # 如果是台股,嘗試另一個後綴
return None if ".TW" in yf_ticker:
alt_ticker = yf_ticker.replace(".TW", ".TWO")
logger.info(f"嘗試上櫃代碼: {alt_ticker}")
data = yf.download(
alt_ticker,
start=start_date.strftime("%Y-%m-%d"),
end=end_date.strftime("%Y-%m-%d"),
progress=False,
timeout=30
)
if not data.empty:
yf_ticker = alt_ticker
elif ".TWO" in yf_ticker:
alt_ticker = yf_ticker.replace(".TWO", ".TW")
logger.info(f"嘗試上市代碼: {alt_ticker}")
data = yf.download(
alt_ticker,
start=start_date.strftime("%Y-%m-%d"),
end=end_date.strftime("%Y-%m-%d"),
progress=False,
timeout=30
)
if not data.empty:
yf_ticker = alt_ticker
if data.empty:
logger.error(f"{yf_ticker} 無可用數據")
return None
# 處理 yfinance 多索引 DataFrame
# yfinance 可能返回多層索引的 DataFrame
if isinstance(data.columns, pd.MultiIndex):
# 移除多層索引,只保留第一層
data.columns = data.columns.get_level_values(0)
logger.info("已處理 yfinance 多索引 DataFrame")
# Reset index to make Date a column # Reset index to make Date a column
data = data.reset_index() data = data.reset_index()
# 確保 Date 欄位名稱正確
if 'Date' not in data.columns and 'date' in data.columns:
data = data.rename(columns={'date': 'Date'})
elif 'Date' not in data.columns:
# 如果第一個欄位是日期,重命名它
first_col = data.columns[0]
data = data.rename(columns={first_col: 'Date'})
# 標準化欄位名稱
column_mapping = {
'open': 'Open', 'high': 'High', 'low': 'Low',
'close': 'Close', 'volume': 'Volume', 'adj close': 'Adj Close'
}
data = data.rename(columns={k: v for k, v in column_mapping.items() if k in data.columns})
# Ensure cache directory exists # Ensure cache directory exists
Path(data_cache_dir).mkdir(parents=True, exist_ok=True) Path(data_cache_dir).mkdir(parents=True, exist_ok=True)
# Save to cache # Save to cache - 使用原始代碼作為檔名(不含後綴)
cache_file = Path(data_cache_dir) / f"{ticker}-YFin-data-{start_date.strftime('%Y-%m-%d')}-{end_date.strftime('%Y-%m-%d')}.csv" cache_file = Path(data_cache_dir) / f"{original_ticker}-YFin-data-{start_date.strftime('%Y-%m-%d')}-{end_date.strftime('%Y-%m-%d')}.csv"
data.to_csv(cache_file, index=False) data.to_csv(cache_file, index=False)
logger.info(f"成功獲取並緩存 {ticker} 數據到 {cache_file}") logger.info(f"成功獲取並緩存 {yf_ticker} 數據到 {cache_file}")
# Prepare and return DataFrame - convert to polars # Prepare and return DataFrame - convert to polars
df = pl.read_csv(str(cache_file)) df = pl.read_csv(str(cache_file))
df = df.with_columns(pl.col("Date").str.to_datetime())
# 嘗試轉換 Date 欄位
try:
df = df.with_columns(pl.col("Date").str.to_datetime())
except Exception as date_err:
logger.warning(f"日期轉換失敗: {date_err},嘗試其他格式")
try:
df = df.with_columns(pl.col("Date").cast(pl.Datetime))
except:
pass
return df.sort("Date") return df.sort("Date")
except Exception as e: except Exception as e:
@ -142,7 +223,7 @@ class PriceService:
logger.info(f"將在 {wait_time} 秒後重試...") logger.info(f"將在 {wait_time} 秒後重試...")
time_module.sleep(wait_time) time_module.sleep(wait_time)
else: else:
logger.error(f"{max_retries} 次嘗試後仍無法獲取 {ticker} 數據") logger.error(f"{max_retries} 次嘗試後仍無法獲取 {yf_ticker} 數據")
return None return None
return None return None

View File

@ -51,6 +51,8 @@ class TradingService:
embedding_base_url: str = "https://api.openai.com/v1", embedding_base_url: str = "https://api.openai.com/v1",
embedding_api_key: Optional[str] = None, embedding_api_key: Optional[str] = None,
alpha_vantage_api_key: Optional[str] = None, alpha_vantage_api_key: Optional[str] = None,
finmind_api_key: Optional[str] = None, # 台灣股市資料 API
market_type: str = "us", # 市場類型us (美股) 或 tw (台股)
analysts: Optional[List[str]] = None, analysts: Optional[List[str]] = None,
research_depth: int = 1, research_depth: int = 1,
deep_think_llm: str = "gpt-5-mini", deep_think_llm: str = "gpt-5-mini",
@ -66,7 +68,9 @@ class TradingService:
openai_base_url: OpenAI API Base URL (optional, deprecated) openai_base_url: OpenAI API Base URL (optional, deprecated)
quick_think_base_url: Base URL for Quick Thinking Model quick_think_base_url: Base URL for Quick Thinking Model
deep_think_base_url: Base URL for Deep Thinking Model deep_think_base_url: Base URL for Deep Thinking Model
alpha_vantage_api_key: Alpha Vantage API Key (optional) alpha_vantage_api_key: Alpha Vantage API Key (optional, for US stocks)
finmind_api_key: FinMind API Token (optional, for Taiwan stocks)
market_type: Market type - 'us' for US stocks, 'tw' for Taiwan stocks
analysts: List of analyst types to include analysts: List of analyst types to include
research_depth: Research depth (1-5) research_depth: Research depth (1-5)
deep_think_llm: Deep thinking LLM model deep_think_llm: Deep thinking LLM model
@ -84,12 +88,17 @@ class TradingService:
import os import os
original_openai_key = os.environ.get("OPENAI_API_KEY") original_openai_key = os.environ.get("OPENAI_API_KEY")
original_alpha_key = os.environ.get("ALPHA_VANTAGE_API_KEY") original_alpha_key = os.environ.get("ALPHA_VANTAGE_API_KEY")
original_finmind_key = os.environ.get("FINMIND_API_TOKEN")
try: try:
# Set Alpha Vantage API key if provided # Set Alpha Vantage API key if provided
if alpha_vantage_api_key: if alpha_vantage_api_key:
os.environ["ALPHA_VANTAGE_API_KEY"] = alpha_vantage_api_key os.environ["ALPHA_VANTAGE_API_KEY"] = alpha_vantage_api_key
# Set FinMind API token if provided
if finmind_api_key:
os.environ["FINMIND_API_TOKEN"] = finmind_api_key
# Set OpenAI API key for dataflows (openai.py reads from env var) # Set OpenAI API key for dataflows (openai.py reads from env var)
if openai_api_key: if openai_api_key:
os.environ["OPENAI_API_KEY"] = openai_api_key os.environ["OPENAI_API_KEY"] = openai_api_key
@ -126,6 +135,36 @@ class TradingService:
config["embedding_base_url"] = normalize_base_url(embedding_base_url) config["embedding_base_url"] = normalize_base_url(embedding_base_url)
config["embedding_api_key"] = embedding_api_key if embedding_api_key else openai_api_key config["embedding_api_key"] = embedding_api_key if embedding_api_key else openai_api_key
# 根據 market_type 設定資料供應商
if market_type in ["twse", "tpex"]:
# 台股(上市/上櫃/興櫃):使用 FinMind 作為所有資料來源
market_label = "上市" if market_type == "twse" else "上櫃/興櫃"
logger.info(f"Market type: Taiwan stocks ({market_label}) - using FinMind data provider")
config["data_vendors"] = {
"core_stock_apis": "finmind",
"technical_indicators": "finmind",
"fundamental_data": "finmind",
"news_data": "finmind",
}
# 所有工具也使用 finmind
config["tool_vendors"] = {
"get_stock_data": "finmind",
"get_indicators": "finmind",
"get_fundamentals": "finmind",
"get_balance_sheet": "finmind",
"get_cashflow": "finmind",
"get_income_statement": "finmind",
"get_news": "finmind",
"get_global_news": "finmind",
"get_insider_sentiment": "finmind",
"get_insider_transactions": "finmind",
}
# 儲存市場類型供 price_service 使用
config["market_type"] = market_type
else:
# 美股:維持原有邏輯(不修改 data_vendors 和 tool_vendors
logger.info(f"Market type: US stocks - using default data providers")
# Initialize TradingAgentsX graph # Initialize TradingAgentsX graph
graph = TradingAgentsXGraph(analysts, config=config, debug=True) graph = TradingAgentsXGraph(analysts, config=config, debug=True)
@ -171,7 +210,6 @@ class TradingService:
} }
finally: finally:
# Clean up environment variables after request
# Clean up environment variables after request # Clean up environment variables after request
if original_openai_key is not None: if original_openai_key is not None:
os.environ["OPENAI_API_KEY"] = original_openai_key os.environ["OPENAI_API_KEY"] = original_openai_key
@ -181,8 +219,13 @@ class TradingService:
if original_alpha_key is not None: if original_alpha_key is not None:
os.environ["ALPHA_VANTAGE_API_KEY"] = original_alpha_key os.environ["ALPHA_VANTAGE_API_KEY"] = original_alpha_key
elif "ALPHA_VANTAGE_API_KEY" in os.environ: elif alpha_vantage_api_key and "ALPHA_VANTAGE_API_KEY" in os.environ:
del os.environ["ALPHA_VANTAGE_API_KEY"] del os.environ["ALPHA_VANTAGE_API_KEY"]
if original_finmind_key is not None:
os.environ["FINMIND_API_TOKEN"] = original_finmind_key
elif finmind_api_key and "FINMIND_API_TOKEN" in os.environ:
del os.environ["FINMIND_API_TOKEN"]
except Exception as e: except Exception as e:
logger.error(f"Analysis failed for {ticker}: {str(e)}", exc_info=True) logger.error(f"Analysis failed for {ticker}: {str(e)}", exc_info=True)

View File

@ -50,7 +50,7 @@ export function AgentFlowDiagram() {
/> />
<DataSourceCard <DataSourceCard
icon={<DollarSign className="w-5 h-5" />} icon={<DollarSign className="w-5 h-5" />}
name="Alpha Vantage" name="Alpha Vantage / FinMind"
description="財務數據" description="財務數據"
color="purple" color="purple"
/> />

View File

@ -53,6 +53,9 @@ const formSchema = z.object({
quick_think_llm: z.string().min(1, "請選擇快速思維模型"), quick_think_llm: z.string().min(1, "請選擇快速思維模型"),
deep_think_llm: z.string().min(1, "請選擇深層思維模型"), deep_think_llm: z.string().min(1, "請選擇深層思維模型"),
// Market type selection: us=美股, twse=上市, tpex=上櫃/興櫃
market_type: z.enum(["us", "twse", "tpex"]).default("us"),
// Custom model names (when "custom" is selected) // Custom model names (when "custom" is selected)
custom_quick_think_model: z.string().optional(), custom_quick_think_model: z.string().optional(),
custom_deep_think_model: z.string().optional(), custom_deep_think_model: z.string().optional(),
@ -76,7 +79,8 @@ const formSchema = z.object({
.optional() .optional()
.or(z.literal("")), .or(z.literal("")),
embedding_api_key: z.string().min(1, "請輸入嵌入模型 API Key"), embedding_api_key: z.string().min(1, "請輸入嵌入模型 API Key"),
alpha_vantage_api_key: z.string().min(1, "請輸入 Alpha Vantage API Key"), alpha_vantage_api_key: z.string().optional().or(z.literal("")), // 選填
finmind_api_key: z.string().optional().or(z.literal("")), // 選填
}); });
interface AnalysisFormProps { interface AnalysisFormProps {
@ -99,6 +103,7 @@ export function AnalysisForm({ onSubmit, loading = false }: AnalysisFormProps) {
analysis_date: format(new Date(), "yyyy-MM-dd"), analysis_date: format(new Date(), "yyyy-MM-dd"),
analysts: ["market", "social", "news", "fundamentals"], // 預設全選 analysts: ["market", "social", "news", "fundamentals"], // 預設全選
research_depth: 3, // 預設中等層級 research_depth: 3, // 預設中等層級
market_type: "us", // 預設美股
quick_think_llm: "gpt-5-mini", quick_think_llm: "gpt-5-mini",
deep_think_llm: "gpt-5-mini", deep_think_llm: "gpt-5-mini",
custom_quick_think_model: "", custom_quick_think_model: "",
@ -110,12 +115,14 @@ export function AnalysisForm({ onSubmit, loading = false }: AnalysisFormProps) {
embedding_base_url: "https://api.openai.com/v1", embedding_base_url: "https://api.openai.com/v1",
embedding_api_key: "", embedding_api_key: "",
alpha_vantage_api_key: "", alpha_vantage_api_key: "",
finmind_api_key: "",
}, },
}); });
// Load API settings from localStorage and update when models change // Load API settings from localStorage and update when models change
const quickThinkLlm = form.watch("quick_think_llm"); const quickThinkLlm = form.watch("quick_think_llm");
const deepThinkLlm = form.watch("deep_think_llm"); const deepThinkLlm = form.watch("deep_think_llm");
const marketType = form.watch("market_type");
const isQuickThinkCustom = quickThinkLlm === "custom"; const isQuickThinkCustom = quickThinkLlm === "custom";
const isDeepThinkCustom = deepThinkLlm === "custom"; const isDeepThinkCustom = deepThinkLlm === "custom";
@ -141,10 +148,27 @@ export function AnalysisForm({ onSubmit, loading = false }: AnalysisFormProps) {
form.setValue("embedding_base_url", savedSettings.custom_base_url || "https://api.openai.com/v1"); form.setValue("embedding_base_url", savedSettings.custom_base_url || "https://api.openai.com/v1");
form.setValue("embedding_api_key", savedSettings.custom_api_key || savedSettings.openai_api_key); form.setValue("embedding_api_key", savedSettings.custom_api_key || savedSettings.openai_api_key);
form.setValue("alpha_vantage_api_key", savedSettings.alpha_vantage_api_key); form.setValue("alpha_vantage_api_key", savedSettings.alpha_vantage_api_key || "");
form.setValue("finmind_api_key", savedSettings.finmind_api_key || "");
// eslint-disable-next-line react-hooks/exhaustive-deps // eslint-disable-next-line react-hooks/exhaustive-deps
}, [quickThinkLlm, deepThinkLlm, isQuickThinkCustom, isDeepThinkCustom]); }, [quickThinkLlm, deepThinkLlm, isQuickThinkCustom, isDeepThinkCustom]);
// 當市場類型改變時,更新預設股票代碼和提示
useEffect(() => {
const currentTicker = form.getValues("ticker");
// 只在用戶未修改預設值時才自動切換
const isTwStock = marketType === "twse" || marketType === "tpex";
const isDefaultUsTicker = currentTicker === "NVDA" || currentTicker === "AAPL";
const isDefaultTwTicker = currentTicker === "2330" || currentTicker === "2317" || currentTicker === "6488";
if (isTwStock && isDefaultUsTicker) {
form.setValue("ticker", marketType === "twse" ? "2330" : "6488");
} else if (marketType === "us" && isDefaultTwTicker) {
form.setValue("ticker", "NVDA");
}
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [marketType]);
// 全選/取消全選 // 全選/取消全選
const toggleSelectAll = () => { const toggleSelectAll = () => {
const currentAnalysts = form.getValues("analysts"); const currentAnalysts = form.getValues("analysts");
@ -270,8 +294,45 @@ export function AnalysisForm({ onSubmit, loading = false }: AnalysisFormProps) {
/> />
</div> </div>
{/* 第一行股票代碼、分析日期2列 */} {/* 第一行市場類型、股票代碼、分析日期3列 */}
<div className="md:col-span-2 grid grid-cols-1 md:grid-cols-2 gap-6"> <div className="md:col-span-2 grid grid-cols-1 md:grid-cols-3 gap-6">
{/* 市場類型選擇 */}
<FormField
control={form.control}
name="market_type"
render={({ field }) => (
<FormItem>
<FormLabel></FormLabel>
<Select
onValueChange={field.onChange}
defaultValue={field.value}
>
<FormControl>
<SelectTrigger>
<SelectValue placeholder="選擇市場" />
</SelectTrigger>
</FormControl>
<SelectContent>
<SelectItem value="us" className="py-3 cursor-pointer">
🇺🇸
</SelectItem>
<SelectItem value="twse" className="py-3 cursor-pointer">
🇹🇼
</SelectItem>
<SelectItem value="tpex" className="py-3 cursor-pointer">
🇹🇼 /
</SelectItem>
</SelectContent>
</Select>
<FormDescription>
</FormDescription>
<FormMessage />
</FormItem>
)}
/>
{/* 股票代碼 */}
<FormField <FormField
control={form.control} control={form.control}
name="ticker" name="ticker"
@ -279,10 +340,21 @@ export function AnalysisForm({ onSubmit, loading = false }: AnalysisFormProps) {
<FormItem> <FormItem>
<FormLabel></FormLabel> <FormLabel></FormLabel>
<FormControl> <FormControl>
<Input placeholder="NVDA" {...field} /> <Input
placeholder={
marketType === "us" ? "NVDA" :
marketType === "twse" ? "2330" : "6488"
}
{...field}
/>
</FormControl> </FormControl>
<FormDescription> <FormDescription>
NVDAAAPL {marketType === "us"
? "輸入美股代碼例如NVDA、AAPL"
: marketType === "twse"
? "輸入上市股票代碼例如2330、2317"
: "輸入上櫃/興櫃股票代碼例如6488、5765"
}
</FormDescription> </FormDescription>
<FormMessage /> <FormMessage />
</FormItem> </FormItem>

View File

@ -39,9 +39,10 @@ import {
const formSchema = z.object({ const formSchema = z.object({
// Required // Required
openai_api_key: z.string().min(1, "OpenAI API Key 為必填"), openai_api_key: z.string().min(1, "OpenAI API Key 為必填"),
alpha_vantage_api_key: z.string().min(1, "Alpha Vantage API Key 為必填"),
// Optional // Optional
alpha_vantage_api_key: z.string().optional().or(z.literal("")), // 美股基本面資料
finmind_api_key: z.string().optional().or(z.literal("")), // 台灣股市資料
anthropic_api_key: z.string().optional().or(z.literal("")), anthropic_api_key: z.string().optional().or(z.literal("")),
google_api_key: z.string().optional().or(z.literal("")), google_api_key: z.string().optional().or(z.literal("")),
grok_api_key: z.string().optional().or(z.literal("")), grok_api_key: z.string().optional().or(z.literal("")),
@ -136,14 +137,43 @@ export function ApiSettingsDialog() {
</FormItem> </FormItem>
)} )}
/> />
</div>
{/* Alpha Vantage API Key */} {/* Stock Market Data APIs Section */}
<div className="space-y-4 border-t pt-4">
<h3 className="text-lg font-semibold text-muted-foreground">
API
</h3>
{/* FinMind API Key - Taiwan Stocks */}
<FormField
control={form.control}
name="finmind_api_key"
render={({ field }) => (
<FormItem>
<FormLabel>FinMind API Token</FormLabel>
<FormControl>
<Input
type="password"
placeholder="輸入 FinMind Token"
{...field}
/>
</FormControl>
<FormDescription>
finmindtrade.com
</FormDescription>
<FormMessage />
</FormItem>
)}
/>
{/* Alpha Vantage API Key - US Stocks */}
<FormField <FormField
control={form.control} control={form.control}
name="alpha_vantage_api_key" name="alpha_vantage_api_key"
render={({ field }) => ( render={({ field }) => (
<FormItem> <FormItem>
<FormLabel>Alpha Vantage API Key *</FormLabel> <FormLabel>Alpha Vantage API Key</FormLabel>
<FormControl> <FormControl>
<Input <Input
type="password" type="password"
@ -152,7 +182,7 @@ export function ApiSettingsDialog() {
/> />
</FormControl> </FormControl>
<FormDescription> <FormDescription>
</FormDescription> </FormDescription>
<FormMessage /> <FormMessage />
</FormItem> </FormItem>
@ -160,10 +190,10 @@ export function ApiSettingsDialog() {
/> />
</div> </div>
{/* Optional Section */} {/* Optional LLM Providers Section */}
<div className="space-y-4 border-t pt-4"> <div className="space-y-4 border-t pt-4">
<h3 className="text-lg font-semibold text-muted-foreground"> <h3 className="text-lg font-semibold text-muted-foreground">
LLM
</h3> </h3>
{/* Anthropic API Key */} {/* Anthropic API Key */}

View File

@ -13,6 +13,7 @@ export interface ApiSettings {
grok_api_key: string; grok_api_key: string;
deepseek_api_key: string; deepseek_api_key: string;
qwen_api_key: string; qwen_api_key: string;
finmind_api_key: string; // 台灣股市資料 API
// Custom endpoint // Custom endpoint
custom_base_url: string; custom_base_url: string;
@ -29,6 +30,7 @@ export const DEFAULT_API_SETTINGS: ApiSettings = {
grok_api_key: "", grok_api_key: "",
deepseek_api_key: "", deepseek_api_key: "",
qwen_api_key: "", qwen_api_key: "",
finmind_api_key: "", // 台灣股市資料 API
custom_base_url: "", custom_base_url: "",
custom_api_key: "", custom_api_key: "",
}; };

View File

@ -7,6 +7,7 @@ export interface AnalysisRequest {
analysis_date: string; analysis_date: string;
analysts?: string[]; analysts?: string[];
research_depth?: number; research_depth?: number;
market_type?: "us" | "twse" | "tpex"; // 市場類型:美股、上市、上櫃/興櫃
quick_think_llm?: string; quick_think_llm?: string;
deep_think_llm?: string; deep_think_llm?: string;
@ -20,6 +21,7 @@ export interface AnalysisRequest {
embedding_base_url?: string; embedding_base_url?: string;
embedding_api_key?: string; embedding_api_key?: string;
alpha_vantage_api_key?: string; alpha_vantage_api_key?: string;
finmind_api_key?: string; // 台灣股市資料 API
} }
export interface PriceData { export interface PriceData {

View File

@ -61,7 +61,7 @@ importers:
version: 19.2.0 version: 19.2.0
react-day-picker: react-day-picker:
specifier: ^9.11.3 specifier: ^9.11.3
version: 9.11.3(react@19.2.0) version: 9.12.0(react@19.2.0)
react-dom: react-dom:
specifier: 19.2.0 specifier: 19.2.0
version: 19.2.0(react@19.2.0) version: 19.2.0(react@19.2.0)
@ -89,10 +89,10 @@ importers:
devDependencies: devDependencies:
'@tailwindcss/postcss': '@tailwindcss/postcss':
specifier: ^4 specifier: ^4
version: 4.1.17 version: 4.1.18
'@types/node': '@types/node':
specifier: ^20 specifier: ^20
version: 20.19.25 version: 20.19.26
'@types/react': '@types/react':
specifier: ^19 specifier: ^19
version: 19.2.7 version: 19.2.7
@ -104,16 +104,16 @@ importers:
version: 1.0.0 version: 1.0.0
baseline-browser-mapping: baseline-browser-mapping:
specifier: ^2.9.2 specifier: ^2.9.2
version: 2.9.2 version: 2.9.6
eslint: eslint:
specifier: ^9 specifier: ^9
version: 9.39.1(jiti@2.6.1) version: 9.39.1(jiti@2.6.1)
eslint-config-next: eslint-config-next:
specifier: 16.0.3 specifier: 16.0.3
version: 16.0.3(@typescript-eslint/parser@8.48.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) version: 16.0.3(@typescript-eslint/parser@8.49.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
tailwindcss: tailwindcss:
specifier: ^4 specifier: ^4
version: 4.1.17 version: 4.1.18
tw-animate-css: tw-animate-css:
specifier: ^1.4.0 specifier: ^1.4.0
version: 1.4.0 version: 1.4.0
@ -897,8 +897,8 @@ packages:
'@radix-ui/rect@1.1.1': '@radix-ui/rect@1.1.1':
resolution: {integrity: sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw==} resolution: {integrity: sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw==}
'@reduxjs/toolkit@2.11.0': '@reduxjs/toolkit@2.11.1':
resolution: {integrity: sha512-hBjYg0aaRL1O2Z0IqWhnTLytnjDIxekmRxm1snsHjHaKVmIF1HiImWqsq+PuEbn6zdMlkIj9WofK1vR8jjx+Xw==} resolution: {integrity: sha512-HjhlEREguAyBTGNzRlGNiDHGQ2EjLSPWwdhhpoEqHYy8hWak3Dp6/fU72OfqVsiMb8S6rbfPsWUF24fxpilrVA==}
peerDependencies: peerDependencies:
react: ^16.9.0 || ^17.0.0 || ^18 || ^19 react: ^16.9.0 || ^17.0.0 || ^18 || ^19
react-redux: ^7.2.1 || ^8.1.3 || ^9.0.0 react-redux: ^7.2.1 || ^8.1.3 || ^9.0.0
@ -920,65 +920,65 @@ packages:
'@swc/helpers@0.5.15': '@swc/helpers@0.5.15':
resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==} resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==}
'@tailwindcss/node@4.1.17': '@tailwindcss/node@4.1.18':
resolution: {integrity: sha512-csIkHIgLb3JisEFQ0vxr2Y57GUNYh447C8xzwj89U/8fdW8LhProdxvnVH6U8M2Y73QKiTIH+LWbK3V2BBZsAg==} resolution: {integrity: sha512-DoR7U1P7iYhw16qJ49fgXUlry1t4CpXeErJHnQ44JgTSKMaZUdf17cfn5mHchfJ4KRBZRFA/Coo+MUF5+gOaCQ==}
'@tailwindcss/oxide-android-arm64@4.1.17': '@tailwindcss/oxide-android-arm64@4.1.18':
resolution: {integrity: sha512-BMqpkJHgOZ5z78qqiGE6ZIRExyaHyuxjgrJ6eBO5+hfrfGkuya0lYfw8fRHG77gdTjWkNWEEm+qeG2cDMxArLQ==} resolution: {integrity: sha512-dJHz7+Ugr9U/diKJA0W6N/6/cjI+ZTAoxPf9Iz9BFRF2GzEX8IvXxFIi/dZBloVJX/MZGvRuFA9rqwdiIEZQ0Q==}
engines: {node: '>= 10'} engines: {node: '>= 10'}
cpu: [arm64] cpu: [arm64]
os: [android] os: [android]
'@tailwindcss/oxide-darwin-arm64@4.1.17': '@tailwindcss/oxide-darwin-arm64@4.1.18':
resolution: {integrity: sha512-EquyumkQweUBNk1zGEU/wfZo2qkp/nQKRZM8bUYO0J+Lums5+wl2CcG1f9BgAjn/u9pJzdYddHWBiFXJTcxmOg==} resolution: {integrity: sha512-Gc2q4Qhs660bhjyBSKgq6BYvwDz4G+BuyJ5H1xfhmDR3D8HnHCmT/BSkvSL0vQLy/nkMLY20PQ2OoYMO15Jd0A==}
engines: {node: '>= 10'} engines: {node: '>= 10'}
cpu: [arm64] cpu: [arm64]
os: [darwin] os: [darwin]
'@tailwindcss/oxide-darwin-x64@4.1.17': '@tailwindcss/oxide-darwin-x64@4.1.18':
resolution: {integrity: sha512-gdhEPLzke2Pog8s12oADwYu0IAw04Y2tlmgVzIN0+046ytcgx8uZmCzEg4VcQh+AHKiS7xaL8kGo/QTiNEGRog==} resolution: {integrity: sha512-FL5oxr2xQsFrc3X9o1fjHKBYBMD1QZNyc1Xzw/h5Qu4XnEBi3dZn96HcHm41c/euGV+GRiXFfh2hUCyKi/e+yw==}
engines: {node: '>= 10'} engines: {node: '>= 10'}
cpu: [x64] cpu: [x64]
os: [darwin] os: [darwin]
'@tailwindcss/oxide-freebsd-x64@4.1.17': '@tailwindcss/oxide-freebsd-x64@4.1.18':
resolution: {integrity: sha512-hxGS81KskMxML9DXsaXT1H0DyA+ZBIbyG/sSAjWNe2EDl7TkPOBI42GBV3u38itzGUOmFfCzk1iAjDXds8Oh0g==} resolution: {integrity: sha512-Fj+RHgu5bDodmV1dM9yAxlfJwkkWvLiRjbhuO2LEtwtlYlBgiAT4x/j5wQr1tC3SANAgD+0YcmWVrj8R9trVMA==}
engines: {node: '>= 10'} engines: {node: '>= 10'}
cpu: [x64] cpu: [x64]
os: [freebsd] os: [freebsd]
'@tailwindcss/oxide-linux-arm-gnueabihf@4.1.17': '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.18':
resolution: {integrity: sha512-k7jWk5E3ldAdw0cNglhjSgv501u7yrMf8oeZ0cElhxU6Y2o7f8yqelOp3fhf7evjIS6ujTI3U8pKUXV2I4iXHQ==} resolution: {integrity: sha512-Fp+Wzk/Ws4dZn+LV2Nqx3IilnhH51YZoRaYHQsVq3RQvEl+71VGKFpkfHrLM/Li+kt5c0DJe/bHXK1eHgDmdiA==}
engines: {node: '>= 10'} engines: {node: '>= 10'}
cpu: [arm] cpu: [arm]
os: [linux] os: [linux]
'@tailwindcss/oxide-linux-arm64-gnu@4.1.17': '@tailwindcss/oxide-linux-arm64-gnu@4.1.18':
resolution: {integrity: sha512-HVDOm/mxK6+TbARwdW17WrgDYEGzmoYayrCgmLEw7FxTPLcp/glBisuyWkFz/jb7ZfiAXAXUACfyItn+nTgsdQ==} resolution: {integrity: sha512-S0n3jboLysNbh55Vrt7pk9wgpyTTPD0fdQeh7wQfMqLPM/Hrxi+dVsLsPrycQjGKEQk85Kgbx+6+QnYNiHalnw==}
engines: {node: '>= 10'} engines: {node: '>= 10'}
cpu: [arm64] cpu: [arm64]
os: [linux] os: [linux]
'@tailwindcss/oxide-linux-arm64-musl@4.1.17': '@tailwindcss/oxide-linux-arm64-musl@4.1.18':
resolution: {integrity: sha512-HvZLfGr42i5anKtIeQzxdkw/wPqIbpeZqe7vd3V9vI3RQxe3xU1fLjss0TjyhxWcBaipk7NYwSrwTwK1hJARMg==} resolution: {integrity: sha512-1px92582HkPQlaaCkdRcio71p8bc8i/ap5807tPRDK/uw953cauQBT8c5tVGkOwrHMfc2Yh6UuxaH4vtTjGvHg==}
engines: {node: '>= 10'} engines: {node: '>= 10'}
cpu: [arm64] cpu: [arm64]
os: [linux] os: [linux]
'@tailwindcss/oxide-linux-x64-gnu@4.1.17': '@tailwindcss/oxide-linux-x64-gnu@4.1.18':
resolution: {integrity: sha512-M3XZuORCGB7VPOEDH+nzpJ21XPvK5PyjlkSFkFziNHGLc5d6g3di2McAAblmaSUNl8IOmzYwLx9NsE7bplNkwQ==} resolution: {integrity: sha512-v3gyT0ivkfBLoZGF9LyHmts0Isc8jHZyVcbzio6Wpzifg/+5ZJpDiRiUhDLkcr7f/r38SWNe7ucxmGW3j3Kb/g==}
engines: {node: '>= 10'} engines: {node: '>= 10'}
cpu: [x64] cpu: [x64]
os: [linux] os: [linux]
'@tailwindcss/oxide-linux-x64-musl@4.1.17': '@tailwindcss/oxide-linux-x64-musl@4.1.18':
resolution: {integrity: sha512-k7f+pf9eXLEey4pBlw+8dgfJHY4PZ5qOUFDyNf7SI6lHjQ9Zt7+NcscjpwdCEbYi6FI5c2KDTDWyf2iHcCSyyQ==} resolution: {integrity: sha512-bhJ2y2OQNlcRwwgOAGMY0xTFStt4/wyU6pvI6LSuZpRgKQwxTec0/3Scu91O8ir7qCR3AuepQKLU/kX99FouqQ==}
engines: {node: '>= 10'} engines: {node: '>= 10'}
cpu: [x64] cpu: [x64]
os: [linux] os: [linux]
'@tailwindcss/oxide-wasm32-wasi@4.1.17': '@tailwindcss/oxide-wasm32-wasi@4.1.18':
resolution: {integrity: sha512-cEytGqSSoy7zK4JRWiTCx43FsKP/zGr0CsuMawhH67ONlH+T79VteQeJQRO/X7L0juEUA8ZyuYikcRBf0vsxhg==} resolution: {integrity: sha512-LffYTvPjODiP6PT16oNeUQJzNVyJl1cjIebq/rWWBF+3eDst5JGEFSc5cWxyRCJ0Mxl+KyIkqRxk1XPEs9x8TA==}
engines: {node: '>=14.0.0'} engines: {node: '>=14.0.0'}
cpu: [wasm32] cpu: [wasm32]
bundledDependencies: bundledDependencies:
@ -989,24 +989,24 @@ packages:
- '@emnapi/wasi-threads' - '@emnapi/wasi-threads'
- tslib - tslib
'@tailwindcss/oxide-win32-arm64-msvc@4.1.17': '@tailwindcss/oxide-win32-arm64-msvc@4.1.18':
resolution: {integrity: sha512-JU5AHr7gKbZlOGvMdb4722/0aYbU+tN6lv1kONx0JK2cGsh7g148zVWLM0IKR3NeKLv+L90chBVYcJ8uJWbC9A==} resolution: {integrity: sha512-HjSA7mr9HmC8fu6bdsZvZ+dhjyGCLdotjVOgLA2vEqxEBZaQo9YTX4kwgEvPCpRh8o4uWc4J/wEoFzhEmjvPbA==}
engines: {node: '>= 10'} engines: {node: '>= 10'}
cpu: [arm64] cpu: [arm64]
os: [win32] os: [win32]
'@tailwindcss/oxide-win32-x64-msvc@4.1.17': '@tailwindcss/oxide-win32-x64-msvc@4.1.18':
resolution: {integrity: sha512-SKWM4waLuqx0IH+FMDUw6R66Hu4OuTALFgnleKbqhgGU30DY20NORZMZUKgLRjQXNN2TLzKvh48QXTig4h4bGw==} resolution: {integrity: sha512-bJWbyYpUlqamC8dpR7pfjA0I7vdF6t5VpUGMWRkXVE3AXgIZjYUYAK7II1GNaxR8J1SSrSrppRar8G++JekE3Q==}
engines: {node: '>= 10'} engines: {node: '>= 10'}
cpu: [x64] cpu: [x64]
os: [win32] os: [win32]
'@tailwindcss/oxide@4.1.17': '@tailwindcss/oxide@4.1.18':
resolution: {integrity: sha512-F0F7d01fmkQhsTjXezGBLdrl1KresJTcI3DB8EkScCldyKp3Msz4hub4uyYaVnk88BAS1g5DQjjF6F5qczheLA==} resolution: {integrity: sha512-EgCR5tTS5bUSKQgzeMClT6iCY3ToqE1y+ZB0AKldj809QXk1Y+3jB0upOYZrn9aGIzPtUsP7sX4QQ4XtjBB95A==}
engines: {node: '>= 10'} engines: {node: '>= 10'}
'@tailwindcss/postcss@4.1.17': '@tailwindcss/postcss@4.1.18':
resolution: {integrity: sha512-+nKl9N9mN5uJ+M7dBOOCzINw94MPstNR/GtIhz1fpZysxL/4a+No64jCBD6CPN+bIHWFx3KWuu8XJRrj/572Dw==} resolution: {integrity: sha512-Ce0GFnzAOuPyfV5SxjXGn0CubwGcuDB0zcdaPuCSzAa/2vII24JTkH+I6jcbXLb1ctjZMZZI6OjDaLPJQL1S0g==}
'@tybys/wasm-util@0.10.1': '@tybys/wasm-util@0.10.1':
resolution: {integrity: sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==} resolution: {integrity: sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==}
@ -1062,8 +1062,8 @@ packages:
'@types/ms@2.1.0': '@types/ms@2.1.0':
resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==} resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==}
'@types/node@20.19.25': '@types/node@20.19.26':
resolution: {integrity: sha512-ZsJzA5thDQMSQO788d7IocwwQbI8B5OPzmqNvpf3NY/+MHDAS759Wo0gd2WQeXYt5AAAQjzcrTVC6SKCuYgoCQ==} resolution: {integrity: sha512-0l6cjgF0XnihUpndDhk+nyD3exio3iKaYROSgvh/qSevPXax3L8p5DBRFjbvalnwatGgHEQn2R88y2fA3g4irg==}
'@types/react-dom@19.2.3': '@types/react-dom@19.2.3':
resolution: {integrity: sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==} resolution: {integrity: sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==}
@ -1082,63 +1082,63 @@ packages:
'@types/use-sync-external-store@0.0.6': '@types/use-sync-external-store@0.0.6':
resolution: {integrity: sha512-zFDAD+tlpf2r4asuHEj0XH6pY6i0g5NeAHPn+15wk3BV6JA69eERFXC1gyGThDkVa1zCyKr5jox1+2LbV/AMLg==} resolution: {integrity: sha512-zFDAD+tlpf2r4asuHEj0XH6pY6i0g5NeAHPn+15wk3BV6JA69eERFXC1gyGThDkVa1zCyKr5jox1+2LbV/AMLg==}
'@typescript-eslint/eslint-plugin@8.48.1': '@typescript-eslint/eslint-plugin@8.49.0':
resolution: {integrity: sha512-X63hI1bxl5ohelzr0LY5coufyl0LJNthld+abwxpCoo6Gq+hSqhKwci7MUWkXo67mzgUK6YFByhmaHmUcuBJmA==} resolution: {integrity: sha512-JXij0vzIaTtCwu6SxTh8qBc66kmf1xs7pI4UOiMDFVct6q86G0Zs7KRcEoJgY3Cav3x5Tq0MF5jwgpgLqgKG3A==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies: peerDependencies:
'@typescript-eslint/parser': ^8.48.1 '@typescript-eslint/parser': ^8.49.0
eslint: ^8.57.0 || ^9.0.0 eslint: ^8.57.0 || ^9.0.0
typescript: '>=4.8.4 <6.0.0' typescript: '>=4.8.4 <6.0.0'
'@typescript-eslint/parser@8.48.1': '@typescript-eslint/parser@8.49.0':
resolution: {integrity: sha512-PC0PDZfJg8sP7cmKe6L3QIL8GZwU5aRvUFedqSIpw3B+QjRSUZeeITC2M5XKeMXEzL6wccN196iy3JLwKNvDVA==} resolution: {integrity: sha512-N9lBGA9o9aqb1hVMc9hzySbhKibHmB+N3IpoShyV6HyQYRGIhlrO5rQgttypi+yEeKsKI4idxC8Jw6gXKD4THA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies: peerDependencies:
eslint: ^8.57.0 || ^9.0.0 eslint: ^8.57.0 || ^9.0.0
typescript: '>=4.8.4 <6.0.0' typescript: '>=4.8.4 <6.0.0'
'@typescript-eslint/project-service@8.48.1': '@typescript-eslint/project-service@8.49.0':
resolution: {integrity: sha512-HQWSicah4s9z2/HifRPQ6b6R7G+SBx64JlFQpgSSHWPKdvCZX57XCbszg/bapbRsOEv42q5tayTYcEFpACcX1w==} resolution: {integrity: sha512-/wJN0/DKkmRUMXjZUXYZpD1NEQzQAAn9QWfGwo+Ai8gnzqH7tvqS7oNVdTjKqOcPyVIdZdyCMoqN66Ia789e7g==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies: peerDependencies:
typescript: '>=4.8.4 <6.0.0' typescript: '>=4.8.4 <6.0.0'
'@typescript-eslint/scope-manager@8.48.1': '@typescript-eslint/scope-manager@8.49.0':
resolution: {integrity: sha512-rj4vWQsytQbLxC5Bf4XwZ0/CKd362DkWMUkviT7DCS057SK64D5lH74sSGzhI6PDD2HCEq02xAP9cX68dYyg1w==} resolution: {integrity: sha512-npgS3zi+/30KSOkXNs0LQXtsg9ekZ8OISAOLGWA/ZOEn0ZH74Ginfl7foziV8DT+D98WfQ5Kopwqb/PZOaIJGg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@typescript-eslint/tsconfig-utils@8.48.1': '@typescript-eslint/tsconfig-utils@8.49.0':
resolution: {integrity: sha512-k0Jhs4CpEffIBm6wPaCXBAD7jxBtrHjrSgtfCjUvPp9AZ78lXKdTR8fxyZO5y4vWNlOvYXRtngSZNSn+H53Jkw==} resolution: {integrity: sha512-8prixNi1/6nawsRYxet4YOhnbW+W9FK/bQPxsGB1D3ZrDzbJ5FXw5XmzxZv82X3B+ZccuSxo/X8q9nQ+mFecWA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies: peerDependencies:
typescript: '>=4.8.4 <6.0.0' typescript: '>=4.8.4 <6.0.0'
'@typescript-eslint/type-utils@8.48.1': '@typescript-eslint/type-utils@8.49.0':
resolution: {integrity: sha512-1jEop81a3LrJQLTf/1VfPQdhIY4PlGDBc/i67EVWObrtvcziysbLN3oReexHOM6N3jyXgCrkBsZpqwH0hiDOQg==} resolution: {integrity: sha512-KTExJfQ+svY8I10P4HdxKzWsvtVnsuCifU5MvXrRwoP2KOlNZ9ADNEWWsQTJgMxLzS5VLQKDjkCT/YzgsnqmZg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies: peerDependencies:
eslint: ^8.57.0 || ^9.0.0 eslint: ^8.57.0 || ^9.0.0
typescript: '>=4.8.4 <6.0.0' typescript: '>=4.8.4 <6.0.0'
'@typescript-eslint/types@8.48.1': '@typescript-eslint/types@8.49.0':
resolution: {integrity: sha512-+fZ3LZNeiELGmimrujsDCT4CRIbq5oXdHe7chLiW8qzqyPMnn1puNstCrMNVAqwcl2FdIxkuJ4tOs/RFDBVc/Q==} resolution: {integrity: sha512-e9k/fneezorUo6WShlQpMxXh8/8wfyc+biu6tnAqA81oWrEic0k21RHzP9uqqpyBBeBKu4T+Bsjy9/b8u7obXQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@typescript-eslint/typescript-estree@8.48.1': '@typescript-eslint/typescript-estree@8.49.0':
resolution: {integrity: sha512-/9wQ4PqaefTK6POVTjJaYS0bynCgzh6ClJHGSBj06XEHjkfylzB+A3qvyaXnErEZSaxhIo4YdyBgq6j4RysxDg==} resolution: {integrity: sha512-jrLdRuAbPfPIdYNppHJ/D0wN+wwNfJ32YTAm10eJVsFmrVpXQnDWBn8niCSMlWjvml8jsce5E/O+86IQtTbJWA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies: peerDependencies:
typescript: '>=4.8.4 <6.0.0' typescript: '>=4.8.4 <6.0.0'
'@typescript-eslint/utils@8.48.1': '@typescript-eslint/utils@8.49.0':
resolution: {integrity: sha512-fAnhLrDjiVfey5wwFRwrweyRlCmdz5ZxXz2G/4cLn0YDLjTapmN4gcCsTBR1N2rWnZSDeWpYtgLDsJt+FpmcwA==} resolution: {integrity: sha512-N3W7rJw7Rw+z1tRsHZbK395TWSYvufBXumYtEGzypgMUthlg0/hmCImeA8hgO2d2G4pd7ftpxxul2J8OdtdaFA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies: peerDependencies:
eslint: ^8.57.0 || ^9.0.0 eslint: ^8.57.0 || ^9.0.0
typescript: '>=4.8.4 <6.0.0' typescript: '>=4.8.4 <6.0.0'
'@typescript-eslint/visitor-keys@8.48.1': '@typescript-eslint/visitor-keys@8.49.0':
resolution: {integrity: sha512-BmxxndzEWhE4TIEEMBs8lP3MBWN3jFPs/p6gPm/wkv02o41hI6cq9AuSmGAaTTHPtA1FTi2jBre4A9rm5ZmX+Q==} resolution: {integrity: sha512-LlKaciDe3GmZFphXIc79THF/YYBugZ7FS1pO581E/edlVVNbZKDy93evqmrfQ9/Y4uN0vVhX4iuchq26mK/iiA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@ungap/structured-clone@1.3.0': '@ungap/structured-clone@1.3.0':
@ -1333,8 +1333,8 @@ packages:
balanced-match@1.0.2: balanced-match@1.0.2:
resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
baseline-browser-mapping@2.9.2: baseline-browser-mapping@2.9.6:
resolution: {integrity: sha512-PxSsosKQjI38iXkmb3d0Y32efqyA0uW4s41u4IVBsLlWLhCiYNpH/AfNOVWRqCQBlD8TFJTz6OUWNd4DFJCnmw==} resolution: {integrity: sha512-v9BVVpOTLB59C9E7aSnmIF8h7qRsFpx+A2nugVMTszEOMcfjlZMsXRm4LF23I3Z9AJxc8ANpIvzbzONoX9VJlg==}
hasBin: true hasBin: true
brace-expansion@1.1.12: brace-expansion@1.1.12:
@ -1368,8 +1368,8 @@ packages:
resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
engines: {node: '>=6'} engines: {node: '>=6'}
caniuse-lite@1.0.30001759: caniuse-lite@1.0.30001760:
resolution: {integrity: sha512-Pzfx9fOKoKvevQf8oCXoyNRQ5QyxJj+3O0Rqx2V5oxT61KGx8+n6hV/IUyJeifUci2clnmmKVpvtiqRzgiWjSw==} resolution: {integrity: sha512-7AAMPcueWELt1p3mi13HR/LHH0TJLT11cnwDJEs3xA4+CK/PLKeO9Kl1oru24htkyUKtkGCvAx4ohB0Ttry8Dw==}
ccount@2.0.1: ccount@2.0.1:
resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==}
@ -1552,8 +1552,8 @@ packages:
resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==}
engines: {node: '>= 0.4'} engines: {node: '>= 0.4'}
electron-to-chromium@1.5.266: electron-to-chromium@1.5.267:
resolution: {integrity: sha512-kgWEglXvkEfMH7rxP5OSZZwnaDWT7J9EoZCujhnpLbfi0bbNtRkgdX2E3gt0Uer11c61qCYktB3hwkAS325sJg==} resolution: {integrity: sha512-0Drusm6MVRXSOJpGbaSVgcQsuB4hEkMpHXaVstcPmhu5LIedxs1xNK/nIxmQIU/RPC0+1/o0AVZfBTkTNJOdUw==}
emoji-regex@9.2.2: emoji-regex@9.2.2:
resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==}
@ -1863,9 +1863,6 @@ packages:
graceful-fs@4.2.11: graceful-fs@4.2.11:
resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
graphemer@1.4.0:
resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==}
has-bigints@1.1.0: has-bigints@1.1.0:
resolution: {integrity: sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==} resolution: {integrity: sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==}
engines: {node: '>= 0.4'} engines: {node: '>= 0.4'}
@ -2555,8 +2552,8 @@ packages:
queue-microtask@1.2.3: queue-microtask@1.2.3:
resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
react-day-picker@9.11.3: react-day-picker@9.12.0:
resolution: {integrity: sha512-7lD12UvGbkyXqgzbYIGQTbl+x29B9bAf+k0pP5Dcs1evfpKk6zv4EdH/edNc8NxcmCiTNXr2HIYPrSZ3XvmVBg==} resolution: {integrity: sha512-t8OvG/Zrciso5CQJu5b1A7yzEmebvST+S3pOVQJWxwjjVngyG/CA2htN/D15dLI4uTEuLLkbZyS4YYt480FAtA==}
engines: {node: '>=18'} engines: {node: '>=18'}
peerDependencies: peerDependencies:
react: '>=16.8.0' react: '>=16.8.0'
@ -2834,8 +2831,8 @@ packages:
tailwind-merge@3.4.0: tailwind-merge@3.4.0:
resolution: {integrity: sha512-uSaO4gnW+b3Y2aWoWfFpX62vn2sR3skfhbjsEnaBI81WD1wBLlHZe5sWf0AqjksNdYTbGBEd0UasQMT3SNV15g==} resolution: {integrity: sha512-uSaO4gnW+b3Y2aWoWfFpX62vn2sR3skfhbjsEnaBI81WD1wBLlHZe5sWf0AqjksNdYTbGBEd0UasQMT3SNV15g==}
tailwindcss@4.1.17: tailwindcss@4.1.18:
resolution: {integrity: sha512-j9Ee2YjuQqYT9bbRTfTZht9W/ytp5H+jJpZKiYdP/bpnXARAuELt9ofP0lPnmHjbga7SNQIxdTAXCmtKVYjN+Q==} resolution: {integrity: sha512-4+Z+0yiYyEtUVCScyfHCxOYP06L5Ne+JiHhY2IjR2KWMIWhJOYZKLSGZaP5HkZ8+bY0cxfzwDE5uOmzFXyIwxw==}
tapable@2.3.0: tapable@2.3.0:
resolution: {integrity: sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==} resolution: {integrity: sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==}
@ -2893,8 +2890,8 @@ packages:
resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==} resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==}
engines: {node: '>= 0.4'} engines: {node: '>= 0.4'}
typescript-eslint@8.48.1: typescript-eslint@8.49.0:
resolution: {integrity: sha512-FbOKN1fqNoXp1hIl5KYpObVrp0mCn+CLgn479nmu2IsRMrx2vyv74MmsBLVlhg8qVwNFGbXSp8fh1zp8pEoC2A==} resolution: {integrity: sha512-zRSVH1WXD0uXczCXw+nsdjGPUdx4dfrs5VQoHnUWmv1U3oNlAKv4FUNdLDhVUg+gYn+a5hUESqch//Rv5wVhrg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies: peerDependencies:
eslint: ^8.57.0 || ^9.0.0 eslint: ^8.57.0 || ^9.0.0
@ -3782,7 +3779,7 @@ snapshots:
'@radix-ui/rect@1.1.1': {} '@radix-ui/rect@1.1.1': {}
'@reduxjs/toolkit@2.11.0(react-redux@9.2.0(@types/react@19.2.7)(react@19.2.0)(redux@5.0.1))(react@19.2.0)': '@reduxjs/toolkit@2.11.1(react-redux@9.2.0(@types/react@19.2.7)(react@19.2.0)(redux@5.0.1))(react@19.2.0)':
dependencies: dependencies:
'@standard-schema/spec': 1.0.0 '@standard-schema/spec': 1.0.0
'@standard-schema/utils': 0.3.0 '@standard-schema/utils': 0.3.0
@ -3804,7 +3801,7 @@ snapshots:
dependencies: dependencies:
tslib: 2.8.1 tslib: 2.8.1
'@tailwindcss/node@4.1.17': '@tailwindcss/node@4.1.18':
dependencies: dependencies:
'@jridgewell/remapping': 2.3.5 '@jridgewell/remapping': 2.3.5
enhanced-resolve: 5.18.3 enhanced-resolve: 5.18.3
@ -3812,66 +3809,66 @@ snapshots:
lightningcss: 1.30.2 lightningcss: 1.30.2
magic-string: 0.30.21 magic-string: 0.30.21
source-map-js: 1.2.1 source-map-js: 1.2.1
tailwindcss: 4.1.17 tailwindcss: 4.1.18
'@tailwindcss/oxide-android-arm64@4.1.17': '@tailwindcss/oxide-android-arm64@4.1.18':
optional: true optional: true
'@tailwindcss/oxide-darwin-arm64@4.1.17': '@tailwindcss/oxide-darwin-arm64@4.1.18':
optional: true optional: true
'@tailwindcss/oxide-darwin-x64@4.1.17': '@tailwindcss/oxide-darwin-x64@4.1.18':
optional: true optional: true
'@tailwindcss/oxide-freebsd-x64@4.1.17': '@tailwindcss/oxide-freebsd-x64@4.1.18':
optional: true optional: true
'@tailwindcss/oxide-linux-arm-gnueabihf@4.1.17': '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.18':
optional: true optional: true
'@tailwindcss/oxide-linux-arm64-gnu@4.1.17': '@tailwindcss/oxide-linux-arm64-gnu@4.1.18':
optional: true optional: true
'@tailwindcss/oxide-linux-arm64-musl@4.1.17': '@tailwindcss/oxide-linux-arm64-musl@4.1.18':
optional: true optional: true
'@tailwindcss/oxide-linux-x64-gnu@4.1.17': '@tailwindcss/oxide-linux-x64-gnu@4.1.18':
optional: true optional: true
'@tailwindcss/oxide-linux-x64-musl@4.1.17': '@tailwindcss/oxide-linux-x64-musl@4.1.18':
optional: true optional: true
'@tailwindcss/oxide-wasm32-wasi@4.1.17': '@tailwindcss/oxide-wasm32-wasi@4.1.18':
optional: true optional: true
'@tailwindcss/oxide-win32-arm64-msvc@4.1.17': '@tailwindcss/oxide-win32-arm64-msvc@4.1.18':
optional: true optional: true
'@tailwindcss/oxide-win32-x64-msvc@4.1.17': '@tailwindcss/oxide-win32-x64-msvc@4.1.18':
optional: true optional: true
'@tailwindcss/oxide@4.1.17': '@tailwindcss/oxide@4.1.18':
optionalDependencies: optionalDependencies:
'@tailwindcss/oxide-android-arm64': 4.1.17 '@tailwindcss/oxide-android-arm64': 4.1.18
'@tailwindcss/oxide-darwin-arm64': 4.1.17 '@tailwindcss/oxide-darwin-arm64': 4.1.18
'@tailwindcss/oxide-darwin-x64': 4.1.17 '@tailwindcss/oxide-darwin-x64': 4.1.18
'@tailwindcss/oxide-freebsd-x64': 4.1.17 '@tailwindcss/oxide-freebsd-x64': 4.1.18
'@tailwindcss/oxide-linux-arm-gnueabihf': 4.1.17 '@tailwindcss/oxide-linux-arm-gnueabihf': 4.1.18
'@tailwindcss/oxide-linux-arm64-gnu': 4.1.17 '@tailwindcss/oxide-linux-arm64-gnu': 4.1.18
'@tailwindcss/oxide-linux-arm64-musl': 4.1.17 '@tailwindcss/oxide-linux-arm64-musl': 4.1.18
'@tailwindcss/oxide-linux-x64-gnu': 4.1.17 '@tailwindcss/oxide-linux-x64-gnu': 4.1.18
'@tailwindcss/oxide-linux-x64-musl': 4.1.17 '@tailwindcss/oxide-linux-x64-musl': 4.1.18
'@tailwindcss/oxide-wasm32-wasi': 4.1.17 '@tailwindcss/oxide-wasm32-wasi': 4.1.18
'@tailwindcss/oxide-win32-arm64-msvc': 4.1.17 '@tailwindcss/oxide-win32-arm64-msvc': 4.1.18
'@tailwindcss/oxide-win32-x64-msvc': 4.1.17 '@tailwindcss/oxide-win32-x64-msvc': 4.1.18
'@tailwindcss/postcss@4.1.17': '@tailwindcss/postcss@4.1.18':
dependencies: dependencies:
'@alloc/quick-lru': 5.2.0 '@alloc/quick-lru': 5.2.0
'@tailwindcss/node': 4.1.17 '@tailwindcss/node': 4.1.18
'@tailwindcss/oxide': 4.1.17 '@tailwindcss/oxide': 4.1.18
postcss: 8.5.6 postcss: 8.5.6
tailwindcss: 4.1.17 tailwindcss: 4.1.18
'@tybys/wasm-util@0.10.1': '@tybys/wasm-util@0.10.1':
dependencies: dependencies:
@ -3926,7 +3923,7 @@ snapshots:
'@types/ms@2.1.0': {} '@types/ms@2.1.0': {}
'@types/node@20.19.25': '@types/node@20.19.26':
dependencies: dependencies:
undici-types: 6.21.0 undici-types: 6.21.0
@ -3944,16 +3941,15 @@ snapshots:
'@types/use-sync-external-store@0.0.6': {} '@types/use-sync-external-store@0.0.6': {}
'@typescript-eslint/eslint-plugin@8.48.1(@typescript-eslint/parser@8.48.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)': '@typescript-eslint/eslint-plugin@8.49.0(@typescript-eslint/parser@8.49.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)':
dependencies: dependencies:
'@eslint-community/regexpp': 4.12.2 '@eslint-community/regexpp': 4.12.2
'@typescript-eslint/parser': 8.48.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) '@typescript-eslint/parser': 8.49.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
'@typescript-eslint/scope-manager': 8.48.1 '@typescript-eslint/scope-manager': 8.49.0
'@typescript-eslint/type-utils': 8.48.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) '@typescript-eslint/type-utils': 8.49.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
'@typescript-eslint/utils': 8.48.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) '@typescript-eslint/utils': 8.49.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
'@typescript-eslint/visitor-keys': 8.48.1 '@typescript-eslint/visitor-keys': 8.49.0
eslint: 9.39.1(jiti@2.6.1) eslint: 9.39.1(jiti@2.6.1)
graphemer: 1.4.0
ignore: 7.0.5 ignore: 7.0.5
natural-compare: 1.4.0 natural-compare: 1.4.0
ts-api-utils: 2.1.0(typescript@5.9.3) ts-api-utils: 2.1.0(typescript@5.9.3)
@ -3961,41 +3957,41 @@ snapshots:
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
'@typescript-eslint/parser@8.48.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)': '@typescript-eslint/parser@8.49.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)':
dependencies: dependencies:
'@typescript-eslint/scope-manager': 8.48.1 '@typescript-eslint/scope-manager': 8.49.0
'@typescript-eslint/types': 8.48.1 '@typescript-eslint/types': 8.49.0
'@typescript-eslint/typescript-estree': 8.48.1(typescript@5.9.3) '@typescript-eslint/typescript-estree': 8.49.0(typescript@5.9.3)
'@typescript-eslint/visitor-keys': 8.48.1 '@typescript-eslint/visitor-keys': 8.49.0
debug: 4.4.3 debug: 4.4.3
eslint: 9.39.1(jiti@2.6.1) eslint: 9.39.1(jiti@2.6.1)
typescript: 5.9.3 typescript: 5.9.3
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
'@typescript-eslint/project-service@8.48.1(typescript@5.9.3)': '@typescript-eslint/project-service@8.49.0(typescript@5.9.3)':
dependencies: dependencies:
'@typescript-eslint/tsconfig-utils': 8.48.1(typescript@5.9.3) '@typescript-eslint/tsconfig-utils': 8.49.0(typescript@5.9.3)
'@typescript-eslint/types': 8.48.1 '@typescript-eslint/types': 8.49.0
debug: 4.4.3 debug: 4.4.3
typescript: 5.9.3 typescript: 5.9.3
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
'@typescript-eslint/scope-manager@8.48.1': '@typescript-eslint/scope-manager@8.49.0':
dependencies: dependencies:
'@typescript-eslint/types': 8.48.1 '@typescript-eslint/types': 8.49.0
'@typescript-eslint/visitor-keys': 8.48.1 '@typescript-eslint/visitor-keys': 8.49.0
'@typescript-eslint/tsconfig-utils@8.48.1(typescript@5.9.3)': '@typescript-eslint/tsconfig-utils@8.49.0(typescript@5.9.3)':
dependencies: dependencies:
typescript: 5.9.3 typescript: 5.9.3
'@typescript-eslint/type-utils@8.48.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)': '@typescript-eslint/type-utils@8.49.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)':
dependencies: dependencies:
'@typescript-eslint/types': 8.48.1 '@typescript-eslint/types': 8.49.0
'@typescript-eslint/typescript-estree': 8.48.1(typescript@5.9.3) '@typescript-eslint/typescript-estree': 8.49.0(typescript@5.9.3)
'@typescript-eslint/utils': 8.48.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) '@typescript-eslint/utils': 8.49.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
debug: 4.4.3 debug: 4.4.3
eslint: 9.39.1(jiti@2.6.1) eslint: 9.39.1(jiti@2.6.1)
ts-api-utils: 2.1.0(typescript@5.9.3) ts-api-utils: 2.1.0(typescript@5.9.3)
@ -4003,14 +3999,14 @@ snapshots:
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
'@typescript-eslint/types@8.48.1': {} '@typescript-eslint/types@8.49.0': {}
'@typescript-eslint/typescript-estree@8.48.1(typescript@5.9.3)': '@typescript-eslint/typescript-estree@8.49.0(typescript@5.9.3)':
dependencies: dependencies:
'@typescript-eslint/project-service': 8.48.1(typescript@5.9.3) '@typescript-eslint/project-service': 8.49.0(typescript@5.9.3)
'@typescript-eslint/tsconfig-utils': 8.48.1(typescript@5.9.3) '@typescript-eslint/tsconfig-utils': 8.49.0(typescript@5.9.3)
'@typescript-eslint/types': 8.48.1 '@typescript-eslint/types': 8.49.0
'@typescript-eslint/visitor-keys': 8.48.1 '@typescript-eslint/visitor-keys': 8.49.0
debug: 4.4.3 debug: 4.4.3
minimatch: 9.0.5 minimatch: 9.0.5
semver: 7.7.3 semver: 7.7.3
@ -4020,20 +4016,20 @@ snapshots:
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
'@typescript-eslint/utils@8.48.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)': '@typescript-eslint/utils@8.49.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)':
dependencies: dependencies:
'@eslint-community/eslint-utils': 4.9.0(eslint@9.39.1(jiti@2.6.1)) '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.1(jiti@2.6.1))
'@typescript-eslint/scope-manager': 8.48.1 '@typescript-eslint/scope-manager': 8.49.0
'@typescript-eslint/types': 8.48.1 '@typescript-eslint/types': 8.49.0
'@typescript-eslint/typescript-estree': 8.48.1(typescript@5.9.3) '@typescript-eslint/typescript-estree': 8.49.0(typescript@5.9.3)
eslint: 9.39.1(jiti@2.6.1) eslint: 9.39.1(jiti@2.6.1)
typescript: 5.9.3 typescript: 5.9.3
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
'@typescript-eslint/visitor-keys@8.48.1': '@typescript-eslint/visitor-keys@8.49.0':
dependencies: dependencies:
'@typescript-eslint/types': 8.48.1 '@typescript-eslint/types': 8.49.0
eslint-visitor-keys: 4.2.1 eslint-visitor-keys: 4.2.1
'@ungap/structured-clone@1.3.0': {} '@ungap/structured-clone@1.3.0': {}
@ -4219,7 +4215,7 @@ snapshots:
balanced-match@1.0.2: {} balanced-match@1.0.2: {}
baseline-browser-mapping@2.9.2: {} baseline-browser-mapping@2.9.6: {}
brace-expansion@1.1.12: brace-expansion@1.1.12:
dependencies: dependencies:
@ -4236,9 +4232,9 @@ snapshots:
browserslist@4.28.1: browserslist@4.28.1:
dependencies: dependencies:
baseline-browser-mapping: 2.9.2 baseline-browser-mapping: 2.9.6
caniuse-lite: 1.0.30001759 caniuse-lite: 1.0.30001760
electron-to-chromium: 1.5.266 electron-to-chromium: 1.5.267
node-releases: 2.0.27 node-releases: 2.0.27
update-browserslist-db: 1.2.2(browserslist@4.28.1) update-browserslist-db: 1.2.2(browserslist@4.28.1)
@ -4261,7 +4257,7 @@ snapshots:
callsites@3.1.0: {} callsites@3.1.0: {}
caniuse-lite@1.0.30001759: {} caniuse-lite@1.0.30001760: {}
ccount@2.0.1: {} ccount@2.0.1: {}
@ -4422,7 +4418,7 @@ snapshots:
es-errors: 1.3.0 es-errors: 1.3.0
gopd: 1.2.0 gopd: 1.2.0
electron-to-chromium@1.5.266: {} electron-to-chromium@1.5.267: {}
emoji-regex@9.2.2: {} emoji-regex@9.2.2: {}
@ -4542,18 +4538,18 @@ snapshots:
escape-string-regexp@5.0.0: {} escape-string-regexp@5.0.0: {}
eslint-config-next@16.0.3(@typescript-eslint/parser@8.48.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3): eslint-config-next@16.0.3(@typescript-eslint/parser@8.49.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3):
dependencies: dependencies:
'@next/eslint-plugin-next': 16.0.3 '@next/eslint-plugin-next': 16.0.3
eslint: 9.39.1(jiti@2.6.1) eslint: 9.39.1(jiti@2.6.1)
eslint-import-resolver-node: 0.3.9 eslint-import-resolver-node: 0.3.9
eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.1(jiti@2.6.1)) eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.1(jiti@2.6.1))
eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.48.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.1(jiti@2.6.1)) eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.49.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.1(jiti@2.6.1))
eslint-plugin-jsx-a11y: 6.10.2(eslint@9.39.1(jiti@2.6.1)) eslint-plugin-jsx-a11y: 6.10.2(eslint@9.39.1(jiti@2.6.1))
eslint-plugin-react: 7.37.5(eslint@9.39.1(jiti@2.6.1)) eslint-plugin-react: 7.37.5(eslint@9.39.1(jiti@2.6.1))
eslint-plugin-react-hooks: 7.0.1(eslint@9.39.1(jiti@2.6.1)) eslint-plugin-react-hooks: 7.0.1(eslint@9.39.1(jiti@2.6.1))
globals: 16.4.0 globals: 16.4.0
typescript-eslint: 8.48.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) typescript-eslint: 8.49.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
optionalDependencies: optionalDependencies:
typescript: 5.9.3 typescript: 5.9.3
transitivePeerDependencies: transitivePeerDependencies:
@ -4581,22 +4577,22 @@ snapshots:
tinyglobby: 0.2.15 tinyglobby: 0.2.15
unrs-resolver: 1.11.1 unrs-resolver: 1.11.1
optionalDependencies: optionalDependencies:
eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.48.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.1(jiti@2.6.1)) eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.49.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.1(jiti@2.6.1))
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
eslint-module-utils@2.12.1(@typescript-eslint/parser@8.48.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.1(jiti@2.6.1)): eslint-module-utils@2.12.1(@typescript-eslint/parser@8.49.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.1(jiti@2.6.1)):
dependencies: dependencies:
debug: 3.2.7 debug: 3.2.7
optionalDependencies: optionalDependencies:
'@typescript-eslint/parser': 8.48.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) '@typescript-eslint/parser': 8.49.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
eslint: 9.39.1(jiti@2.6.1) eslint: 9.39.1(jiti@2.6.1)
eslint-import-resolver-node: 0.3.9 eslint-import-resolver-node: 0.3.9
eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.1(jiti@2.6.1)) eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.1(jiti@2.6.1))
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.48.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.1(jiti@2.6.1)): eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.49.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.1(jiti@2.6.1)):
dependencies: dependencies:
'@rtsao/scc': 1.1.0 '@rtsao/scc': 1.1.0
array-includes: 3.1.9 array-includes: 3.1.9
@ -4607,7 +4603,7 @@ snapshots:
doctrine: 2.1.0 doctrine: 2.1.0
eslint: 9.39.1(jiti@2.6.1) eslint: 9.39.1(jiti@2.6.1)
eslint-import-resolver-node: 0.3.9 eslint-import-resolver-node: 0.3.9
eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.48.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.1(jiti@2.6.1)) eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.49.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.1(jiti@2.6.1))
hasown: 2.0.2 hasown: 2.0.2
is-core-module: 2.16.1 is-core-module: 2.16.1
is-glob: 4.0.3 is-glob: 4.0.3
@ -4619,7 +4615,7 @@ snapshots:
string.prototype.trimend: 1.0.9 string.prototype.trimend: 1.0.9
tsconfig-paths: 3.15.0 tsconfig-paths: 3.15.0
optionalDependencies: optionalDependencies:
'@typescript-eslint/parser': 8.48.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) '@typescript-eslint/parser': 8.49.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
transitivePeerDependencies: transitivePeerDependencies:
- eslint-import-resolver-typescript - eslint-import-resolver-typescript
- eslint-import-resolver-webpack - eslint-import-resolver-webpack
@ -4875,8 +4871,6 @@ snapshots:
graceful-fs@4.2.11: {} graceful-fs@4.2.11: {}
graphemer@1.4.0: {}
has-bigints@1.1.0: {} has-bigints@1.1.0: {}
has-flag@4.0.0: {} has-flag@4.0.0: {}
@ -5650,7 +5644,7 @@ snapshots:
dependencies: dependencies:
'@next/env': 16.0.7 '@next/env': 16.0.7
'@swc/helpers': 0.5.15 '@swc/helpers': 0.5.15
caniuse-lite: 1.0.30001759 caniuse-lite: 1.0.30001760
postcss: 8.4.31 postcss: 8.4.31
react: 19.2.0 react: 19.2.0
react-dom: 19.2.0(react@19.2.0) react-dom: 19.2.0(react@19.2.0)
@ -5797,7 +5791,7 @@ snapshots:
queue-microtask@1.2.3: {} queue-microtask@1.2.3: {}
react-day-picker@9.11.3(react@19.2.0): react-day-picker@9.12.0(react@19.2.0):
dependencies: dependencies:
'@date-fns/tz': 1.4.1 '@date-fns/tz': 1.4.1
date-fns: 4.1.0 date-fns: 4.1.0
@ -5873,7 +5867,7 @@ snapshots:
recharts@3.5.1(@types/react@19.2.7)(react-dom@19.2.0(react@19.2.0))(react-is@16.13.1)(react@19.2.0)(redux@5.0.1): recharts@3.5.1(@types/react@19.2.7)(react-dom@19.2.0(react@19.2.0))(react-is@16.13.1)(react@19.2.0)(redux@5.0.1):
dependencies: dependencies:
'@reduxjs/toolkit': 2.11.0(react-redux@9.2.0(@types/react@19.2.7)(react@19.2.0)(redux@5.0.1))(react@19.2.0) '@reduxjs/toolkit': 2.11.1(react-redux@9.2.0(@types/react@19.2.7)(react@19.2.0)(redux@5.0.1))(react@19.2.0)
clsx: 2.1.1 clsx: 2.1.1
decimal.js-light: 2.5.1 decimal.js-light: 2.5.1
es-toolkit: 1.42.0 es-toolkit: 1.42.0
@ -6187,7 +6181,7 @@ snapshots:
tailwind-merge@3.4.0: {} tailwind-merge@3.4.0: {}
tailwindcss@4.1.17: {} tailwindcss@4.1.18: {}
tapable@2.3.0: {} tapable@2.3.0: {}
@ -6258,12 +6252,12 @@ snapshots:
possible-typed-array-names: 1.1.0 possible-typed-array-names: 1.1.0
reflect.getprototypeof: 1.0.10 reflect.getprototypeof: 1.0.10
typescript-eslint@8.48.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3): typescript-eslint@8.49.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3):
dependencies: dependencies:
'@typescript-eslint/eslint-plugin': 8.48.1(@typescript-eslint/parser@8.48.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) '@typescript-eslint/eslint-plugin': 8.49.0(@typescript-eslint/parser@8.49.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
'@typescript-eslint/parser': 8.48.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) '@typescript-eslint/parser': 8.49.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
'@typescript-eslint/typescript-estree': 8.48.1(typescript@5.9.3) '@typescript-eslint/typescript-estree': 8.49.0(typescript@5.9.3)
'@typescript-eslint/utils': 8.48.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) '@typescript-eslint/utils': 8.49.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
eslint: 9.39.1(jiti@2.6.1) eslint: 9.39.1(jiti@2.6.1)
typescript: 5.9.3 typescript: 5.9.3
transitivePeerDependencies: transitivePeerDependencies:

View File

@ -0,0 +1,108 @@
%PDF-1.4
%“Œ‹ž ReportLab Generated PDF document http://www.reportlab.com
1 0 obj
<<
/F1 2 0 R /F2 3 0 R
>>
endobj
2 0 obj
<<
/BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font
>>
endobj
3 0 obj
<<
/BaseFont /STSong-Light /DescendantFonts [ <<
/BaseFont /STSong-Light /CIDSystemInfo <<
/Ordering (GB1) /Registry (Adobe) /Supplement 0
>> /DW 1000 /FontDescriptor <<
/Ascent 752 /CapHeight 737 /Descent -271 /Flags 6 /FontBBox [ -25 -254 1000 880 ] /FontName /STSongStd-Light
/ItalicAngle 0 /Leading 148 /MaxWidth 1000 /MissingWidth 500 /StemH 91 /StemV 58
/Type /FontDescriptor /XHeight 553
>> /Subtype /CIDFontType0 /Type /Font
/W [ 1 [ 207 270 342 467 462 797 710 239 374 ] 10 [ 374 423 605 238 375 238 334 462 ] 18 26 462 27 28 238
29 31 605 32 [ 344 748 684 560 695 739 563 511 729 793
318 312 666 526 896 758 772 544 772 628
465 607 753 711 972 647 620 607 374 333
374 606 500 239 417 503 427 529 415 264
444 518 241 230 495 228 793 527 524 ] 81 [ 524 504 338 336 277 517 450 652 466 452
407 370 258 370 605 ] ]
>> ] /Encoding /UniGB-UCS2-H /Name /F2 /Subtype /Type0 /Type /Font
>>
endobj
4 0 obj
<<
/Contents 9 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 8 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
5 0 obj
<<
/Contents 10 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 8 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
6 0 obj
<<
/PageMode /UseNone /Pages 8 0 R /Type /Catalog
>>
endobj
7 0 obj
<<
/Author (\(anonymous\)) /CreationDate (D:20251212050229+08'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20251212050229+08'00') /Producer (ReportLab PDF Library - www.reportlab.com)
/Subject (\(unspecified\)) /Title (\(anonymous\)) /Trapped /False
>>
endobj
8 0 obj
<<
/Count 2 /Kids [ 4 0 R 5 0 R ] /Type /Pages
>>
endobj
9 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 3725
>>
stream
Gatm=CNn5u')g+Zcn^C8Q.Z%5b@]G\))s`69Un'Z&iLXi`5KrB![/$b*l!-(DQCB$fa9nJ%a`9pX1R[ueZFU;,3Y*+3'9cq#JHr/==-ol]hotJ_^)q1P"33$n#jcAVJ.ncfs^8nb@EtQ6IL5Q\02%3PtCZKZgfnV;hf.TC#p#^6RBnE*_Pr4ZINh`g#<=O2`"6JS`X+3>Uc@)EZse:0Dfs3-b[EnG:-NG^J1Wnd[te4euI-'(+5\<6&@:H6o'Vr>EqL!&IOnE80tQr<bb6[l)2#Sgd:P(_]X1pGk_oS<-WqoP_WfkA@OSk1E]NN]H.+.2@\DAm90X/98!V)J4eVS.KZS>T^D*!7BHEg;&Z)(*Y6"Nk3':`ic:<Ufj&0?-*P9;^O<Y=0\O[8e@F#7Ft3!U9%E*kPJ+KNQL+S7Z+0oERl,lI[N5jZ_Z[F;9VnU\E#:0LQ8EhckmTJd^nh2Q/J$/!mopecQ/$9e#V"U*pAip][nH:k@BL&]r!*`_F=YV$8AF:R/!a"lkpj<<H\S2t]E$cR\Q89a/i(;oBZsTZ#FRJlC32$;WJM:k0FIB?mp!cl@UlfA18ujhkIH[g`<%11>-<"Z9gXcichb1-QEO#,J(,J441WM`CRV)+jgQ*m[8!r1B*_ZSXqJ1L<*B!0GY+sY9kRcBf#dT;P;BY9M_?,DX@O_6GHo:0JsO6=nmKoEcm)g&Q#?(dGQZ\@dN7P6E@3%]c"EeqZZS#so:4st%\'P$6ktgom=ig7k9XG0D@_flUj=9#rLT=t!Y;Y`B^fDS\?RbKqS5Ft]j/qdMC_,1B2e9_.Q]V8:P)eh(FO\8ib4!&e*c8a_\'S#[U;V^hceY5CGGGa68i0(CNaDX(!`Pj>&HA4fl]!YGNaO*5<Je0ZX?H&d=rb/PnD,QM=cVgH0?<5/=BlKdSZ4X"T@f;,H$>Yph3Hl+:[1QA(Q$(]qYhFRo<:1s.&LcHi5mq@>c:<jK_Lb[d)Af9.;+;kob$)nW3bcVi'n03iG^W:MDijCNZ"T_BdNW8;i9<k&C`uC]Fjqh1/<</2@=GB;<@TAs3fJ0<l&Vm^6EkdJK!_"75_C(k@_R'ISqOF7L8CEHWesn,c]<"8eR)L_oJ>]3i<+YQ5hbm4ggJ*g&O&GMYg&c1>,qSpmmSLnoB1K2>TY?=f57$UtXl84Q$FeA[a\?fUXWA&=ajf*!YZM`P@BmkY[Dlk)47=#<:nLLH=Mo86A[dS&:h]Oc+#&m@P,YL,EiJ3Oc.Gu^_3.I(;m6kp5eV_W&(Y]\pjd:AcFa`L8$R"c&99U(U$`<TpU^O$Fk0]/er<6L#5V7"Nag6mHio)fj*3!eM_^fo;Dr$%)NaugkY$O(;U3GLd.;SgVO<T::P$Z@Fp+Zms6V7/?Vpq^L<9V"bCTF7sfr!LoKY_3:T/B&'dAL6@W2'HMFp%m?3[T/2V0euuWC8r0djK;=d11A$7U<<02Z;-Sid?2]+'fNm'ZfFt&SK'L(8,-F_lfjLj"k6GsKlY[5s-a,E'QJT[BE\%HXs`RbHb9J'FMXOXX;]uo:PB6+LJhYts1"'@`)6af^9/P3loR.s(J=oJT-]o^4pYrejtTdPCq/Pm<T*#[mrMMhh,1'-o)P0d_r.8IDf?ebbIP-h'I$?iS97\T='*:rP*SH:>Usd>I*FW:*N^.JG3#C*1L&q;a;qMJM!+SH'l0BJ[MNRPepI[fK#s&qjSA8#A7/mu[a"d\Y<V%!=G2D4l-;i":9mRD\cHBA@DWas@'W4+SuGh-2?c60jJ,sV.gfT:,$2i>.b`&<'c0+!hU=_)Om\^t6*0MX"6L4IqXK5odkDn\*qQT@^>T*nYOh6-]XA`UE-<I4LWP%""`WqK>q&O.Q2XBG2S;23J6WPOPC"e/S<?R\HMZb%j>tdcdu.bY)\D8(Zte*n1RF9pF!eeZRHc9*c[ji-(dmD*81d7e>iHE.OY(O\^.%&'$t6nkmWdO#Aqr>ELX52D%Bi],c!K.g!-i+H;l[%i@[_O\!hi/Vdl.GK'Y4'5Q?.E:Zi.1Q?-:b`LF[3P]usP[ZP&fua'$$pM+IJ`he@_7;p[M!?ti#[YmV_:Y7A5pIA*\+5"4T#;mOU)Ik9tk+*I)^@G,9NoF?n/Zo>K24YoP1:2SWWUeAj'\u#S,=_.B'dRo-)Qck>0,A'#>ld/e"bNj=2HQJ`02^Y]kFf^<lk1Ifc`#7Xj-1ce<o\KhsX"(+O["$rgn"5q6*Ltr]QNnY<)>R`A'eGVC*OZc<6o@>7[MPtO]V2h<o;I+M\h$,d2$8]5njNs,)[sFK%*TG!F6$$lk>?BfpUrA;H;94$0:1S1Yoko>,9(a9qTb7)=d\[lP-J,9-M*/ONCbRi*&YR3+-6/#(X<k,SJB7p!BHuoB\f\,)C]Q^()*j4;sOSiSM+,O?4]h'#.m39?d8uIQCd\KC^@hF:0%=V7k^6:V)]+BD"$EXVBZdh#0a/N^NUJ#YY+#53LE`o3dD<"s#\]&+cl1XU]-$4:J;JEHX%9oGG)NM$?cobp_E9tSKB(5PQ8Y4T>+`S8#u>AWWJ(Y:HLTfhnCt_rIS[k!FY,)BJf0C[Zg"j:Zue0r60EI6=-"Z:1Qf`-,b`:KmF*#&;1<t7K2T6W!J2WD2Zuoh\r?QlN"l37ESq)8+6fGRNGX7$hApBW=lW+qBdGh(FK'Yhi'P2M>_'/p`r@P([`aN6;gjd+uZ@1ch#l[Pm:IlgrD+`8K$qo2sc?a"oAAc@pqH(K+sc34\%ou4YChc&lVu4pSSDIU^jgao,hV-51WD_kh-'!mnVPLXf^-NBtjO3"t(u@/Eib4T8<RR>LuEAdscg]oZpfc2&"nq3!ET8j'd9?([lF7"ZLBI1g`nRK+#68@#5f[F;2,u\tA(L)Z+ODl'OY>NJm8Do/]^"k-n!TkrWrf1jf`YV/KUEWoWHjBn9D4l'O08;PKh=h1E!J%L$)4'b"1/VkENJ/[e)h;O#DEIZ&NQW3<I:X7_ZcGcY=NZP7QCl1$Fs$O?O!j#][O=bd2EF>PA9@t/T3%$fPGp"n`d%sHBY\Q[M\pMl=`U#7Qg>>A(s0]>N)XS>J@]]I[<cS))/'?G">FDN&Gj%b:j7_JtHYMh9LJWE7;((GGTc@/AO%XuXZ5IgHG<])qqR(;*D_Ght7(T:t^CY-l_YAR+eO^n,*Z*hHK>[M#amY*;N"W*ip+43C&pPJe!%-0/WELBql_hC.3K/auB0f7+P5KUq?&3j4,Y9Ejc:PU.d].5%;/^NCm0:Lg_O=B[HidXgih[I1*[]4*N]KZ)+?T]rCm!HHshL?Q/+!%\t?lt2GY3QeVc.6.[4.uu<Na6k![&A`Uh`@<G/:PuG<u*+5Jnu`EMc'd@FR=:#Ms&u5$S@rSP^5^"8_0C=C0$pS3r@0O4[Zk!YR67L0u`4rp@Cn=<Y`X3)3>T!b5WNo*SqA&mY=TP27)?p5b%2:NX%U'j>tUnEU\tCiJlgeOsA)^5c1k'c[ccL<6Q*9\7k\j0']MCJ^`r;\O#Era6d>:2,uYl8EuCeC[b3AIlsAaO*EoKm.j?1X>H!dm_`PP?!u:.JC4)C$<]PSk)XIZTg9XCU=Y<!Ct5%e/l_F+L=)`p4_,]IP0je_OkRitSB[;EM[/X"7N+#if5Kc3kI$/7R.h?$8DEA3qtFB/aF.Qf+$.TTqVo\=hm[fR)CU!g$p/(_o=*;gkJQ\hkq5Pl1O_6$1^ONpOi5T0$Tc%&NHUfTbW1/nmJjFWf2_~>endstream
endobj
10 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 2680
>>
stream
Gatm=CK&tW(]L"5TleG=A;Iqn[6&6Z6;*b*?t>d:M@/<ORrBa3#po3*\%h)g]94^TV4K+<Ch.=(p0=3P>SNS3qN4kjc]_nMQS_cT,$!&1-IO_EdX.P_g3[r?8B.3teZc@Hg55R4TtQQ[*8PL'YH2Fc%:uor5&'MdD"<&ILh+Zf(_V3k8#Sg:*7<aJVE[:Jc\.N,'12-_X%Z0k8W1iXQC/MoPA+lX1*sp8MjmBHP:7g/G;EeMIAtuulVE`$8^_t*R]#d697,tD?AKA45C8%1`<J(n-/j(%*h1p5%N`g<RJ?Pf;W"TM43os+%5R#S%,G5Pb-Wr$oX,m4`DU?6/]tH0GP%ip9t&NEg[YI(s)&><ZtK_c=fltPeLEJ)`B:9cYj_233i`G7BpIhF[+=("km(,>DnXs$r_NC-S_d6E7A_X7.>j?i]\1:19"dWNU*(B,39`9R+l;*Jrnd4ok,#m%p+ATuj\Y[.)h*`b@no6#HlS!/P5bA#*sQ<N#Yd5#kh8Bk(@qX_TfT7?'G@m;#po=*&E.'ZenL0a0%4+$F8<^H-no=%0H$#"@g3;_o.r&'nsE-50?SkL$F(oYb4?;$XK:%rZ!0o!XTAoWlsE#5pAcgb4Ih&eSl]jg9'q)G!PRMj-F?"4'31A-ZnQZN6RkWl*e0t]3euQmp>j;[q@@N$^P((gQf;ll1"9MGiOdg:O#$LKgMSi:oXZ7CJ&IE:GoR\gD,hlq]KmbR>uBdf!X#1$eJ?=0'YJlW^'Yp=LO`I[ac0@ukWW0h0Yp)n?<;qiLs#4p0#,@SE"eq%s-cVU%ab`R/j?OR^2bq#hoY/rBomgD4^#0B2EV+F),LK>"2)\]97phK>,sgf6R.&0E<_/7lsQ[Ng=sf6ZeMVL`UnnU]N`S3n4WjZOfhqR5%ENIY<T7HTE]\pLb"@M\u3aF1X^o-Va[EC2-p*'kM]j4:9rsVcOkh6rO'p[q?Woqp=%n-4P%X(!@g5rfXsWV+_F7hI%W1"+5nNM#K5c`D\Pn:l"[dBNt1\%b:1D$"?FbAk-uEgNrj&'VjJ+8kmDf(IQ)kH:AfKcH$$sC%s:YN(QaBofkr;c3>NYupA*7T+/aK:#:GO>\5s>2.p[]fdUQB,PQanjoteJ.1!F0FdV>A&5+p@M.Tr]S;@RNCNp2Y'"tuXjEI5'77VXXQV*rJZs+C:IVB_sC2/%'J2Ru&q/2Al:A?4\CWa3dllWpdS5t[`5'.bUG,pubc2HsHomRFh(.4Y=?p([.-&uiUUjVp9,_f9+J[M0,dQEAFI]=!:V'fuUfq.uIF#4$9Q-VjAsolfm%0nkn`Zh46+b[)r!NO4.;/4e6&]F4d"^08EE?FWCZrQq!q:!=3iPUs70f5p<<jfX\l5q,n3SO7'kS)1%V^dL'FN[_"jOXGf;$]EX]%64s2*<Mq2`ek[k+lQYGI0*gq2W5,s,a*Up!efg:IqSr=URlQ"YQp[`EdclIR``ZG<,[@E!c2AETgMJqX=HpX1=EDK8Q^a%Z[U7cYCC+=oKSYP-t!@X41D*4Me+7kMq$f7!W`U-qhK)+[gIn6`&(j([+>$WB,W;3HogW^F%M27RZjDqkm#,EeItoiM[^1[;/dfdB&jPb'#^9q!&&(l5ejq=G@Q$.;%U@_BefBL3[@d;B4e*1_d"W0"@QO2Y%d-0_cQDkCsS6):a1Lg.+hJ<+k7cd*6+.:+Z84cMW6n2KE8.1De.Pc_$)Pc#<)Y=;N+BrMkkifK9*N@e9*RB/Ltc7=Sat+$C"F,>!S\fd`e%1#Oi6q2p70,4S-(uZhmJ!g\j*:fK!JI^OD)9T&D2a(iSmA7aG2>\\R?\6.J_JK#2>7*M9>p33bE>k#h;=""E,O^Z>U[-RtK?a/#(OkCEXIkh9$LQ+F4)E1O"l;b?Ib,(ThXDaL&sgOKM9f'1S$R@^g`E5[h;%V"JP%G.U%,E9,,rVni&_lQJU]oUI^N11qF9i[TBa$=HOHO`L-j'%K4,S%Q<8m*7h#@r9B-S\g!Lk-D[33(tH8p/[^I>M:_hcU'"3P%5Q0o2OKgr;ClIhqKLL`(TY6.j@6<iBpr-u(lE2`f>ninFa/a-i$tEYhUc#s)n:6sj"05F+NMVU';.+CKVMSt*g"I/]$Y%_tQOMVb-Ac`^,o5kn6gni*>9MmL]!r0,0Beg0)F%trgi.MO\R()<#[<)@#H1mbB#0l_+@`O-NkDSoT"BufH^AP<CZ"YZ+n20qE-9Au.+-'B#0`08+:_nhc)\G5HJq8*MkJ#OdF.?0^Kq%Ce[h8p_$hn*l>^mcQXrh2)B)6pIeZ%jU]ObAPP[Uo@\W%\@B8+QgO(Wu2-W3'T7Albr(350uiGQ-\m6*9?mWW]#p6kPd0;nRD>bB]Z<<.bO@YKbO"Rps9bmkl;]V^\-W0=n<448h%/L%Dska`@eEIQI8p6b\'J9bk`JjB0Jj1=_>=31qgXH?#PdH+KqU*#_h`YF.],$2X)CaX!DJCY7_1BW@JTE,KOjn`kr.i6p"SVBF3aoP>D_f_/br\2XS@:ABL#+>lr`o>3nP#,TK=Eit*H2EVhg7SA0_q]1Y&2q_DD2Q8b#o:P%Dg?hc,+U&N&kaU!:H(p,?38)3^"OkP;pZOWM;N<k"f60C:FXi!&/g=8is3ZPZQ`?9SWB]]t)Zs5'WahcpjmY9G;@9`K"u#sOM"mEK<c!phrs*e!%uL~>endstream
endobj
xref
0 11
0000000000 65535 f
0000000073 00000 n
0000000114 00000 n
0000000221 00000 n
0000001154 00000 n
0000001357 00000 n
0000001561 00000 n
0000001629 00000 n
0000001912 00000 n
0000001977 00000 n
0000005793 00000 n
trailer
<<
/ID
[<4173d21f820c032680e0bc50e03eeb38><4173d21f820c032680e0bc50e03eeb38>]
% ReportLab generated PDF document -- digest (http://www.reportlab.com)
/Info 7 0 R
/Root 6 0 R
/Size 11
>>
startxref
8565
%%EOF

View File

@ -0,0 +1,127 @@
%PDF-1.4
%“Œ‹ž ReportLab Generated PDF document http://www.reportlab.com
1 0 obj
<<
/F1 2 0 R /F2 3 0 R
>>
endobj
2 0 obj
<<
/BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font
>>
endobj
3 0 obj
<<
/BaseFont /STSong-Light /DescendantFonts [ <<
/BaseFont /STSong-Light /CIDSystemInfo <<
/Ordering (GB1) /Registry (Adobe) /Supplement 0
>> /DW 1000 /FontDescriptor <<
/Ascent 752 /CapHeight 737 /Descent -271 /Flags 6 /FontBBox [ -25 -254 1000 880 ] /FontName /STSongStd-Light
/ItalicAngle 0 /Leading 148 /MaxWidth 1000 /MissingWidth 500 /StemH 91 /StemV 58
/Type /FontDescriptor /XHeight 553
>> /Subtype /CIDFontType0 /Type /Font
/W [ 1 [ 207 270 342 467 462 797 710 239 374 ] 10 [ 374 423 605 238 375 238 334 462 ] 18 26 462 27 28 238
29 31 605 32 [ 344 748 684 560 695 739 563 511 729 793
318 312 666 526 896 758 772 544 772 628
465 607 753 711 972 647 620 607 374 333
374 606 500 239 417 503 427 529 415 264
444 518 241 230 495 228 793 527 524 ] 81 [ 524 504 338 336 277 517 450 652 466 452
407 370 258 370 605 ] ]
>> ] /Encoding /UniGB-UCS2-H /Name /F2 /Subtype /Type0 /Type /Font
>>
endobj
4 0 obj
<<
/Contents 10 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 9 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
5 0 obj
<<
/Contents 11 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 9 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
6 0 obj
<<
/Contents 12 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 9 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
7 0 obj
<<
/PageMode /UseNone /Pages 9 0 R /Type /Catalog
>>
endobj
8 0 obj
<<
/Author (\(anonymous\)) /CreationDate (D:20251212050229+08'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20251212050229+08'00') /Producer (ReportLab PDF Library - www.reportlab.com)
/Subject (\(unspecified\)) /Title (\(anonymous\)) /Trapped /False
>>
endobj
9 0 obj
<<
/Count 3 /Kids [ 4 0 R 5 0 R 6 0 R ] /Type /Pages
>>
endobj
10 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 3350
>>
stream
Gatm=q,7s]')p_%@_B0$d2.PDT7hOZPtNS#hNEPRBXATi'U!tI=X8MGrp?o$cSCn[#4kG[CIi'_SC>[5?SC@EK7BDoHcJ_KXIH<)j9ZVoGEd'3WhfMAH-s<LG)uNcWh*t^0TF"SSk@0c]EaKrcJU<Nb(%aXpL$c<O'.1-O5UM0#_cmsJLBr5,NZRu$bH4V:KO\S`apL,c6QKC)&);tZC=G)+!o`=8b[51>20)\DSs4X6;*HlN?Ou30+]Ze!3K5[rg2/C5mqT[P#F'(8g.fRR!lQ/0ua?&A@sV/,^B,+5Df/c5&%[2ie>F"1LHm\MMG8;^bf#*)PU)C!E3WN!E_T4mXNmk3`r'6TRnYZ^)$[U%J#s--3WZ7$UnFCbFbSR-^0;@Cr.ul8P>Ak.a=5A.VtR\aYKP-]e$O`mnCN@/k9i*pRbie4%uC7^Ir'!E!XP7j,?PKeL^U)J!#'h<cXLUV72eQ=m;.WBr^"1H!GmYBn]Rs:eOA4D3EmYkW'YnFE0`PeUs$khcC<QK1n$l-N6UEY4'.BQ#UTuY6dAn^FFMs#mO^FAuGZGCBKoO^c-"&d$o[>3-\;mB#:ji?d=K4DDQC;*Pu[dj67_'#5:,>J-GZ,c`Nr]16l%b9'^/)j+9?tY3Zcb0;3T9\\3jb^*_gnf0(sS2hDa3PjB&7S\o=-8IqC)A86P&MRP(Y^dPaCqi+?aK26_6[KD]oRQSq'C%"=lE=7+b%'X"E%^=n%35E$;UkJ]K(tZi^_mOnt#\t:4e_Bj=5q".i:'A_"?=;qTS;r>Z>SUMPSOjE#jOse),s5VP5@m3!B9-H6@WX@2N<f#-E5$==$@_npHO<7^(/..inEK*'a]l93/+o1&J_ef2e'V@PN\/H_B`A)^a,hHtm=05J!&*LC8Dsjp,=/UgE6C_fD;Z_ZMo*X>ZGBNf[1@(,?H[\$aX2c0*_Q<^+p$Lj+!e2Qg2O0R`p`8cToXsU*[0N'p&(=0q]/FM5QV<+$e7RC:%ind8f%UcDiRG5]L"?dqb[^$kcZ\+>it.+"tJ@$UCUmdH]A)0C:*[D4NESm9U>'m3"+=(_ei>h-(_%-&R<D,K$JqV[pV:H"5im]MM+KlaRH;0*-C.oYl'N*!.khtKsqR4<^@c;AJ5"Pf[BOsK"[tB<JHEealm,5bbHZE""?9,cjCU`0'WWN)rBa+9/dZUgd^/@kRaOD;SWNn"@Om>,J<dh>U$X*KM'h)rCbWX/jsar6h804[05(fR@:^iUcJ[UOamABo>#bA7EFD"0)qfU5`G7$@Gl8N-KR"l0J6l?&=<6`?o<k*Ag,,0o)EIP?OqU'+_=(L$tZJ6"9h%mn;@H86.9H.Kj6::9L)L1R=jGcU).7c_%=qLAG>'.>6o81E7MY@cs4UiY*MmhW>$3-%W$(t(Yk]DD_,,ZjdAJ4=d-l7Ee?Noo[%*HSg?iWfO[;N'I$LGC*][(i!Kjp3u]?u/(lu'(M#1kCk,8'B8t'1-3a/SMFk$&jMU\$89)e+@I%LW#6S)bD?ZsLE&gc;m+B7`6;FFY',MaB?dUUh@n4YIOJj?T1<Fq#!Vr,ICgci2N&"7qJK$elbMT)<o8VuV6'&o4nad4KOFVs0KaDEBBg4lbK2%Ui`Z.Y-DB4<DjmGLW6cPY"H4/+YHXI<6fiXEE'GIIN<`C7V]G)1;JP7MZ5j%,7]e5&kqd=G1j>8&:pir836n(qU)3Ws*)dE@1\Xl2(].tDUpk(\I`%5kO6#i^IKa*GP,^mKj:\tq["OZ0B4U",=a=>`$'IM7^9$N'Y91F2r6-cP*0?W!/9,%]R<Go;8Vm>lLC?QLAfcs$hQ;KBb`7PEd;I#Q/.[?SkCgRjcE4SW=Vu:q8T#1B!?Ul:S@.P/RipFfSq%eu'"&8JKs%:oa4X1cj\N,]Ti)2OD;e>O(n0P.UrYNaEXEhm78'e-0^odW(HPF;XOdX<i9SXOpMdDiW<>gh@NSpM$-eD"GLK$0c_lB2JdGT#\YP'VKi-!=3&gu-0,SpUhesk<lM9tM[OQZIJ>o%DC]&+F^_o,@G[@cmUj!imffA$?*Q*J5sGHJbX'9PTJ!hHb/pDcn^Q;a=K0Qs0f%kt0R!KQM)1,mZpVUZpr,u%20`jI9lp2FM&LO>K,W^</8a9>>r>5P7NYqit23#?<QYb3Rh`/FkbcZ"mI$:S`:"PJY4,PA=9<2_9Y-h`!2j2RoN=JE('Ah@(_qsd%Ua<:,soIgu9lAIH,2Wli85+\4:MjtUJS@_=hFM9%*drm'W^$-o^HiR-/Ti@2ud";V:1YE:eoB.%Ni<G,]lMn^KDoOh5=/niRa\`]3$C5ld\VXNm\PMq]7+(Dbmh$e8E46UYm_>.T-U]6J#C5(b;D/'pot*#d!@c$LX,KXAR.`h;gd;8p'^SK@Og$a/Z<f\1JndJ%pq6j<n"nW/mB*!.q9]`j??=Oj;V+b+(=N-IINLk#9[,?43cqu-/tok.m`@;c-V5FY>k!)5BP_m\K0ECfq!miuc41mX4OU&2hTPWam:iMHAk+<o4!N(.BmK[j2e6nqK"Ju2(R;kTl^])"Gd:'l+Aa.HRYZ+NqI7Pq]oUaU1cqFJU>>@,RGA^=Af-`F9"k94q[d*''O)E!/Y%3MXONbMfi;kmZVM"8(en!&&0ieH6*+CL+DuWD2bR/]jWSqQn2\5)4mWe6HIug-T-iS$ItOFf!=S^6$38F:^hFD'&ZIiP4Dq;C:>;-!nCOAB,nj/gZFdN&*'7AUK`1kV;L-nGa;):95q`FbX&I_X`ELZ@PT6TbH!=0aq!jnYoNQjK)u]RBJ`h<hNE(*LQJ0[V3K\qkYoI\!Ot$)Yj*!Q[`0hhOm1ei5C#Nrf6`Q-fV)1G[ouH1H%jSKTe!gGX8!%taX^M)[hI/j&a7PK`]2/c0rC?fbGU"lCWQ6#lT=283U\CD-I!EauiEAJn@F_\&c<4EAX!&.6K#Ql"6Y.j=mArf*7t69@'RLQ-oM!jj;ZPm;S4?VOdS#+b%Oq]].6M8#Y95@t,WTue-B.a)Z7(6"*;hd$CH=NGrM+l5ot[Wg\F\i0e8CO.9LljEfRNE,A<B+)6@\_1Up44$9%BD*DhSdErX6XAW5!.G7VRZo5]/b^Bs&L6`jN/M8,/QAq\;98C#qFf[n&!on*&'MP&_@g)K97o@8=*F+*ZeB\\^2t76RR%'&Cd@!G%A(eAV%Z:605LC:Xhrnlh>BENf3_'?`N&RT1rKs.S-;*9sL"-!Sje10[!`pp1I9/TnWZq\<?sH<(m5NZH<hG;#tCqlu@Z*C#V`L4MsSX6QBT?/uBBo:4Bcbkb#CHYdXcG_:<`&4U,r(RTI7I[(>4M+_G;V"!I!s5rb'-$2*=[*aEuSaOV5rrJ_6%Rp~>endstream
endobj
11 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 3565
>>
stream
Gatm>D,VBD')q<+TfA<FF!/a)+ECJmOE4\#)8.1%*#f1dOoU&E!s/m$If"9^]^2f>_PU!e*j9a"B=`H$T74@1]Y`S;Vt&]H;H`<dC4G^[(R=Em_GsT9\fWD?\hCe3i-qP,WG5`uonkW<.P9]M*^$T_MYljioE#feEEunSFO+>l;5q/bEQ+?<YHAPYj[9Li@<j%6429krM)=RB4V>OVd`OssOYA+?';5k1JX[Qq_K7DWM,8.iMF:&@Dm1ifALf`R*.Gb5Ba@N$[oFF<pZ^Bir1ad')6V`l"5cb=j=QUM[Z^b/L$b]sLM^l1p;O^*Lo.cX=)b/&/\s%<XhbNNUK<.I\Ar?0Z!ZpqJq5qXh+a\#?j1BXi%G$;hG>K_p_muo?<=]cQ1!Y%/K5hI+GFH%\<X_Dg[kmj!^4n&]hA:>o8i*mpF]$#&:"P6!WBEZ76sVWh)Lu1ftA]'<#(*26c3uiqP[79O^-peB/mPp^-&8#5!fo>r)'[/8HP7+p9`^Yf\$buhA:,Nm>M^[!^>@n57dRlk#De8UYe6tJ^re67iYaU&ro+CEBt`W_W&=N9!W@n_0##GS-Z^=G81sD_r9G@lMPMa%.lmO&SUbp*B42XJP/#)JH`m@kbim+?a%7Z9P;%eF9t0CIbc%`Bj3H\kqI'ii,FCf0b0!/l4XXB*8]]%_I9e(4Tnd'r?e(kDD-Si8o1cp\m#`lST4>t_PGU4\:iKnc9%G.//L<'q+g3k\,po\5dt0JB>M3I4o)oGAVBYCcL0&8K,YH5Z.t+?A@"?%e#DgpY%=BW'20[Tac?KAJ.]<Y?D,)<1\'P=Icf-80ecct#D]Vs/gSgP^]P'3*KB6ch.*4M%tHeH+5HMf!lGigXQ,P!OmG0FiKA!oK6BE3'lehrj"S=.,$k`C20u%=aRPWFE>Xi<dC+$N;Y;Sea).@Eq<jf[?GHWhN7lV,T[j<OM::4kO!Wi8e4gYdY7'C>-l+0m&td=4LsP:grjWma;lO\P+a/89O5]sqZ[E05@+ic?cRBh2D`Sp]+Qt/A(C6Z*%,@3i'XN[nNMJo8<M,f9c(hN2>nRWb]Z1CO^;EVQhc[_h'-dKai8Ymt0pN&\H^?qRbXdXuA,G23'Fhf>mKef$OTU0/m?($XRW>WO^`C\,%pQ9c'"YjFR(-43pN9mlb\2!Dd)W*/C$0PqLUS%$3D]q2^.O+36B/aj>f+H87\8I\Om1)AZT:'&C&Vend0YB6,8au<Nt:^r%O:-r5%s*l/R97:VRVcDJYXYTmm"^J)0cW8'NmEg09:X$k@&3DheXBWdHAj_$oo^c^lQeqnm#]P%rd,G=3fmr"?ciAFPeBN:!1PU(?H*u_C$o>-8kKm0UBg$')9#80@QuliGbpj9/C-XDW.E)%"^mY`bZaTZqmZ^jlr@UNq!:5=--R=@RXlLglqsh@B'lCU(E]6?,R$L9\b5eFateBVemqa*/1!%.1osF)j4q^i)KFEX,5$ji,p!!0hJSgj.86VdT*ZkC7\B4F57m^Esmpq5$k(M$8*$[XLZ?%5A^aE<RoSf^"=$R`<hT5Zn>])?r.aCR,1%uhP1h.kd.;XDF=12rZO-)>^_4<#^OU_VM']H<Z*GkXJ(ku_KTa^$:g>;,Rg7s[3j6<:/69A=4[L=`3AK+1J."=a+tse$SGe#7T?IBC:ml<>00+]PdPMJpCcDc',!,)</rg*+jN_\!O6.6>q+]h#&_Gb#/UPA8.RT6BT^YPj0uC)E<a&\]4e4:!e!I(c;]045Plnb#Xc"+^)BRG.nua_FOUsS)&`&?*8)ZpHAm*nA-to->3N16$J0I06d1/c`?'73GXAK&)haMuM%.j>!sNu##Sb.@J5l*"0R\W07]58Sc0fp@1I[\Y_L\"F=V4j%d@IU6kA;ht.qr!&"VEJid$75bl;Gc"n/sFG!NCtCM'1t0_;I(Cf*?9e=LqtYk2NG2U.&Tio=;H;m//J[T]eMKKLgE%b#IF.K(okB\:Vlt1m86S\$J>9hcBsMb"84I.[bpRO]A_cb`.mfLZcth9)acMVo1XkqVGc;'q@Tt"/"&4:*6\G.SgO.oX]sk.9&NBUHR\K)b:?/-n1hki7\r].I/HYGYWe+i0Lk-lf\m*ndEqG4k88!()^DE[=@ob'_uI#,)ckA/u\nk"['WuX;UaGDB1XP]O;7A=2g$>--7<m<cX\o<G29KKkN`E$o)VtQfoUGS,B8EC'3+QQGA(dHoF1qP1UR.L%n'9&:V2#"#qn+JZ.fZ[G4pK]a7ZhgPtDG;K086GW<jF!'@"<)(I\ZEm*E(Z8Kh2^n"Vn%+[^*k@krlUaPtSgpp_3#!#>&$`.CV0:oMa(G=WF0JR_\RG.5oEpXC0G>d?\abK><VNd$N2rKeZ4O+Qdo[-i!$u:.+Gol=j@3X0A6R6*;?P5]d$EJbK'OuqU-;Je\B#D0#I:m;68VX<Qi_^?Rg;0t#6g6^lg1B=PY1pFL]VZ`PmqrZrY(W6I</n<)C`STe:3]MF$'K0\QY![MAOokh!_l%ZfZ-[2js&'T(101Nio1o.7!`Fumk)!PjDW,pkXOk_3YY\oje@ZZ#M5=hn)6a)Qd]]1Id/gSot*6BM_XUUh:s1&.=*j*J0hJNJ>7fA6X;ER:sW+4b2Md$/@C]K_;ZG*+9XHfNnUc<_q#2iJ.VSsFu00dR2oPTYH,cc*HQnI4CG81GO%^k>Bp,W@6MW$Y#,Q9gOA],]SfgWQn/Q83[SspEmWa6;7&nG`]^>_#=)u+gHa32r_m@AYHH'%[D$YrZm0g:VmCBjF>oVT@'c&?lCOX_,Z:CeMKEJIrK.SPI/9OK!ZaMhcF!1M_];rW)f<#"Y.Q+h.br$W;OUf&a@%%@1hMZ(:rke>_K4>h3JQ;[>sJ/(-[.3/T,Nq->64Js]<P$6*:FP:$5I>t]nEO\=/B.N/k:WVEPcpOG"O]lh+7=(<o9]GW\CmQn66oR*C![Ji^lIfHM;D?-s:EiRA_$&0<RkMPB"H`l?B_u,:G6#p+jE7WO`$\4h7I:kJif"XOLn0cr;:I6f:*('blX'pu*BY7j'W!!&Zp<H[<9nYL#&JC?[-IY)g&^?gai=e8;A#c];1#!QXpg_9AeRIM"ci,Ufrc44a8kr.G_cO6ERD*YB\VLmN!aA3d:\\2]7<W)10G`DUMdQK]-*XgHa'Q<<@DROi^XXrfh.n[ukL/>#.og$RVCkHkp1"-V%UfSgK]2*uAGLr+LH0YBhG']W@33^$R2RJ\(Ub56N!c9P0LLqd,&!KP9#lba^*f9\cKcCaqu>"5qC9s+V+c6rLJ"#bUW"@_@KeC:+u5L,[_I>1e[@WoI_j$WhIZh(VR1q95/@9_j-"J5OIPn`@Clp*PM3n]3HoH.a6Vf!])D\CrDiDaArAo4`,_J*WjA(Ls<O/WcSAd\$u("^BH7aI_'h_@_*,j4#m5!+?%$0EJ?Q9?tn5ujXr^@H)l4a;S;j2,%m/g#VOoYF/.CA3,p_2a?tjV0:WShn(uW10]>^(Kfur=aP#+m6)\rV6Xh<$:esQQ\tqT91)S^Uq4tp(P/1m[<;fpdWH`_X,mn^Khgo"j)]R?Sthir#aNPWNl~>endstream
endobj
12 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 619
>>
stream
GatU.9lC\2%)(h*bQ4LTV<QX(g$*ND7;tMR2!L=/KW40:Jk2pX%W/U%r:W>#VCS*)W"RgLG<PX^5<kX-a$\OO?95Q"\aB.PLg;l\'F)BR+5OQ/pTmB5bcimZ<#2<'W>nJ"KR3t8fX:1O=UuY)iC6mS!g?pC65nd>]CEN5=[ckMY29'-MZZuP'Sg:b.B+S?KotCS?1l*8YDgpIcT5AuT#6K/B+S#8W#ALgHf[M>TL+FF@6DY*1ukn[^E$LXZ0"uTcl[3;ftCk<kT?i:ebG+?c(jD0JELRo?"F_O_[Yl7FGuZE0c0V*:&(KA\I++q.Kt;Vr:0N?1ssQQ_ApC;7&_O>5UBYLPF"(Rl0*&R$(^rKUZJq4f0n'f$)C_t<FX*JYW%>M8>/eE(*g<]0X.J'1?(XLmIB!U(s>:qH-E>=8&Jp8Wc.B$-]bM3YmakIP4q&H%-nQTFp\2Z`Nt"feV@r%`4(5Wi>a4e#K]>S1BHlPf(KT))oSQ_H_W&d"=fYV_\!$-2V]i.+$jDFd.Q(X8an0]?ZCh>3C[c,.0ZjhH""B^7s;3Kh[k\RC^_tY&Q"1/AhnXoYts))@TC@EG(cnXe*[7A0jPDKpL*(6NPP5T!B2;,@f~>endstream
endobj
xref
0 13
0000000000 65535 f
0000000073 00000 n
0000000114 00000 n
0000000221 00000 n
0000001154 00000 n
0000001358 00000 n
0000001562 00000 n
0000001766 00000 n
0000001834 00000 n
0000002117 00000 n
0000002188 00000 n
0000005630 00000 n
0000009287 00000 n
trailer
<<
/ID
[<4d67bddb1cf67be0a7733cbf65eb8cdc><4d67bddb1cf67be0a7733cbf65eb8cdc>]
% ReportLab generated PDF document -- digest (http://www.reportlab.com)
/Info 8 0 R
/Root 7 0 R
/Size 13
>>
startxref
9997
%%EOF

View File

@ -0,0 +1,127 @@
%PDF-1.4
%“Œ‹ž ReportLab Generated PDF document http://www.reportlab.com
1 0 obj
<<
/F1 2 0 R /F2 3 0 R
>>
endobj
2 0 obj
<<
/BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font
>>
endobj
3 0 obj
<<
/BaseFont /STSong-Light /DescendantFonts [ <<
/BaseFont /STSong-Light /CIDSystemInfo <<
/Ordering (GB1) /Registry (Adobe) /Supplement 0
>> /DW 1000 /FontDescriptor <<
/Ascent 752 /CapHeight 737 /Descent -271 /Flags 6 /FontBBox [ -25 -254 1000 880 ] /FontName /STSongStd-Light
/ItalicAngle 0 /Leading 148 /MaxWidth 1000 /MissingWidth 500 /StemH 91 /StemV 58
/Type /FontDescriptor /XHeight 553
>> /Subtype /CIDFontType0 /Type /Font
/W [ 1 [ 207 270 342 467 462 797 710 239 374 ] 10 [ 374 423 605 238 375 238 334 462 ] 18 26 462 27 28 238
29 31 605 32 [ 344 748 684 560 695 739 563 511 729 793
318 312 666 526 896 758 772 544 772 628
465 607 753 711 972 647 620 607 374 333
374 606 500 239 417 503 427 529 415 264
444 518 241 230 495 228 793 527 524 ] 81 [ 524 504 338 336 277 517 450 652 466 452
407 370 258 370 605 ] ]
>> ] /Encoding /UniGB-UCS2-H /Name /F2 /Subtype /Type0 /Type /Font
>>
endobj
4 0 obj
<<
/Contents 10 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 9 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
5 0 obj
<<
/Contents 11 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 9 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
6 0 obj
<<
/Contents 12 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 9 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
7 0 obj
<<
/PageMode /UseNone /Pages 9 0 R /Type /Catalog
>>
endobj
8 0 obj
<<
/Author (\(anonymous\)) /CreationDate (D:20251212050229+08'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20251212050229+08'00') /Producer (ReportLab PDF Library - www.reportlab.com)
/Subject (\(unspecified\)) /Title (\(anonymous\)) /Trapped /False
>>
endobj
9 0 obj
<<
/Count 3 /Kids [ 4 0 R 5 0 R 6 0 R ] /Type /Pages
>>
endobj
10 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 3700
>>
stream
Gatm=CKK7]')eD/U$S:c?B49:eFr=s3Kk"$_ouL"2?OgRL-Ws-Qk0la"Hr`N>BTfd9-D6$OqZ8OX4?LH<H[VN8LB&g8W::%8b->Pbl'(+WKP)(,#-f;KAVlH_7e<Eda'b@Ft1+,2mHDl[2"kmUW[L'kZaJ)It-7g7r-9BQtNes0g.lMb4%3Oi[;fB[k20H-Oekg\GGE`&5o.!b<dUu2&R+^aN)E\>r$Yf4KI=2>KuEiD;3U@h8qEgp\"nc`!Kt88_d+t!"nqn0u=EcY\gMleGcAL4t;3sM?b.,_*c)WQhZo)([tMK__W?Er,1e07%jDGAd#EBBkL`%D+#N4LcBqs:l5(K,EN*4\h6P+`7i8iYuTLl[U1F/L/3*Ds5MuB(u-cd-E`Zu>#o;E9Su<4MT:1^*L`T98t&'S>HY[`#JUI*mJnBsHnYBlJKp&iFMAC@7apWD*1iGpU7"oD+*%#`HT#SB.%N4W:!,GHe'P,EFNH)/V7&sb8!Vr80kR-'?r\Qk3W8bN0:3sp3a79I-KJ1#a^atY6IUEB]^A?;ZF*Q'XP&9%Up]iaD\7[q"jJrECl;>\P4"KeQK]kN97tZ=Mm>JDaKD@.1:g!),IR;nW7%hdldY,fW)@KmKKK*MljNnk1\uL)](?eeV9%/nd&Fg!6L04ep`O#3PdR9mr_Mij&Yc/AdAuic*at1:dUb9Zr!YrfqQKZ<h5^6oTDcRq06h>c;(9,p9.]W&S;2A2?Cjg*XpiX_MatBu+CF,UTc7]J]K0:8NUW&O6<A:6T>7.7]E&Ed&?5!!^=&Te-\uSC%JIr/XW?,]MZ0UXpRZ7npHBQn/6JRcYg=$_-;:MpDo&S$>"Gh4O$D%`ls&27fh/1:M2cY'B_,VVG^sY'19u\UT4kLR`Kl\-cWAGR0%a[6&lK/(+D,.G/tD&gkOT:="Wg]p'b"RV\la+M_EBe0Tr[KAJ6a[9W?KdE<&/=`eNVtV3,NZ'KDl>A!9\s2hsLf,RD"gS%u?)i1gNpLmkV1mC&;ECfu\"Pk@i&$U`@9aq>>ZP%bU0uhq417k8iUZ-+.1.Et3EbONd]5<tB!VJ=84fNC3D(lf*4FAFh+0"_I;cf3],t*[o^'nJp"*pc/*/^2TLVO`'4e\Pc`PB8]Sf*!_fWmPcYk0V8U1j9PJaJZ^:CWX65^S8hYNaMW`]$Ml*OjYa?Kbi*X"r1!F,Pg4tm<[;2GZOWWO^>@7R'6qjBHE%sp?WkMc`L)eP%EZh1Rj+&%8_?"D>*K0<*o6jKM:O=K0P[*Fc1U:`c:<nLR?h-O^Y>Jg$A[(=I&V3Ll_KM^Bh2D&lefI]OIq&'R8RU5Oa7UnA\uPS;04&9T%;=/(i,6GRISg=Z1;E(KEB;p=D3Lb:GreiV]>0Yb2;5hXD1[%fOfY):P9&3W$e`PW3o(a[b5]N(Z<:%ktSGo_;EsrZHPbH![SX+]>Y>,_X6q2LbH>`#31\We,"8VLJW!-*QDmnrtj."-OhtXC\1imCKmWbj*7VI`XGYBUWaDnG7eq4R[kk9<[O"`5/*h<;c8a>AoFirq7Xm?Y0Yb>p]^<4j9t0\_Y%Z14I8)Q:^5)d.k?<j$i.uaKlW'?j5.q\G2625XZq/;$_3Y0Wf!XbYr[QGF`m(tjb/cp=2T`JE*AQWY\4Sq$1epeJD+#X#F0^]+&Al'39m[:GO%]Ra1`T>2%S"t^b/NBCEZ$LV0i:V^X)"N0?GT%U@V_7RTK_J)d`'VTO_U3qNik-8d3,)*9D&nJg_sb-f#(iBYk7fHsQ?)FDM!pHA+X#EgA2B\]6>#kbnlI1`!!4XAobt<A#RAl#G_F#CK4lrEo*!/4<2d&/,S8:[`Z!]?N,[.`<:I@VjmW\hgY,ma,C`>1K"uPh^8q[jH>sXE"1aD,31b?g(GL<C8ZaGtTSu862V9Me<`Ym"hr/opUL3lV+H4!q#2kX9VJtZ;QX6QG-\$5VQq#F"-(tVkU[oZ\hupHQYO&:kMrKh.0$f/m54%]Nc-ViO(\m\CVfW*51F<kPpo4oQkm[.`I^k$c,s9's6GS#n.QuFO+`jPXEo'/-abJ#bA7p'$J-dQ6Q1"G'qPhB=FDZV[+/4(64(Z<^l*2Z?O]a(6sr*78h"\'L]"F:!^,.n&8GPa"j.rol@UV#Ad3DY5kYelE@@ZV)!6)]S[+7'#.($p]QWJAMb/1+q%iq*8C)`S!)8U'i]B2]e2i##dQk8_\"X_-##mHnA9=`%q@A^3K(:_'BID$*A+mC_KX?TS@Mt$b]^qqNofl2,S&AqOJ_=Gk'CF(5B01<Sl]Xoi7J.WhL:9K>BU317,$5'e(cNPR>qrpQ.0\9C<gds7+G&_\SSjbX;FJTbI:NJ8q,ub6RgKH70k'2TL5*(`:h)(.=bbS9@eg#W2Mnf'`Z<9!n.A7#1lM@c!p?p5I<9ZSu?to3#C!D':hs725Od^e$<m"_:AFbd9Q*>7^[]25X;WR!!LE#D<u8,Po&K9:+W`C=_];WgjXs\Y08pHG;seYhMr#p6$jd'q^6Wpb!`(VJqIHU`M5da&T2JC&l(WfNEO<PRi>=BHDi-kR&gN2psb@d9sCq@ZW^&q:Z$#SU2@cnKCcdj)RJ*UGCKJf6e!#FgrEu)+iH(;Hp5@9eEtbSclO[k<0a!1V6pL'*Jh?;%U^8d7WWJcTG^<s)*4-sh<%0K=V3%:Ol`l1Mf^CD#AfQe_.>5Z0Y,h7ZG7r3WndtT)X`5M?^X8tf7UeF`&<tuQ[=u)_tU!6V?i@7,`>l*Vdsl_!SM<aMi'aF=j_IXQkCN$;'OtI&VFP#8s'[!hCXl7I.8[Gm!W(sT.`iW;d9gYd,DKC3VM\fI>-Od5AYgg#,V`u;4f;F>43!oI+S)k'.8?qST$@hYjCpPK_s#eXOFBt*ei_`I(JUL^.q,"f0WVs<:Jn?,.LbtUe$H05@F[ohlK*p3fWY[]B4J5'Srr?]tV*?#ZQ6#L[O2eqci9`lk::nb`s8i3$EVFK;s@$!R&1<)>a!2,H(g)k.Z`&SN,St:EJT#?1^e&c&19B;Z,DKXmEU)Lt82:6YNK\i]t/UP5S%FCoV&o;b&&s0#C312UAf(\Y1J<,FTTu\mOElb'#Qf*Ofl1Dl\;;:'.U@nV(pcG?!(V`b8GX302=;;W>3Mm1aX"Hr,*t:tA<rRKn5KJb\_ipQ\gMT[.?k]=e/U\$pC$E/;FGOq6MDq/Hg/9'cV5r:#*W_N[=kn!lWiV6DuBdj6<$S+>&@?7NXq\`Q%AWH3OIWKAAE4#FcUqC>otc\Ji<p6C!<"r4d-g0+4b,kRPkl-\8;&)B7`L15Zeh=22\@WQ7<e5M)/UGRt0f29'W>n6fra1U'+3s&McQ,_VEG>@>k,nGc+U5$EJ=U:brnRGIfN4'3kj!QsZa2qt6nl!,(XuCN$Zcdsc3j]l11&/!-iE>CjQP_Gl^%u_PGPknPY;=1<;CObI9tY0E`@IR'#=8<9aMY>64+s9qs&;#"Skkg7Ciq20CuYH3ag7.A:k`SNQKM'+qjp_AW,"R-$grc9E95a*m8Zp)kq.7bp/h"No#l/fim;s:!TBL+)\K/1ZRqPu`coaW=!Qg8<`\4;aFOu[OPuUO0gO@l:UYK.l3Q&O0sL$Z\O\6tSZ(KK^U*"(>rq;0Q`S[(FpWrd(Y,CQnBE/-@F7pTM!!<LnRZ3TW>L`h>rbBjFlQ:)TPB6ETE?GZnOgD!'nNE)%g5)!erWJkr==a(_-R~>endstream
endobj
11 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 3829
>>
stream
Gatm>CKDHF')g+Z:jgR.Ns2L)1HcAmXqN0@Af!oB$*XpRJL)QZbgTZV9n)t?h0qm>Bl*1Q-V:)$l05@Ra/rQ'OX3<n8;uAg;X%2^<-]]];O(GaP)RO\WO5cQh-.<jOD\Z0/]Y//C8I_pPS54?o\MoEk(G,m'.t'CWau/.4BS7^ACt#M;X9!Z<Mc/?Pdd0mI$P'^'FuDcMVDM5cgNutp9-Z`A4e.qEW#+*9H1C+.;e95H:*NT-?PD"RB2um.T*gGNm)(3'>s,bR\_c61R4\Mc%D*dnT>oP]ZQIp)K0m.c'O#gNpe_H2-mFKC+E5fl11<ne#fQ;gWCiL,4=%H,t%:3r@:RQ`(M^p]Tb<pA!L,4V7^!S:Jqg$o8aV-2L*lCfL@<D1Z>:Bg_;Q/AD1C0_WRcH;5s4t>-IY<1*mZK>gTbPQ/,,&Wai2W#O!YH4!/q]HGhO?DL/5*ceh0XoM0M>Lg;BgJ%rKf>1U;k**e;1[_U8^n-P)9As]pYpt3]!P!BG]RT!Qg-9I]79);>mklbVRXt>+#$HM,a+0=Li79:e@<.r)'@jcWc:!C(=LF;=aTa%j`*iU>E*&as%`%<VCNo;9DN_W^b3Eo<^2$tNtX"oMD(Pe<4_Lui\QE8=E>40`Z8/Fk`P,7#L?Ikh<RJ(?BjM94ToV+OE_^2t4#nJPf[<&sQI:mQ:"e_(fI]6tm(L1NTMTtKJ=[^9je5F#UgG/WO.<3SY]ug@oi8U(&b/acb'Mh;$V]eN'Id4ABmjoZ]ptGR?!I@"[hDSm.MBbWSF-&2;,E.i/.^WPsh!>/>J=m/_?<>-jnn;sWddi$8jFaGL'X<CX<@je)'e?5;0/c/L!K#CqmeBV+k_l)&HqlUV2,P^m:k`e!@M:)MS&n(;;2lPIdS_Hh163oVniGm':)`>slFh*5qAG2E!OQAdJIlD*@&7U0GN?/16qfPA$Y\)n=\rl6^bR'\,27M=NkU@O=ud@po,;%\pS>3o"Sc'\d#"ok9hj/qFeYTai>\I,cP:a$6_ut]QE=3ns#_XkQH/%g)K8J"PL_IAXSGOV=-;:2(m?"^Np,]SU_CFk3oP"`]sV?5MM0=Zdl-"@4hAu[@:l90K#D72F\5dPFM'q_``4$+4;Q%Z*Wnpj!#+bb"=/'@`/9eZ-uB^!)L@!YlYjG!2F>8&1YZQ2SYYUi0T7nelbVsFk'A#='t\[CrK]%LeA]G2hI:Ws%L7p0-\j'04?]C7';Sq"-kJaJbXqVT5g4\R&9iE#_.""L0at*YFKfFHZ$9@XQO+`u:4K]#k%#NY&hT3$YQ/4Hio,uSKCJ2ZeIDK*q)r[m@#mDNCBbQ_Q@F*p1<t7'*M%Gjr.&'ZccBS4Z&EXsMNqG4L'!-3S*SW`_JCC5j*VVROB7g:M#'.[b0r?_2`A(LN[%gL%Oqbu*m9uKm#$U/Xnf.Ailo\6i:iGlmeC_4g9lbTdt%ZmHi$T%*Xn\!$,G]`YPch_eU"$7kal86X/#igeDJL@`#N),OYp2[cPt$s2;$)YDfVWtA3M_t,c\X2-#rAW?[3[5Ec[E[pM@PtK6K:lK+;8qPQQ#!&Zk'8n!c["3Y=:5k./\G[d7Z\dS0NZa6MLImYpY&o\6R...i>ln1t%2=ONjaKVbTObEEhP?Ao6m\"(^I'n`e:+d+QGYP.4IRAG%%ZohFHjC<^m]RSXa%H;BMLG)QX.+IR$;F\G2Y&Q(C!g7_@+97%'BZ'\4UFTAY^9IK[%+_HaU^Q;M"H]U5`H-$G&!NdK4<J1]i#9lZfYLWH7-[X5+cNZNe;S`npHA?fcPsr'QVFlTTLZDYJ,[>WK!IFX,f*MMAr!M?-J&g[YnkA#(VXtqbm[o`_l6b[0R\]mJ#JJ"c422"_>a90q++`@/oEc;e@0>s3l.r-5CQs\;:UnFIT!8Y-jgV/$\?c(L"ZNc5TL@I3`?C0'lHd9%a-2EJ@)[U11hp>@!a,"<<fhGPpJNOJa<0h9+"uAOWS@k`Vl^J)LF?"A5QrDU>F'O@t`rla?>_MKlN$(m_kQr?Q&U+4=BWclku*<$Lc0aSQg?^-<%S&mFBhF^[^$!(QsGT^b;T!f,0$RC0Q["7[#$%\r7'.E%[cDUlBPUC?$`lG8*0lI7I/hC#28)A%Df.N2bdK40#EO++TM@RGA==c19@#HN9q3.p-^fP?>;uhA`q]Q%Rr"XWjni!J:'H*AQpR?J]VTG0u5fgBUKPdra?EWbq#P8=+Ckc)un!X&rcZ:3+J%URl8JI-!0P5K-mg]Y.iN!/i\aIZZ'K0O:f8$'4N2"o-d1$mF3[$8-Pjq/S'JF0ccUj:('\#7l4^p?SQUMHl@C2QOs[Bnqm^g>BK3XtBpo]9[:`jI:P@0bSu"`/%F.dXU@/Dg*m*`bG)eU*CbM@<WKpaO-%+*XLAFpMsk%-=$rh?(<gUX<Rh:]kSecQcjaAFcN^Aoe31.ZX4m#;f5$o%:7OinAL/Z]iSQrr45DD>hB?UR-BmecasUd=Cl^\^2[YpZ#nT_SR[o.Vjtj1[CCa,2-9(4IlTNX1rT8bT&pFnMT)kmP2c0@H"*01j')P'31&auWFP4(/#Rq.Sm9$C#gDfd0\*eQT_r'fT3pk^[pQ\@BJQ3H)D=":dG)g+c,[5SQpY^f;C3bAm\"5r$POT=]OZEsk+%sN[*\mlCct"^3N;nbb;S/h&'3,'-:S]inGd@tQG?X?pQK@ll#:=mj4co3FR;-_'Pq/^%,a%i/:Zr&F3LCaTAOt*,SRcMN'6e5HTODFP6uP5l/Erm&P^bXVgq7Ri22)8#]TMKF@[`2RS/>]MsHODPJ%=Fc?3C4b"CDPjjlr'dU2oG);C88KG]M'O?.Nia,+SK(jqan<DF2tj':PY0B'Kr!9SA0]51JFgF:JVrFG#:<qF>BLs&t'Mu-K7%q3>MSMk-Bb]4Gl=Wu&ii7`Ui:shE^K2#jl>,lEh8Y]Ge*WBN1-aN5Xk[oU>'Q/K6_elQZTbYTk>l=j?^dcW/p^$O/-W$;GOHE"-S_NRuc-J%2@u2ViRp%jpF$A62((HTm%!aho@DF>-'`'J<FI;sEk#lTU:J$mKhBMgJT!+WRFNEB(J,T<\,R^m;@q7pD'+FqCqp/Z;UY>`Vj,dMC4+<KN<IA[,]o:/iNAI`1i*CN:e5ftZ3$]CI4p^HWIVMVJ=,%&`;_.9$.9-`hIWWmXTDnm8\c-W=FhjAl%d:Q05907'+PhQb(K$3'fg5RRQMot6cs+0nHE1SiZ['hJMt=H[IIA-J4=M7e.o\\Wed9_/^4Eokd-'\"9R,,pEmA?6=dhp0%B$X23oIt-m^=4jb0r9)KPPn%^^*Bh&'#Ua2C_\o\qnAAH@>"@@7UGkcFo!GCA,j9J.&i4QAt8(So^.p@`=Z1^):H=+rD'6e\=dGR.+caV-SMP`6J8S&Dje\MH_@@)daJ8A3QujLhj#:R7,>?R+P66cu+PmO\qM8fG]YEdD8.HhXjJ:#M->C59(;>L?(FcE3FI_o/C$e=C;LYcQ_!7UffK<!^U*:%tH^W<]dc65aUpUOcDN4H)D.#HPC,$0c*c3l?PJh+,@0dM_;\[_2i4M-</n)c--):s$9;6DpT[T4"BL):8DAE^[O8I"J+;<Z1*Rd5[q7LdIhW=^q/4oSB58e:IF:FC`IS:4nUBghU:"c_tR*pnqOB'S>!<?"18'"(*/\4q%2't+JnI!&$\T2Th"A7Y+3C7/nJ%,X1MQ25M)F0I<sePF\,WF:F9_d4%R`Pi4C8G_i<8K/u)50GAX2>/^C.'j]YC#_Utn-4TF9)Pkfi_$<#@YYV/BTGf&TFh`p/Ys7@WV/A`A$it4X@?jL&AScLjBkPkN2CSe$`9pZXp#PJZB])~>endstream
endobj
12 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1154
>>
stream
GatU1CMt+m&H2$(Yu2MiN\J.&pBBrN-<6R+$O^JagWD+t(efp!d5JsG8Ek']RFqg:Ce'd@m![/BGKuU4Z]l@*8<7Cb=n\r<^,r-L3%N91Ec%-X^LYZK]ta9>MKGDtVf(^1d8Sdh6Wf,qD9g;=^DD4sTa'-&XLJ<[BAF2!&AP`'S5M-'kD>u2/_RoIgsT=\L(YGhf[2Mn%Z-&4`iLg,ZelnJ`r'C?5AHE;*ri*[ROjSU1AOYMcG'CWg%MWu,TH.18WEs?Jk6G'LP+a3%BtVQ'[/GoS8<%a_u:0s'F<C9HnU8QEd.aMCTDm:ibZnAn%\[cfR%1<8h*NJhcK[4?N@WHX9o<9n#p<Y..*)2=8"F:Dhcct`(L+!B>lVVT%m4^N/WFkrDQf?Ck6'sk/.f;1r*><HOX3@XTZl;V`Z7VP1?RMJ?Zj#"n1)XG1LDU.mM6tmFN_+k8T4IIF5M7X]RBfhI%k2#RE)6Z\^A9\gngF(idX7#2:C;5DM@7??ABU<#$gcOZS&i)8/CdX;8U*BOt"P@A,/d808#>nhaZ>P;rR)NbZ%mh&kINYI^Ab+q!sfh3tXB9nrH!eLEJc,PXg1g`=2=$2@+Gq1l>?Lr%r4(%ls/UuNkfL)#'6DBbkg3Plo8R5A8NjUocMFc'"\"NX>2k%*>]'fRZEm,$`)XDIG-qIJ;6U;*%Dk\q4)(&HF.&HA2/btQ/MA#e?"9I6S^90E.2DVWNoF7JqNMiXOTNE8g0''f<,*D,gD?c@XE/C/NZQa;"SkQOk)[WmdWjLr-J/.S\Lk(MkMGJe4ka8G(?WlaR%g3V3*)sO,.9jG'THMQM&GJ7kn16Yh#]r3O53_GIbf;%2be7jL+3)8qKq"A/Nf-0be_:h9?)S15UI/[GAgTCXol[1#WDCa#)8p=KI?+?DP&AMJOo=efG+#sF?"J@B1#&ZhqGBb'%nLQ""(O?,nXeB]U6J/;ZGH.%M^u^=O)M.6WYK!-^T.?gSfE5>9KMEI.,/2s@hDG?6ZXjrT@k(gN*8ZLW.i,^<"+RlK[<,q]PhuQseEMGK#!#kSC"p7%081![5fq/gah&)#lp0a-_Uc+mn2e9$nuNUf?]GXOe??F!Vp%1B)Of4?>MWpq>.Cl6I'[`CY=ufr[:IcMm8oBn'dDE0&$S&)^&~>endstream
endobj
xref
0 13
0000000000 65535 f
0000000073 00000 n
0000000114 00000 n
0000000221 00000 n
0000001154 00000 n
0000001358 00000 n
0000001562 00000 n
0000001766 00000 n
0000001834 00000 n
0000002117 00000 n
0000002188 00000 n
0000005980 00000 n
0000009901 00000 n
trailer
<<
/ID
[<84d18af96ed3e27f6ef56f5ead15896c><84d18af96ed3e27f6ef56f5ead15896c>]
% ReportLab generated PDF document -- digest (http://www.reportlab.com)
/Info 8 0 R
/Root 7 0 R
/Size 13
>>
startxref
11147
%%EOF

View File

@ -0,0 +1,127 @@
%PDF-1.4
%“Œ‹ž ReportLab Generated PDF document http://www.reportlab.com
1 0 obj
<<
/F1 2 0 R /F2 3 0 R
>>
endobj
2 0 obj
<<
/BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font
>>
endobj
3 0 obj
<<
/BaseFont /STSong-Light /DescendantFonts [ <<
/BaseFont /STSong-Light /CIDSystemInfo <<
/Ordering (GB1) /Registry (Adobe) /Supplement 0
>> /DW 1000 /FontDescriptor <<
/Ascent 752 /CapHeight 737 /Descent -271 /Flags 6 /FontBBox [ -25 -254 1000 880 ] /FontName /STSongStd-Light
/ItalicAngle 0 /Leading 148 /MaxWidth 1000 /MissingWidth 500 /StemH 91 /StemV 58
/Type /FontDescriptor /XHeight 553
>> /Subtype /CIDFontType0 /Type /Font
/W [ 1 [ 207 270 342 467 462 797 710 239 374 ] 10 [ 374 423 605 238 375 238 334 462 ] 18 26 462 27 28 238
29 31 605 32 [ 344 748 684 560 695 739 563 511 729 793
318 312 666 526 896 758 772 544 772 628
465 607 753 711 972 647 620 607 374 333
374 606 500 239 417 503 427 529 415 264
444 518 241 230 495 228 793 527 524 ] 81 [ 524 504 338 336 277 517 450 652 466 452
407 370 258 370 605 ] ]
>> ] /Encoding /UniGB-UCS2-H /Name /F2 /Subtype /Type0 /Type /Font
>>
endobj
4 0 obj
<<
/Contents 10 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 9 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
5 0 obj
<<
/Contents 11 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 9 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
6 0 obj
<<
/Contents 12 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 9 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
7 0 obj
<<
/PageMode /UseNone /Pages 9 0 R /Type /Catalog
>>
endobj
8 0 obj
<<
/Author (\(anonymous\)) /CreationDate (D:20251212050229+08'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20251212050229+08'00') /Producer (ReportLab PDF Library - www.reportlab.com)
/Subject (\(unspecified\)) /Title (\(anonymous\)) /Trapped /False
>>
endobj
9 0 obj
<<
/Count 3 /Kids [ 4 0 R 5 0 R 6 0 R ] /Type /Pages
>>
endobj
10 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 3610
>>
stream
Gatm>Bm8#s(B)O^&C"_e1Po%g<+RduH=.4:1lWM'L(L)&2Jd$n!*MBWq!I\0X\rl<'mrbt!6)38<V:7cGMaTT,j:<-FmgT5T(SkT(G_.'lAm,,\)O@d>P,RXn+/^,8&jps,#a[pf#j;e6IKps]-RW//#2se0B7C9V[Ua"d`a)GL5JsSCFI.PaEH:#ZHWLJ+"-J?lt0EKS!fFK2&!ic1Sr%JT9#`G@FY<IZrhaFG2&cVdrqfmX)/8g4FM_m@/u]08+(<O#*GD5@DX@VYUutVab96@LU:unpnGYpn0R);s2$,uDW"I1QUSX0n6P;1J3\8IActdG[nNgM7KcChKE6aVMVR)M!_JD;l?L/mep`%gk9YKPjV-ZK5N^,k(qc/K,AuAb4d0Rf9X7-\Z:>'+f'/nbV+%6oJ]Ccb^:q2r?=uUD2j`uEs486[42<PY-'U=4?t^Pb0Z1"bifrAW[F@*LnPpkKfE?e!"#S^l39B$>m^KY\:$.Q]UHa=Oj!1j*Y@`j@1-3]3@rPJ7J#=CRN8QEQAtbCp[Tn^IlK7])oM`NJP_nWtR;&(24'aQC&2Ita,h@r?,]PQs%T\\OI%M/jQ`G&1m,+k3Nn#FY)II&BgInhKN0\u]N>>$21s3HOB$/*u(P>E#A1nq<Ce;i9:aj1U36])JY%$QOP6O.,^&g1&\JI@Xj\(Lb0jj&s9*P=?he@?tTLFhW[!,h`e*?4Q+9`o)BF)j9A%1KrI!IS14at1'QX_oZO.Z"j\*(Lh4eRun3'/[V+%[KB&T+)1UjXa<4$5#g*i>I5=ZjG[H,@aS\WQe/XX-J1fZ`a*!H2q(I[Ik2<VT4S]?ktg%pe-WXT"4HZKt2'DkD8f'D>E1]Ydiqk\N'f02<!PYhsRAU;dS.6qPT%Q6LK0>WR7)h7$dgIt1ohr<OOd3%LGCL&%<f2P.+(iTfkj+TW#'R)3`R_LV^XjRS)4ZOhrLIln;[U6r%3<l/p6&fu^pZC2o4[2X4&R-P=]iPg@0YtHKrD=sJfdl*V;=:#gOCtt%oaZ/-rbidVeb$Z^&KH<>=&CC:3U3AV0Aca%+[nDYK)(>m!gp5?m-'LQ,9EIh&dcm,jeS'PUMe4`(oRBA0YYW5&j05o<@;$7'P(;7+OC^<tSp>H1.[X9s$9ST]D9mE.p4tWHSLQXESA74tI+%F26]_C])(3fN(E.NhCJCnRVp,^I`:h25"G=`EN'5tUVfVTT7l4O;9^1s5&CVnW00\naBjU&d"SYGuFCL]C4_2<Z*T'rP7*Cm1-]LG3V`)<iUB=73/$^Ua5n!(YnJEad1%,;`2EW-bm(.O3)ges$:@T2oU;SJa0VOX_ljDW/4JocC3+8:.2^St.Mhq]2hRU"pGfT[(Q"=q5kdldDTk86YE0fQ4Yok_,,UgA"Ednr0a]X\/K9.oMGQptWeKQrdK+9@@"7?.XVDFlCNZ[S7RLjX%M6j&bABteeL8iA%Ud@oAZ=IrSj"WaI^eV)GXAFa7cEt`(%a@>O`aZBKNYan:04ITe?B22>E\UG\mZ>.f@G]rIAekqE-d[QR6Qb$7o6S8MaeQr:rY4IH)07Flm'HYMmepPd!bjp@16@H@*HA?#MZng%'akYa=RDPD@"q<;%\B`9P'/X1fY5&o.AmOAYHrP*l)J9:WUQ\fDU8,dDBX[_&B]#[\$=+:7bS/a+i\eP$m@p%_^J"m3n_#*Te'fP!F@uFC@F=g&Jn#NPegI"Q!pe0,ec2(0]3H#CHZ1ERAYlVTD'VVcX[Blm$&b=-QU[pK9,Pe]69N.ET=\[B7_XKGR\NNat)rnd_p?9o&V]5huUlG)29<UGD:M(Cf9UZqW1IRA_DF#WFlI11qlH!0HqDP"QA='>7rIN%Pd+<nW*4Dl7U+pAPf!:&^0pSa\+V&[Km.tnu8['(8dm/al**_!fO;>goG8cS/3@[TW"HmaZMe)TH=j)]I?c80"B2Y_CBABY33?8mi(;^8'L5Ln[#mBEq7*,7HFYKkW#n/^[cGfSFgeR.[#eei8_oOoELNCR[*@oBDGZCVFZpD72(\)K<`&6:5DP+GFKg/<CMPU:AHN1nf9p=q#k!B@[`<2-P?Vjc'm,F,\bXIRX5AE:DiS&SXCrQKEjL+2U`K)\2p]@TS6CZX$"Y8"/7tlTO7[D'+IcpMV*Du3=Y=hRTRFOoF,N1j9_6ZG#YU5haa1$ln4fI3"E:oo\Z;tU52kV!LM\?HK8dEXk(YTobuLmWaQ5sFqchQ@A/O/`&fLD3*$R9I498Wo'K$:X3"A<(7J-i]";6F2;T'RW/(VO`X6)(6?mC'Oc/2M`.o:=W/d/l-<?0%Q<978A`XKRXp.'kJ??Ip=;Gm1HO'XW(7LEM`CVXsW#g5Z]2koX,^NDU/h3-(#>&#D$M-A.3Y#HC:@Yp%Kd+L&8T\_l6l0<7i)nd5"`U)h:i+):qoc^n#F^9$N2i,Kn(E3O1#VRj&ul!hUJ.UCD/%gDm^B*<&dJ8a$@oSP@V@nqL3QMV]\,L)c(qb'!YcpO/cl+opM[7&'-,kAW,Tgn>/mA_9f/m0_LN_rbi:C=U>lo=IBId1i:*):mp+HkJO3U%\b[+R'%.Xm-b;&4R;B89-a)!Up7[Ws:B?7j$()@i@q;1bF"l*&16`=r`PSJGJs/ep13FaUZW@9D\Fe0k8:6lnG2LrjE^tj&h/]kKD.rK<1eUk`;Kr_]n_C%<bP_Wj2CjEfBKf\k]j,]WF*.hmFO:?)E`%enpY`sYH?6d`Q80kL6Z7&BnHB54'hZFmJm#_/*@*12fPM)YdF.0KCUX(5BmBT=@jd#e^-sa;c=fX7SZMK:\L-o&BONE`gk:Y8YbG7'6ZKnVA;,[-VGj"N;[q$MgH@Nk=s"cl>lInmN#/PP!>"(Bdb<*+^@&YRrW9f=ie^9i5?^CmkHn'M]>+LqRrX3;ZH8m=g[irBFcME>^[\.NRc*chM?*)=R46m-P"sE[?'/<E!I&K>[^2l>\OMnVYM'RgUpV?s3\M"XJ9>KJVi8&$m=n1SbUV\+MW?Y_GTgT"3+gX_7+!.N=hj_MLk"U]^AZ8ic'trMWCC'B\b"0/Fm"&,>"Wt^`:K8CSs0H28_m15)m\47nX$^9(sK.*XP`(O^7S4GIW,M$J59[!p\=AE:.EKcql$Olpaj[T9^$?2;_HEKFQ_tebI8.4;bbr*%N[V^7/N!n;b4IjrC[&A!E#H2P5J$Y?>^O\K$#85m%#9UR]&JEbn5o'BXp)[70r:QU$#JJP"MVoknbUrqe\Om1@Y\f/$&'!RX-q\a:*X6<l*qo/;e48iUOe4^?TcMWU0)N<M00XIe1_c:'W*Re_d>;q)%25^e>(^gQW]*!_j#f$JbY);7;uX*HQpnFD60aP+c!B,jfSHi0*<^G(l+pl6F?BVh&?@XF1(TGR0mtP$Am:qt_]o6!^Y^QRrq0jaLKt[X*N%N#0Q[`E4S2nc[kEW$tCbB>>RH[Lpc7N2U3@Ig8urqO9IkE>8HaZ@5,M/,bV;nR!.1pF_<n&<S4]HM3BN32+HXmg9No;T:pm9;'6Z,H%VWV(!]ic0tC,1#PR7F-&/qY%b(m-Q=_/;gcH?\"X,d'+j8o8YJf$_Bh(FK]<"3T\TU$n4!jW4@Aj#jo6jZp:*NbrXTa7S0J~>endstream
endobj
11 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 3714
>>
stream
Gau0Fq,\6_')p_%,3'Z8bJE6l]d,RU(-HIjP)p4XV+iY2%Sd'R&jVQSgSa>K96Z.Jj?.]Xm?=@7<`NLT[9R93cl\,-mXD"<d]M#jbDK8aDH`/g25kV(=.XR'I(:KhaIliKAKtqhi_WZu/0rK8f2Yg*Iud'CBG'L\e[j2bVaXU^@FjKSB>-Ph9XG@f;F9dN\t,cbT1b:P)'hhS6jU2_W%^gXNR;`:5>(dMHSdFN\"_0/O<=4cM%7BL9iX:t^Fcjbe#t6)98&J@a4Wu:/`+%qcPBGVP?+RdNMgboVhpFIGFG2$*@'VO4b=hQf6f'QI.Qlg',??YD'/8@oDsALab8A`@%$98:\ut.[M,Es\`K1/kn)j%Q&eH(otsDrmn3?%($4u<2EqsRf6^\!ob4/H5>+?pYK+6)UH:%8:6Y=/U2`H5L?(jY+#ph#T;(34!]FT,6hfX")j6d_"ol9A0iksmmI?-'BF.o)c\e?)XEr#R[sg?1D0;3=$7m$WKTYdf;/nF/6$BP^&>TF>NT6.W/Oi+,^0)Qn.d/Xid6nkCd;mCfK0IC0@r:Bm>P?TtZn5I793,WRa8+Q>jB6?r1XE[T>`D<op9(q.U.4>Or2BM?_%[2#O1lY5b3*9`OGQBXB:F0okdN4[IqA@RK*YY>g-aL&qVL=js0/5EZkeUHA;ukVcHE<[A&s^@s65Ue7ik+&q=+KA0LLdH`m_Q4f\onX`_CX$d3IMGb:4j(M\0/8Frp,Gl%$$'VE;N`jc5^h<e+o_cee2"eR<TiCf^suY;@H/@chdPX0$X2+P=cYZk&"eeirEcTC:7@?/d+9ip-&CkmGO$b:0!]FdEjZH*nP4pqUon=XCoH$tIZ+JSlpf8OJBCA%WiC\jkJN0>BK!Af=S,oG^R2K`^?<<pjV?3+I3FG6(/,=^7J.Qb6@'7i0Fb@"IY-l48?V3h]7NjOCc^>r.tqM"QJAa$YL&b73LXbpP%c'.kl.4D5&-TG4L\pt(ph`<4^[75@LW)G1)6(pYin9FiL8)]'V[I^[`o\hV3\QjL4S4RKg85>>ghcl?`90,Ja(W33.2afsRR_nZem`n=p5!G=o9,E7HJ%OjAjBP@pm^V.sK5!*BeDSf<pb2BJnmUl#tkFU^83;n(-l'd[lh^XRDfl`6GF;@hbK.5ukYUk1qe,JtsN^:/b6MdM;8T94Uee";-3n.SrUDG7,K^(>3EceBN`\E6DCu:*%9$Wb[^(C=6&0$cgBdM>;'[/<CT3$<SWeRH(&0!N^beOi8^GGM=L^58^R*fp[pOn%Nm@F-c0j+e;U-nbjceDs!TtX!'jd6j+lJ`?EQp%^<4L>ge,%H*&D_fLLkq\aE3b98OPnnsc+KAs8<=Vq>q#LUs)65H)&5WH\F^1p:;h\:LWuPea">eOJC@g<j.H60bO_.`)%J8ZjUMen`CEt#Gi+@PWHG(4S<23Ec0Fn#2C]#ei.)nlmA5\1*J>JAp(@23K\0SkE@!tgI8:M]XY76R/q5j7Cna^q8knB08`=Ae?$V2A].cici\b*2d#M`pGO!K..ASi,2W5GsKnFG`T5mr#k[L`Ip2-O%="'u5HJ`tWV&ka@1K0tkLf9?R'P=U(0T;-nD,N]nD"Ilc])D)iGZBoA2QQ28$3<U'j$6P_.A.hTrjdR+\iD;0">=,5O$S4Xo';u2[@FSE`_j40JanMc-Cj_U*B5]QjXmU/LJc[socu96\qtA5-ahu$BKp6E@'r\Vra]A^e/jRk_eU0]TRH5J=)c7?fZO1Go(KmGg&LJ0c1hrVMF87nUQ7LP%ZH2j'Lme1pfGQT&ouiR(iQkZgSL7ZPM77)Fb7Q)F@o.nMOQ:']$k,H'Lk)-U[K+P]ZqDPi.l65p/NN/p^ag2.S0;iL^hFW$i'I4W5ll^Y351>bB.c@sr^j@b?busQ3YZ"&LOh)NkTJ<&^lNfK/!4]BVXu^;9$E2t7B?HD1"2Ua$]4#0%OY%+_gGg_S0RM<d^6A>Q.@T#>d7(_/U*VSEuB#jfM7&+R:);d+&@tIS(6(P=de:@4bhe'i<P!$TVB(S<%(,R_d#nXHXncBb7b1QSe>rEXopG6M8dS\9/8mOZTOWZL2)<@!5#,UqWYR#Q\q&#:8Qp7>U-(&X!F%q)&a1if2Y9AW&7j8[Uh?i=3fK>E.tCMnp*#1F]*-AgUV7no<g>bI:CeJ2E#A7Z3\0sTM^^6j_8b.6hgS'UUBJ1/>LoTachnbJ%0*Mbqel#5C<Zi8r`*BE29T>"B8>+a=o63:tLCCnGd:8RC$EQB>jJ5?hNA$DEi&(25O;`G]['bBL&BSlHZ(r93q6/SdoQn%(HV1Dpj1PTsX,(F)u\Kkt7#q]"sDFH3_VbZ+W"F$(PDjQaG?(!08PEV1bI?#$P5W>+Z^RGL&8bp-HF^NI)/<$(6j'>Y5cp!FMY\cqAQTGtl1u,ocAgImtF4`L>Nc".atCqclpaU]Y$0@El+H#<Iha7Qip6eKt_0dKBIhG/O#:rbZui6crB875(G-<KjNFH_"2OQ\Nqqg;K0'PA?u>16?;5[fWU:*@E@A.BD`q9Bn'`=ce,h.][+"EWVserIEXEcRa!:H\VepQD#:KVU>f3=Fc0`@mN)hNj[$d6BYu$@PYZF$dDcAf`EHOiES=O`&=Q4Ysn,+ST[9`(bosi)[bZRg/3o63T)'pT<D[tn],_T*-FsY#44C!1.=S-.>S1+%;`dEiKuOYB!!E7_eHl?(cDm9S@;+o$^IQee)UQ(+]\!`%(3`'5>IlPbeF)a4lap7r*]8<FI?\XKg\/-[EgaVDW)4[?Ci5oAa\=q0:2!XP9qjt"h>>t.#uKOI+=&NJ6OX`V)77]j-;nON/"<J^tn1R$S]1q;H;=K_F]%KY6*qnghm.O5XV45)^q^Grnm.Unc?,h`"kesJW&S<],[R.4?dj'+&\lImAec`>P`q*G<b^5'@P*-MSBI!3!-gDs6OddmG09YX_FgcZ.Cg)@Q'+[5JK)IM:3I>Lcl]nc<(`_o6?&Pq[sX<D8,I.Z/R*<$/:'R[2\\MG14%cLFmZ3;/;3j>jnf&3]nqBe&Z>"f.0iG(oapZB*sEHp;BO4>MG;+C<T:JVCro&QHp]4f(7Dh>F$6C8lNnnID4V(nO^rQ"LBNl1H%sK]P*0YPO=5I<"m^HA?:m_Z+E`"f]mAeMP;#aWcc"fF!Vb75N#'/jmWf4eo(>=X%d=mmC,T>$X?aBjngR*^8)Pupi5L>\.Y5Q4hQ$Y2]*m>[>9:(bEd/sAqb*/DS!Q&\j`&N=rPuGS=-r2J&,]"kKa7E&Aj._hTJ5a)Mh%%QBTO_K;FNCZLYU9C,iln>Ku2s4NuD1>dEhL`Vpo7[WW.GNRaI"39T"c$/*aKL5Y3jp.Q;-m"Wi*YQ]S*lVq7]NUd:3%&G%bgE#c!*BrOP6sRBm%XZ3e;L`j5;`?ls@F6qK8=,e=RNd\HN1+Km!EjPA/uB8j&H,HW1&QXi^MV2$Xe!h.^pX"^'Ba*C,QksU"U;G]1OZo1b[$)lcLM%"o!JY38ZB3/L%dP)=-l?d7V7HMIb-KK8CYG_!t?POc7e&DKl,UjZ(M5>SPU\dCMma9CqpQR!)-tXc9(UTGNW#[/Mk=u^^'59^a=lU,kS_%s.!2<LDZ-(3a=rh!6AhIOX^L8rLHJ[\08NrZ65.W>Gs]OCcsHMOI</&lil*TUA]34GLphMO3k+"=b(Q+<28([lM6>>e*L>T5bY,7)PeuqTZWgT!=DL0Rf~>endstream
endobj
12 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1129
>>
stream
Gau0BD,1g2&H9tYfL/;]Zup"n?T9p_?j&=Wde8b@2H7K?$A&UO#R#Xh1Xk3GQ=?;U.<dpmB4beJH03e3Z2=X9+.O1SPac=/?iWoMBY`/gaZl0%q97/&(g+AgRYNG)-H<,Vd/s48EXbbCn#SUg6(j2&9n'r6d:E3;&od3p\_1MqQ-7r^f(Bn8,_U-,0R/"#GFg4;m510V6D?a9(?C5+AAPEM4,LUKgNg=o5>@I-+;Iptdlh;%fcE'&jLHH8Ma6PI9=sKQ_P/[4h]*meg.LR]=Q-p7O%d81(tJF<#q$hp%o*CJ!`#2l6IIf3d"99k*F'FH9]S<c>?Tfn@%k,O%p**^_,[[s#IamOa%Dn4qb_m!4pAaNi^<_&j0Ol(r5GQqXaY`B4nE6rY"Z;c>&9=L1Qa!&MFl22/:T1C;Z=Zk5@QK9N2Ia8HImMSRF2mpoXDIfFqR8'8fnlM3@uWb[E,-W:aR*6N(S`;TEa'`YVD%q/V9`FQX$bV$J)RB*[ule'8k!M,iRJf%ffp@18jo:X(;pcjTe0=Z2&^8?Up++$($JQUgZZ::'Do?VkkDbZek#\l7p_)Lp39Bp?GLZXV@u/*<oB%';8rP5M$\co'[PiN%CR5dd>^,gaQkX[B&#0R155]^Rm%]2&SFjXVo0X_4tJCA.s*Nm@^pLAN.N$XYIQhiGOBH)E`$E34!#e\JDAj,uuj%B)A=5(0aPL[uD+CN%+>l=JLEAE;o&nK?(:fFt4ki=IHJ<^#SegrOAcTiP%/ACX]0I0gS(%o^(]\F3FDsM:AZ3:#)(!8lWA!BD.+X:n_/'Ga`,W&N/#73P3:<!i_>W[NXcH$A#:uQd,.^(s[tU9Y8Lc&SKFX\@_#ELIt_3:47[o>oiQqp.k)-9VX@#Fug@!r=FCHYPX:*&M?@1>T1>A&89gmH@rb[.-5h\C4ReM[mSGJ[6`r]?_iBi#68QlA=,MN+J4A9i/n+L?K_^BXgB4#s$JiLLOh40>8f<#-9!#"3Xtchh7aH+<*aR)e8k59qJ%`Rh26rdpU'!)0>CId0<a!A?50<Vm^_\lV\lD9:ghnj#8"FN:?F']g,5Hse2I;SiF4$FiaZIl0KAM9H;.?V85^*t[O8frE,3?dlAD#*!t-kZM?~>endstream
endobj
xref
0 13
0000000000 65535 f
0000000073 00000 n
0000000114 00000 n
0000000221 00000 n
0000001154 00000 n
0000001358 00000 n
0000001562 00000 n
0000001766 00000 n
0000001834 00000 n
0000002117 00000 n
0000002188 00000 n
0000005890 00000 n
0000009696 00000 n
trailer
<<
/ID
[<5ada235c2b316296aa5009e2eb37b758><5ada235c2b316296aa5009e2eb37b758>]
% ReportLab generated PDF document -- digest (http://www.reportlab.com)
/Info 8 0 R
/Root 7 0 R
/Size 13
>>
startxref
10917
%%EOF

View File

@ -0,0 +1,108 @@
%PDF-1.4
%“Œ‹ž ReportLab Generated PDF document http://www.reportlab.com
1 0 obj
<<
/F1 2 0 R /F2 3 0 R
>>
endobj
2 0 obj
<<
/BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font
>>
endobj
3 0 obj
<<
/BaseFont /STSong-Light /DescendantFonts [ <<
/BaseFont /STSong-Light /CIDSystemInfo <<
/Ordering (GB1) /Registry (Adobe) /Supplement 0
>> /DW 1000 /FontDescriptor <<
/Ascent 752 /CapHeight 737 /Descent -271 /Flags 6 /FontBBox [ -25 -254 1000 880 ] /FontName /STSongStd-Light
/ItalicAngle 0 /Leading 148 /MaxWidth 1000 /MissingWidth 500 /StemH 91 /StemV 58
/Type /FontDescriptor /XHeight 553
>> /Subtype /CIDFontType0 /Type /Font
/W [ 1 [ 207 270 342 467 462 797 710 239 374 ] 10 [ 374 423 605 238 375 238 334 462 ] 18 26 462 27 28 238
29 31 605 32 [ 344 748 684 560 695 739 563 511 729 793
318 312 666 526 896 758 772 544 772 628
465 607 753 711 972 647 620 607 374 333
374 606 500 239 417 503 427 529 415 264
444 518 241 230 495 228 793 527 524 ] 81 [ 524 504 338 336 277 517 450 652 466 452
407 370 258 370 605 ] ]
>> ] /Encoding /UniGB-UCS2-H /Name /F2 /Subtype /Type0 /Type /Font
>>
endobj
4 0 obj
<<
/Contents 9 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 8 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
5 0 obj
<<
/Contents 10 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 8 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
6 0 obj
<<
/PageMode /UseNone /Pages 8 0 R /Type /Catalog
>>
endobj
7 0 obj
<<
/Author (\(anonymous\)) /CreationDate (D:20251212050229+08'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20251212050229+08'00') /Producer (ReportLab PDF Library - www.reportlab.com)
/Subject (\(unspecified\)) /Title (\(anonymous\)) /Trapped /False
>>
endobj
8 0 obj
<<
/Count 2 /Kids [ 4 0 R 5 0 R ] /Type /Pages
>>
endobj
9 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 2959
>>
stream
Gau0ED,]1[')nJ0U!;HE!XiJo1h5A/m8gNXKNo:ON3bdC,<:QsSD[t0f\&O2Dnk_3d>UQ'J5gOm-!Sg1oZP]ZGE7$di/c@[G`j>5qoS\5SoBhaLC%%]9)?:K:\kUI+)j/:Fjc633_t^nWAKRO4F!E;##BNmr4Ek0J2OmpAdqe4^`F[3$MP)5GMpK:S9Jp;s39?RV;5#f0j6/_0Lrg>0g1,lm-r'WV#N@;Y9[oRI#tgf^I9nNO`n)YR26AFbRX]M<+>ls>-LU*B.+Bk0U#*PC.d"5/qMeOi'mJM_b5TJ:]?jQ0BcVpQSlEps/^D0/J)jWD?6</<9GHD[=HiP%m[TBOf:H7Kp#]0,fQh*jp^7_au-0R6'[r6909!"ltR3(Vno-=K!NoZjmllin+$Cl/%'<C;ot71WS@)V\KC=Cp"ZR3i5I//CtQ63TVLEL%</fG=Uq-j.G61u-8RjdKGTLDDb@'(-#RV\\WXCEgN:T1V(eW'H!d:!KENkP.lM"4J/Z^V9/,%".@'fA>d>u^31ceOX1RIkZ%;m?4W1>c?'UAl,FHRAa\K5\GZ>Z,Wa?6D.s:Hh/7DpeXRomlZ-0_JBK>$&\+NOab[EL"_qoccp#"0EMmon2\?M]X`RnRN2M!H"rtj8m(`I@EG%YGHV9n5uGpGZ:KVgU:8tj1c4t`[>?'le+dZm_?6S^uZ6!VN'e>!bC&'QF<"n3\(P3"ZY"b[E5IUosCrBL;i[Sir4B)3&tlf0+?Qdj@,MPnFs1qAujXo48gE^7Y61V5J<`H,b.%UT-0PL1Lc+9,3^Wd1Ai"8L5D'W-*5\XYi':G+iFrkUUkc#2UDiWEr;*I?#GK85j4_Abk0+V7*+E)%cn?&_D\)W\Or"Rm!-C5O+_7>M@2ObUm#UT<$4"BC8rcUW5*5+Gn@6X8Qol/N.^PM%=AlGk0?Kb.>'ZRqE#<]EL<pCsb9>%lFgYo'SEThK&GX0gR@*.^#p(;S_<r=1*a?H)%%_6N`OmP!WHk'd+J@*@C-&4'#;(ocrZR/0sJ08F2<h]JUN5GM"'AG0pc+`Cd0_,K13>"M5,9_JD>'.-99@N(mf'W:.%UjolGb-2SSd^4q)Bg:MkcHP]BR?n`'Ek12"*jPoXnDk4"Fg3_#o,c=0O\2Hg0fHPO)K:VA;LUXDHO'\]U]aCE5o&GMR)O;L*b4;02'F<1:*>o*Y0+V*]g@4V=smW8YDoq?Y#9iSi]mMF"p`1t+5)2BcuK1QIZV;i<cLgUZXFJD220=h'uE\5Su30rf#i?_drL9r5b,U\N2#G3[N%#n^oSDi-5K^DGu=6>FImS\!O#,:7m^DNCq-%:Lir!E$km#E(>ND@S_m,[<"NmnfP@)u0us-4?8KfMEd5.llr<q7Yb:s1]A-LT<?0PA09RQZL-k86?FKC0iuD.B_rFuhi`5ECWJ,P,_qf0Ap60;fn='QWBf02o)Y527&X1JM@6FA`F%,2X1oOLf2sVTJ^arcM/bEf#6FikFf/;W7g7dO4gYo=q3IHll"KBZVLa;E1_m6%9D2`/i"s@)6i%(3HU>)1)0k_]5`nLT'#bg$H0S.SR/V;:ADsj;f#5'i0m>V=#bn'Th$s/")FT)dJ.4A0-rM[$%67.dq.$c?ee?nZK^[i:FZ8%!S-tgXbGaq&kV/1ZV*eB_J7O^K4NdrG!QePVMg<ai'@aSa<[Amtrp%mlEp/l!:&c8rO]M6O^$VDrTOZ48Fn,feB!7o;k67_P7-)d`aiX&-\O0jn%8CXb!qWN(5IBq:WA?;`U;b85$Yk_8(NI/G;H%o=um4Trtl#)2tAB\2I74APV`4btpLet5='YrEe'3+f4#jfBO_,&2![kXD<"=kMDoqYM=hit33GsPO"iDqQO^'>8d]#uS_M?S25ep&tKXg\TU#ZGC5HUKQOW<=tkNF:/UrID)RW3CA1K7VYMjO"[tkP2@fSQ?$Bc1p+h$^7DjkNr^8/ER1b/c#0fMGj:qda0;cOF]AX'A&_fqljQDN((<n@-6aJ3"H3U#[D-ELVkKZ,*\'@+m;=]SarY^"KWA-(`khcJ.L3=m!p!c5U_+1Y)HEpHcbGfJO&mulhI`%o>OJ4fb#]6h,8m6Kupb2UGAj@*&Jk%",]W`,,N\Jd1B")JmrRXMd@s-AecgQT2<B*<jO%Z`sI=qC]hkXK1NJukZ0.V&P8JVY-.,5@Hk.m"?4YfZ"QXM3#R8Afm9HA8Y^KQ*5gGjleJ)X#kl,8VtK);hPS2:W0S>M.0cqU_Bi>0q#nnPf#_dJ/C_D@H`50G@)n8hZ3CW;IUoX/EZ%ojX^&ZU"bT6A<O(LoYJQI.1ND+(1@lK36s-NjE3>HJE/X?Nrt5s6&+KDAc9:Do^=[_eD"_V_ECa2OfjD%qo"NL5abn[C^gPksm.ED$n-'<YhtV;-Nt?8)]Shf=kS9]]A/+X!&,V_U&)dONqSfI#B6'bI]*L?_q"8NI(fW,s73IG:[5ji(!u"<MG)^J]bj#DS_>;Gm.WXO4TLP6Or'=k+]+n)G\`NU(0iK1PDT.Go3RqYHl-?Y*/&!&3Q2gJ"ETJ68QXA1@n;KXO"Zs(XP\WMAs)?-+WTN/F[f+Z^fWk)JG.5\@-d?_:J,A39%KjGR2P:^W.`83L*T3&dAGO&K^iNCQ\?:$1dogT&2%-6c+8H[VH!RW7I-A.fcrZ@4:If[*E\`;]]lg_+['57^f?t_1W`g6<-op)9<4*/oi!MMo+0AGi7JQS'2h',J>8'%&>HBo0-r/L5NK,bX,1'UfOKLp:CoqlV&_%GbL=Ua(%Ll(AlqX\[SQB44/AU059,X)ZY4UVRRESPK)$E*2S`q0afESl$Vf!tFhq@uX]FIA[j7He4Ib"f`,@UXU!]$p0()4&TjsiNf$3C`u%qjk'/Vu]"a.q_3qAY*Kr@)NuY<._BGF.`lF2b\r/aFrMfojLH$:,.:DC3I9e=Vk_s1htBaAbGgpHq=nb``;3"6B)Kf)~>endstream
endobj
10 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1987
>>
stream
Gb!;eD0+/q&H88.TqO^R39K)DJp(>]";lmGO_pP/E[?h*(mB1eJ-2SV^V.60l/Ybg7h#7B8`lb6^!kiEcbA1h7gsi+NJI*RH8prQ52m.jdJ,-LWiMlaZY4EmG.P[L8_*-A*h,-p4kmB'ojHW[;CS98(H>^dE\"MSUTRFV9,i"n'KZ(E?%\2YY6TH#%Q]E%)q(F8)O0^Bs)_.2jr!+`:'g4i=&(OJ_SM[[,N%C9`c%XBD:C_J;,<W5P?c`*08(,ArC)tMQ5.u]_JtH9Y4'g+q@;dJEPe_]croftWQ^bD9Te=$nKI7SPLQrA)mZ[u-:$'%]fZ%(Eq_FR_qhWDa@X:p\)?+nZqNYZ*TJ+o^aj+$34;,+DuYDF70*k#F0>U.XOi_,Lg#1"XLu=Zie&_#*4g'7qk1Lt"?0pYO7"$`XbZ>q8&3'WLAe0$9r:./(Nq_:#WjiHD=44Xo*>..^gqi&!5&b^64+961a0nNg:>k-3?[8UCjSLQJf&k/oj2Y?pf_hAX%?KCnq=`G>9bh']!P"F.(.]Q$tAApCqb.KbCMNQnq=6^)Jml4>n`.+*c,?!5RUs-!h7[R!%,!CBE;G9fL83,mf3\maiSHK5[.BW6kQor\4&q^Iq&H[neFEI<0Zkg,RJO[)MVIbE@Wh4C6QLSPIh.LF"fdI5f!ZYdX5d%Na#!qkQB(</^Bq.4^;5r+OpR(m(u.5M9)F.*kW$h-?Tt+$GM#qGY<?&U<'fc5'W!Ml3';mRbA,.)ACQKgIc-4YejF'DJ1Rm`WG:D4`IRbaNafARUSoa'Z_i!oD!mh$?g:5+/4r>HlY=hme>3=h"B_ZJ0aWtga(pL"b>M\>15(+5i:eaE2*s1d:bDsb'ih'GZ%_,_l($@UASO?DWHPhD8rdUn4,S_YV86R*Q6#Ro^X<GPn>S:HG+l?gcD*V!0p$\;BB+"(Oq!OmAfsaTU!kWJ&Z\aL^..LC(*15_s8.DCfA&ehN_9d>/"Zc]g1>/12ml5PC3fAiVS+Qq\;'_k%aRsk0)KW8E;56O2e"Uo<5o$4OkYuTpWUCFYcG7)4rT'*+o;ai(eQ'G`Dgm#jc@GJ0X'^^qn?8X;jje?S22*S(dpYB%t0`c0Zk&@Rq`/r/i>)$CtZKeD`<#k#YQ'Z3]*3>"S.BB4nL!NKW']*=SKdmkE4t<6\YWQKm_C^^<I&jo+BS)HF0e0.0ii])j(cHLHX9=",5"LlMt\RG"rg#f4drbp7auj`LZqN,4bYZT0.N#"_OjKT#ZnR5u0a#]$O^_8X)-X+`&SXY1EuLCb-Pk]$^+<,7n0NlAsE:)*pu"->o<OCSHT5(3L6nj8,s8]h0X5%m\@hJ-*D`*jU?;&6G%K,#!7L<ca_j9gF68$A4a"a[`ej^Te2WNoG"/3O#ASsNhsTicVk`QFERXTaFDeM,.Uh11">W0j:SkUJ]Q?!!:7Ka@EhXJK8WjBrkE5f(DP?qZ0s%_)u;Z`W<h:k7RDGJV$9_BRQ65LbQ);6Ml.'^Xs^&-cd>ID"e(abfj>aX/#gKTX)/)F19+9,$"#Jh#0Zn5kK\<Ho3%Z4>DH+geP4SY*`uRa-iu%blMn%bOfIec7#L>(Xi@/W:BIM3Y/];cuNts$DDBWal\O)^3MGiO5m-.8F&&Ce).Sr^_$.:2\O3UB-=T^%@EjjQYn`*lY*4ags#<)`D,X;P$ujkST@P;<b6dl+R\NjZ_K4G5Y;[C5,HpX$IH5eriN7.k$NGnM8a3&GecuQE0to2?t%oXgH.M>>0XiGCH.?M=:"CE4/e1Ge(H<!3[SK`Ds`('JUZ9>.fe1Y0=?;>I+JjP`sA2[63^X-oO>l=U1TsZS/mcC/$e%I/NWM'36Zn]Vo*pp&>=HqH>*plgoSk'OPI-`AA_)o&O?Z["#EnrADHRO>X^X_F")#=>#J;f,'6GC3Z:q>sX:9Hi`H,#b&/J]@a97Qo"2LGXj+E"JBB,ZFJ[emSNXH;KkUMFU^Lk&$5'27;Mo(Kd.o'~>endstream
endobj
xref
0 11
0000000000 65535 f
0000000073 00000 n
0000000114 00000 n
0000000221 00000 n
0000001154 00000 n
0000001357 00000 n
0000001561 00000 n
0000001629 00000 n
0000001912 00000 n
0000001977 00000 n
0000005027 00000 n
trailer
<<
/ID
[<4d217adb6ea6011be900d22f9d372c49><4d217adb6ea6011be900d22f9d372c49>]
% ReportLab generated PDF document -- digest (http://www.reportlab.com)
/Info 7 0 R
/Root 6 0 R
/Size 11
>>
startxref
7106
%%EOF

View File

@ -0,0 +1,127 @@
%PDF-1.4
%“Œ‹ž ReportLab Generated PDF document http://www.reportlab.com
1 0 obj
<<
/F1 2 0 R /F2 3 0 R
>>
endobj
2 0 obj
<<
/BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font
>>
endobj
3 0 obj
<<
/BaseFont /STSong-Light /DescendantFonts [ <<
/BaseFont /STSong-Light /CIDSystemInfo <<
/Ordering (GB1) /Registry (Adobe) /Supplement 0
>> /DW 1000 /FontDescriptor <<
/Ascent 752 /CapHeight 737 /Descent -271 /Flags 6 /FontBBox [ -25 -254 1000 880 ] /FontName /STSongStd-Light
/ItalicAngle 0 /Leading 148 /MaxWidth 1000 /MissingWidth 500 /StemH 91 /StemV 58
/Type /FontDescriptor /XHeight 553
>> /Subtype /CIDFontType0 /Type /Font
/W [ 1 [ 207 270 342 467 462 797 710 239 374 ] 10 [ 374 423 605 238 375 238 334 462 ] 18 26 462 27 28 238
29 31 605 32 [ 344 748 684 560 695 739 563 511 729 793
318 312 666 526 896 758 772 544 772 628
465 607 753 711 972 647 620 607 374 333
374 606 500 239 417 503 427 529 415 264
444 518 241 230 495 228 793 527 524 ] 81 [ 524 504 338 336 277 517 450 652 466 452
407 370 258 370 605 ] ]
>> ] /Encoding /UniGB-UCS2-H /Name /F2 /Subtype /Type0 /Type /Font
>>
endobj
4 0 obj
<<
/Contents 10 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 9 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
5 0 obj
<<
/Contents 11 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 9 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
6 0 obj
<<
/Contents 12 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 9 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
7 0 obj
<<
/PageMode /UseNone /Pages 9 0 R /Type /Catalog
>>
endobj
8 0 obj
<<
/Author (\(anonymous\)) /CreationDate (D:20251212050229+08'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20251212050229+08'00') /Producer (ReportLab PDF Library - www.reportlab.com)
/Subject (\(unspecified\)) /Title (\(anonymous\)) /Trapped /False
>>
endobj
9 0 obj
<<
/Count 3 /Kids [ 4 0 R 5 0 R 6 0 R ] /Type /Pages
>>
endobj
10 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 2250
>>
stream
Gau0E=``%_&:Vs/d*!1*CbbZT'G&l.3O4S13&-n!44qBh$/nL,>jK9)p?c`hUE`Y\$E$FS/SgC7YIhR;*dGKY+/a,P.1#ni"V73qJ;[fW&9&Aa@.YXf10XR\`m^>*$8ml=**CBOBc2\Kn2fV=IcWlgoBY?Rm)f2\?.erdS07s-n-gK0"<PN*k7LH+]tNu[II%daHYOK`bb5]%NUPa67dkuW]qAS9$DJ$h?_+])KTRu7DZ'^SqukA:"j(+O!LCj"@RLh9Aj\"862oluFc`(!*2FYn%KR'srAW\Bco6qO(C0AX.m/+\b(ho#?t'k>=N$1)R#(PEJ:Iog^FB:G6Qf-o"BDNcY5dej=,pJmT*E:%9H=fE[?F)H3%<&Sb\3mnLQ6@<E>"KNS3+R^r:6tR;BQD-S!2Fi](H^aXOq_`ZPfiU""0md%[ODq:ZnrQ9jqG6"5CqGA<2fNU0TOIY!L([O9oWiOce'f5[UueWu/'<P"QaI3!t';..?HV&2[7=<:Td1kA]a;Q=2/I71YUuTY1E_%,`<q?1"FWKGcmfe2\@pK_^qb]=YFC'/V:;@CE-,YIFZU3-S87Yd^tff>BY)+.q]`NLmuW7p:>IbW;&`e4MW&;X;t2=LBIPR6!GVX<YMeHj&p#/L4C[1m)Yi>fC^VrYf9;ftnZ8*[eH$n)=KIkW))g!IQhm(jcs-i)q&;e8Bl4>jOS"pW0lS$8HIsA:;3#k0aTG>T3X"c6:s.iT!4rhFVEpf?&(BIIM?(G.uf(99`f#L6%0[Q4FbE@kiG<FN(`(,sm]g/%u1mo*'#VW@gGr`9HE^kZh_4!s/I4KuE6":\1eWjYY]r8+VsB7IH+13$BuL(_]GT$rg(@Por<#^fFGh@$$&^&-PWc%H0]oItUCT+6(>6mg[/ts$o&V1XUJ9G7(41Q3_TDnIIq]/47g'A:0%bT0B&8+\GJt:Op,)49"[lZ*uF\*5I*3MfbHRL\--i+%Q)8I,*JK2II5s]?ceaiJDG`CXQT'CV%,P3+LaRe@7M1>do!=R)h1X9Z]E7b?[q7OpbWi/WRdYA/@LdJe%"+_n:=QkfprqeaVcC.%D;FY)^9G!?LY>oH$J\40]G_6S[bjM,SEi$8@Vf9Qd`3r4@#'>:(L.R?2E*Ri+I!5@O67"VrKNWll21KU40Qb$7;@:gIWGIPI78F&VQ2WM.%9:0`5KaTWk!>+!FVEm$FGV-%#q\?A@(`0*%5]fk3l&=jd<^#%3Os*]m]UTm:;PF2&>-`,RJDe$lh,m45@);aS0P85iTF#u)+ja'[:cOH!Il.1q-Lq+h,W,6.>#,iuSOgb>\V[9Ji""&1"`,8b/UXeYGaV.aQ$J*6ok*&V%_iQMLDK4h6)gl=jl%B]uaW:S1[Q>8#j48U:1uCVi"g*?`U+sBUV"YO'!.r;P)[@i!I`I"upF!66HdJ0V/1EnWH&C:UKe?'$;UgR[=-J*(pe.\Q5$UpJ1d@hIaLEl9GI12IGW)K'#RrgHV5<-XTt"XFi!nh--V7N>.C]+]Q7'cNA]E4`oh-AABk_RM"9mjA.C#\2B<M;GJ[flQP$(4!D@tu6b,Br=lVYC9,7o48#mREkBZ^ep7lX=6LA]-Li:,.CM=nK:15&6\?a5L/47m;=7+S=j[aXGo?J)4PN&GL'\RDPZ*4g2C;[Q-sZ8Y^.9^AaLM\^$EY7k!Zr$ePLXK3De9?oq/0<fJ3Tq[.9PhG1l%"YO,3ai1/a>+?EHS=&'Q%I)X<+^$V:kA4<8m'D(>u*WfOcq9tZpCN_aKM%qk+LKU!K3%:l&nM%Ur`[LUg?l;hf64K^sVKrR0.C"D@`?HQU[Q,8iWYYPUZ2njF=5jk$mjIH^3;>j24'YTVSJVH`ftV!F;$(K;XM!YZSNQLk/<bP(1Rj&5>14-^@ON-1Jl>hIKoE\?WMqGQH:#1!U07Y"(nsg^UXg43<0^9clrXlFVL(Rkj1Nc$W:D'2'qnfur?<"<GsC9":1\PYq%S+.'7)YQ@pIis/^GSQ*)fcl8Yp[?-g2<Jjc!*T#roq/UpaF7luZ#>.r:9^tk$/LhCuTk`ua5,A?jMZ'Y90D=j.dEjPaRfS=&lE?u;,R4[L!O>_=`qUcEo,3u#kk6/0pCO*:WkNj;$9rY22gbP!mQr:BJFk1_=LpH$$Kg@.=3I'6Zgp!SK*ZkW+.Sm\UXogiVs(@dfcVJK85RD)>#9[HCU<4_$h=dQal6uLSnW&^qtU0m95JqJn!r=$c+pkJ=2:NOs-k68q]Be++DU~>endstream
endobj
11 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1856
>>
stream
Gb!#\D/\/e&H88.TaW?2%$&JS>!kJqmC'18r"aWnJeBftfPsre7@,j1]/9EP]-AUoQK4E#A70@C>LJYHHg^=4UM*'R6g]-g+c9TdU?B;<LpC]9),V!(B_6ZDo4[<j*L]TXFt@@%P"9@+F%n(,K?#^s9St*QRGa=q.)qCkk^'rFCJqnV/GoOW?kHC^M`,HL^>A/o67FXB:rAYWS.#,S[sc.Om</,tdJIVL4mFnT:RuB$a-r)Jl;fP\\/,/,=lfS)g<*+D`8Qh->I`IX4eI=H,Y0LVS(\U]+U9tppT6&sUCP1@(VK_J#E"0'K,hP0U3lkWSHI<Y?g='<69=&*+tONJ)G[,;'`:=_rJ".aRoZEZ`Gd87*nM&m(n%jf0C6^URk[f4Z5nl@($dU6f!J-g=lY/=@#dHuYUW]cT#t5"pbFatnBZ'IdTt.,W]!gl_^#\G5jL"U$2Wsb#UBnU#_BTtD1;BY!Gl>W%\FW9mBfpg^cEAL<9tWu9WV'pX\-M7@VK\V.S7:g'>ZX_SFIhC)%T;>`S+%'>bA+.3ie:&rYKi*(@AnQns->7,ZY%k@Ghp,'!HSH_JR`0Id;-.4\+"FnAu;c1Hs>oAZL2Jo3ACd!;=jF$dCr88;$sdgL<g,P,@P++I%)U&!R+rI@`$si]0+3[RHCI/&p/;UZBQ*1gTd86!%rVH&C^[B?^>Em4:M:g5]1MP4_E\i<>h<+WHtE%q]7]M)K-cCEFN-$5aWfUB@&\fSM"GD5m6lEH8;[^_Ju1bnqhT@(@,c]fYKZ%7&>;ke\Z@'h19[/A$p](uk&)BiNp.?HP?C&B%);IXL4L_mY-;$qC#H;??gE7Z?^uT:iDBS!QBY=AS/=.[P<:#/IB4o<9lk++P`kB#(Il<jdf#C9U2F)@R1m1f3Z"+`%1;ElAjDgdf_%8M%=2]3b4?0f%l[!$8edNA._)N6se:A#A0TF=]LuB;r7q930P7*J=k/:;p*^VS*I5(4>aY?C];=dg=eQVf_WJJ@S@n"T5Tl&Hnq:i/)^6JQgtaVuXZS'AcKQg:bp<jQ`i6.TVt1Y+0A^Mrb-e>:<jFo[1iYc@rc]6\&rP#'4nIaIWaqO)H/VrV?Q!.D6bS+FYDd:"I*\.DEM.p.<S2Vt$8Z#-K9*ru3bA.5JOl.)o",L1^sm$8)e'8BBpJ)F.[tU&tpIf`a^b3R;l,5N6'*ph:46kqt:@j=RlD\]goJ'[iJse3EKAh50t-j)dR,"-cE8-\NK<bEl9#*:DRakYIiTTl.#ob^LA/a$W&k*)9ur"^an1S8'_Hj@0/K7M8e#-+aD)WU7nflcBdmQl=h<BBVa*`[=/X9to=#IG8<o(3WEkjD,g<3'>B_\(<pgcA=ZZ[huc`rS1l6XX`mACXs-;.CZ5Cm(AKOcYV*M,Rqg1a;>^'"tPbZV7UYWg]PpS]Qpk#'3bs-+b.J]@9s[abUsq/C1=s12\Z6`$+Ysi:MjPURu+5o@\gW'B!N2U_:<@il5+u2Us5Z5?s?tJ/Ep<nD2XS^.C>b<?^MP(<Y(.N\#4!de1mpldSWqZ1YD3)K0fXUE"N]m>fWkXre1J"4F>rW!GJp3U5Posl'jPfY>_U,%Q>mIc$D[TV`8Alq\%\.Lo>)r&oER,/be+!B=@.KQCd0$.keUD;QEMV>l;tWW;]c=L.q5Z(ci@Rs'JM/5`bMkd(=l,;RY,X;7=FC.B=2:d[\P-1Yi-A0i\i*lbI>5d)\-^(%l[\ej`^A.lLGbIb1]dOV@`N`H&E?<]DseWC/RRCgL.p/C*!Y<qU5$%_0<]Fc24Z%r*]r06Sl%W86R,[DHD0>,u4n6fO(Ya=T%"e5kj-+E&Q<(KIn:h\]@"G16R)mJI?<q)'Z~>endstream
endobj
12 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 725
>>
stream
Gatn#D,1g2&:hOi=0.5b0-4\;Am`(C8J)\IgU+&e-6%hZnKJ0*,G?:Ohjp/cV`@BO8TX:ShX9asc8.+]/3feJG&GOIA9M=4!As&!!S;H@]f-1qo:lC\9t/aI:kmE:=EZ,si-i8n78s58<ZO("NEpJN3SQr#egA@DlZ4jdCO773LtEO6Wlc#@7Rk>bB(ScM(XWs07C;`j+="CTcLO%<I[eGq0kZF4dmehbV*0[19F_jV,I5&]e\6<l&RikY1R#6N_N:Bi+FIEALlmK<&VhS$B&fT6n#[=$6F3aib#M7j13uPM(j6H.U5jjM/?8*@=#ZOpCi/KN$[D;u&YX$HRA(cEe0Y5[MA,f.E`2qqPXFUa"bVJraKE;\:!V7`iI4GaRN31p'\SB"]4F&`kd?XeS5@'R1((O"(9h1o'Nd@X^jDaIHd>at46YSXi]btnWKdEgT4G8"Mhg85GKtbUo1Ra\e4G`.r8d70-TF\[ia[Q^8m%S[b7J@Noem5o3OoCPYarNQYc/4/!_sKrMM]*W5fNkI[-SkSEc8?QZn:m#]d+3bNdoY&as4!iH^a,DE)hi?]t9L]2Ut,_i&60(Vp\F/FViflQqLPM**pj6e;')?;&-)]6,mEc_m);^eF6]NLpmf2WN-Ehm7'mjdQbcCK8jMK5;9aaO<u^pN$fQj*ii`*CWJue=HF^?Wk8o<Xl'P']`]T>.mNdio>AB/5qSV(o*7kZLqE~>endstream
endobj
xref
0 13
0000000000 65535 f
0000000073 00000 n
0000000114 00000 n
0000000221 00000 n
0000001154 00000 n
0000001358 00000 n
0000001562 00000 n
0000001766 00000 n
0000001834 00000 n
0000002117 00000 n
0000002188 00000 n
0000004530 00000 n
0000006478 00000 n
trailer
<<
/ID
[<eb6ba06d9be1d2291e54e6c1e80098b1><eb6ba06d9be1d2291e54e6c1e80098b1>]
% ReportLab generated PDF document -- digest (http://www.reportlab.com)
/Info 8 0 R
/Root 7 0 R
/Size 13
>>
startxref
7294
%%EOF

View File

@ -0,0 +1,127 @@
%PDF-1.4
%“Œ‹ž ReportLab Generated PDF document http://www.reportlab.com
1 0 obj
<<
/F1 2 0 R /F2 3 0 R
>>
endobj
2 0 obj
<<
/BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font
>>
endobj
3 0 obj
<<
/BaseFont /STSong-Light /DescendantFonts [ <<
/BaseFont /STSong-Light /CIDSystemInfo <<
/Ordering (GB1) /Registry (Adobe) /Supplement 0
>> /DW 1000 /FontDescriptor <<
/Ascent 752 /CapHeight 737 /Descent -271 /Flags 6 /FontBBox [ -25 -254 1000 880 ] /FontName /STSongStd-Light
/ItalicAngle 0 /Leading 148 /MaxWidth 1000 /MissingWidth 500 /StemH 91 /StemV 58
/Type /FontDescriptor /XHeight 553
>> /Subtype /CIDFontType0 /Type /Font
/W [ 1 [ 207 270 342 467 462 797 710 239 374 ] 10 [ 374 423 605 238 375 238 334 462 ] 18 26 462 27 28 238
29 31 605 32 [ 344 748 684 560 695 739 563 511 729 793
318 312 666 526 896 758 772 544 772 628
465 607 753 711 972 647 620 607 374 333
374 606 500 239 417 503 427 529 415 264
444 518 241 230 495 228 793 527 524 ] 81 [ 524 504 338 336 277 517 450 652 466 452
407 370 258 370 605 ] ]
>> ] /Encoding /UniGB-UCS2-H /Name /F2 /Subtype /Type0 /Type /Font
>>
endobj
4 0 obj
<<
/Contents 10 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 9 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
5 0 obj
<<
/Contents 11 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 9 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
6 0 obj
<<
/Contents 12 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 9 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
7 0 obj
<<
/PageMode /UseNone /Pages 9 0 R /Type /Catalog
>>
endobj
8 0 obj
<<
/Author (\(anonymous\)) /CreationDate (D:20251212050229+08'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20251212050229+08'00') /Producer (ReportLab PDF Library - www.reportlab.com)
/Subject (\(unspecified\)) /Title (\(anonymous\)) /Trapped /False
>>
endobj
9 0 obj
<<
/Count 3 /Kids [ 4 0 R 5 0 R 6 0 R ] /Type /Pages
>>
endobj
10 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 3596
>>
stream
Gatm>q,\56')p_%,!HM]%YVIdP,RCYoml($ZB-1_oLgk]6'f=]"@3n&gSa>K9.rj=*^)ifl+Tg@=&iU-h'ae*r^g@MP=jqZ\$EXr.oKBYj,+8F6)FIPZI40jjajc`K3C-sor)2R@p.?eO>N#)=/DRfZ;UVuHiF,K.K).t[.8nD:_a`7*_Pr4Z<"/$=lTP=]rAJ:)G=.gQ?k\+,2,hW'"rcG<4[jMmaK<VIO^3.VLPqjeZ)f2,)A=-J.d;2kn@%?:Jh/OjL5sl67(Wk<[o>Dp?`NV>:@4!Ih@(-nE#0!:AG^9$i.*H([7Q'rq$KW2_RZDWX%(QY3Mhh6oEp.&-Ak@IYnDa%Y;32&lu:,k:DOrd*MLX#RYbg*JpgSH5@kg"sunj:ru&mCSIX"Zq4>i-nQ&H$HuMD])Hq<\tOmF2\D4E9"!%\>I+.(KBO(EU:;\;Nlj*(g(.REO&[%H$'g%JM^qfAWc/:hn)Q5*-oHcWp?s@<Vk<lllR/.n<Dq6mWLsP3qIRan(rP2*J^IYYMtYUsU>k+hS0/;O#5</!B#XMk<eaTp#.ddg0LuH(iW0`=GItZd\+R/'Od1eq%ru%uZJmXlUrR5"&MO"N3iO9lX%gufd;"iYMEiiq*VT4@FpJ9GLl3>$GeCB%l\4507*rZ$Rri!(n7TfjOW]5;Q.2c6Qkl.'FB^RjKB>TmFAFO$5d!R\\-T2-V95-T06>d?_i#"-Z6-GBYWM;"UEQi9nnrj?$rTLUp^usJ8L#6c[H$!/.P3rm(7QR:\ANK]]Nfs0iu5U!"jr1\:UJQ3F7X87`CKW_UWXhm.6pM.m@Fe#)93^."ET6uJ3Gtm?ePtD#OG0J?UfOo&i$i!cIGJhY:K8i(/[?t%!N!%aD@jK/ccma#7Z];3+i&<<o@t+j#mhYknfK[bi)c\MnpFJ_FnNh"kp9Ws4h&tep1U)f4or_cI!<nc7rQ4l<hZMl$pt58:*^U8`iRh+QQ+=nJlk;8fORP"M&Xp+q@1[+R]Fo92m0-"VkG=$/J0'"+Shu5'+c\#u>"u_@Bqm'oSFf8/oOJn\F2:<eP0k\P7:V2Mi.LM[[jX&Plh3#3Z6X(;e<'oU7+pW-;hZej^i']D^\=$NXJ0oV9&!cG#oA3B8@HA;>k-6mF*n:[(EP`V7V7KJE&6i;3h;UbCD&>Qdh!0j0YJNsV22^c:3Up4r9$k^a;.IpH>?-VG>-8'*%0]4i:i>B5;q<$O/N.RS!]0mo=B0Ct6ZK(*,!Kir[-Gi#\$jN:SiD(Ncc@[1Gb9UMDi)uE&tJW]fSI[-+$.-nJXr]FL^H(`QoO&G,WY/U`&(b\[;a0?Q'UU*-g%!".PMY>LNej^^ujk/HcYkQtA,Lj";e\]bQ&_(=brqC%sdK(sseC,q#KF`q`_uc4$;5tIX#hd8hMO%X3'4r_g]W(@nI6`JuR34+`5DoAh?`]d'q$E?S;.HBJdJGjH2W^rlHcR;/.e1h:k**Xm\4(kKIo:iHm!KDF^gHPsA_/A?R8L7Y^_aS?%jkX85tYbIaX^^1=8cT:HaWh7kb;Qa1-'g.qTtd\T-n]A$M\.YhRSV5Sghl/6P/)iP61^dR=;&HL-r-\Z,"Wr"A3dH--JhmF:"T;nuuV]4*Fm.eEkT2d7q'Jg,-J1M@M6k/>jgW&9O0E9$n>fB'X\Im-r(3XW``r4>iq4U@Zt3f_HU!SeDS`N.X$pc-SO>YqY5=]gd`$([*'^YVduMn_li*?A]E$gOdTB0LY3AlVq32Rn2;1TIoV`5#!4qCEShCp(qelbHgM2\j<+;3q^!@g9HiqeKc@^=IYY%2`oQq)lV&S]ea%UMDApNH>9UB0"9bG,kAo;ficq%C)"^g1qn)Tr.&#24,E>;hp'\#MR''Zd(RO5'6to3683IF7@6`CWH('Xg)YpaN\cSJ=Ft;m9(M?WKI#3A]MNUY9.Pt95Pmjp@oI/s`h@I*oH?@F9,Pt<kM/=LScN3CRJ%iQL`0W;@]%/h164$K]oUAW?P')sFbA=IH!RZ;BGsEC3qu,Q'6<'.^\pD(j\.G0Dts#P'Aa]jW3d9J#+eR]"\EhJ0tg$"3uJDladqBJHNYR`AKEP'X&9Kl\3$iN<d*YCAS1&?d-8=s7;nK!j:/$#iG/?IpQ21IIRoPB'$_<q88"L<7/=Bj[BQpO`_^,W=D/AR;7$6A?3njG?t\/I]*9nEZ3a>?]o]WL1eF.U%,'Qbs67qXq1EaBX"*cIJT)'\l$$gO&+0`H)m`PY5:_@Hc.UYM/m/H^jtDbdNBW&b$E]lPDOg$l\%FA2WOPPD?[a+dZ0MYm.W(05TTBDck"gC8or*0h)Mbtl'ZuO>i[(4l6>s0+HnZKuBY@tFQI*DlV@K_PUG=^6@gWq2KY34OK3Ia1Y#6^W,a=;"^8WiCii"1&\V:rQJ,XZ@S?ZYR)ORkT96Stn-q70d$W#-!nZ7Ab9SPJP9()U%22`$D9I!0rp1(n(2,)^I/)05mZ.O#,9-.><7'cL2'Hb$h(bN4b=']8=-CukgA1aFs+:D2263XP70AGcF@-?B7Rl\O<!g\Yidj\-8=tKS`j1,J#+`2U<%L-=aedLi32WHUKF>")O_mBjlNaP=X0S[`AT:m,XY6A[7/CC6T0]rUGP#U,A^#%mm26$b(EMTB$&JC49HFl^VWcJ0!8rk;sDSdfT=rD.r=!-mI5n)ZQo^>@2<(U0!Y*GXQ;T%c)r*gb74imM+I@O4.C)#4AcYmBrrIA7Xo83n!3+h)p$>%?<,?o*r)DK7q3nfs*b,YqZVPec>'U=+PK"EG#B2+=&+*rnBip,goXD'...r,'V"Dq:FP+m\\iX%PHpaQ1ZF*e-.05X?ghN0O_m%<^Bls@[%WfUJbGWu/f?t,KCV,"DL=IPbI[O]+gq=\>B8%k>O;P7H91]g26/lpH^7N9ZiS^hRiasH57^2#2<A!\@)VND`R=55kfSroc'F7p9sAV(TOWLZ'BZkViTFlZUmN>JtZj>ttab7n,sgUBm!6.g)+*Ql!qOe,)\(Zn2s=8VV2HOPYAm,!tjH$u%W?.I7Zfq#&(cJWP&:O&+9l-o:oeqcIk/$/46e7dJD%KI$UalPRm']J72D9oc/fAu$kh33G%,g+e5"M^j#SO$Q,!Vn5P&T-T4;t_-!Q?&[^(@]fKCK<-:H$IQ@:jRF?6RpZ^(e;IQl\l0/?uSD8HJ*cCPbu:R9%rHg?i+b<L]D*k;`\M**1G>NV?sWJGCRS`;II(#YYB4jJ`._m_NhebHti,I6eqiGe@&g!k*lq>Ij"6!3!nrsn'];$WN792P=<LZ=ejYV6&So+1X#U'YE9V_?^lG5G\9d^73e!a4G@B(ipG<C.ueuc`Npp-*uSeS5?ERno5E,u)knV577jr4rf]40!s3a)mBm.GA:]JQFOiN8R/D2s3tILOW2E8,4H4uSYX?812<>f#@-dZdEYe3=]KJ,#&l2t<B?,`hs+/]0H%pT^(AT:&2J7F"%,kIRpot7,afCS7^;=l]@oLREL7-u6E/PLV$eK15,]s!&nG\5N3A\1Qiq=;q-YS!Q8$(2T(WNt410>JK?Z:N8%0=P3:QbpZXK^U)5ZL"#9r(E>h8c\^]al@="dPT%[f8(Yo&0O[c^6Z~>endstream
endobj
11 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 3389
>>
stream
Gatm=CKD3A')h7%BP3Ba\Bs<31:'VDO2DrEB;OJmm*p.KCm:iL#i`G1I3WWA]t,Yo))u@;h3jBC&N:nO7*11V58)<0UIJa=fN<GK)cAPJPD5$b;.KC0nR?b3o0!sl7]iPMZ&K^JaJO,IdQ[N=W>bd)l/"Q9+u?c52hjgJ<&J,<P9j!&qQQ/sD>m(j'M$LC&g>3igt+rNk\Hop8sHdV]q$^6'C?41P)3)F9ag<<(5T"+rggdPSL"#q.&VA5^5s'-DQ1mtpn(lBrSOqYU*K3r,t+r!8@P':lW-GeL"E9>=bems?N(m.hFpZSs1tF2NY>t\J$^nP+C3?N,Y<YG,g/VuSs5F,n>AV"4b]U>o(:]$ZgVh8kXU!280@DhB"g"TD[[`4(o*X8Bjd&dQA4/cA!%jFoEEiZ>Hp&gBSe&DO[LdIYBu?,Unbe,l&P\@gnZ66GfI?rBq,+OV2Z+s+9?oEX<EbqY)a6ujCIMN`OjZf\,,to3`<N9"^-G,+u^p0YH\o;.sg_JH,u>f:#H$8d0dA_n@HLrl*(QkntQ:J2C`WA6!`]k;PW*(&ces!2[^%a\ckglH@rNp=6Zm(<f@hhB*JP>AGiRUNF%S"+;)a_c1G6JM]Vi-/i9qN3ms<]j8&pOB+&U5*E+2)i-T#<1f[#IZ#/PF'IKjm(>)l\'j(%BoSV/F6&I!,`)Q#0A",'[V%0Qe+r0*-7tuSnqIF?QkP[^I5[[kT2b4T<3=-jJXlc+KUg3*(C\ubGl<OW]*rfJ\gJUad\Z467[^$(Ge2lfVV5WJ65/SoB(Z1V>6L0(UcdD'-OHsK?$*e"P;#GQgh=K:7Nu.`XnmfK/)eKIXmroV4ZBhcmN-Cm$ZLHpFN!KhBiJJ:kFd5Ea(7G/4"N2DC1j_]Tm/@h<c,2JI<5\DVC>)e/e[CN,[c"<):MIf&*Z.!DQ=^Pd)F-NK?`_QFZ?:$QlIatUEc873?4LkW^!2^RD;-Sm'NA_GD(g%?i6H<1Md&N?.!l'ako2uU*R/gOWp9[i`rgVcBn_i:_4qfhXI_pn?)sGSDJBjL8unGIaVN[[l;ZpkEPR[i@sZ!&*AV6(_:,CIL1Rc]Nb<h=CC6$>V$6X*90F:tSD#Z(ga:2l4O$(-UR>EI5n1^mfsImHg-m>_^V@Ud19OW,Y@1QtI&W@$J*jG(!Tqi&8p-!!M!n$<Y[R!_k<nKSe`HYH*)N<bc1pZr&nL-*K&mboO&/N<7-c6>SZTWk]^3#qfh%h<66/5\Zr%,8p*DThJB5Cbb$J4aO,;^cYdTa7:6G:IC_1^91?#@0BgIS-VB\XLK[9-*ml.)t+eZj="K&1_lq"4+pWJr#":5kmrI!MM)..4Oqtp!@l`KBu%gij40R^`FKW9"5I0JVZ6<Zfk1BoR,=K*8,RM_;HXqI!31TI[0?n!*nm?iDABrPC5a\QJ[:o[ET8djsn;NqrHIu%n[H4oq0QL$X=Fp&KD;##d(2^[@(@h.l66(l_^p"tCerES7$&QO^)FVI;7A.*8oL.,@bcQt_VZ.t8ln$_,\dnoY,?AH.ci-m/_=pj]r+R"F"K`Pq3QZi-,FA+-Qp2pH#RAsEHF=7cNZ'%Vlm9]5-.[@G]oP)5P<HDg$]0O-_gIqDU`P%U[94!1'K5KE#".nO?lF"@9Y0j3U\Z,jIRk?'r!gj/(H(Q?O6"9o-rFB^UfNW_*g(Hsf$)(;rR&No35rti..ntBgrL`SuLkVp!qdXO5obKl`g1dB(]Mp\C,&Nh#\S?^;M,q(Cc9YG;"JG#b]5qJ"S[6s,Vi<_cJ3,j[NX4boKDipBio<n'3!]fmDYP[%IlM7-l>j9-qB7hEND5mfh\o-NU1A#<MmWVGFl(fL^seKcO$a(KI"u^q<2[ui4.H=kJIF!TL1&?F%/9X]XMPl*6QTWLPri57Ci-i?R"N#%Ebtr*]dsOGlj;,c],,LRo[t!L`+N-cH$V%\F*NMMY_V*3?Og+Nr'9:6asjs0h\$9]oVtIF*k+51+j9\qfOC-bBSm\(iJ(iSL2'U"Z8sm<_E`6NUTM]Tg_R1O[<O#/?B_Hk?ZgjHc]C?#`1@tRbpJ'e`*Eu!9hFT$0o6O!<Th,E4?C"1r1hV$I:HT6VBs3>>hM*i@UjcBEX2e+ch1TPQ^]f3ZS8,p#6=.2@EeG::^mQJFb?@pTf%G?Mf<F2q!V+`<.kX[bF&rf[(gY*m%TF3L5QAsMB&A@/t#F,Q'*'jHN["e$]oHT2qt1N"soMT+[u*3eHMGi9s%XMN?"4nCr'D;D(G0eE#8FeZBY*I.I,EUZuUCmS9EaOE;\ZXTa@\_))ojdQiZV<`j=FrdJ_/&YT*J6SO+>u:K]?Grq$(<e/cubVY:jdcVmh9G#ONKZCU6>ELK.4/T?nqej\hB.\DPK5UcEYkE&<bX-sE4hXV<a+-Y=EpZWT2(5lXn>k77KSaV"#%K$i!Ha8Tr@>mO'YrLj;-c'plX/rkX/AUVmpuAB5q2(MCc,`_dCK_ZY2qo%lfn-i5hjdu7/7ds7G5RFd6%['T*oZ+6,0<Tq)0[Yi1lJBOSKNCe_h7CcIS-$pi0GHgA#=Yk7<\8W%OFp6n9\.k3Ah[Fk%c@mWJ_m$<ba$mOY+),l?U+8QSW=(=W)IMlcIpV?%_;\Mhij#cV<<C3'\;r\J-+JM6%)38coQknYLV4+Oa2=T:^dFe7HJ#]?D0p?U6q#SJ;cV16:o1*\4W5E92606b,4uF%gN@o6mF<Wc7=rQTJmE=m,9<X[G$31\d'0hCR>J"JER#_<,tOk/i5*(oD90Q;:"+:_i+^fK]36rd^3`d.=8iSJ'H]-bse.A*&5>="*#/jBG51?tb3%aIsI53aa*l'"MQ`\I;n`rj"'q9@QX2dSXLaacMcI[jkU$#N<n[5(rO\.<u0\)PRF9"g]fdF7e(:=jg)cXCS`%_Ia0nb>))$,KSoeQLCGqOhUB'4ASK74hQJT!*YJJ&+5)#!?Sr#ASXC6G_.Y;W][du5/L<jmH88uhfJ=5kX.>07dsMGC7\Smi`BAJ0;HY[c_WmnZ4rSd)'5->0qU!uKm8Y'o#=TVf_hsJ)p\R49B:qFgZ$!"_j7/Bm=5!6lb\\L]e7]L*kc_YSnMoe&`$e;!a!OD\58\_nZ'rD0S.:L8b-u$aSp&sY2i;UiIuP"EJ9DQ.:es@#KdHbq8V$SoZG/)*P&LME)ut8FIKECT!*/9YF0TDl5,\"<RW-.k6p^07Y'B,AB3#aGW)@]jLJ&LTaI-@-AC_3MXM/V>5ke(BoP%$8_1t1_6%(g1WbW(7A(QOQVGQ,:jL'mGrdO'f?[c"WSWV3@FF3GDbGFB&RrO"6c\Fu/"@]7=I^rBc-QRF2gE7s#U=Z5-pu#YjJ!C/CF-V*n6sGJSSBO"',QNX$>ZN.5EED1+onKIdl6^n+8L]'XT~>endstream
endobj
12 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1401
>>
stream
Gau0BCJPmN&H2$(Z2'J2UsA\Zgm?hh<ReC4R_fu\L:GKnW<(&A$#V..2%]b6BBJX"G.`YXLk%q+4*,&\R55@E'`EPeO3a!MV`aeC3@',Hr\ae@RO$ccI`YgW/LW/E-ah<Dh8FMblBUXr?`Urm_!B/$]Tlq=J,c(H-jiq)D3CMg:e\GT-:_=OIIo3AV>)_&$h-UVV8F*pnYCJ>Wb8@3N;n;J:d[Ki7j$rpE*t0qg9pX3Yo\T1'\H:0!&s9r+IE^8AjL-Z9EoGNOF69%TWQqC-Vd@Bo(3KF7er@S[?]h%,_+#Xp)@\Nn?lu9CM6o0YFoS_TMb^moRr-=ZkF+flru:FE0gi^hTc<2Z2:p@@M;)?/-JrJ;,F3'6$k6b3*eTH]Us$@"C.r`fLEup:8]lB$rZ;,!;6!Fk$UC8HseU@/O8%e(Hm*&run'b&bF\:U;UbR%ZoVi$`t9,K[f9CQEai3-8"fs"`iH=1092,T)mbopEb[j[kEOr-XUm^DeuP$+l?lG_TIl3Ht2MIdZNd*nc=qtX:;CDMPl2>K^quoP2tCWjQ.WqSOfZR7f$:G-!)>Q-OLS*A\qK9lXaNg%'5$LPg?T9F-#V7Nd_pR0_>sLJR;0`o-VutYrV&D<<dZ3pEr+W;hEr*%r.NPp*A^";HF5B_V+?AgS^kCPoRb!ha^*Ykh)T)1,bfA\C>Z+gJ!7>b2D-Vr3+BhI=#e@Z!=,cQ[2h@p?iS4,$FN<]q&Gl'PXWa*D=i:#..E+hm?ZN;"kK!KIuu%-uY-G=\#:\^hKBCN)XO%NEES!W*nC?(/^LmgJHOl"jc`^]0L&jmE7UoC3B9r"#haD<4p)"oW.fV97W>?IZ6e"eNj"nDQFBoa%m3n*'h*hl%:bD#,o40'l)?&"kGtNE(=)&$ANS^`j5Ym'EnhW.V:pe"QR\X[Cs0J\7$Obj&9fSDMA/Ib2CQ4N%3'ceNh6Lae3pPJ30IFR`OB\7]cM6%g.-07[ar5gZR"L(,%WrdBBKD>rc#EY,I,oNVf6T"?u"I@lM%?cn'/L;8m6@J(-lcPBrcSGr<i%FX+q7lNe]\=j`U^c<23L=X?KKEa*_,A$T"on>a\/22su#5]+\PV#`(h`)$([C3N];%CVdgJW.Qo-"Y\Hq3IL[30@Wnqf?(?mXHfk=i,RYPc93PE/d_0AH,*R2L(#lZX&W(FgEXQE\Y&0DZnuM=[NWUV@M,RFMgC[PtbP^H+>]eQgaAmbN&nB2j<q8ns;*CMk/dKUl-!2[(Ke/jt-'E-CnTYP=Ed;";r'1ThMjQAP]<8$Y@QO=mq2(D'U-b,2.E,/8SLMl&J^-HKXbmb'GDD`M^ZUFi\:SrM.^%^Uq3?OD(\9??Z%jD$<Vd5mFXj^(W=tHBT%Xd?!^U=E4,9Vq.\#C&JR>:eiG~>endstream
endobj
xref
0 13
0000000000 65535 f
0000000073 00000 n
0000000114 00000 n
0000000221 00000 n
0000001154 00000 n
0000001358 00000 n
0000001562 00000 n
0000001766 00000 n
0000001834 00000 n
0000002117 00000 n
0000002188 00000 n
0000005876 00000 n
0000009357 00000 n
trailer
<<
/ID
[<2bb5451d77f322d520bad4e5a0c8f79d><2bb5451d77f322d520bad4e5a0c8f79d>]
% ReportLab generated PDF document -- digest (http://www.reportlab.com)
/Info 8 0 R
/Root 7 0 R
/Size 13
>>
startxref
10850
%%EOF

View File

@ -0,0 +1,108 @@
%PDF-1.4
%“Œ‹ž ReportLab Generated PDF document http://www.reportlab.com
1 0 obj
<<
/F1 2 0 R /F2 3 0 R
>>
endobj
2 0 obj
<<
/BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font
>>
endobj
3 0 obj
<<
/BaseFont /STSong-Light /DescendantFonts [ <<
/BaseFont /STSong-Light /CIDSystemInfo <<
/Ordering (GB1) /Registry (Adobe) /Supplement 0
>> /DW 1000 /FontDescriptor <<
/Ascent 752 /CapHeight 737 /Descent -271 /Flags 6 /FontBBox [ -25 -254 1000 880 ] /FontName /STSongStd-Light
/ItalicAngle 0 /Leading 148 /MaxWidth 1000 /MissingWidth 500 /StemH 91 /StemV 58
/Type /FontDescriptor /XHeight 553
>> /Subtype /CIDFontType0 /Type /Font
/W [ 1 [ 207 270 342 467 462 797 710 239 374 ] 10 [ 374 423 605 238 375 238 334 462 ] 18 26 462 27 28 238
29 31 605 32 [ 344 748 684 560 695 739 563 511 729 793
318 312 666 526 896 758 772 544 772 628
465 607 753 711 972 647 620 607 374 333
374 606 500 239 417 503 427 529 415 264
444 518 241 230 495 228 793 527 524 ] 81 [ 524 504 338 336 277 517 450 652 466 452
407 370 258 370 605 ] ]
>> ] /Encoding /UniGB-UCS2-H /Name /F2 /Subtype /Type0 /Type /Font
>>
endobj
4 0 obj
<<
/Contents 9 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 8 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
5 0 obj
<<
/Contents 10 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 8 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
6 0 obj
<<
/PageMode /UseNone /Pages 8 0 R /Type /Catalog
>>
endobj
7 0 obj
<<
/Author (\(anonymous\)) /CreationDate (D:20251212050229+08'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20251212050229+08'00') /Producer (ReportLab PDF Library - www.reportlab.com)
/Subject (\(unspecified\)) /Title (\(anonymous\)) /Trapped /False
>>
endobj
8 0 obj
<<
/Count 2 /Kids [ 4 0 R 5 0 R ] /Type /Pages
>>
endobj
9 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 3406
>>
stream
Gb!#]CKK7]')eD/U!9*!8-V3TOBOQqSRaKg!b;ssY_ce`Yqu0oEsX+Rn=&5u<O]Rd9-D8Xpoju7[a^B'>?/-RP(B8JM/3,F#[XrlT3o]*Wh;K^A694lp7("7p4MB1dZ"\$[7E2L,D]i4e$4ukNuloKTXus-s$%AcTJ^;hblY"p8:.:#KtN1=]S!:EC/WW.5^RJ1l.dsm7\iY4mWp@9)5g)`mS?W1p0Q*p)CuS8PI(Ypga9:,[CS)Sq"=_\A-;$d@:4T.B+Y%J%OMI\6sS259cRU4ko@es'OPs*&UXo[Eg;&Nf`QVZpp.[ORGFA-RNYM_]G^h"#]$<2)O1Sq]#Y'e!\1FhAHX3<5f;:^+0kH\DPo3[[8qXR$J"ge1K%SIlZ)\7&,?q2gSn$?A#a#2+]XZG<SU3S&JoBMUIfS:bgK*+djNdWbb).9^)8L6Dgt<cL^rVmH$BPL'Wau5'2"a/X<O2E\0G%NPMTp?S$N!=#,-17VP?sh$a$.>^`A-SV&X<K8kSq.B95s4R]/fB!_-&JT21S&N+W]`KSi^1A/"Z&(s5I@q=:0<7s#scBt0C3O*BkPZ5-/mBJN=7hXE"QoL\WGA/VhFauH71VF,EHP9-1coZ9kFRuuOm5KLnTh$n(*Sabd4<(fTf_l-3E!Ll6L;)(lB2d]OQDY.X_q%kV&Z?$:2a71B\*XhPa#u>,&Lel>Xir#.o$`lcP.()gJNi]k"k[1]fP0.cfYFdRL4d&$9V/9nRb8#Up`&*ZSU(8M=e>DEg'4GKTW'@E%iF@p&N-OM\$!]`I01p"2[Ok70&FtoP9"R8=oIN#Ws+a#V#8@:d\`l.bQDS'$?hq!JFp2Qd&d0M#2/Nmk[pA#n/0d2ibRYoKgZX"sldG#sFEZ2Ga57<SPb30<2(:d$T-)FZ2(P'9a3#@#.\%VF%?dO,aI/)g)loX)B:&4o*UL=JiKL'`&b#C9BnG2fCj!b364]:][WF/P;LF*M21/$[)CE3Vf`DYN.(am<PrLg3/:d)2ZguKc%U)a<:6=5^(LCM8)P"lD5ZTDeBUnFNmC])`,bEH+R$]\Rm:nhOGFVi+'a+bEp!@Ntls[sOkZB+F@9s\O/]MiG3":G>8Nf\:OXS)<U\j:bG=LkX6<0cuEAbk:H8a]A/D*&Hn3UU(3EONL+lu`c1t=E"7eLT5?$WXo8'0mWHfAN+>lYUNhO,<QhmnD::%f=5-$J53a]Yq@R>+kZ?<p=T(HlqJ?GhL!8T6)^BCrIRG5Ik30Y+$;n6[4!D:7c,LH#sKk">?LBT5_roJ;ClB49g7JP@F;a`0_t_d$dRn?IJg:/PSRgMHhhI.Z5^CN'Gp?Y-MB,_;?]2>n>_"hMoHNYg?I6hT]l\L:C@L)Z#[B*n588^@-KL<mJZH3>6DqoCT1Yc>[lmcD@QLWA$JE?R>UZ'1-=P)-tK/EjY!dfKV&LX.X2XjJs]jNTs_Ysa2NIL7d^T.<4ei(!;^K%:be$u55b"QObY"%'O9)tR`uLdoCXj,(8NLb)q+ljn._Bud!"LQ`iZk1G&)F<ZlHa2p;J"7*6('_FC?<+HYGK::q(?SRam_&U5n.9dcC&5QJ&%`MX/s.0DI2N[lhc[E*\4KSgDBG+O@S?Mr`G&#W=eu+UREdmQe[,>Yjd#6-0MVmmF\gP*U'V?qm2u1<)lV,bT\MBn]3#*%p"3+9caGs\"76hin9((+"H8a^L3ES;;irk1oH"?qU'OP54Zd-l5S#e_s2fa^2*FQEu0Ln^-S_([Hec*?.M%(.<dYR;@AdDFp*-i#a0(s5ee2k8,s0*Q*5>7\4PAU`K8+BreS)KbjX:Z>M*paA%LhnPR4MJt4LkEV/O<#E0Q2"iH9e?ZR3_&eKobbnS8hs[c?%4ps!ZmS.BQ;/Q^-Y6uqV9b/(0/EghUr$u!2Y<.=0n%)V@Jo;OM-1V.&7O"Kk>o_*)!^k^Bn#^"eaoj#7<+)\dGGDmK;t:Hgj(;W2%h=bD@Fk!sNO,p#.VJR@Y&Rr57L6ZUpd!gU:a_B!5SWNq3WF<@;?o@Lb.\#_4as1D*h.3-;kiS?%<j`'o3Q\I6$QNJ\Mnh/oe,X"@C9#edWnouW@0VfVcQU7=uM-Hisan'ej_7[>2PC;fAeXTknM2IHm8BKZI@'U%kPc)n[eM`8^qP:pF8Tbg(6b8,_r=^_,Bs3-9F9BsJ+H+2D4o6Zi%hl:pEa!P^,FX$G2Z[!*DMsY?)kH6i`q4*]#onK(t8Tp(IE$OA-l[gUUk^kY?(WZoE[#L\5$h,K$43OSn-630,dF#c@/tb+L>m!2n*Rr&I7Mku9(K`2FAE0r)j=gSd`,"kn`[`0Hb>-Q,gBdBII0bTK:ET!G[b=uXL;RR.jRPj.HY"ZU'S#pE7V<]R'tC:OQ\1XWlDnDLreo^'clB<N47]JE+WE;@ld^t@b&FZfGH=Q^,R-id(V_PtC<2huNTrur$6.ZK]=MoUXT_5?$]uA\D6%#aRS_]jNOS^tTa]E])sQ%C%I5ktdq4NL25quJ\_lQWH0N*9g$YGU>&N;GDtC*_phhX"Wt8UNDNi8pdP^1rn<)j"Fc`@ea7C<2p+<6ORNu!ra<22B&`V!!GO/5Z!H-9KMs3lG:i]-kg>GZtHHe2_f*Uq7G-=+7S<l2bh""11>I&`hl,_J_<8BI:q#A_h=0=N4Dd)S:N`i#1nD\ejrObo>C!_SFI9!Kp,];AlKlT+Vkl.r+[;$<4j@SOrHt<nO>MY5J5HTdDe@3lm=knC46V*)<'HP@7U_7fZ),]38OiCo6mcrc0&CFc8[H7"W$+-*BJFd(W]'rL0Rh?!PaEO-"ZF&iS.ec'E/f<8s0GG&Ef&aNm+nRT/43O1t@`Ji7!V.cU+8Al;hA@cN`P=1r\[)5(U\?n*Kk@p$R@9rk3#hpL\`73[A!I(AO^/;,Q/MN)b&qM_9Usa)rJgg![%P\6\nb+Sqp)'[[(RO9J`f1c&D$_#O3n,.^aDg471qn;YXdS;>9+SeKN's&+YMdSkiKUg9YE&1ZB#1tSA2_E*EKXMEk'+fW\?eYdUrFc5$N7#pp0a<5P=DCOHQNldYg*6jn_Rp&:XRpO0L;kBTqHVS*L2+(CJ5,+cN/D[m5I$)b#Ms\2#:q81NJ/E6@WrJ(%p7d*lF6-XKB9?(E_nkj2p.9K^WK-KFja,Scqa_(YPk$%aag/LB1t"Z-<29&1:5RG6&,.D<Cms.&etcCFuY.\uJ?odP=HS$0kM3ROo]c:.GK@Y&5&nm%4Gq_iPhCl(@OQHZ\/&X+luI)ij\)A]1%n(TIX^h`@#jUlah<ZM!mH+.nk[_cJmn`B]tXSf(njN2*/lKpdCjL_@+.r5H-^5&%I^[m/B+$"+8Z'a2,0,,qt[_6?/Tq"61\4>XKk2)>$W1p0(FM(BQh5Lba\!c?[k)FSOe(j0a1f[FOnDJ4D"6S/~>endstream
endobj
10 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 591
>>
stream
Gau0?D/[lg%0#*j@0sm/g1'sIEf9\o77.KgDJKc"+0;bjUmZb4""(s:rHIU$(IU)*4q&`X*8C5_jm`qU5*Y0^"i)P&ithj:O;:*1kTRWoS^dPdUK+,I*X4*P&n3DI/gBO?FUo@YpN,.h&8H1eU^P.P-lY\Zm/4!o,!Iff].`O+WAl)1G5B1so&BgnJVg#$`[7q?Jr,$bC2JS],]j$`iX5UtV^Vsmd9-lPO2dX#\/*,L%Do%IKW%`rm#0W^+1o;2rMg'EEY.EH*j@o@4u[==;5>l],[PL=s+`Bn'B^D%,F+rI2B]\gZtU3ol>maN+l4.IWs0'@.rCpJr/5=/J"D*8cA.ld<?+qqi(`:NGkg&Xr?]d59\F/j_TJ)$DG.0jB%T+Q]?.4W.QuTG`e0I4;e1=Q1c)*-<aB"Q.^*[dQ(<E_`.e*J"J4]@FoRiWX%VEmQ#P4@/2,Dh.^&B+g,*D&;HE5@jh$'^C%'+OF[*q3W/0W]X9b`WG,+[!8_4Zk$*p0c1n6dnO;E[u%>\kh(Sg9WakGL:Zd"u]2%d7-F`$b3EPTdNLJ10%T694rY4?[N^Mii;Ec>ZYd/+!K+V6%~>endstream
endobj
xref
0 11
0000000000 65535 f
0000000073 00000 n
0000000114 00000 n
0000000221 00000 n
0000001154 00000 n
0000001357 00000 n
0000001561 00000 n
0000001629 00000 n
0000001912 00000 n
0000001977 00000 n
0000005474 00000 n
trailer
<<
/ID
[<a197145670e5cfe071d19a7922172beb><a197145670e5cfe071d19a7922172beb>]
% ReportLab generated PDF document -- digest (http://www.reportlab.com)
/Info 7 0 R
/Root 6 0 R
/Size 11
>>
startxref
6156
%%EOF

View File

@ -0,0 +1,127 @@
%PDF-1.4
%“Œ‹ž ReportLab Generated PDF document http://www.reportlab.com
1 0 obj
<<
/F1 2 0 R /F2 3 0 R
>>
endobj
2 0 obj
<<
/BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font
>>
endobj
3 0 obj
<<
/BaseFont /STSong-Light /DescendantFonts [ <<
/BaseFont /STSong-Light /CIDSystemInfo <<
/Ordering (GB1) /Registry (Adobe) /Supplement 0
>> /DW 1000 /FontDescriptor <<
/Ascent 752 /CapHeight 737 /Descent -271 /Flags 6 /FontBBox [ -25 -254 1000 880 ] /FontName /STSongStd-Light
/ItalicAngle 0 /Leading 148 /MaxWidth 1000 /MissingWidth 500 /StemH 91 /StemV 58
/Type /FontDescriptor /XHeight 553
>> /Subtype /CIDFontType0 /Type /Font
/W [ 1 [ 207 270 342 467 462 797 710 239 374 ] 10 [ 374 423 605 238 375 238 334 462 ] 18 26 462 27 28 238
29 31 605 32 [ 344 748 684 560 695 739 563 511 729 793
318 312 666 526 896 758 772 544 772 628
465 607 753 711 972 647 620 607 374 333
374 606 500 239 417 503 427 529 415 264
444 518 241 230 495 228 793 527 524 ] 81 [ 524 504 338 336 277 517 450 652 466 452
407 370 258 370 605 ] ]
>> ] /Encoding /UniGB-UCS2-H /Name /F2 /Subtype /Type0 /Type /Font
>>
endobj
4 0 obj
<<
/Contents 10 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 9 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
5 0 obj
<<
/Contents 11 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 9 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
6 0 obj
<<
/Contents 12 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 9 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
7 0 obj
<<
/PageMode /UseNone /Pages 9 0 R /Type /Catalog
>>
endobj
8 0 obj
<<
/Author (\(anonymous\)) /CreationDate (D:20251212050229+08'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20251212050229+08'00') /Producer (ReportLab PDF Library - www.reportlab.com)
/Subject (\(unspecified\)) /Title (\(anonymous\)) /Trapped /False
>>
endobj
9 0 obj
<<
/Count 3 /Kids [ 4 0 R 5 0 R 6 0 R ] /Type /Pages
>>
endobj
10 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 2890
>>
stream
Gatm=CKK7]')eD/U$O=]A;o_r>>/XP2f+Xg-BW.a!ZX%a!4Kci@0-I])<SD(<HY>gb8,=u3"TN/>MZdSEGq,Z,6gB&Y5=ickX@F6HGq*]U@'/`.TTF@:%YagkfY4=B<#RFH")rX=rp>[3'7G`0k]u-O/d]UL6#_:*k#4)Ps<)++qb7W&-@%eN5qGIEC0D-@W^R5`e579hI]*qY8Lj4C",;']$FclYm1;C#C`P$Pp1)a6XZff&1gM*e#:@d<oLA)]sj(nDdt4a$%7)@!<=p,(E"h60+hOi%%fp)TMHIZMg44>]@(Q<!p.\m/RT2+Rm\O0(,1Js$0Y/8Zq@&p.*8<F@_<%2@?BDBDWo/94EC+D@6Kg/NS]9e9I;?Z+KMnCp2gfll:c/^8S1af2t&\NpXf>]G8sJ[nd._FI]JQQ%QSMpSg,lD0&WW*9I`3LR'_ZaH('e;^(qc@R@G#$o^iQZ\TgZh7>_Z=#t)QmbG8bE"4KgS1EfJ0]P+(XKSPSS1q,82cj-%Z"J.o^cN%083bTi*@7qIbI&Ff9M":6CfbLX&O+8qn38p-]@J!B(2^n;%2oh=?H?]?E%^]s8=R=A]j@aHS3J&]m%I(`6DaRXk+ppC^1K]8WZ"`K,@jiSnnN1Q\ljUn,aM[L>+ioW=p`*$ZhR1uN*)`@8n/fHTF:1GsP7X"t#Eng;@F8[2PJS<T2fupVY^q'qhnoPG^a)c#P)IL@prprD>X<oE\_;T&`=VERpNgul]YIaT>-.\8MtorDd;ELs[ZD,=cLiKbT[(ni++?R)#S5U`Jcq67d0AMFcIT;!CRK^t0U7/.-qn\`<3:0NBYa'<U-\9Es&lsaFUZI&Vk*F#_j>$Fo*s$V%I@LOPYr?bFPC.`E-m1N>-GpSl(DX5RU]Ge!lf:`gOcuCV6Kk*=^ZHF^ug;(D"O&TBWb(^+.a'Bk(mDMM[KZJAlD2aFKX=Oc3]$Z(B5tKWNTacOP)N3V,Nm6]U08]MrOn-W4K<5MXEs)"^tKb;)=P(>&5AeIKIP(l?A$gJY(_l<,A,S8h$3;#I0uerZJ`!lJ1U[IVE`q$r>>XA"AYp/^>&f9L(?!r5Ojaj^8U6&2LsJQ6u'`QcR0!T*66<Y@46o>uRKHBJn1C\sR?QeMe=K0'ZX@;I=5D41XU_2OGs6L7<f:3i^JCjR@1F+C^;;FZ9YPVVu"s136,:_?jOu!)WT*(%uXc;g=CL$;+1Wd,8pE^/3_g>]*L%_+Y%p54ETm)8sT+bi.mjVXF6t"R8hpSL8K138K<Ln+#'U=A)ZM:CH#THqL^^U;5>9+#dWF_lFSU1=%eLgK^n-6G+DQ9U[]sHTc5hV@"!N;o?a_7nM4:<C3EN*p1tY49L$?Q)(g^*kuBC$$Y<oEqTSL+Er:i#P<t\R<"^+@4HE[H%*DqU1jsp^>1s.,`=pb>`ip"0&7O<JC"Qr'O(##3XuRm.@To5QF;V/2k"uC.RfJJ6gVe$pW$r0."?i83+UtfbDG=,?J9X,Y9hUZJaN4VWjC^MnZR1Ti`12!<[Oq.@$l!m3c.US3;c`1@<f)&89\B_<]49JL*'d)45P,rpAFB-JpJeUru4r=?QPi4=h@K#)LuYR\TCH!O3q:7W99>bMHCTU9jXRJI;jN'",4SF5LH_omA3TL1.J%df+o,43Q9Jc0#I%?0#UW8nFe=\8$G1NTO[ooAebSWM*4dN4$\6"l^*9Q+!/I[#jc-`PeP#E^7oW;&)q'VH\d?5Ck70=$8&BNU3I%Y;3GW?!nA"kg@iTLU$XV+Q,eOY_kH^jHWkVG:4)/:2fK]')N*mSF5h=/iZ[FVnr.AnBb80Oot@8:g+_Iq6K#roK]#KJcY;5FA89Z.mI?^s5\6mkF1klAC/_*;_rp(K(,*;k>H!qd:5-@,6?nWD@0H..3H:K>EsG@o-^Es*^].C)6;]jF.]?r^Ik.&kY1e.m>j,0mIe\l,apDnLCI\#0enWB:.];Dj9K)SkI561nIYM9BIBCG!JcWDJ=uTr!#RenECt:P56763Y6R^bm_>I,U-^9XN8a:Xt_.8r&+F9@rUTAc?b5WSn)+ou(+=4"!/&H20j?L<@>`CLVXg8&;Uh_Tm*I%DY^dpGuVDf`ZMTSq<jQWu?])B;"6/ODqO<ohD'1Ld5qS+'0#hMIC]2t=r=a!+<>o24M(F./56?^AfUtQKamuk3R:"W*l%4MJDEl6#8olAbR=4hULIo?@NBk14(Pb'Lp;!off6:H#M0)MtJ?`ne!$BqM9&eOhp=#H<]ChnL_,rKan`OVqA*pbn"@[L@uTDI%_d/'j8L=Ui]NZ4lMDC'6Bi7^KPfGLl%!t-VN/=9N0q"L$N:E>jI]0JjYVAn\:.bh+mID]3plSEPf:KVH8EcYTiq>X"/(lA$_#aXn/"jAUo?0&2=`\f*el2S%H:MnA[gNod,dMAnE'5_gF5(n@GmQ<nC0kZE8B8,[de^37Flnpg;DbaW?T=<0[rEhh61^Q\T8g&3][9[##,tJ)*!e1'+&LJELK$'qI;>]WFVMF5oQ;&"W`BpqR\=KD#RF"u0kD;HArU8)(:fV5B6aac4BS=!Z&ba:<nFcW),q,MCJ93En]/0BUR'cMdNDGi8=G]%?l<I40P%GIU(6Dc5];<A]FBB%-O3,cAkg!sAbo35D$$`A^-08$Y$/__)+.GEL5=tEb4NrLr7QKK1g,B*aeH&AINB]s+NP,B=6/J()YXA+p5&@a?pZ3/'\aprg0-pe+CJbA"+Aja,DZG380]`aOl2>+s@$+kH[Wquk&hNs16":PnAEE6*T:a,*V(UFJ_9hL$W(WD!YD!*4T2=Yj!PRupKN'?hTfU.;<:7RYhA>4o79s%nm,c>XkKX78<7dGn=\\@.W9n/4Hf*(LI$=F?A&dT8brA8pMi69PdGI)'gRJ~>endstream
endobj
11 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 3272
>>
stream
Gau0Fq,\NW&cUU9Kf4c$i5*ca9>iiVI>5]q\rZqWAq`5jRG6@"ZXVV&4]U#qh(t2u["1?`BZ0O?oi9OD<B]IZ#!\W\7i.H5C8\AM`[b:n3rKCeM5k[S=5J+,?,,BJUoGc1f1`;UX\P['*9P)tKNk-MXc`r9\[7V)Y<l=)%UQu?4DY*-?bdGO_@:?Z`=9i%cdbt63D17MkG.qA7Ok2t:8JZrQ-O*?Z[`[ri+JKXg*W,j.S;RHJ<F=@Lb1+Ehmf1;PI'D5aMc;NSVqN>]F;bj.qe?O[aY%jWF-Kjc%fUTX?%5Z;Q8Uc;SW:`fYkUa46t-Mg[O$hh<h(;^cWe%hX4-"f2tBGoDjV;R*"I@\$'ahDL\,V!m)'%\LrTO<3'HC,7mC+!sXCs?/Bjn$817<G<fj7*A.u>J_UU?k@ogr'VPR+2-t$B8arJDnp:)->E(>m_H6tWao8Io"ITLlY[Qj`i<MO_G[]RVFDl,:["K(tQK+r$12Kb(QGQ_7]Z0%iD>bmu"uh-*YcNrU7'Oj'gd0lTlisS4PR>YRXM7F]0O5/&>AV"=hIHg18$WD]P8\GIh7)Gi.*b%(j>TO'X!I_r^Jc9U,=1A<\LhbQRrXE@QlS"Z2jK9.;^To2Uch,R#)e6jc9.1(l$O(\[k7FH0BrBd9NV*>>Wm"AJqXaREc>J+*?[r:nB0eN5N67LJ,=@/,UJ4*?`h4$R_gECJQ$eaM_'GqL5e+M]1Jj<:$%]gh!m-f@3#Qu220RgTb!k9[,G$^h*/sNpF)AaEljA,rrtsN1jA$QA)`C4ndEM=rZG;jpo\ZU&6rqT1!'d&)b(s6o/I8V"[NMJqTJifbX<P77bISmH(=!YHiNBJ;ro@TV]nqD"(;DTPPD!-=M'1j@Lon(`#p<pL&agSqkD&t3<\%-"YT&a%eqIA4K/H$n7dV3<[E9K-taC7_LQ9^lo'H?G"h1[OXigE`#W80Zq/YeE]E'1q@`V3HY3$R>*+#*G%:V+f;6+<D0p?iqK1UX`bdJcJR9YDYeB..KQ*+-BE_2YXj=N@@1*&O]..jBQ/`@9TSnlPDeB5WRDdTCXW2"'_LNHHB#:h;au9kK!#-"BJm\H.!DPO:"<W['elio>nSI/*1-8V)/[q7YT#rdUPGbj'_9GbW]C66tp%Qi^$\fNAiO+?T`)9.5[:-jlZeI?nDGMn)?jJl\`4XK$C]/o]k!C*A;Mu]j16I9I7!TOqP+2+3#lK,*7[1*+(t(MOCKX9#J:$SqM;0n<Sj_5Wjb>=]Opu,dBLi\bMu"&`(?huXr_K+XRR%oe:MmIM)$s*3pAi%0O&?Ks%S&p=3B%i)W]2:K=<l<Yd?QslM3LQ_O_%r%P?WQb17qq0=>[)%:;,aMHLaGg9,1JASX*u^J5a?RaeDQuNcIl--ZGSP!VTN8+aSm#X:2uKbd8C$4gd'X4OZ\F,9Qc@0+\_^'.A8W%NZtm!uh(2T>kSe7V:(<-;l?s*emRJ!KVmWYPl9Wi!Rd'?SKB$='RkBLinHo-2D"m86H_a_bpUsmr:YV(S'IrAII4.6,NYDTCPsV*pTE^"g<>V3P/ca;TGemiquEee2!_%f/.Fhh,B4&WJT%tRK$eP0<f&]V4aF8[np6V1TS1m:JA1/VpNY"cX3uYEWNe8.i5D7s,?epQerstV&1aC`^5RTHkgEubdZq%GeDC+2+0l<X9O%OKM^%nBads8-%N9Q"[Qi7#!=j;OL[Uk."o!bFe$pE//L9/1bFXsrtLCJq-c=N<D'N\^>JF:VRK6X3mHc60tn#;qIh0U1:a@$>Rqq+a7f!hSq"O2P$Z2P<O`HN72gQg!I7+j6Sh%"=YBe&Z^*Lc@Ko/Y](LL$H\6p76nU.ha31ffd*QuXkl8@C<0V50U5lt@XT+P8`6i7?irdTS,e99%TEhRBW<k,[;+YCVSUY+8T64.&nf`JOh;CKqBlY*I]lB4AHt%srTd(QGjVa\U_O'e_%ZA9m?;IH"HtjR8d!R.&j(2,@>5#;Z--VZ@_+2[dEbS'KeEi/kK0'h/1dO1bb(gkU9Z_#NIT4U)8uOH%`TR`BGfh6]%G#n?:CinR/3jMr4UcAr-('SoU23stB*K)298p:?/XeNH0]9KH<A1Nbn`)3-RX!M#J=7B6A.>FWULQK#73,8VjYJ4o/gh,t`f<D7gL^iLB@4/D4^Gm>K"I-)fIW.`&UaY$_$>n-=:`5s+s&#Kg=\<&Urt@C@?s`"%Y+0mruf\"oqfZ?mk-rT%*^)U<Yg'Bo+K0-A.F;?#qdUK#!-mcj3Q7%9&c8^T/^^oL]5rh`-q3Pf(ULkWgEc8GY?hp;#]o+9+MeJRnMj@*Hc:JnAQ]KVaLn7JLHJ`kXSmP@*H&$9CYg%Iu+neec<YD<sI4rWo:6.$g1LnUQ_=[o:th*/fpZSZAedFd>@V;-bL_-5[Sf@Fg2E=).m;@,>1V1'CaQCjr`Lg"((g,T#ceJJPDhUV!4#b5tpJ[6tajeaD-!a/ul<5i0a^@5"N@-eMBpD,XrnlQ]]CT\N.QKY>9YC`7)q&9,Wq_G9AN(p<Z]:1*6AVljun:T%7%HSJY9UmtcY&@DHqGU3Mj.P<2iG`Ip55eMZgGnT<D(#Q@>OK_@H^#bfc#Uk<1XO^RDk$3A0oaQCC$O]%+D\Fh_[3QC>YrJm4,LNmj]&GK"6%14e&ei:X+6ki#;'9b'Vg?U?7O@9P8U4ka-Pd*h:9oiSWSM!=Cb6d,WcF[>Bf-@k3J&&]-;LRuhq-u]<_Bb+>UPB<U,u,1X'b:V)am<9sC(H7t4jB80J'5[iL/NM.m,e0rU])_Q'`D%1VNe:>fW6V,2/]rp$haW&9P<I/5'lE4e$T@5(r"l-%s%E.1`aluWLa6S:\UiaSj>AKJ;.0O8&oI(%!Z[6;VlgWE-(<#(dbdO&^KD88?/`ihc!hCOP5"]+\h37]Z;Qq`Ou@Z0RWm4FFtNiMmM9I=*ILr0h&?PE\AnCI_I^/@9T[3U*8#=GO@mn'IjaaCFEbqD.YH+MiiJ'4m^RY/$Z#Hf`%m(aBEMg)ZR'oltOf.7R=?=jfo3DC`)Zc!7'FR&a*ZoAl!o4ISTDpK>=5X@e+'d:l4SZ%a%\p0/!.tLa!XKi.P@a`Q2$OBf/7nU%NKfn#&-["t5"e?6"jMk/m+B"(BCOc\8V?cT1so[?#+9[_Zt6k;SL_%DD7Y5<Wps8bQjHC*KY-5_ek0c;BQ'Sr"28^BP1%3$h0cDg$Cb^8q4F2?432N%V6WMocb%85+Zc,-g9A@mZAiO&\lfI#)\g6C4Zl-.8/uPumthn"u!j~>endstream
endobj
12 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1235
>>
stream
Gau0BBlaqX&H2$(0fc0Lb$Im<>[!:i+Gl:;"gX0-2Y!"P,RY3g_6JhN#4^Gn4Y*XNb77a1-tun4bdRA]Ibd/_1d7.?s%'+r$ao[5.:Q:>;e.\bMMGr[=Sd5u-7`pXF-QQ,KofpoBYo+@S?XQY-c75iTusQ;`=[L'b"J)\nB0j5e69&5;.<')\"Y3*K[HQ.S:;-YTiNun4hY(%ZXTFA?$W./?MU8m>PDH7FuTnjJ=AipnnhC>:rOFUfZ*)8OPXP7l\9r&IY"2-!Ec#1cK='$)DXTi@bK"g_Ga@R-Q3n%<\@]32\E,+=;9HPa:8H%r,P"?f'i%XL`\V[EUMua[B:9m@2>=s7OEdL+)X^(kC`H$Z)CbS).Z<>0;C8!'5sKe]$Q;N.PmGL@1,jBUUECb^l::>`H/'tNHIr-UKjt?Lf6N@S&DcgVBr,:jG1GAZuf4l>6D,$MZh6[^gc_ig"6I3mNH&FdHE8h)6C5C7bi:Y$M[I/KXq.a8XX0R'N.Q!9]D-U,D-&"j"4>ER*6VaqL,"n;^25G:Xk)V3k1/T,]7Z(2hceWr3g-E%j<+DRU;u*T<)inQ0c".Ec3"<%n5U#CP+Qj`&P6i&Yu+h.<l-=Ql>1E(Q$G_cu&)'+IU&!LQR5">%QMS?f<Ap&XU+kV`oDGj1Pq/iRC;bX&F?$!?Un:="gsU?k`h=6&6J.89igRmC"7h*=EO9iX"DnI@^P-2_sE]DsTQg@B0Q=8CC$gkp'S$A!Eeq)Ds*h?*E]Vc\mZl2Ta<d.&?YB_S`0mr5#4),aBWdQHEf;FAO;&N`=PQ+/NZ*s6TG<Rfap`2X6H3D`u'(coI'LSu,\WO\%Fg>.o0jBtbKq+VL\G'V8JIJtj_afX)kd'(c"tNS1hOfV0M#*D5ed`6[PBeX*m>V);XYj(lHCONZsY9bLk/mooh<WCtOP9H2C;li:#8fR;E-Ih`7%\sn$$V+hXup.E$(r(2*:0cim#*)!Y1Sm.>jIK%\ROt4WH_m/"R(EM*me)8I5SDVs4XL$H/s+*gg%D9TD*@`*MUMT]6HElY.Z#'Hs+C79qH/C,rKVcHoceiXeJ66>u+]\D?P5:WFfh7ZG=;k$c97J+a8kO.;P9]0gW3ED=P#t0HO9!RZT4@6MXF5h*%.n!U?(6)YA`loprnulsB+f?-Mp"9RZ=?ZAVK?51-b(lQICZQ3VpA:3k^8HDHo]fUR@07,$9Y";3@5t'+)e#noMoV*V,-=;_>=~>endstream
endobj
xref
0 13
0000000000 65535 f
0000000073 00000 n
0000000114 00000 n
0000000221 00000 n
0000001154 00000 n
0000001358 00000 n
0000001562 00000 n
0000001766 00000 n
0000001834 00000 n
0000002117 00000 n
0000002188 00000 n
0000005170 00000 n
0000008534 00000 n
trailer
<<
/ID
[<b8da1116033bb64258f9f4b4800843be><b8da1116033bb64258f9f4b4800843be>]
% ReportLab generated PDF document -- digest (http://www.reportlab.com)
/Info 8 0 R
/Root 7 0 R
/Size 13
>>
startxref
9861
%%EOF

View File

@ -0,0 +1,146 @@
%PDF-1.4
%“Œ‹ž ReportLab Generated PDF document http://www.reportlab.com
1 0 obj
<<
/F1 2 0 R /F2 3 0 R
>>
endobj
2 0 obj
<<
/BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font
>>
endobj
3 0 obj
<<
/BaseFont /STSong-Light /DescendantFonts [ <<
/BaseFont /STSong-Light /CIDSystemInfo <<
/Ordering (GB1) /Registry (Adobe) /Supplement 0
>> /DW 1000 /FontDescriptor <<
/Ascent 752 /CapHeight 737 /Descent -271 /Flags 6 /FontBBox [ -25 -254 1000 880 ] /FontName /STSongStd-Light
/ItalicAngle 0 /Leading 148 /MaxWidth 1000 /MissingWidth 500 /StemH 91 /StemV 58
/Type /FontDescriptor /XHeight 553
>> /Subtype /CIDFontType0 /Type /Font
/W [ 1 [ 207 270 342 467 462 797 710 239 374 ] 10 [ 374 423 605 238 375 238 334 462 ] 18 26 462 27 28 238
29 31 605 32 [ 344 748 684 560 695 739 563 511 729 793
318 312 666 526 896 758 772 544 772 628
465 607 753 711 972 647 620 607 374 333
374 606 500 239 417 503 427 529 415 264
444 518 241 230 495 228 793 527 524 ] 81 [ 524 504 338 336 277 517 450 652 466 452
407 370 258 370 605 ] ]
>> ] /Encoding /UniGB-UCS2-H /Name /F2 /Subtype /Type0 /Type /Font
>>
endobj
4 0 obj
<<
/Contents 11 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 10 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
5 0 obj
<<
/Contents 12 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 10 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
6 0 obj
<<
/Contents 13 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 10 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
7 0 obj
<<
/Contents 14 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 10 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
8 0 obj
<<
/PageMode /UseNone /Pages 10 0 R /Type /Catalog
>>
endobj
9 0 obj
<<
/Author (\(anonymous\)) /CreationDate (D:20251212050229+08'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20251212050229+08'00') /Producer (ReportLab PDF Library - www.reportlab.com)
/Subject (\(unspecified\)) /Title (\(anonymous\)) /Trapped /False
>>
endobj
10 0 obj
<<
/Count 4 /Kids [ 4 0 R 5 0 R 6 0 R 7 0 R ] /Type /Pages
>>
endobj
11 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 3281
>>
stream
Gatm=q,c<A')k%DKeftcO>WaC8Sp7dhG!L]YnLp]S-3.4Rj5AZi=PEmR(n'LW\6rP^tJ2Wq,"-'cEFr7Gei6mdrfjK">;gPi[Z'h&Te3XO2<=/]F.b$:QD&dZSJP90lJ=s5UdaH`Afsb[mSI!>99#9:PMY1-?n2qJE.=/+T`87*^\cpK(4ro3\KWD)7qts$-=q7_k0KX<SYD0H'U1NbQj^;T^rT1(*nFM.Julf>)KPU,c(+o"bO8g?re!*hm+9HRUKH4bYXuI,%jCEmMmY!"C@n90Y@O5q9-GbmKU@_nZmZ]m_6kmb]t>GH*mm?7MI0YdAZ\&Ota?F"04g021eXmP"QOCGSTb96X3lA671=3jRVKEoh6_!AsEEH'tGHfoLh)L%fC/j,#3\2ie"cYLGu[a2L+D7edM5>*QaBLR8fY-)K#SC/HYlT[PP@82KXdX1NOZ$:of$lUDUA&$8l+X'\MiA%jS1:b^ZFdV_AHer^](O]@p>U[_s`PK`qf8L"e/B0md$Y\043W8$XlSESPL@*]s%`f)**f_-K,9>\$_X;s5=n0WE+Cl3h1l5B8SWa7je>9p@Y2blq2L9&lYo6=!HBj]#*N_idI_/t8KMAemUo9t?EEM1dAMj<,+-]J]Qqe<Ol!!tTIKj:#@0OG%VdMp_E*mq%[HQ*"'!RCKiVCKo_apjCOjP883HJ-5ZT%^G/X$s`5<Vl6)YK<jAVp-dCA+lfi-%"H4\DS\KM;U[U`M@M6ol4>^Y5[+ZIk5@t%4s<5-0S]B'a=>:X[:'NLOn)`Gp_2d`$%U>Tf&/\ahP8F'I)r(Dn@][i@"m>!WAP70>H_53rOgsl8Old&#rQW$Y+uG?.Fqk$[.j]u8+=P2+jSu9TT7cVU&]2/obC/ZQEpu9++S=@QHc&="3LgYX>F`])_S6;*IC(TUC)PnrSc2?=$W:i8md`nql#>F*POuU?K$r"`+6q'q"+m,:<50An==`?lP8KSMWl9<]SUMgK2cGjKnq.n^7bb<&&er$.JVIF$63;L8,/'A'`u:@ote]#mH5QFJd5@g^QPBG."*%OV8R>_%/QVMRp?$%7#.;3c.OR"P.IG7DZ6fN@\2%$*4u8S0rEkE\<SQMScm#0j6e?[YWZ/:D($R6m)r[]0*?=1rG^Vkoh\TE_.3T2,<:%qkh'WZ(;o!_=SF4\$\=il-f?'Ge`i8g[t'diO9-]^7\!mFOs-&t3rR\0"Y(h0$P/l;E,R+VGZ:H\7gLi4)KS2IN711[F1M(-ndFk1.5nO3]61UfnGSs8b-(J0#c%_h8J).Gha:l27a1$>QTCG.-:-eOn7=F*2tP2>Ap("V]a1VAPuR"><=);Hib_MGqrICHD*s2"PM>h32g8!>/)_@ajDUhI.F&'*L"jc*-<6^1:hA&J'6mWRH.WI1g3?bUcC'k@$s!dP(Ec#*$]AJ9i%\Lc::8F+;fV_W5Ze%UI"W6[e$#"1<16q9fY%T>``kTjNp<800Pn2]H/-OtX=l=RI?qU`])Z&MW#He6a1\Mnq_=QjqC&?6D8S?Z#7ch+$4(Y2r[)J#Dm;[5j*M.bbm!ALPQVpNUXo?%H%63E^0-!SgUH)@/`(,.>bs:se!`Cc@csL5ZOuU!OFh/L5MYZQS<EqWWnAFM;RbTSaXRGFOB'P#Z*)t&)DHm9OU)Vs7()T[mM>^GY:K881(DV<CBX0pTR2NVV1FaXm,E!jBiKM*'hZ%@pXgeR%iRpe#j\*K)d!30A%(9flMi;QN\tX*$$.@4Qf*S=aP4PYiNF;hM'c(Ah44/Sf'\0bm9`0LK:)!50s]i;=T8ee.TV?4K!P3\7KPd@()p7RGG<#:L8AX'<78F+[LT.$llmY0if7\aL[_#F=cc>Q<5$$o=m4G0naSK!"Ac9r*s'<m?7I[0K4!>ba@(/4Tp@.<GBJY$&]e4NC_@*p`72jgEFA&=#=q`E/=lfMebo\el368$oKr;4Oto,1f0LB7d#1:G5-i`h5u(3Y#]KF:I!2_eg'-F#Lb8gLRrA9MG(kh/BPrRH,?akti]BE3N2o6aRIHF+P@`@a1ZXlJ89_G0Vs*C7#*pM^$_X\R"9J7Z5L?(sP^k1OE%^J,',89Y>B!C*7;@_66T.SL7@h$uCo@)l^pD0(<lNYVVT[PIB*qoI.644uiZOu_kE`h\,#XP%j`]s382:&_gNSm2/b+6K.=B,ic/&^6)E6d=l`F;^K7cfj)U[HlAKaaV0+\AG<kWkRruQPEGpK!>`!K4De)BJ+roj4r"kAu5>(1nKd`3BpP)2T-@QL/u6));nnc5FM9iXf5KgR(K3M8B!/ar5;hmQrt2$+qk@,t`aE&>/o/i-9hS1$Zln[k:l'5=S'&]/10',KN;qEST;6J<51!'PF$U2g>=_X"$oL^cGf($5[&oY.fs]OWOurDk/?,A6to'G$3CA>iAB=m[qi#*WdZ+"C'%Arn5DeYW0h:kgV6?YmMN]XsCmB*1ZNmD9HUG[dmZHI+!')+P./+@?uZ9R6kQGd'>_n!,*J8)9.)7\`t7WDuhU9BpFrpWgD7ZaQ!(<28p/`p[Ka]R_BN%k.rO5XIlMU%*AkdqNqsK]D_pQm@[Vq'9%H>O[iXWGqG.&_9pMG"olCGZ%6=JO)C&<uN/k'JM*teM-qpnC=Y9SW#)T/W#-7V/&knNc.orZAZliMj_)NQYhi(mm>8VoO/0;</Zt`5;SJls.q/?..$21GTZcYC>[qT"o@!L07+qm4Y/lRd,Rd/^C1Q*[cS_`Ok_:s+&pW5cCM6Dc:7/VBFC?l-=6tn`a`K>UKg6L^6[/r?VjK.)REm6g8=/FC_Sm(l)_";RHSKmksN9kZQ'8G*2hX6V(\kh=.l`4o`THCao'_Meh#tITcd68D#$O#jqORU@moNchnS`(''ZX5F6%[1ofZ/8`)_,=oQ0"GNtPC[#;ir'7q[OIl6^2nJf%.2KsBntFj0&5Ik7%#1TL6u9p.(oo/"H0*&EU:ePqVrJ4\3Ll9Btd5C(<b]1e`g^/>8,,k1Tn+nk[&SaV[eC-b:"W$kYF-$cg.%soib>NlLFO`/l_o_N80NsuWZckod(@?+BM($8Z+^:Vh[_8.HW:au(qg`Qh2h"$\>#H-1cBL;a#HaYm0HeG]mpsQ^X&@,oo%=1Z;V]9;FRT);kS6%P&@@@0i3d.@GLo5OJ0i%?uB\7U9qMjdePdpWdV``^)W6b7/C%_ah7s-;t*`?07V8t$N+=FI_9=Mt.Vo=>Pl_h^iR4NYJ8+Jdinb%rh"-c0td#$Xp>FB&j*]`ML'<8OOabqsaH\PqEPCEQQboZ9~>endstream
endobj
12 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 3617
>>
stream
Gau0FCKD3A')g+ZBP3Vel9LQ:b,XU64-%UB3mqpMQeH=`%4WKQ!\0)BI3KjW<LI.C[YON(eW7kqb_V4fpI8cd#(qDqY'VOU`e.]0jUlEMd23o]\8&%`n6+etiPO7L[k1V29R'4>)JPKq;oUS;DP:.b+I0[Wfg8Uobl;mB$SVq^""0)e#n/:%/Me`6(k'%[HCkSjG#&#=00GS[j[/6;_OocGH&(Ji^:HJO)/&.%?>ojqhkYLjH]-D3cCMuE9k/Da%I2Kf=gKH=4K18sB>21jUSRf/X"JJ0<#]Gqo6gSLq`:'KIXZ8k0kS,A`aH+-K29-QNSnRmg@jk0GQ%Hb$Zl]"6-p&Y28K=SRp64Vb40@u+2?sCP7I-Emp)Z_&)HcX>Uka-7IN"XTo8!]/:_+0f7OC>QZf$9ZA%G62,Xgk5\+'u`?D[Fqb"@5CbN[HkU*!'>+35\GRsh;5q\AN/QV3qD#QM&Soe?O\HC.:d(=s4AfS>i-HL;7ZB'Y3Yn=X"6+Il54[.Sp=U:^^@#bj^#:mX=NOA1;EoGEdc!1TIO-8bW+^X4V5/rY_]ltQ(RWoG*8=G8PErbObj&FAF,e:Ai=.0m5L@.=Q6M&,V,>BQK@sG&%TBeL5e$j!/o`fmr]t4qkWJZD/o:6=JY_fEi\P,p8:XD7L4;n&5D^<kKl5mkBgETflN>!&!n/XY]Ng_31Qtes8LtW9d>5/:\c*5J<T4=F8LUFsUE62H(&7Ok]jA8t?OYmF)I03_"d+*F]>al_'G1U\5Q@ggZp,]j;`R^8oM9es2#a@XDTe$(Rm,KG8h^*#JQ<m2-<+./mgN]?2(KO4Kapgr`R3imKD'*oE^XFEd.b:BA*5)<-_<+Y=L)P,KR>tn@=jQiQlp$qtT`3mB3J=DUdkP"E-2I$m(RfoQKIS<UG#MFdJD>89!2brf-F_$HOaHRClN]&F2HV#07bR#DkO$&Dkn(P22LHnigKi[9E&j6%)_JYKHe?A$-&=arobN+/i&H<kaoaC'd2SfMf:s0Vj]N.9!;D!DVtf)[CTsEl?Qs^s+ArV=+HaqUA4#a-4;Zu:cci3p;.]Ya=EF6=fVd0>@uA2bF&p1?h%HjdS<_5U\09C0_`SZ"A,fooOhu`,VC-VP!T2C%01fB^_+c),@K>AQa'*"`%HEKcYho?en`Dj6A*6^Jmku0Ae$RKX%^J#H,;0@k?0$*4/7'_J$pFHY!q,oGTb%,X6.=(;2IkQb)*UN[2MFk2"M-"G$u6br^csD"Xt7C)4Am!]QjbgV.7W!FcMYU3`_ODt3_TnJVoGL2FWM,aU4gm[?S9\X<%<j0>hbcG+`K!Q&d_9r>`J`aA7MuK_@1D:"VQY+@#XWb?PCk(AW"6Kh4=?&(BjY)/lV&\F;uIF1fBG0NU@rU<e[n;N-d$4B$RbZFOHD1P4a)H\ShIn`D_nt(1`^4rL,X5GSS>"RL,<l>a):X9=+2%P@kU#na$R>8Pm]@!gcWPe]W6gC:X4#`%A%<VrPc$fP6u,%$oHi(^,%C8PL'6Mhb13N6`o`+:ggD/"4[\ql!1I+e$i*B1_5)bj^ojkA]%l,qup"@a"(M9%([L?NGnE^-2<H^s_68`KcPj-3ZKs2IT&FJ_YsnomJ.C,6b)!%dlEX5q#^3qaiY^i?2?o+L@T<!0!#<S)d#Nda3e^3D385["dX!YF9[-@%/<nq(*PpL6khgTb?a[0TS6Z?T/N%(XbW3T:b2Y:nkgB<u[^Vd_hp'8e7cc*:a\E73,).=Bn9-`n,7`Ko&?*.!E"9TKAFTK#S.`,imN_mr1s*(^.h;p7h.ffrpZMRp_@*9"qa]o'13"-#(%&"3pLQeV$b,#[*OSc@`Z/9Te<m%6.m5K#TU$^kg'#HLQFr%e3nDm@!%U8RQ!='5g-0l"Vr;&glD5-'[%2leE^H$grr$`m!P>MVLUpi!t:i</)aAB>DcKY)`cr`@bI$+Z<J%B16atY\!hhlTM&#>iMu+:oYITV$U-TFelIHe@N2!]66l,*i7-_.0>Yc,]aB^EtY;.\d<hhV\bb4^;15rjK1ERZZ882M8b$<82/prmHVPGoa]ooWL-]GP-959U-p^D8KoSL\eu.0P*%Ffc%L([SX56j(GLQU5/cC<JqQp.CY.iNJaGWG0?,.NKT[rX9O/2koV:'L\oQk/AQ)ER*ip&;#VfUe[7fQ2mgskJ36Dr8YV`K>=oh=j%=XPs&Z2pArUpEr<NTWuJO6f*+h3`Z04thgksW;I?GWp<!_%IJ[1_^#[XY,GS'ZA-TaPYu)r.f`r3hACgR*s:ZN\G:ed5UtDh6TY2c4"IUnS0@V,;pUiNjif<q#)PWYIqG&VAK_?APR[hoO!EUtK%Q)s#(?1FcBYHP7fkU_3pBVOpnkI//Sd:!WU-fjPZ\Lq8*/fPP<P-1Jan(R-)pBA:0tRUOS1`/8Bbs5+#X1;crXdA2[!dgETp#YA4Y7SH^u/bsSZFEDDQJ!8ZAWckBZ=JESr?F)cN42X'sqA"t3geo^g3i@EUO%R&L#E/2Xc^6;^;q@2knEK+u-='?!%#&UNmn)J+i,?ipV%!p0+sj],R-Y=V&btNW7F?]2<G(p96UFH'i.mM<FZ`)c:B'k,?e3d_%i5kuL)1mB&4OmX7r=iU]ME<51N5r@NklpDQOD%$4e.P3ONXL9i%,d"Zp@+>h[J"<SN+mj1Y=huT,$8$`^7)%>.<d@:P;DhK-.Pt?rYZ+`PqQ8/tO'qmf3XeSe2_R-*JV%Mi\dsJtMsiNN;[Di=lA1K"I>"^Mj-<bW$<r)>h0FDDdk%k>5,F9\>?9:js1R7)6!P%g+cd,`6nDKAO-H4$/*+0g4'65Y_FmY>:mHJLX6rK@AkQMfPfTKl_l3fQZcrN>M]s=_;b+hB-;jIut2PHe<Fi`j%tBL#=O7Lo0BYm*oEf]Oa#%N*C+RcE)!b\Z/T+*ph@#VF8GaTfJgdjJ-od\0;DMV&389BrP,d2A9d'^#K-ZglBiCVO?U'K@l^(Y2'8dPk6b=Jm8,6aE7G2mJ5&p>e@mkNK'rd&'T-?.k\nqVBn74OOrXH&E_J<W,eSkJ[fLNOSC%dlsZ7n)"cWuUa1^1k?AtX]gom.[5fTSEXfE3(g!?h1@ks(3"9*Tc.r+Cj_gLa4>.N(>`sGOn"E_2>.4SM+/'LK[Z\"Yn#Vu=<SW+M+k_?+k/GX/Y2M"";.N=/%L;AHG"eDu[Q2=?_7!So53a>Xo$,1j<&R2+feSd5H)If)07ZJkE%l.A$,=e2g%n?Hko!/9.@#0MS-paE2-='%[@I$s2^Ipg>8GM]:-9*GabnUXTI$SujL=/SUjdO7Z9$Jc$nE-NjV/B+?K<KQB"#O-JB4MC#uqR_&U3gXGtU)#/Z;2)O,L?=_2VC,Cce63@=l2X);J3B)ee?Va.R6"/mS<rnDFWq-pSC`C=:u-**?AL^0B=D+XauLGF,!GX<>\"RJ\t[F)8=Y`t+mRn_W*Yj5T5pLJ&TK0\1'h([6oi/G@HoHN*@r1?[YpU0;]S#HGtonj.aF4ONVW-n]2'P7MqfT.4g6#Ac%TgHHcL,@Rf^Atm*^cC1:fO$ojD%<uAL1d%QSXM#qZZrI=0cBf<H$+k`]PVQMpiI?mkS?n-[-D[%'$o;Ti+Yk!pNJ2i^--=*F~>endstream
endobj
13 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 2610
>>
stream
Gau0ED,V-=&H;+$=?fp(e?R<rgfc%%;NY&n%QH^&V`9;M+SZiX&Yd$'h*&*N1O$=6L9oD&p3(VVVu,_VT:Y'HK0Pm/0A[D^dUmL^+YU>R2YRT^8l][k0)jM9n_jZ_,?;M.]J<JqD,j3O34oKW92YK!ruBgE8U-b,(Ro>N:/Ou>8t9k[G/4L$S`FtXQnV9SYr,pL0m<9tqr4E7j540)@AOX#3MGCRNmcph'2#>dC&&P^XmcdZQUSRZnT#!j4XZVIC%UK`_e#3$bFt-R_AEJ5C$-Jrn<AJi7\.@?F6&_L[*1!^P6:_8%$3G5a,>nWZh<3WEA\YngCUiPc(eb>BCt4Fr0cY>UIttQUG$6jco_fJ[^1$.XF_6'>_EqRGNor)==a7p\4!f0CFTu&I)B,:4.(qD'S$JtmUhZk_uFoSjR<5d,@Lt)OiGm:#Np09Ig9;3n4U1t)hkbSL)Yi-hbeKUiDsj+gF)KUh1cjWY576,HK51`g9K>iE!(`hV/K-0$cZ[Wn2CjXU0N*ESK?b!/'m*9KdSRPOHR<uYdJiMe^ot#)t!"ndU<q3lqk22]*BbFLf"*&#^?!i$,aiu)SMWIS#&/.dp_?GO(Du(2VT%jj#0:"'=WK:9[&`9%?Yr:(UebmdsuqpXpKW:QrGWN3K<sqI<)P'oW=nPaZ*r,8i&huWpY&_13o?rPg95RiJl.cIl*m=dB+)eG3M`Zd28MPK87op#=9T;]K30WiIaI<i+R(_[t*K?CmAn6AqQ@AFQl:4DVDunT!E.W]n?^ad:gF66S-dH4g[IZ_CDQ1/""%!V%KFbceq_b!:l(QTiD8aVB?mq;;tU>WO*=]eo='3pZo1Zmh[Yka><_oh=G4Bou6$9#Fd"i9dQf_S%4@XY/t3]#\R)#J955epu<7SnOlP++LYR33'NPpWNc0Fg`/[po^e^3!nnos5m-c_7'M^&0@1GhI7/o63EV,P`"Kk:g[s`*7M-<Lm,18Y9.$HKFe\;*EPOH&8=!`UF5!=3!c]RiWfRE_J@!:+E%+$LPC.S^rS$O7C*hX%=#LQ`LAedM;U9+H'"8XC]iAO)1r+B]h#c,biCU@=cTPTT\7S3q7sHb<d%B;[>)1lM@H=,E!2ep.L=fiUeML=n0;[_YifXo\M#1ZSdM!&/#dH&,1F06SZ]16X5ttuoDMWNd"30I3$P]`A*l9<p=EhLUifiP#4/mLh:NnEDC(i[LR$P$7rH>05RBE1.!sg(U!q#Ls5WFFfBs/D[nen[Y#fia.?=7J0Di0sC@0S9EQe/M#j]KkY$pl66QhL?qS./$kS7?Y'IrYDn.ZQ\XbqZLC@"\gY%"gW/"u/EJ59?"p)D9M&^EN)o,=i6k0DNQ0@!*PA;L>deN/ljsPpi?Kg",pJUZ-fL"B[P_cH3R>BcgNskpQ&ZMbq>Yd!]R0:JXf3QtqNLes.3s4M],b9JB%%V<!i1XY/$/fRE#n5B@>;\4BcUKXXta8>?W7RSNrEBXO1!k=mnQ`X'C.b9/U;844(gJ_)1e-qJsS(k)q%>HnAtD1R.qYQAWL6J"X^Ca%c'>QH1OXc\U"LQSQLdB3JtXH^l7'8-uB%[[KO<!+9&a<NBAm5dY$]AF1U,Y4(Lc>*7<,G<LRHR<KP7`hTCK%^W:q.PHP8nL[[lUWd/B\JYLTBh<m>C#DRI>qZE$^/EG()Nq[PYgS!;S^rljc^9`@s#EZn]TniDm0MtM>\`PkMBhqWMa%0Y@@IY=PL!,AYnC:CJ(6Sp0)"`T!oW<L1I_n6,E&'R)p;j*@6g6o+LuSY(NG3`rXf!5P,ba0eC@l/HR7ZPmHb6,/FWkM?sl!J9(f;pgb\9QDR\pO;rruM_=;[)l;`*opB7.'i<-gFB0KQ-"p[r4:K[!R"HHZ-qI([cup.:n6->?;1"2ghut9RJ/9us8Y=3ZOnuYug)i?EV`Y>r`]+d<M"_"3FQA.1>Yo4/CTeou$3Ot(,R44%@61oS<MbrYp-)#H3Y&\!)'hOnJ*@.5-ZIYup?=Ob6&DuYBro<NVASm@h@3uEP#<f.F);JX.3hV1Z&lOB;0Pcn-I//u7Oc>V`-+qJ/CU$96#Wtg_cRj)n&WcUfZfe`]tkAtDY8N?"NI(J"DlbdRrlm:\@$7'U(T4#23hF><q`1T__\(pEqf8(]m#V.5mZJSK*-Y@k-_sk]V-q%4,:H)@O9Xj"=)+YL3b[n[,sU\4sf+=A83E^PD_t=bsVjLK%i?]!D%%pIL*eS3KIQbML@59cL=(ch^J!4g:b#rreq8fROmd=J&^Zds8;@7Q_\nr_l$2",u1@\maW9:rUq<X\5kiR`"C<u<KO>s^I9W,p'j&fUb(?<C2'=^YkE7)@lFu(>Vf^N$*RtbB[fb*VUYK^PIP1ZIb=K<K&NYX%9KYn62:o7kFmAMP'gIjh6t>So57mV^;"k$ga/VO_+o_28,i2WbPordiV8qq%bY,`T=OZoaX-a+"a\s]K-$SVpfWh,5)3G1?r7q\Fo<%MbgiQ3=]B.rZr8dR28b>Y/nHVDGFb'pT%*aMB(BY>I-O)W-nH"IoA./u6A%KuY9jK><t!C.!4H`>rVt\/$"BW?3`o[;eJsU2GIL%`c9er&q5r=FDT(M9=fs>or!.)j8WE~>endstream
endobj
14 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1580
>>
stream
Gatm;Bi>s@&H/b=YrS`aQRpHGg,L/e,r'RP":KgC0SR^o,`#!C3Jp)_hk&H5X'$UQ7O_3MYWHLlldn:<AKpUg\NMuLP#`rUogU9+-(U5fRYFBpmusA)[>UJ)At!>Lb1*8EDu,2)U5=$#Cutl(j+N=o6RDQsa*nJqaEXp`3p/J%-#%fTSN-;R]G\)^#J]$sD=g\%`ZG@-r)jS7i^&7Z5D#38++t=o8KY=Kq!X5gE/!"a<g(a2dWn.(A/4f!dD1LFg*,M9KEWA?PM#L32$qLYH8DX-"ss1I:emZR)>KlpVm_1RNkJgbpAfc_TTQiA)t%3$GI[r74>eSk5iGLB=eD!uY7'Wt@rheVD0\Ace+B8WP*cKq"TFX!o,\i-G4TD]0.n[??m=?%ho*X2)mmRVTf()YZj\U:+(L=+;fgm!b]CY#8iXq,Z=,gC$erLKS.ObXAeT60XT5Vb.Zo/'T^+7,c[3.AE*b]CO<"8b';;"g1/bc,-F1#F#Z'(iRqPOr"W`Ud@#.f&UClE_o-,R3F!@MTjP$eYR"X5s9^9tZYI*ftHLFi<<"rtO(PK.()gnmZaUGujOb;]T`]JdM6f,'Ehc$jNc&],JQ(#Hse#-eK9s5i:']N&W0Z4rGjo$G'nm]%IM7:#_I.c(PFuQTNG`s583"eQ7_:pu4G>7UtaI<ffk0F4(oKB[5[7_CXeY#2'F0(k$^>9'ChF%K7M#cSDN]=QgC:JS-!([SY_PZ?;*O4Yd0B7S>I3SPs?HAXPBW"g@=`mca#n(5=.'3730V*/eX.4#SXb%#^l^De(fl3o_X8P=i)c'S#,=UBL#b<tiEGfMEDZ4KO0*a<qc+Oj8J-Y^\Q^?sR[g_*8+-PsT+"D\O?ZbOQR+GQ,Rce^'9VmNr*G;O@k12rOYldX<O0?>H9)/VMfr6;OIbHT9<.9#:fL")j,-N=V.hbGi$,d<Sjo'j:F*ltq6XY<g1TaF4K[7.Ze+loO2l!bGUc55Gbn)"])PJ]<l="\[AZ6S)+Y?*r@\)tH3bjthf>#;\o8/fa(lZ66MbEdC?'hSkYB2Gilcf,;m,2c4U$AI^O!pqpf7e2"-lYf'mZ><=>+IM!`\Wrj`i2=+@o)Z9C:eK\AoX^d+dk;:01p:$=fZ@+>GJ5d04gZXE)FcY.1>YXRFs0F.Yi9$R^9Age2LX=>&G:GNlMq^lf!&PB#r,F:BD:="KsJh3P;u]+l:nbQqFUc-"dG>Jl%IWP^":R:tm:B+hC,WC.Sf<q),J.H):cPEj][HcupXq;sf&s-E_A;VluhAWYS[3Z*P8">>G!";U]YGQD$=1ohtd.3b3lXM;%]H(-?$m;=V'TF5hrVjbL3Clm&RMp`!Z<QD?Y0h%lHO5JY9RX*;O7+-I-`MBg](oK]a5FU[kt<ATrRg`u&F-^B\1=-g5-RMVtA-S.lKjE3)hlFX@n1F$'DTFnal5M]-r@Dt9B&T\d5$u83H2<dmc.?nk-dV$-bISY[Z]=$+'f#8W^4e`n1mU+E&6!ail$ZG'L<k]*3`+_2UK.fAXjcHOn,PL\c6Peut*p"\nb.`IAMSq7rF]q5(K6G)"=]%n.rrMOfb3f~>endstream
endobj
xref
0 15
0000000000 65535 f
0000000073 00000 n
0000000114 00000 n
0000000221 00000 n
0000001154 00000 n
0000001359 00000 n
0000001564 00000 n
0000001769 00000 n
0000001974 00000 n
0000002043 00000 n
0000002326 00000 n
0000002404 00000 n
0000005777 00000 n
0000009486 00000 n
0000012188 00000 n
trailer
<<
/ID
[<e84b3dfdb44544a27afc377fc03c6def><e84b3dfdb44544a27afc377fc03c6def>]
% ReportLab generated PDF document -- digest (http://www.reportlab.com)
/Info 9 0 R
/Root 8 0 R
/Size 15
>>
startxref
13860
%%EOF

View File

@ -0,0 +1,108 @@
%PDF-1.4
%“Œ‹ž ReportLab Generated PDF document http://www.reportlab.com
1 0 obj
<<
/F1 2 0 R /F2 3 0 R
>>
endobj
2 0 obj
<<
/BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font
>>
endobj
3 0 obj
<<
/BaseFont /STSong-Light /DescendantFonts [ <<
/BaseFont /STSong-Light /CIDSystemInfo <<
/Ordering (GB1) /Registry (Adobe) /Supplement 0
>> /DW 1000 /FontDescriptor <<
/Ascent 752 /CapHeight 737 /Descent -271 /Flags 6 /FontBBox [ -25 -254 1000 880 ] /FontName /STSongStd-Light
/ItalicAngle 0 /Leading 148 /MaxWidth 1000 /MissingWidth 500 /StemH 91 /StemV 58
/Type /FontDescriptor /XHeight 553
>> /Subtype /CIDFontType0 /Type /Font
/W [ 1 [ 207 270 342 467 462 797 710 239 374 ] 10 [ 374 423 605 238 375 238 334 462 ] 18 26 462 27 28 238
29 31 605 32 [ 344 748 684 560 695 739 563 511 729 793
318 312 666 526 896 758 772 544 772 628
465 607 753 711 972 647 620 607 374 333
374 606 500 239 417 503 427 529 415 264
444 518 241 230 495 228 793 527 524 ] 81 [ 524 504 338 336 277 517 450 652 466 452
407 370 258 370 605 ] ]
>> ] /Encoding /UniGB-UCS2-H /Name /F2 /Subtype /Type0 /Type /Font
>>
endobj
4 0 obj
<<
/Contents 9 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 8 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
5 0 obj
<<
/Contents 10 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 8 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
6 0 obj
<<
/PageMode /UseNone /Pages 8 0 R /Type /Catalog
>>
endobj
7 0 obj
<<
/Author (\(anonymous\)) /CreationDate (D:20251212050229+08'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20251212050229+08'00') /Producer (ReportLab PDF Library - www.reportlab.com)
/Subject (\(unspecified\)) /Title (\(anonymous\)) /Trapped /False
>>
endobj
8 0 obj
<<
/Count 2 /Kids [ 4 0 R 5 0 R ] /Type /Pages
>>
endobj
9 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 3677
>>
stream
Gatm>q,\6O(B3.),4Ea$UEUtkFB9-Hk;ER15lt1/i6dam,m^f4as*d6qn)U'Wikbb)KH>VW.B%l=5EP]hn?.n$2Pn:\U.S^^$aDhDe)SB>&RB(;*CrPhU`Nh&'c4e[kaDUa0KEJ[3UlWSHqg5dI"LZFB-o75JQPLTKQk0bT-"t9P:;mMYIUVp]P<j\s2g!TXQk'pX/`uWD&IS7F?T`V,XJ%9!sO;W=W[6Y)*(@a0jc4XZ'1J.rIeM\*;3an[5CC)[#UX02Nis5l*o,qmWYgnG5,66"2.'\lL;Y:]Bc,P$9@6d+O34NuENGaF7(@%K%"5`uKTMlrrgmAqAt#eJ9j`W,A'(=_Rmm0<tal!EHIUb8,oI"e%>_=N/_?8#1hOh,G>5]hAnlWD9+0>%roeEM%]Yok5l+,5t15<l*\ZZM,/R.D=0=BGo.r^Qbr(#:]@FTd_Hk9`H71dn*m3J'33bkm8ejbD*!Vk[F=bN=M:&Y(B6B:cF9t6>9Bc<%YE[pU!H6CFXst%S.U4:aoPL.E%JcX)Xpc`JpXsi"g;]:%+CW*.LR-,dN(AX(68\_dAMdd9,c.hL255b_T::_B3cTAYctt%XBX*emo4tP87lTL[bt74V#uVl(U26USFsAm1Xq$`X[BM_FP)Y7eD5*Za=2*W\p7a\[Z@u;'a'l?^MjtO5mLs.3Hl/>L0rD8:QnHd`3:kkm@TlbV5f.WNB+UBV@d(`&=h+:R:f+4f=I=q_fP(VYt/jI$cCI*KQl_?Z$.ZA_BTS"=2@nbR/2V7ciru,l)WY*p;(Mh1q#8`?1#5M_B1V9)-TWlN-7ED5O7-H_]3>G/ra?N9F;o4XgPeR<Ih16F(:h$s&JURY.8/;Aec^79V"`96O+\3H+GN.^N[rK9IEih#9,$$"Y,I!<bTm$<-`0UF:!5_\*.beED._^TZ;kZjG>Q(X%_=fqtrf;QP?G6DeV)WIM&p8P-cDJeiWrW`Yn"LComh[`V,D&GeXB%=T6h,t/$&na;S@iiIA2fqRgl^2*D-0g-BH(Fj:EI`g$ET'c%9]Nlr@.A8-mP:3c:%@NmJW6tM@+3lUtZ":Vm!ifAlcXt8?4XM!"Cnp#(R$7)!AtVqC@%ZC:cTj6-,+gFOcX'G6Ra1Jkb?C^?L5_s>YeHe!]"-X3/`eM*XM^V&eJd=hOC@/UB]@G`WA5P'UV;*t:j0hirbbDi[B?"p\/LNAe).oa!MMo(=<WkE0NBO);b/B3SXc!FMAjGX>B#M%;)3j0[f^X\^'Y.XF\;Fug.Wb,EEOg0@3ADai04;F[7MZ<CMmG37n_OD\U,,4_kmiBatN!4\;9l]6s8&(YXj[%iNenRMeJG?UB/2YkS8LZmorEj^[(!6oBKl2!BY:'@e'?s,U+:?V1r6AN2&X0-g_'%Pk;^*f6ZYb.&C$f/J!>P=V2XX4?=M0\adWLQ\9e8:(n=TmJLG+,G=r`k91QR'+];2N).O4_#\1bTq[WS''7F!Zo?+SDqJNO6rBFq_3?F2(Af1SWpOAYb',TW5M4[3$Q&mP*-!jE!+]lI&H+E]9mSA.<eTj0mh&sH:tj_mX[CGN_][;/Dnl7WiDkffPY*tP>uJ>Upuq\l(_bK&UV+u?c["W"#1iB^XP"YICH02%8>YSJ;]F9,I&KiBh(X#[rM3jtYWFjkWUr/+9SmnS2K^%.C9Z1:"8N,p7?G-=HiUu?Xu\ah6UaM1hdO,_]f$NoYcDbU/%FYc`W>CTk0OQkn`0Otm7#f'lYVN#M3=V[L_i4m0Vm#^C2U]]nJ*/I#1S),AT3`+@Lsp,.Zo*pSo6lacau,o%#(2g9Y9@=G&9tl<dEe$5OYPV`R^gPc2J,<JPNK6+q3jbbU7T`a"<eG,*cFgAgt+iX&6d8F#uAfoLC+E,ZYsnDX\75M`(@)3M-;ADg*)/G=8%A(K%%+p4RXDCjFmF:,d<N9chBDc\53EG8[?&QMBmS?a%Cb#"!_L^n$!!+Ls1JkW0R7A%%+\/KYiigto*jM/bk9F9eIK2]n=3RgN"\jG%a1H5"@S@T)dql1kKLV8/f]!_.H#e0GY"TS!$rQPBGQB(5(-"5\tV'oQp4R<Yo=WpA][E(6+pS2?ONHGpWdW%E:!i"&Z/2^O.?,`0j[=7bA3C.+*"+n<o=<Q!M__'Wq[D!YSh0QTR<BQ(_"GSkPK_#SOl-2e]dU,m3[*l7:g(%0((_V2Rm&ljp:H9PPP$g,Rn1_fE3nZ/p`9<*DP"25:F#GK-YOrFqJZpB`!HaYTSTl]]uBFtW:"4ed%`lSRcG1Of!j#tHs2K0#J,e0B<iTsufl_-93-/[OSh+[#pZRnc(;.E>uAAfA"+=(C^ATl$U"Y1KA^X)F]<EoT8!&!)o&EA_eT1)rk5U4dsE6@9Vql%[EKp^PcKak:+/-2j8"si&1GCa?J>nO,eq!<XD8f^aD.41IV]:UFq<*UfiX65C?FKu)E+%8cc3f.,;3[X$X9fD1jii6TgVoZ'5S.VU?(>L+:el0ZU?oDOM$:MVO6NP?UG7%':k5i<Ai26f_ohpfaHVP>`U0_`.>!f=HXJBlm6oWN7,MWG&#2S[A',!1E^<;J<]8:BNa!eh?&/"jghll*Q#2&bo::@=?RuI]Rd\jiVBPLF0B*`P(qGnbHk[7c)C<e`PT&M#)cNDIuZ'gGf'\:`+l&'!o&`qNO=RQGOjO]M7`7_J,2n)-IO"p-\o<_td$KW^DQb#,L(>8)Tm"S]SnZ]b>84)Wd1jT=pN>c;(M'q-#`u`,%'i5r#B;Sp9L-?0m%,HmN^"+0t'*sO<#Ahcg<$36OleHkLika([&&_Bj&QtfF9XB&f9^60smT]4m*58@RNj$HO3p,V0!L6-6&qT!#*qBmi&+r)nPLpkoW+H@4?jW+CLQ0R*oT@<'E5pke-gNWCDnb.@l"sRH^/M2q/:!hMc_[Y/gjtosl"/K4m3P`.6H=R]ce66C;uLu;"Lt3@d2LXYgqX5rL>Vb`N55NkH19+C4E-*1R@POlKW'hTH"VPmVOVWu,'ILjlM$n&pRq$jDcUDCW*5&CfpL85>B&J?2IHn.lA-Z,"n=ec^-BT<59&h1Q5Wg`3or4@6Gli0"W\^rL#4(G?p+<B=&J20^2R%g0>Yg4>UIa8$Z/`)e-R7)5^2i[eAE_$P_h?2AQkDM/X8%O[[f"2Yp^\Pq:.dNMF5'1Yi=)8P[LF6ONQO?S%j^f5fLuWSk#MKm`u<2Ft.1mPZ8"]A\G:g\kcQD55d!r'J-!8*MhIo8/[@1o%4IRP,9lC#?A4dk7s\RXM!dK_o/=ipj<S3N136Cb/pi9+C.LqN=JcnlQNoc'V3%d^r6`e\,>P9f/MiJ9,LaU9jf"+j0g6JMBch-BT\I(1IF3)ri^t\p[@ClVTRUtoAF'nBk5+1`8cOCE!%>DQ['Vh`NIl926aTp;rOQA3MJmI0B4U`%Y4B=MQ^,C?P_-2qW?<bV24c:4_jJ29>H\fnC8QbJh7g*_*V#0<B#8%#lr%K'Y2q"q$M*9I$8%p)m#sVRCLSQN#g6t5iOuW"q<?Xr5&IGVR_8],.n/(c=uOoE-H+*AQb@L+1aRLE:/OIY<,uO0X2M/4rd8a'8g^?\Z+k5\I"\hAep)O9Bp.SQMH)!@oS7H5JO^N+B+(+mRCX"p.'k+9?tAAOS+0gH@.'!>odlTS8[$TZ5ZoV7%GM(NMne*FLKH0g4TD+pZqOK~>endstream
endobj
10 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1001
>>
stream
Gau0CrD+=t&H/07@[kkL)oS<#0.nD^C=4">"U`l2U`8e2;1_iU+/FblgH2arJf]+F6n[[kGNY9;Dr84`"!Qn2+eDsIZ($WApE0H)H6GQ*Zq(_G]<j>m^u%gkY8KlI,+M;@b"88hBY&pBrnIr5Zj=n,2'T`22,PW=8R=+Bn#N<UeC$tra'M@/i"b6ZHL@%bO!$)/)d=L,M=`ZlnrZ+]j]GH&;V&CKqud,.KP/lJ6)>e(&n_p7a@c[X'dGCs]J;Chc*IW'FsAe2\F<Ei/rhEQl$A2Pr\,CQm!,@HT""n<R&h#O#J"qiPWW:aQJk9DodaG>NHQ@7Z+@tc7sZfH+HF8p]>kUB#K'u*")s@.n0kiXID"6NYq2'%AnLH7FcD8]?F"Iq*j-\#>;tlGK1^9)=MdIV*JIo)+A-1jUWtb%#;tON,GuL[#Q'*\>OK,,JUe^98m$oMX%FN8@pP4LM+7rafRn!>NWn?o5ooHL&ok@jS\r7uI\:o"&nkR&%=0;]U5%X&9,3X)_mmmB4Wlq!!VRmeaT2i,[:=E!-.&l&7uZ!lYIjpZ9nlGo5SGgf4Zgg^;=S(eIYX_s'>L]a">5S950s=<_UGR$2+\ZTGBR`ahNk.N6d`nPlfl@d?,pm2q(D&%]<IFN2"jjo)AZM*$*^Q8)]R7o$Y(AfIHS:'\`r:7R9DCRamDQiSmsdZ$R-%dJsc"GGOL:$AgPBm']4d57XQ![k(V*7_bK\J,a]14m(O:)(h)UVN-cF6]LWGZV8o92MQ']_D@&4#M2"LZ4eeZ%"8Eb;GUS>hhfE=M`jJnq70d&1n6kSRXgWbk\[aA<_\-4q&q#_W>7UO]Kn00[#*3u+U_=/j*cE[c*J(i4c5OOb`7F,rD@58$F<,!#cX^Zj4bE=D/Rr.tp'!)h&s<7,g@NJWTr)_R[or!OT6XgHAI;4i$,G#g2NZ`K7\6e?\KOMT3hl&TjE3G=HAG?.-(-iF][j1(CI`W-#Y#_>1LpuJU@JQOqA*i~>endstream
endobj
xref
0 11
0000000000 65535 f
0000000073 00000 n
0000000114 00000 n
0000000221 00000 n
0000001154 00000 n
0000001357 00000 n
0000001561 00000 n
0000001629 00000 n
0000001912 00000 n
0000001977 00000 n
0000005745 00000 n
trailer
<<
/ID
[<7a19995b34843c88f1785d3d9a794353><7a19995b34843c88f1785d3d9a794353>]
% ReportLab generated PDF document -- digest (http://www.reportlab.com)
/Info 7 0 R
/Root 6 0 R
/Size 11
>>
startxref
6838
%%EOF

View File

@ -0,0 +1,203 @@
%PDF-1.4
%“Œ‹ž ReportLab Generated PDF document http://www.reportlab.com
1 0 obj
<<
/F1 2 0 R /F2 3 0 R
>>
endobj
2 0 obj
<<
/BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font
>>
endobj
3 0 obj
<<
/BaseFont /STSong-Light /DescendantFonts [ <<
/BaseFont /STSong-Light /CIDSystemInfo <<
/Ordering (GB1) /Registry (Adobe) /Supplement 0
>> /DW 1000 /FontDescriptor <<
/Ascent 752 /CapHeight 737 /Descent -271 /Flags 6 /FontBBox [ -25 -254 1000 880 ] /FontName /STSongStd-Light
/ItalicAngle 0 /Leading 148 /MaxWidth 1000 /MissingWidth 500 /StemH 91 /StemV 58
/Type /FontDescriptor /XHeight 553
>> /Subtype /CIDFontType0 /Type /Font
/W [ 1 [ 207 270 342 467 462 797 710 239 374 ] 10 [ 374 423 605 238 375 238 334 462 ] 18 26 462 27 28 238
29 31 605 32 [ 344 748 684 560 695 739 563 511 729 793
318 312 666 526 896 758 772 544 772 628
465 607 753 711 972 647 620 607 374 333
374 606 500 239 417 503 427 529 415 264
444 518 241 230 495 228 793 527 524 ] 81 [ 524 504 338 336 277 517 450 652 466 452
407 370 258 370 605 ] ]
>> ] /Encoding /UniGB-UCS2-H /Name /F2 /Subtype /Type0 /Type /Font
>>
endobj
4 0 obj
<<
/Contents 14 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 13 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
5 0 obj
<<
/Contents 15 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 13 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
6 0 obj
<<
/Contents 16 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 13 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
7 0 obj
<<
/Contents 17 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 13 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
8 0 obj
<<
/Contents 18 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 13 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
9 0 obj
<<
/Contents 19 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 13 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
10 0 obj
<<
/Contents 20 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 13 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
11 0 obj
<<
/PageMode /UseNone /Pages 13 0 R /Type /Catalog
>>
endobj
12 0 obj
<<
/Author (\(anonymous\)) /CreationDate (D:20251212050229+08'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20251212050229+08'00') /Producer (ReportLab PDF Library - www.reportlab.com)
/Subject (\(unspecified\)) /Title (\(anonymous\)) /Trapped /False
>>
endobj
13 0 obj
<<
/Count 7 /Kids [ 4 0 R 5 0 R 6 0 R 7 0 R 8 0 R 9 0 R 10 0 R ] /Type /Pages
>>
endobj
14 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 2490
>>
stream
Gau0DqbnFm&H4hB`Qe#edNKE@V3?:t[PK5YcnrQs`W`9S6?j>\#ge5i;A/i8GPBSNc9=316TQ([TuZSM]DM!\FJAP+A)'7AP(d?8k_W%k-,\P,gXIRfkK,BpHZ/?:Ei&0!REf*0Gct'+Q0*KWSSH-YlD47TG4-KEW@K\6q;ao/5m^\V5pR(6RoJ^6//[e[R[ra[AF49.a:&Gdon-fM.N*]UB?b7&24+.-.THqS*Ts*\eI+oJ$eQ5aKND)t'm22"$+_XZ)PS\:Ve>0"V%h$ZW^4agaRH2*7+DE(AMQB46!(fqIB=*K&`/OubAHNbb$,Hs:/q\?S";C)-Ri2nNDEFi.D#^Rj\5&LE^rf@I\0gnN)Sn4"d(<o#6[IG0#`IsgM=IL(SoT&*dFqjV[(WACMYkOg([/rX/UF]FjEFV8(FNOcIE7q3:O5e65_FKIXdX+f&,!fg(S&`YLn72br'nuc*%8T&?WqU3QJj1Kuk%DB*B`,ZYip;VgOqKNM+L,eUfFp6/;gSY-$@pnXF.PoduE;S0jX]XiajT0=V43Ar)qMhp6KR@q[B#X)2:0Isq<92.D%.Bq6h1h.Q<=8.U1`j6$*uRm-XEO=(/pBaHr!/f(;dP.]ZOol"!?/]^K(Bg?-lP"7G1$s?*S*O+;)QhQPOU5u-,C%mUG[,9Qph*qJ!SMJc;,/lJ2p[i:;T9]9oPIs[q<m/tKHuqai&`2c]2Z/*Of"EFoec0&+OU*]??9s;_0[W7#B7.!"V[='7SG.bLZ?Xdb%=dqu*M0Jh$".(+qXA-(/G\H>Gh*:\#:KG%T6u/"!9'</cOEWP><\pK"ir'PG(;Se01U`_B&G[lFJ"6mRVG'CPP)U:1GUGOc=KOXY^l:?`f#Ao_0a"Yr]32TF*n\Y>JbB^BO0a9\,L8^Z2__A5]OS/YlTMC@2q%S4K&RRAAc_K4P`/LrKUJ%9Omib@.DBUo$[cC,Sjui;C,'s!JVe@gc7KsXVR_!?650c$4b>T_)oqAoVRor_eiV3p)X7XH\I"*Gf2=i*+2<?^<nK3e%^rrl:u8TpRno^78`Co<$2uc(.A4*+KjF+>CI!0b;NLThO?_C60p81'oGuda[l\IV0Q7i25R>Vjs/HC63'FL0_QH%(e]l@n!B/(_%L7h3)STZL\N(eQ;n/OQro[XiE>b2_Jk5Ki"?>B`1bLh@MF8VC*Uhfk*?rol*`k#WfnAm3c4h:nofO%Wn^&Cj!ogI6Ci7mk^+(_7-ulXa.gDg!C=4MDX=W3g$+D0iJ<kEa5_`<%uY?Q@d?_Q3a"NT;]b,:HjsMs6&EIjPBW[m>A25<R2tKq<Ao-#>&_NVrIM<$StE-)[[,#Enctp[-7fm%(NQkUVINP:^NRCQ/?/m*BQ)*He8MI6+K4C/&>4Rr@%2H<SkUr['OqGV"!n7b8@^GnKeDcpX!?3<XdDNdP&OD@qAbMr"Y/QuM>4\[0H-c1<lnL-6S[k\Cm0i>"+;BEl`,QTr&Ba[j6]BZ,98;XFYr!&EZrH8]`3Ssm^<4kf?DsI!.OlP=W5J8`W(uaYK&3L+0r/S`[,(2YQHK&QEEb5Kp;:]Zt0U)/ep57Dj;j#SU4TnQ\E@I%"eQhV*6Z,dAao<=PNpi4H,i!oU7+hW5`f@Ya(QRl'#-tWlf,%h&T>^VH>tqA%;>J3q)u/6m<Kl7PFK."52"b/<dVGN11$1bKgbIX4)USP10n_;Wg3N-Q1g;j+9?j7'->RqgO8JJ4KZH!^N9WZd7V<V,Il2p,aID;_>N!%%VmN*APMWa%<u?j3>&(Wu(N"m1.@.$0R_@?S,'X5DB0@\tQBnodtA:#RA*be_P90@,.2]dCL$2iML*U.4[N[+Z/2mAM6pipV'_b<@.7T%o>rD-#"tL_g20%72Q#q4Q"eu"2>tjc6NbOEWaZ[\p?ba,gj>J;624Ho]-,6*[d\.GGTr\rSCMK(RdVN2?4%]@<Z-sZ#1GT2c3]\)6HCO(>.Nm'Wpl_#E+]S?8'5Lku+:OX);++q$AsBoq<*NRqAfPcAJuTQ^uFeXjFk![1[JhW(P(S.6q%-)UiE8jH@cf"aA2OZB/GcX,;/61aSnqkOS>YXR>0"K"I?@Z6R3Y"VHSh]7(q0D[sLI6L%S?Bo'Kk]P_OQ!5`qBU!3kXB$@s]V,S@6p`+Rf,tYQC7L3i6%jHB(2H2S]*#^&jm07<VotC-V6c_X3N4.ieluL@PcY1"0m,P*d,`VTK_;QkN?I%lnHqSGC53tHHD-,Z[ZC.jK2Q1CNWjgJkYo+dZZEa`:5i?#OfX?_&.nVcH2Y^tHjW7D[o>'j'#E>-X'!==5`LuiN/e,!BjACPDqK&*QkK?MLA1t=lFAgrs\`G>nTCIj?W54O+)b&0W!Um;K82n/Mcdq4U>GeLqmFeKkrD-4ai,5CWVei!sJ5R%>j]m@?p!+<7p&C_5JZ#\rTSEIOaIeU6<O$ZBm_Z#aS'CH@1fH_goi&=p^#6&(H-NH/lBdKkZiVBaRS91*q[`'>fSK~>endstream
endobj
15 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 2040
>>
stream
Gau0ED,1j;&H9tY(d=%6b<"6\rO,'M0cDq3`+@Wp/b[!e=n*UQ4bVkWoXA1-FjJh1%*Tb[OHJ5!l03MoSuS]8AKpV6o(Cp^P!#0[^HIj=KOjp6OZM%7oL8=]](0],7S>m<NQc4)\=lQd&4:h_A_^s,ZGPPS8d\/bp\3VR^-rejQ<?!AN,OCq$SS>XcJ>XM!512[i:Q9ecIPO&huCSE$ST2T`e1M!G\m"m[,luQ"2(rAT+S;g=1"(C/)eiQi4.adG.hpH,O4S6^J7Qr\nJZW\r`bu=!,M.@/P9?0MDk3VZuJ,1U;cH?:d^A52Gg<JH#*@`:7X[8!WfZY?mjHG_oMJd6a4K?5#ja6!Hj'JA^da/adSnT:M`mZr$TVHh9XF<_g:_DBkPj-.?4jn.P4ko9s\=%-+iD;VJ!78^e_Q"bjcMTemc6Gr9h<rr;IS6!U5kA\Cu""E1Vs>g[-8((1^a63$cR_nd3W&'%uWO$`e"^6RHC0(es/#>h5[bNE=P#t@^"BZ8Z>T?q@I6tJC32K@\JmJ)YSbQ.C.d[+759N>Hh02*kf?!51#I;j:"Mq^+Z964^Oa^?4^c5tuIpkD_ZRGIi@Q@S*6+RjP)T92rIUTN5Fc'[/Bn1HDO=ceg]SL'$tQ5rX4o+!"gX-=bp<'@[$2QX1Hpl)H;^\0;l60XE.FOW+@HrO*0"/,t[a&lBLSM8D)._l?k45f+?MWG+I$"U.d%!j$-6H')]nXp'9L[-rW7tu'">g";!bEa?3<PuQKlp."94#QS43Vf-!0;:&AUaV&80FYIS+ssLt5[0gG3>7%IG&]R$%nQ9oLWtC21V!^]FXX=lgA^'0#/,RCPdBE`RoQLYg""Y'A/`s#;J!cj_/bhm`=2jIbogf`L;BUI)t_N_Uh"B0`YOR(2'QtRF`Kb#@)e8NqK]DC`nJ.m]PO%##f)8\F8c*r#GsTdm\7n!9`,7`,Io`met].%chdgio30IS8:'n-P29m.5<(SK4btPp4Ftc*3R2Ouf^dJ$0*.en=]ce5KW%WNZ]P$KC9dsKN0:0U'&?:akmE&IJp)_OE9EQ-abWA^^'KE"XY^igRiN7t<2tmXXc(fKX>%0Giod-5-+3`o#tr:ueN\PW:n$<>W9**+e-AC&;np&!$"6$qc3dtZJt6H]$J!BG1Gi/M:IA=h90.JnPC.a76:.'gG9#G\ZcgNsjEHj9g6pG#gJtW31*9#NU][AJ`(?_^/kP:7AcXa06'IUC)Wmtun(0p]ZS73G*"*kNG*/Ztk$im-"]7>U#Wfp1\TT>l2FiB]9]Y.$p+u!rpF;\Oi:pC-594/ba=e7r"j2$sJBG*WCYKn622&i>T++[lhnlG"CL+\D%8*J*7A[pU\^2b#f/d;)'"/kubHd0*>YFl@?LXP0&(ef2Cbel@Po1=lnR5Rjq1I+f!faj[GAr78lJ9"fI6&2(Pb7ELh>e92'gu\E^dRV7glQ1hZLKC3k=*!$]HcgXs#)Q8\gaV1dIcT(L?=FufUOqh!1("jK=+g5MBYKfEKfKln!RGZ>^R_-#M]"=;C;NGkYe'*mp+!O:W*VYkL5/PE^9EdT"K?7Z_Ot#/it.D1=s)1/Kg/!N<]>t!>eB3'mN-L-5\CM%rbhVAeqa^3%YKN:tjS#,*Y?jCO6eE1aW6,B4&3_lqThh"l0\-2c?m-o/`dC=UlC+FJKkBV*Hub@'.GE<BBnJU:>,kUL'p!oZ[RD?]3.Lqles@&^3IA<0^[bqZFrBiS+$H5Vb59gsSn\_ehNMD:^Eu<PSj8[0_:G+Q9dE!*E2-`U7meB`KE=eZ`?49+o:mi3p9/B?'JWm,OkOp]^+H.6%E35NO#ITCC,<_HB-:pS;q[XhN$6qSHVZUJbisX>(cK]'i.9,R?Hte>5)%YFcVYb&t%r"eA;bb1abB!^:F;6p0h3"%J[).;];COE]8fm5m"Y]ZUb%lXj'/$0TJ$kb3=$[,aN$LQ'CbH.)TC8ktOaZ)ha!`l$k(3cmG#lgV<6\c_]d[^JmtX5hb$HRa2s[FOe^6P1l%B9mV_MNFCNb("@Q@^Q~>endstream
endobj
16 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1796
>>
stream
Gau0DCK&tg&H0nX&CY%p)+V6LpLTI?9kZjS'5S((,jc%7!CIL@PNFSpaD^P8l=Cj6(:=tla]PUeT%uQAk?`rYrIA.6haZ#2@<Crm7"E\S1]e>[B_XE11gKme"IZ+N`YK2R7,B;rp'U"HH5pFZrqgfG7#O=8Y)S0SBhaPLF@feXlIXR:$A17&mOFl\m@ZTFUi1TG.<RhK)sDf[K*F\D&@Bpa#l#U9O=uJEGH27U4;_o(D1*uS^57Sg(t*q`B#1de2-@CFd12jJhZA,19h:ql--f0cEJ=9?I-D2E:Jn@eAecDA8=@b2UB)-IDZ^Am4$"Dp)E9!!?EfquB)MIF)=YklQ]tR\S"o<Y54ZsGJ)%hbK\.g*A`m\F-smfB>_&c)[Yb]M!$(kpb6J`1UlY?S],XlK!OY'79.Eji6ERnb/)s(#%eeRT/Cte@RS->U1tYu^Y,_n^"Te=Lf(Lb;;2LpO@0fO2'@>0WFEGQu!8^WUd2u16\pj*[(i?`6#\=12nb'l)a+7rr[1''"2#TNAlNR/a8lb@erB@$_<=PJMY'oI<G6Uk:_eRSo9ZcV:7ZY0S1cq\N0p,(@*M\1t@+oi!$b;pR_A_74HP:)k,/-r//'k0"giM,]U`-LeT:#&WbauNngXPs%SgtOkLKM_&gNA4dK$_MAY<O\]!I@H"8uimc_)g$\KGu_`0$4<4Y^P]@Jsi?b]g`/C3&Ff@%m2c[S41uBZi@iDR%ZVlgusO_JYjaem\eN&6+KSi36K2m_5*A:`a`FBGep.4#pD4V4F@k7(%!mRR)9.VJ@di@akp/u5&_D_XnL1a&SX?]7@O"p:DB?@rT:8kkCYP@`X9,S#A'P^=>5S=a^n+=dJg`K.GaT(+o-37[.G4Lj$j/18A`am>n76`@BctBd?$8a[%8Q<FereFq:J(ll3(:3Z_3@=8lG<)O&mm-Ltp8j?9[;j+/eQ\IQ??TIr]nqfQ/Rl7/sYf_W\2%'AKnCje03%ZD(9j9)B_b=PP-J-V]_6F=-<qg;!5\mF;"BK&`$fK2W7S&_4(V87X&/@jQh=cM0>>qG7m6bh40kjXssfhe@&aPf7R\:i6,IPQ=QS<5QY;j/+:IY=fA*K>;,=%kdT8O6!-4RbF!m*Q`5LlTH:O.L7"1Dl:4G/-ad7\dFXA.k^hB9!rl`AIKN28aG#OlSZ>0,_*O9'[N,fIuX'!Skm`/c=>j<Ec,2<fBhum^#]%Vbq=*P"G`/7c8@N@-jP,N:aNrr"E#c^dG*5>;-WEV+kioiSZ:q7Cth.gW.HXic0$7=KC)DD3E?cs00_eUCB3!qXMF\db!l/k)_;hhhVEJ;f2X8Us)SC>-BW.M4WTZm@:l_dW"RACDlK\T;K5Lufbs'onm!ZGM@ffCQ0nhG"F!DTgZl@YD*ED>\o#86b?.1-"d.K!m[_Ej8KGqn9_lqh8\`#c7<OK`pSgf`)_JX:a6L/h1@K)c)%*\4'Q6kfW2ENQ,?$[.;U!*,0EY3Af+aK-mA'OWm.2W,&EbEP&Im%.%7o0KV/%j8+FgT4@BnR:Er3HJo7:]n;64K\BQO>U7`E[MqX$D<.h!1X\[,YLKHP+$7f?WKFIY=*WUeFNMQkL\"D(bXIpuO(4p0-X*HF'Jal?o(-!dg;:(rO\2OXaZ9\E:KDTgqkEi_gk.jkRbGNh6]A'dXS!OOR%B#PlUl2P@-jc5/<c]J`E1[SR]?BDTQk*.3q*p%FJo/EcRH\[3Q4GDrrDfRCOM\n5b5J,AU-o>GV&r^0.?8G8'd;Yf.h3,KmMCW/>YG@BLDN;b_APAeUQMq%efuf<~>endstream
endobj
17 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 2137
>>
stream
Gau0ECK&tI'`H=\n4]`a\s'^ObNV3&>GeTlP2MFfG0qROdLZ`h8fnc"ZG1hV]s_K6fGcX::8pd#=k5V-gnQC9!s\cb[F=.YGVT[K52uY[_/MWs.TF7R<Ub+?G.,E>Sgk()n!\-%,9'h+,'[uWY3]Pmmr5]NMBM`j4C<`ME;sAf%$0AD,3UBB`&B;r>p"J83MF[-PM.!;-M`skQM3<YA'D&bbHVX`Nc@(7L=)RhfKQkg$kJ!LcNkbuRAjU<%'&We.-!Cj#\=6Q/l%oJB$X&GpJ5j,1g:J[@2!(eif+*)W>Ie;:D0/DGIj8oD1GQ`[UA#D+(,au4a2L9#7"!ph/h!]JoTkIPQQ.0M\F<@4/)>sV8+oGednE:cF]%H^hE4A]S;3c>8Ylj=`?mbg$dP.'m+t$dR_]Kp1"E'X#QF'RsV'd./J;\=W;99TT"a$.GJuCR4fZcF#YLuI,n!3@/8SO'SXs@;(Gj\Q1(s:j:<sj&/nr;YpIQ;6/5:SjHU\?9"@EL[ZE%=/iJcqH+AG$nIG3<&0^g%!Kgc2'I%7,RDKVf0Wp#D)&F$>bdA;,)gTa6F@atH*VHEH*`NeQEYFnEkgldI;C_":ioKj(0MPOr4UA5`$EiH);4HQGg=-^M$dYq[FT>&YbIm?Sgd+B.hhn_fH/Q?J,g0_eW4_3#0s49IJIC\AkuuN->73U=%ZW5pZ.O`XU%?i,!E0V/<i/IkqK14NIJ$e+\'_K^3b4>P[9D.Oq[P<*DM;+sR(e_gg*"=7kSmVlL4pS8I?]:3IU>l-MLh%L'XsTZO&7'3liPESIF>,Ab(W;BJ-`NLJi)i0/-i,b16bta>(Fb=I>8Q41P+5r$p!(fJA?1X77GbEdk#>iIr3r/?7qhf:b4^.Z+)V%!0pNUR<`&9gfS0UA38+#0"6;sMO7$"P+Y-6$ADW1k8tO<j^i6=hPBl(Y,"p-=T'`"n'.B,lKCCEUB*YY[ndRbYQip6]u%n\K,;I$Hn`1JR6t7DJ.#t08T+*b0QmB_o^MV9Ea_7*T-/J!3<Gh7X5Jl2&cD6>Oj")JN(SImfeL#WAh4`&VE#(Q:=5NOa3%8PqF&@Ch@19=Z,Kq3K\c:"#/kT954M,Vb+#R?m9@09/X%?2l/;-[G?>S;3HC^GTK50FJ-ZKc"(7c0Q0bJ2A)s']\IB'QH:1qB>&n:2a^2`P&D?H*-E>s5a[g(=gXou[3s>#LeWeY34RqDA]@/UI4H[)21'+Fm92fb:6>7Y2:2p:mBj0ju9<dE:QqFY&%gA>:#L\@-r?nEK+:C'??f5)u)fJt_2G8CpWktJ2;2VhX<4*V:IMkCZU/+%Qdb!T+G%\6N>kES.rTtVS2E,uYeKn0/dcP7`rkl:u%06!;l[UKZTY<%S^mkB>g`&O&CPf<t?9>u^_77[4E)0qkZ%Lq?&kT>(E!EKo=94_8K)>`gdd.3DQIfbrp[XKO!C=q_!63UDK'3R!@9!ZX3\Qgn'fAR*-7$eMPG'+fgE_EUX>OP3D$,1@YcCKM$ZX&SO\tmPY95dGmNPSBF1dII5:'duka(I:nXj\RVVQ*tUInd#$jr+sU0O6Yps_?aeY[A@H*R=ECauaE;ueH.2//Uf(>EZ4NR^`*E5JsmY-Nq`LuZ*oUSiC9r^$bsd:(ObA*#KZLa(@bq=YC-=)OtFJ8MjVgSh8=IY-b-\,gP$6J00*QOCGFq$sJ&!Yh-Jc9&@fK]!2K8S9k[Y-?8uHg_B0L7-0X^Ol.L@^0>N_6%D\cZ1t;jP?A=Q<$IS!^bg/*)f](oEqF6r7KU$/2&I#6i-,(M*l5_)CN4&1L0Ik@)4iA:o@=je5\Rq3V@<.A!5R2VlV]Z.]n[@7[RqL%[jc0g!9*\=T`bD[#_A9,>g)rN(`+Dh8'a?.KZC7Ud>#PKErbjVam9IX#.hMEhNM9*ehVfqBKk&Pjbh#)fM6#lJU8Vd&Hio_/gf2q.q:,F5cMtEt9)Frp.dR$An)4H(:E>F=7Z6],/f6GlF*ZMmFDRj:D0@(seB9gJL't7h[7!PAI3rmScqrA&'s=qF8S""oI*5d$O\A9[N#>5V!kem'u_IRUY?n@BShDj?]cn!$GO-?Y!_;p>fVfn-?lAU"orD`;=h:T+f_(7]_QRrh0p4j!6V7flV^pT4%%n04D<c~>endstream
endobj
18 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1901
>>
stream
Gau0DBi>s@&H0nXfYg2r;IZ&@[(+7YZ/ac06RTkf;c5S#&KsnZ!Z:L_e(q?c,daCB]Tf@WG,KQJfDYPL*\dA.>*$s\i*AEHrLF0u"RUZR<N(NCB(2M-E4*Jk8Q?3WO%^6i)hl]q%aVt7-j'Em4]m5%G^?M&g1PB%#U4aD*]S;Qj;;AW\--s;NZI/klNC9a0]AhUnBIJ"]^DTW%G9(+5N1lQa`&Ve9HJS%;Mo==C)\cO*a1Q(6,(fb3[ln<];fl1KWp6pYcI)/KB$89J.Hb[@(RDcLI(eR"Q"[T/FZ,aQE_okT.M12.KJ&Y<bN5!I?`g@"sL-95;STrN5Z6oVj^_'r-IT`@$I<>j0o"f*eA1pYhLu<e-;6pa`Y>ON26S?kgUY7Ti93849CN0d)#89't88lDQtHEKP`Fd=6%R]Y&!XVR&UIh&L&$NYp'o2JYJra83EH9,k2SQi=7#=KPG_%aES*Ib0s>lQ%acPi@U/Ek0P3k=c8[#><R^Zk,hLr&=Sl@dtcrI;5a9H8Z$Yc363DF&QJUbV%<&05"-K-]J#qfW0XWs',#-*,[#UpDpg2*U%]Cs6@(Fd^>;YQN\[GHgH?pcR\bAk4lnQZ$fjLpDBC\2,^F>m"s&QI6mBd5*c7sW5RAQ%(-McHOBhlbgG>Ci0BfXDJA@3,"VSpj701roU9`,_F^/aC,/Kt\.2,/d*$]T$iB4r\N)q4:>`:Ch[/R[f_GZZ&0`6FI73G04Ip-nV)%=iV:?]\mmaq:OUK>.<^f/Jc@,[i-/?LGN?>)&'A1V&//q>ofG2Z(&.[4`-Y1T_Yq,gT1Ka\I8%2`*qWPB$rD4a'<U<K.eM)Bn*qZ!J9W@SRV<\bbS[])O&Q1G]ZQ_muaJA6*@0Xr@35Y=Gm!g9!,M#0\QLje>;qNm73IjMO$NI=;m(/5',l8#Vi:4fCN+oaY*0f?P#cO;V!5,6S[^0!X70$@>M#6\Q6R#5NkX!b;$jVQrbneS,?CP!L-7TOW^)fkFq?o$^p"UlUrH@.0@a.JbFF9W"kK!C^'2TN-knTl[e%8A^p[>#hNfe9h'ma@aq),\P)Co%XONDG_j6)D'E5WD@75Hjk?o'Ia1)XtH-]2D9&GVu/`JoJAu&S$Jm'5h3l:%kfX79c2?U-U.A0+iUNEs^eFor%le_"3m>8&OYB+MK`7_2VfAftuj[oH%<3E4NgH+Pg/?jW[tA3u`J(C$SZ?mXfkFn:X<.>9]K"\).bgTdo-nTT/OrAR%GAP@L^@T*hGY*@AB7M@Q)Kj&4>-e$=b2ERoZ!fE$^DiYdd0EJ6#Q&*Tk+Gr@U#">m-85RA3i=la,UH2pLuHH#L>E._I3*,PCH5st0+"H2s&Lq.YVJ,L/3"dm*?3^DF+.S*!\6<I88ZK\<$geR+S`.dZdj+0'2$)0>;?3['QlL:ireIrisH%Wc<p[RchL7eq9<lR-.H6Xk@COLf4Z@BX_S>Yp5);*%^:!AtIV/:PA;n#"n/"f7rb2h`3:b3@V60ll?<2:BW_)#W!kMZAR$O)3XYr;W9$HJPh(+?XDUbW%+#V-Y(eY?$D&91eGmLmB#DVe7d*cDhW_r;5>-#,TbeNIYLj"u[QI.\"U;%CSE**e*[d"=p]m)6!En.efsX!\f9@Pn]2repDYRnm(n5YgG1lbsDWi^?e!?[V<bk6&,@G=b_5TkLGdGDV1e*>u[PRD)@&\RD@>!!79,i:6`s'3t$+T\P:egWtA?iKWYT-HR/JZ[eOK3)5=S<m/aHX\V,PHTofd,Za2L"i2f+MgN%2_eGrqbpJ],8rDN]d\,I78)g$m?FKk:%r$hc<WF97\`EqKH];b9Y((f3:=s$a0Foh?RiPo50CfJ6"Z5X3*"3<9L>=+6e^cDVld$q<T8G9OM;uuFh_6QUrTTQT_8<rnbI^j~>endstream
endobj
19 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1767
>>
stream
Gau0ED,91]&H88.iI7GO.[]&F2nP?Tp8Y/m'`n^#%Z(q2,D8nM>'_/g$gM[!bkU#1`+aT#)1+NTkBV6BRFt"5!e2I;Vmet]AfU18/-?3pp`be\eA6AgGWY?LpLJ$<UX7*7`ds%Qk_+c]\_cgE"/g0lqd'Ooo)%U_LL62>LJ9J:`K*=s-f:^Qeh/mWVPbKBIIp.4.A")L(W'I'Td638^No43F=2<+_U6)jZ2W!4:[dN$K6+@(2VXtd[p-]D.N!Y&Y_EUY>7okq9f"VCF+Z?DO\6*,UdK+\6&?KU/CA[$:usF'#p?l>?@bZj)49H?9#(sU:?c6):Z.%t+\u]05G<Wa00kJ8fZlX189ef6!U)-JDDO8B-)F([lOtI_)6-oEN5u4D?:^&fTH?9u_.SQj&aD_O@U"(0TR5#Rd<#':m3f*-72dKK-#\:W+Q-TH1%8>s%0"*LFXK-fp4HG`hujCt*.a);pB[?=Q:M52qfD4gB>XcA0-,(]J^E6q@;IC3&t:$,VM3&;lJ?"\B-l?G5MI&"YJ?hbV"f=cYquBjcuofsZjr?)BG@gR+ue]c!#1$^_co/Ad,Apcj2>8:M5l9m,3mU]K\=QD*93Gc#iusTdePPoS9!V"3$LSnV[mkm?b#2m+)6<TT2>r1"4flKHa#&!b_J'j"rKo]K8G(4YmNi9E^7+eH@tMhhEs.^nbE#QF2p`4!!hTa*l!>?Zir@g^BCu5&L_O94Hh>TGop=WOClfa7kH^X_IXrY)aiDZ)P_+dciGIn;@TMM]aqlMH-)6P8Qou1)2!oALMl3Q47n-iY<>\;H[ME5:E]h>H4m)*:(MQZ,cm1.FUVWorBpgMcY85NW*&e$EL/E73Tk9'_-&$i<l@K:/ic?V1"sh39h"oQ"Z@0P!gIO1.;_dsYV,\pLZK/_RZ)(+-;YX!.\g"MX30N.lauG\dUGX'[aqg'es'B5>a]E:X')KGX/i)]$q*s"0Ik;^/":K`C&<e%Ne,t_f]=t9bY`1Xqr1L;VM5k5=U[f<b%C>a^Li\d<k6XO3Q/&B?c6=((m#*WC,n:(<o&sl;^Z`Ygr^9j$e&f#BS6E;ApsamGPb6tXl.Fa@q,3HZc48M0MRC5&OkFPN[LY,'e!<+26VfMl8H>j-<#QaX;>#2"gt9@X%NJ-km5-E8uOZm01l65n?Rkm%3-ZS"+_fLM;Fq($Gl.qK;M+;&NLd^fE'Yc40M5L<U:NA^0SDaQ"0hW53VcGS0`EjM)r8D<=Xj[(A4d5&(m!(g;u3%!FhT=XBcU?/5,TL"S#C8"&>Gop^]35A:::SZF3q*.JRjp&A+,5e7upBJP;.lPuS<CT:uKc&S\Zl?Z$Up!-Z\ZPOt;QL6neKb>b6C<DB<!'WO0d*<RJ0.PehT'.Rh\RUmZc2aD\b"/B?O81UZE&CM07!aCbk,q\^%ATX3@2[;=?R[9rVLl42O8ARW?M9FudA;$uhkF2,RU_C;TRM5VKk6Rr<:$[^Q%!Ro6SD3Z0I^;/#Mp$+37W')93\L!X*PM4JogLd=7CAJ,ee,85G)OB#`I5OZ>WK_ern>4fYhaXuHrku0RhV(:RDU,PkSj#p8q1$H/*.D>,Yc>4hmjelN5@BY^NZ%3]sUrk8tij%?N^aT..I*,=D++Cfh.Am55d7q$s^n,)'q_HS\F)u_L'kW@Dt"?G_he]XE0(]#Kl(4Y6F#><E_tVWij$E6]JN*>,ol8c<sX%L7r`&moqpIhi[OH[enMQ+Jcf2,s>eC?6b'bG_UoB-NqqL#/1$:9&&`W~>endstream
endobj
20 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1014
>>
stream
Gau0BD,].R&H9tY\1\k<#L^6=HQd5jfs0"Gb);Wj3o!OH,:I;27EaWAhqm/u&@!ub#Fpn#jg)G`Zd8&\-mA+WCjQsbCaJ*6#:5TMab`h@1*ZN>[Zf.cP+$]cC1L?2@c;_TJX6`$_oIlTg$bqJ_F;t%>q;'G>Z6P?>ETbLFSdga.4\rI+?g88HADc/@IlNnl1*9ud$)@*R3n?8FNgmR.m1L@8%/N#3su[#1OrPdg87Ed7.Q5pho4V)%+_U(6RRD(.E5m[]l)3:*Gf+s#'r9&4[R"O;W+/dZ9XKU+tmMmJpc9<a)d"N;;@H&5q7gf4,hJpK6EPG"ia%hi-7/#h%<pd+((/OOp^,t+(R1g]1M]j]n/&ucR3r64=C25qK65hR:128:2*"E#-Y&/G0dc[&)VUY6`U7Jf931MMC$/CYG>95-3mVlA4\7<q$BQY"(f5b&CSDu];f.$<pgk[G+k2@=I%?q;3mT(b5`A8_>&WKH%s.\peBl`aatj>`"?V!2+'@C)`u6cc*.1-#L<VbA+mK0%/?U>Bes<CHcQ_S#*B+FQOQW=-0c0HC"-a[g)\]o"ld!H_JZbS]?c%t4074cqo%'8Fe@![P-U5%Dq9'@Nr?rq7]N6[=_DeQ(@4AC>JQ]3rMB$`IX5q14*jFAe_f:'-QH'153ZH&Z7D%&h>U.Fn#1*)f,s[ejJ^+7#N+8QQ[>ZVIeQ![WQdcEh$7dK-_FY29A[Zp0OL?$LF'"_.4\=)NMKl<"i,H[Hsi;!#G46_R]!sH9ob8VPRl/AYthS)&(=cc$6Z].!iP_>%^\^O*EGjbGg#mZjgId)ILtEuEa__)=i^b%f0;`kNY8oB'E+-Lq;2q@6F<#jmF-O"mFcMbdF?/s?a*P*lDMT:P"`KNDO[[,;P'Z*KGlcbB*RfQSMqR8IGmh$8eTQ,J)H+sJ40JoSPV,o9Ob)pDIE6"5cV2CpolrI#[X2)41Z?@=NAV<5n05BXN4//_S+jL.I#gZ,mPMpm;e25'XT:e!QE62;?~>endstream
endobj
xref
0 21
0000000000 65535 f
0000000073 00000 n
0000000114 00000 n
0000000221 00000 n
0000001154 00000 n
0000001359 00000 n
0000001564 00000 n
0000001769 00000 n
0000001974 00000 n
0000002179 00000 n
0000002384 00000 n
0000002590 00000 n
0000002660 00000 n
0000002944 00000 n
0000003041 00000 n
0000005623 00000 n
0000007755 00000 n
0000009643 00000 n
0000011872 00000 n
0000013865 00000 n
0000015724 00000 n
trailer
<<
/ID
[<61c149ddd04bc96e94cbfc104f656c62><61c149ddd04bc96e94cbfc104f656c62>]
% ReportLab generated PDF document -- digest (http://www.reportlab.com)
/Info 12 0 R
/Root 11 0 R
/Size 21
>>
startxref
16830
%%EOF

View File

@ -0,0 +1,108 @@
%PDF-1.4
%“Œ‹ž ReportLab Generated PDF document http://www.reportlab.com
1 0 obj
<<
/F1 2 0 R /F2 3 0 R
>>
endobj
2 0 obj
<<
/BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font
>>
endobj
3 0 obj
<<
/BaseFont /STSong-Light /DescendantFonts [ <<
/BaseFont /STSong-Light /CIDSystemInfo <<
/Ordering (GB1) /Registry (Adobe) /Supplement 0
>> /DW 1000 /FontDescriptor <<
/Ascent 752 /CapHeight 737 /Descent -271 /Flags 6 /FontBBox [ -25 -254 1000 880 ] /FontName /STSongStd-Light
/ItalicAngle 0 /Leading 148 /MaxWidth 1000 /MissingWidth 500 /StemH 91 /StemV 58
/Type /FontDescriptor /XHeight 553
>> /Subtype /CIDFontType0 /Type /Font
/W [ 1 [ 207 270 342 467 462 797 710 239 374 ] 10 [ 374 423 605 238 375 238 334 462 ] 18 26 462 27 28 238
29 31 605 32 [ 344 748 684 560 695 739 563 511 729 793
318 312 666 526 896 758 772 544 772 628
465 607 753 711 972 647 620 607 374 333
374 606 500 239 417 503 427 529 415 264
444 518 241 230 495 228 793 527 524 ] 81 [ 524 504 338 336 277 517 450 652 466 452
407 370 258 370 605 ] ]
>> ] /Encoding /UniGB-UCS2-H /Name /F2 /Subtype /Type0 /Type /Font
>>
endobj
4 0 obj
<<
/Contents 9 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 8 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
5 0 obj
<<
/Contents 10 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 8 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
6 0 obj
<<
/PageMode /UseNone /Pages 8 0 R /Type /Catalog
>>
endobj
7 0 obj
<<
/Author (\(anonymous\)) /CreationDate (D:20251212051549+08'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20251212051549+08'00') /Producer (ReportLab PDF Library - www.reportlab.com)
/Subject (\(unspecified\)) /Title (\(anonymous\)) /Trapped /False
>>
endobj
8 0 obj
<<
/Count 2 /Kids [ 4 0 R 5 0 R ] /Type /Pages
>>
endobj
9 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 3205
>>
stream
Gau0ECNgF^')g+ZR$/MU7qB0&dh99^KQ(%ZLF$KSJE)JsA0ep@(s<,9q<_C/];Oh#O3sP\@sd:)mcgmc<HY@B,niR/'%cNG,l);E/H83e;C04`,#-f;_e7*/iJg'?a=u(bg/`CGDW71&CF:C@8&K0mkc%8@T>s#PBMBAR=e_1BBFg@V_g<fN4311+/S0\b%,Y;.^&9S46=`[p[@.DamdRudTC*uBrFC.3=fT21dLPL(.Z(QJGL@0<?Tg]33.Y$aM>s^D+EA1u9Ft).f@EQZ<%*ga-FnilMrKZTMr@=GQS7knN/IBPhH8cqN6b,*&V960bm:+Ndn[NTgPA,K&TIjqTG%9/8&46mFM4<NMRD1CUTrVKq!oYOmUt7p9PO0QDmMp#Z9.5"Hh3SlP+$"3ZBghPku3"Z0qT4CjH*W!JaIh<'oQq,UkddJKQ^5/\g^,sL#H^B'ZDZ\Y'C,MFe3<H?NG\("e95tZJM7fe,mc2gD3DZbm'Li:>dODb*jsA@;';?[/$`g-#d<)b7no;EcfIu[sL+:EjmhOnTF;mA#OZkIbJ9X%^p#nABpF[82ZfLqI:7IR</4HCP7WF[Z\)"gY*S%W2*G4KPO7VJcBSV(EPY&?!YR:8Csc-Eea4Nk%.#$mBg!haY>ltkniR`S/g(\AO<5ocr4ZQKO,D.A!F5pq_V^+=`$f]qN"<SZ#P\'[APk3Cm+7V9KG\9Bc[A_9Vpm=4lc36?:q?&n7$EZRpgceQfia!MpA/o6adC&)a%5n1[`B$)*sjW5H7\eNg\JTJ8q`Fli'HXDOU-K:0btA*PR^VY)_Fj7La5!Yg!?gRl'9*f^">n?d8"d+LPL?&.4hDZFjCp"ed7/OMTg9ntIVUF4E;PPVU<j':L1l5`[[3dLk`2p,b*#*gZqj!Oa,(..?YZ=/Q<KdjV>r+5`0oMNP<Qjk8BBW*gDS'X>^e['1R-10`TsqYE!1i&s)UfX`r6<EW%Ck20@qkegeQ6Q,G+m:6l>@g#A`KIa;8Jk)a-<*>X+/tt+Zp@'TRWo:Mh'QUlc,BurKPiNEZ`[\m>bFX]]A%,(Ra_>simrHALpt3'`gYHS7_n.L*4O!;4e]/%/VaX>c3sP%XYZH08OLF&a9VLUH,Q;q![TJLsiX,io?Ba)\m__Z.a%[D6M^\C`<)Ja>*!b?+5Mfn57;usm[U:9P)5:9Y:;_(8rRuV`F,gIIXb)[tQR:[^YRZ=uV%f,?O&^Inh1"HKb=`t'!DXP^4[pA'kiE8q:eQ!K\?.pbIa1faNTr+_^h(gn_lU.3YfVZ1o#CV_%r5SHJZP0c[XhD)s'Y_`RNUT1IB[r0eQdF;@W+($!QIj*[WQA(Skk+IKqIgpH.PQJ@f[&Uh0.MWN>-9#c,[SKRNeL1B)m$B>">lE6-AHI*=F4O%L,f(S:g:*M6UbJLYfK@0N=?74Leu+P_g'f2[#6W^^!FkfZCaa#`Rq]/9\EC/>0%7gY/IJf%-gW'<XpZ>5qq9)`$"Xj""4[W0_)]L_u`^HS9=Afak`-YteW]r>1R/a.+-^1a;/*HLS^?:nD#N$DPd^,U&s2b1!`j0Wnfaajg,$Hs(i.k0>Fc6!XK'Hj<!.E3;>HD`,)Fp+15KQG+7-;4dQEm"f8UHp'K-&I2=hJ>r#q;3nZ!iZaY4^W\C'%O36R$PiK&,OjV#fF?So:4Q3d<dSm?4sX\Il\`VUpoTDZ=XPD&6YUUThL`1G<W`]**1Hn?W'][Y8d'aC3[]5IXW%@M,1q+'`(n#'j:!0jb\k)d$$LClr))2KWXZu/i(`0N"d9bML4*BS5Id>P%+g))JoE.do#\Qk(l/dI%_7O'cV(!i>sjMBM>uKCA3kC9/1XSeDsc=#49S#(aQumM[8Z6fF0LQtSFBU4]on$LkGWGqOlfD+Q,5tQ)."H/qD<$0RA'K](O95o2Bo],5UgG7oNf,R9<S3iiq^>OKT>@0jo42\)%1LC._+5+Z]#7'lsN_%<i2&0q5WWL\0t'Og>cN!;OPMoiMI\M\ATpB(XUci/MET_guA0NqDHC]L**'0"c.9QbXXQe)E]Fur2nAu?4X:X]t7P[\YK%SBeGEY'sU%$JA.\5VcoFc6cKu7`B1*r-70$\m`dDK8#2.hBT8qY%"/JKBoFnP$A.<.-JC3CT;u;[R&,&.b:D1(Y#J'H5VdnJ2h'CGJKGc>aM'WY5U![G9WG74P@$2>"0#8>$%GIM;7L!(m=*=/]=5*7XNH5%S0&L9fMP1QeEr;5^qf0Bet(ru&McbEn5jmlQ'CJG+X/l:i\FTsK]II^UWY7>2>@l@"N-l0$%\?rlo])c^/p?j_;Q<q`lZ]d&r6s=5!jWdQZR?/4-:ncPJEt/Thl]?4Rmt%d#s1*od'd)n,*me,WuO;Y8#<eiT*r/H%DhN-gYTXSNch:'D2]s./3)YK>G6H^DCW'0&ihB6\3An]pt_)e!mQYX=0>g=u2e.;#g^[g(`6=(_fbX1MW(RQ%t7MPg;(CkLa`90^==Mh2Tg0ZfdfDh[Bl]Xb@@Wr7UL=SR*EF@*+#VK)lmI&(!.a(Po7c:;NhBG;La8W9D.&Cgg2tjGbf\T.Q792=IBnHgG-B*kPEuD90e\>AR=[),Nt`eb7$f\,;-7*\rL'aC_a<g1f8X56$hT)^el(ag/NT,^XGnDjO%o*(iAD0#5TP+Td*AO03opF,UTPfq961H0:_sV.YE0#K6MPorL/?Dd5n>DQ@eI"j"IV]Af9nL8J*:R#_LV2UgAZ9)Wd8U7p8NgLiGb*'NJB#8nJ(LNC=E_5j#p0$pg56Wh"Rd$(l%^'YApbd]-4;NugiqD!R<Oe/Zg`um9h=hl=W1TsHNriWW*95+j33aEg$mt"eOm*:+54.<iEr%XG`YlIj`VX6!Y`>!16?XR#:9_a'b1QeB*!a853q]W-\Wmsm=:[E9ulp5g5cZ%'B8sCZdQ.=.%M->B#8T^KFkDrJqjbL<)clKImilNVDXVcM9N%YXsFoi*h.=kITBhap!q:=o;o7JQRH#"F->-5u*!U&^U'r!PBKG:5$>8i:c.k%3`DMeIbb2o%'G'a(BA!Roor%1,A]\GI7G&bsCG;Of8\"`CcV'sQ!`sQ)kpTH!eI0QhpD=DTL-<fi;d\XTu%:"QYXmtUf)&OTG^XHhdo1i03Vsor[EkOMg(.9?I_kWZ^K3^jl>G]7$:mD/=>@+qfW^hp[O0F9J2=F?)T8NBHMRVZdrrE$JA$#~>endstream
endobj
10 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 3220
>>
stream
Gatm=qc=\-(B3.)U-5hC:1b7+d8^?13La;e9TGSJJf&T-",I"U0ZFqO_.!?:^%^*Q!H!RtH=C(EY-.ZumW\+OGf&A\VsEkuP&*%>i`i!nOYln@:CCmbplK;L<\@I`?^[2eMO/HG0dTaPN0W>7Q.hu@<&lS@>UbKIrHoQcJ.s%.o5`8=#H8mr4/"'Cma%N-@)=[2C,^cG`<miMnBR_UfjlI2MR74HPKYeR<o=Xt6>BVfp,@1IPIuB"qIor59.RO*`aoMV@d=d,FGN#$XUqdA]tV<endZsnJka/m4A6:@G!b$%-IT^,9\d@bD;SNre@Cja/]0^c84Z#K"#k1i,-`5l9\EL^WKnRJKHau)KU(!M/#@EhdB!%=a<FkkV>#BSeO&*1bG9-D1k'`.TtPXm)W"Jq%akL5LVh_ToB+@L:_G<e*&JF\=K-Spreq?s?J*aR;ZmlRNDe&Rr[)@agStj5&0Qi$4UaZ5'Ig8Ao#MkSG[r*:*E\jjfe(p1:2A9VOn)d[_T/V8?&J+AH,9+;78EnGCH2YoFTK@_nfc.E>Q>>s7]<[&+AF/K-7RkQW!A+n!O,g-!(m9sdsmR.acZ^3P-aj2fIr<5Z%!?XkeB#.C^g:fJ-Gi?Wf<'Qc%ThJNQ2N16N4[7\ssP3(*_@<X[HEu+=F!j-7;0F./FW#eH>.e8q\[Aiq#'+_Y&hZ:<)K*87]A(XU-NZp\c<7nd^:0!aeGG)4t@.&>)e);!*%+9Xb<F(#09Vd7m;0GR8=Bp]Q$?*M-tS&8MlT"*hZa#4(2s;sRFA.*qFs*QsH<1AS$a/6pMQ6`HWqZ]7+kJ$b#Em([0U3q'Z+ARI)=7NbqrAMQaVIAAV#"\0pYPU]8=G=rtKA]P2uo8j326)kX$;@B&\:_lm;iNa=;#B#VM+DXk#2ku@R&Sn.[g<N!92<s6*nORQGrbCje>EKl;@f-KWR)Tm&rSX"l7Z=c#Fs@RK"s+*c'^&rbQ7mK@/qfo>lBpa?_F+SMcc6Lu?O!nZM)[u)bkQC>KU*l"/P?7Q(?PI!j")g-HMrJ88.(`-MDOt6&"_.+N(%rIK/DN;#BGV(F/Bf0^]eJ?<16'7_"[\E0+HEZN*3I\%P!B9(d;"']i6It1M+&ImGY8-$!%@f-g1.]=XA_;KSI8MIcK\nAEj-sDn;>LUh]A.X3XYf=t_PgNtmW0WA5P`;;%p)P3?UlY1?sSQ[>1LbJVnA%Du.Z2D+ddC!!p-OV->r4[MJe_PeGG/VtlU2?a:;bXIcE1+mh>EeS3rd-"J<1B^]u#0%eo83dOB<=D&NMR2o(OeE7O3c.Q<Vh.=-VG#R0We+3LbdWe*\DX?S1T`RTl._U&&5K&aAq?WKl9[liQ"'89j5gG)#GXqmaZ'0/)B4^tqSh/o'BtsU1dR`%X?k#W(&1?Dh<J4WE*oXI2Qrf!"'A]QoH&^VXjSQ[ebpukF@%"]pO+AUG(b%GMAi%W4$I"qfrpndf(-Iaknc_Xj%`]_`!.]u9+"N(bSW7<\i'U?%;UA&*A@k4VD6gfDF?/*T._>U;5\.V&37+e`sAom6'eN*6$Mk)KgtN`;lM%T$/WVAV7"YJ@dD>pf!Zp(/11.krZ\5/PJXS<RGtNo`ahB%nls"2oC2[WNRB?\SO6Yj-p^u%3\Y$[+oe5<G4>&E]_mYRhhLk231$9@J-tG-,C47-'f'-2K>HZTn&r8_kbn88\?tk8"/S@u@^12"^0D+XQGC1u0"ANWo+@I1Vn+V#j*n7MB\MZuVnS%3(`p.YBZk$IFA2?YH%8"^qaAMdXTqfWJ@"?:lDY!gr'5ZSK2'qu*(6Hg\2jq=r1RccOt<(a18@)G^An)XLI7)-JX`3bBI50IM`n1$@<`3LOLN=8U"Q2"m^Fu4`""cr:^sR(X5fE'+n6+n;Yr,8?8UOOho\Atfok8hi=f=*o$Pd*>jt_f;p&al_UjgIMW$(*+6t6BV$_VYJc1$:RheH642^%)cc?U>LWtoOe4Z#$g!VqN'Fg]@Q'?K:mL_Z`N#YlGC5h$)DnDlIa&[K:V6gN7#PqO&_K;Q92?/mG^9_.UR>(KV^Q&:dLT@uQN3hDg$K&e4g@]Q#D0M.oP'Z>nrpSfZK:rD;pE+UYbPCss9n&s=mAqI,P`I<Tc;-DN\_^5q@g:j'MbgYPW3bVTHaO.53cmb)(DWB>j@h]V(VD#C)R0PCTrA28Pr`gc)VFfjDX!+%npGNUqUSjFR5mX%XXOLR)'?96Fkud/,kKVP^JM_>NW-M"NlWu7b,N[i&CQg&Jd"0/Q:MT1Q"`a\?3`f<Sa+2XVejMVCde"u>*(r%]9hNR6_=+YJ-&3A8<@DR__l2R]/\EjaVdg]":8N[ROr3mE;_J]LJ]gtcsbV5dh/NTd)P.=7"B8s_/o@Va8hCUj2-d%OA71EaAm"[mRR>u(3&:a.T/[Re"f>ELp\U3hs0ps'#ntUbF-Ho"[u#%"]&uKOZbu$cO_9b%W\ROfKMXgKqT0C"6ppL4d)V[0B]GJUfD_3=sS$rMNe_9a_]D_Lp+DHc^bFn<o*:*L%]O'I-J[pPK*:TTr;?)::iW*D1QS"PaZC-1F(IbE'6RgnSn\_PXr&LSNE.iptH.EEE@Z",ssk'cXr1b+IZVnkorF,MKTf1@\f%Ebf)]+2?';)!%tK#k>Zq;Zhp3FT0=fk9;\^C]HCc7J*_iYN!l3Z]n"-nd+c.K6?TXLDCIecVqiHD-QFtA_No.b!LW,2=nH8+?kHW/_pt`7o`)[%o3DKIhI1cP(p]#ILIc+P4o+T\GQt+PSBKboFB7rT/,YDbL^VcFCa7q28(:YJY+"g,0nBpqAXR?U0krU((J1I"A9Z62EpASJ><7H^43+7Sn8$^P'HtU&XipN1$p^(t_6YgNkDs"3CVZ6fFm(P18361/ZTF09H8Yk-S2+^@oF]DMghqB#Ac:jM<'PSCN#POcIGY7bp`Z:/RL.#ocuG/n]0Kt;Z9R06ipMsh[pL,?.U/H$]%r!!;!*7)[>ta,F<A=lq-PgrP<MA&759pf7ZqNqeH\-OTn#gZ[;cg&a3?`VdaZS>j-+0YYG&S-aN!1W[Sll62OA4/+BL):H:B\uAX5QunPmO4:\@Rm[q)^l^`3<MU,Ljg^%Q)<ZUWc#]^B?D\7@OHhfFmj;[T9hS"[(^;X$8Ca"jne45$:q@'V<j?S;1Y5lm&bgaCb7;aYne,=MJP^6m6&Wi"GmHMmJZ7fV,MpbR'XY2)+nA$JU+rWi!NF\M~>endstream
endobj
xref
0 11
0000000000 65535 f
0000000073 00000 n
0000000114 00000 n
0000000221 00000 n
0000001154 00000 n
0000001357 00000 n
0000001561 00000 n
0000001629 00000 n
0000001912 00000 n
0000001977 00000 n
0000005273 00000 n
trailer
<<
/ID
[<4e647b92f1e1cf2bd8034db8fe473f62><4e647b92f1e1cf2bd8034db8fe473f62>]
% ReportLab generated PDF document -- digest (http://www.reportlab.com)
/Info 7 0 R
/Root 6 0 R
/Size 11
>>
startxref
8585
%%EOF

View File

@ -0,0 +1,108 @@
%PDF-1.4
%“Œ‹ž ReportLab Generated PDF document http://www.reportlab.com
1 0 obj
<<
/F1 2 0 R /F2 3 0 R
>>
endobj
2 0 obj
<<
/BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font
>>
endobj
3 0 obj
<<
/BaseFont /STSong-Light /DescendantFonts [ <<
/BaseFont /STSong-Light /CIDSystemInfo <<
/Ordering (GB1) /Registry (Adobe) /Supplement 0
>> /DW 1000 /FontDescriptor <<
/Ascent 752 /CapHeight 737 /Descent -271 /Flags 6 /FontBBox [ -25 -254 1000 880 ] /FontName /STSongStd-Light
/ItalicAngle 0 /Leading 148 /MaxWidth 1000 /MissingWidth 500 /StemH 91 /StemV 58
/Type /FontDescriptor /XHeight 553
>> /Subtype /CIDFontType0 /Type /Font
/W [ 1 [ 207 270 342 467 462 797 710 239 374 ] 10 [ 374 423 605 238 375 238 334 462 ] 18 26 462 27 28 238
29 31 605 32 [ 344 748 684 560 695 739 563 511 729 793
318 312 666 526 896 758 772 544 772 628
465 607 753 711 972 647 620 607 374 333
374 606 500 239 417 503 427 529 415 264
444 518 241 230 495 228 793 527 524 ] 81 [ 524 504 338 336 277 517 450 652 466 452
407 370 258 370 605 ] ]
>> ] /Encoding /UniGB-UCS2-H /Name /F2 /Subtype /Type0 /Type /Font
>>
endobj
4 0 obj
<<
/Contents 9 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 8 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
5 0 obj
<<
/Contents 10 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 8 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
6 0 obj
<<
/PageMode /UseNone /Pages 8 0 R /Type /Catalog
>>
endobj
7 0 obj
<<
/Author (\(anonymous\)) /CreationDate (D:20251212051549+08'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20251212051549+08'00') /Producer (ReportLab PDF Library - www.reportlab.com)
/Subject (\(unspecified\)) /Title (\(anonymous\)) /Trapped /False
>>
endobj
8 0 obj
<<
/Count 2 /Kids [ 4 0 R 5 0 R ] /Type /Pages
>>
endobj
9 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 3775
>>
stream
Gatm>Bibu&')h7%LsO%\GS&0I6\>%qYBh3c8][R?V%"#-+p;G<":R6gp/eZJd+s6WhU85YV#0dE<P,8S%8iDorK4VX*0s2Mg82d?Z6WGLh(QmC*0f/!9!?tC:@:]c18pF)=cKGX30n+r$VBg7j0BA@=-dHJSdt29T$e^e5W^(9)60J65!pb_5ut!s.4`'(]mJl*U[plESL>@&=p>e":r-\t:37U#QeM>5p63okIKL4m6%?$N>,uZiMBMQa$^C,g8?8Corm%MeS/)khaJhR4ek0M\a?G$:#U)OK.)*WI$2@EXb<Ptb4;IiS]Wo6gl0i1IH3Eeo(F'JkK5spkeNsD5MXUuZ!ECn)B+YCi!`e81XQ%IE]\T#%D_t"L&tONYkY$;K!4D-/b=$(;N^"kE80s=<48':%bG.JS"56bO#HZ,B3sWt=847H#-lj$I&Sf)=(Qi*^HDG+38;*#:qQmWuS>DOJPu=D"nb.pRU`*#7&%rI7Q;U,$emre+.!2ku_a##*+[WqoK0<7D:aIds3]8UUq5V:^aS8l(&[82nBX46PeJnkcCLrE7BD^un%fit9(TW$*Y^7?8.b(((*N<m"!3sP%GfBU;iQqP0mj)(p,bYC9oppPphgA4A*,TQMY'sK0b>BQ:e39,rq$hd<UiF!kA6`EFPleKg;TcD#JjkG</c]FID$M.r%(>ARa9P/(nJo9Hl(90U[>8")BNIbB!#iLJnLg-1B%W,CkEYco/1U7fb*P,iJ:KrjD8*f(f18juTEct'mSuL"JtV_86V9c5DV`,Brm;eT:0;[\he]*%,;$[XVf;*CZCL^DV^52qDQ*59\3oO';_T`1RoY.h(];,&D&,Ha?SM_Cq0Y_X;#*[A!]UB)(7t-RYd[_e:XJ>`#kO$.$?.dB-9@/$=QFGhE,M:do'."J$9U9\<]Hedia1+SdDJM"LJtEF%%6=%_Bb'?S;otJ.G7EI6E+B3hLb@$bN@8,["#`R^7h8>Xc?:<YjVe`.9q1_HjIeGD?%_`aVqBnP\H1&f\g5G)9fYk!9j).G"E&da`VsX3t*ZS*+rW"Y5@6pc;C+&LHGIR1hP3U`Of&PV&L5K5KKh!&;K+;<qu6U0/*.l(F"9PfcjaT[E&V7P,CujCU>8$.H=ta>9Jk=FC@KM/\WblN/:StECr2!*?X8U*U*?8S,bZA,Y=]=I<hIV@=h!b@r:p+&T([S?5)^MHllZc5u![[*#Ia-Pb`Do!(:=):_$'3X[;2-#R1d$@rnH&h>%L\R\$SnUd9o'5^m%\+<U/-\34Ar`f**c*UYhX>+6Bk)Dl]^PP_+bGWH>Y&h&?[LSPC\kiOAGf<Vq'N2&^:*2IDG&>%D-G_gEc"4_]RR;e+j)aM8%d'F##'[LbB56nI_$\!SK,2hC1BbWVi;^KO%1n7Gs,;@`c[Dlk=cD?B`)"s2L`o`>sdtTS]CX\u<a.2ZX,blI=%S[M716FkBl3_XP0DNL)-Df<no$4'V":pKLcM8[Q+M=FH1lbS0n2_,0_%"9%GHO@dgRIbAL>Y.+0UgD6n[%qG;>WI9k?.T5RT'JQCq/eOO:+4bS.b4.fD,g9V]`3s9-mB#H,),.dQ!rj(2k=rA@%BZD'iBhp=L=$4N(.?X%F%@Wq\@dN:eG^iFj5kQ_]uj.Ea9(!.i8\7DXA^]X`+*eGG*r'%>:[$'tY1<cKT1Z5$oO0o\KhR:J>VaKK`:%aI_`_K)Z9FD,,U,NMg64M6_":]Y^a>*f$,fp"g,2%>*_>/dL"=.!X]k)RF'gG1X]jocY\?CGbA\nLopYjLHk%dcoFHC!5oSet^ce&:r(WFs9rfJ9?eof4erFK&jCAQY%4$n?G$CsqH,9JZS1,a"S^7,lZ/Y6_\f]W%*H!&'I-KX!1(OREXE3$i*2e0rNZ#IH<'CShJT(h%4b'd%HK"NNffA_l-e'T<D%_CKr8?HG)`[W"!Ei0cgQ4)#;*3;JaeH:@<FW0.VG]hqO)?TP+D4ND9WR4iZpV7ghuI#cS[CT1qmYPTtnH(<WRn0C=DD"cdt_"gZlj9aKd'AtW&ksEL5A!&b=SR![0R?G'Hq>\W/S7-27%LaKt9cGC0[c)9p@9?WRP.gT"3u'r+*EhcQnc%&ZnB1!RgsQR'EMa(QJMt%Qhi;LS(&\q&)K5r%oT'J'TZ#TJ/om?/,1JXBg^^$.%""G0b*@RW-(!pjltt^ZYI;tP)703ZDrdr?;r22e3bOJX;(WPL`o:.ISaeWENPs2CI!H7:\mq!mP[1/:-m$T/)<2P2@Of]j+<ima.Jm57!u)^Z+]M.!>kapH>U6pl7t&!eW`gui>q$i&.$ZF[eJ?meJ=/_sX1sd4NJ3:Tp=4WDGmA*9[V9[h"`bD"S&[!t9QkF6maN,Q]gI:pbT'FUO)kQB2^"OU0QOh_?VCQb;\+5O3^pI'IV3:"e:YQU2YbsEGBDW>==6#tV[22\E_J[hL<:NaV>qeMDUD36_@eEH(tX.>Jp@M:cc+.O'h0RNS$'[\@Ch9hn+Y[fiU5"BO[#K,\bLTq-Rb0/Of$')I_*,2,Hf`e0%uE\+O0D)pL,^ioY:q/RXOK/2.14J$X9O.DS7`Z,:?4q^It)2\sP!G0^lQl;"U>bIS.^'h!UQaUgp^PdI%K)MeK9Sf^[\6+C`iZ1IYq[7no?Y:DXpFcs<C89[%GVd<go$TlmR,EVHuX#aX?.rD>9&<mu0@R<C<H[%ip,q1ZfH54:P%m.5\a/<7)#]O5>>6#,M!EY%&\Mrp*f?\EfB>>GuB9JE(LCfAR,!M#B[c]oT?.@\n&QZ!#<b[s`>oDWQJg>pQk_GbkJ^ToT9ZNbdQFVTUud5>6N,p'JLh>BZkEIR3nW<cs8nT48g?[m5([Zt8]MQ4YE>a!Jfpr,pY!=BW%$u:KsL!IXH`S?PKad):VWC'HddldSe3E=k;NiZ1e23G384&UgBH'ln^@CGU<;-!(!<::cK/O*hkg!s6odhof07kjU>Z3rk:"?b9t#%'&6_gXt5XK+Y3'/r:fTcu^8Y0::E)d'W\1M`I3G!T@eN,3QG"`'4&a=3\0-9qc25k/PYf3IP^@7195F7lN[A-^Vdc&;t=Y2g-P]ab.R`?JaI:MPiVZ5m/DAEEA#Tf_/OeBNa"huj<E5%%H#6AX^=PS9N2!*B1#*i!`CnAFE:pCFc-ln.W\aLfYd>9UBTHqnFa_R,HlJkN463NSqHPfsc7U<:qN[M%dW2D3Fo.C9uHkq(ulW/+Y&W-7uNe?aleD6Q`Pk=gU4Qh"au/kfIj*+A^ma.`B7r7`13"IH6?KJ=M1)(F%eZ,)S*Eg/[QrDXl,a_P^)BgoPjbMD\Q=C]O%eEn$$&E&*G,^bq%Y!sbI.a_c1H&`iN+%r#fQ@2bOs+D:bdH=doVV#D5$mf%G6(49bT!a=CF7[o^RI##>fu4oRkQA'.%mHT^6"*P_#NJ@1`prqaH_\S?NQiXqgdi\pin]/:76lR6.%Z])"eNop_#:aOK4r]uQ%Glu)_`#/St#;5n@Do=324>;KAr":rSeXKTUr7a(B'b4ZVq9m68<&+3X76SEUgPVC;pYeemIkd2?mhepn7od>@PY)FUB)Ng^k2\O!DjSh9=nH@Dp9u-j^L*Vf,[qKlf"*S!pa0Ra,nhkAm]^2TGOK$&0@X;>Bmr9/2(1YH5CNTo)<Eof-U8(8,;q^J)iX2]CCg6AY"4chFS%ccgln&-d/F:?cu'>b3HY1$%8iBY?4&T4KN]P=S#mZPuL:`PslMIQ/l.F]>3nLPAa\IsmgGVeIU=fI^kHDF-gm8F&WPG!oZJpHPTjSko~>endstream
endobj
10 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 3251
>>
stream
Gau0Eqbn0M(B3.),.d)lXsEt9::BTIFfc#Y]-QIR!l\u-!>6-/LBJ1-^\sbqFn]Dn,ap3,$YrG5H[<ut45Y<OQ3@.X>k_#dV&,\#AOVo\.WkqAC!*=&q6RH`H#WaJL7P2F[^)4K8hRA[m=_:uBXt3:rnk]a!?EAjF(MK'3MAf?WTMOf'.:LHmOb5,M7lCW0NHD'VaBZI`Ll6lWeBWdp4jh,6D[;S_-X,T:#Emq*ElF[<,'fP[?:)IXUQb-PIAPl<Bde=:PDF)5tgrh03'pHR;]+=<"%NTL\0n39=_Tb1Nuc/<1b6dYNdBh`?N(l@R&C8huV[`q4dYiP^P;+/GbG\!\`NQ=RJn4/NlWs-pc&1na>9]QA%l;,;J^Lh'GA"W7S#Wp.;7TY1.`CcZB88<g3Jap,7bBEK6-8(6n^k9CnP=3jFr&N`Dnj:&g.J;Nt(OD9smQASCVbSn+>6/^[[56aEq?A7fcV1d-SsBS@_@@dntU@i]D!/C8oBEHU,t2q6NNCe[JKB[rp_Z+0q&7_K(<:&:=`1b6aELaiLDq?H2i%>7.6PVk>8U<ulN;OO`2h?0X4\<I<D=cL5@Ip[lUYeqp+7Bdq70XI'e7g?37Q'uQ`'2gPn,Q6&g%EWH:SP)n9dMUBJTPQ8_3MeTW6E!H;0SU-M6*HnpN22nQ)nlrNG)iNFa!('UY5$I$?T.]-hM0%O%\oI:OL,f))Jh&OJZMf#?1u'B6Rf&?FB2;l;J3=Vlq!d?CNHLnDs:rYGia/(DqcXZWiQl1B%og&fnQ]_a1+,<FEA)M5,^;V[Q'<*h(;MpIImm/r6/nT]`,oq4tG?mHg.Y(T+PYI7m*sS"<M$`ZKK><jhMsAYagfTrGqHhMDC)9)#c/u\heBNjBIE+'+SKBVK-mMR">fDG.XB63CSl",_:?2=8>B=<VLOn'QTG"2eGn&HY0OJIt*US-tk#&l:W8b7NKK1]K(B$WJX+L<pmZkm3kekkH$!ppOOsTDR,7Xd'VDUZ;q/_$?h'.r^+-CLL7[:i*;:BiK0.1g6dWjmP5gg),LGdmnk:C`&'B5R2YSGiNk&Cf+F^pN%I2kFF!U=5;)RZCVf"l"YR3-+jq.\!oR8JHgcut_L[%B'4P+@H7\0iO>`qJ0BlNr!n&XADNe(^4[)\sE,J!D@#pEj]N3O\hM^Ob7H@nk5:l2]J!MVt1:GMs=:6_f/AO?)KY]UnLe"PUCS$FaCsHp4qYC^uVc3LLgSg^Ep,Qu8!Eu:VNCW)a(t2:=/j(TgPp(Y7ARPk69#Ic,[[Qs$S`,"A(HH-:98"cB2-$,;@('7`2Z,'.+(@d':R"!;^#rQ-B&p`==d&2d#nL]`p(j)m7q]Y'>/75R.T#r@Y(Pe$bl6dq<,S6YPAQN:QB8Lj_tR%h8ZJ(Zr:P[<9`cgmq@JIBHK5jQS_+Hph[s5Xm<JT%qU2%r1F60imBXl9I--,a*/6N6BL6B<#;?BjiPB#i#+6#:$jm)+;4$7+:`'h*GNjX2/lnST$ToFZ5AU[@Q+XB.crqN]63o82@rlgd844U7]"),07j'oK/QK@c1W>dr)NE063;e;:\q`e)K+LQM+[1:90\3ABfQqlG0#;*q.3*iXI+,E)W982(S[0t<]oqH3H76'3fB74ELH!H#=.b'"`X'<-%YQ#Lh<5G%2XVUn!Z"e3p\rsHcSF'Ug8!PEWH\)$7_/k^.pmr/9s7OZ&!,D-r@]aR>d8@*GP42IY^jU(lS6-g3=!,mRIQMl?rU58Ps-!!C^u0.U;)MAT]9^g6srD9.21`aMPaP-nV_dEII@jt#3@!'T[H#bJR7=\EJa8+3cB3!6Gts':*A3?7L+7;kI7q\=Lm$Bl)a-Th94rb.""SB^'tCCHc6^;L&IOl!_lGYk77l)(+&/$F&K@[eG3:CB+gE-a_\l0;hKS+EQi(O-F,6;O_MNin[;<:!Vi-bNaGK.p7)8&S1>u;fr^'-19UXuQ*r&JB0UC[mju7.fkfU42W8[R%4ZQCT$$a'B[(M#9Cgn'!HN.*quc5\T&coVd,g#)RP'P#F'J'W9%FcUUl0Y.77bgdPnP>gjA6BM:FnhJm6+%9YqULR6.P0fVQ?hO0=n)14%/V.5&%>0i'LDdZ\")RlicG/7DUHVc_7Ws@Jk7^b(B%f,4#P9(GGToHL#GFr*@Y7EIYS,g\LI0Hs$W>.-iKlFu^Uf\$rneouY-NRs1$%"Wu7)o=0kNJtE$<E_ri]+-2menlBAk(U9E=6'Inq>F;(0cP0_XIc!Ch,>F;OhO],jmgXd!j^\$#ZB<;p!REg"l1r6E)0-q_7_nIKB=(ln&06i^KV5b-.Mp6Tf;J4F'81n%3J?B<H)g'mLEYjiL]`jLf=I;o5pr?Lm6jH%b;MQ5$F)tXR91T@)36Jm)<hnDN\!g<3\F0=)Qf9j0jhFqlc"utqTj0"7/mns+H!OAAu[bMQoah6P)Q?*8PM.-Z)BY'2Z2$f,jmI2XJ0k)FhNn-]A1)/&-nL+.r9lA#]q/#4>Ft/c)8ffhq">L<i/3'2Hsrsbr0t<4;X:.^),@I5Iq>!I2ELjo&:\S!>IYRGK.eCY@H&NBL6[u9:&gO4X+AhQh?_S+UmDbcQc%:c00XnqBL^l\KE/PIFqHt!sjrj'P2c&+n-:L(^]3$Ps.2kL_QWOBSWk:`>$oMP2WMoFGem)a1O+P`lBr;Ad)FJ%W0k](]o(gmD\%;bGt0.k2R=UTsAO:cP\GOT]O,&g#Fnh9sP5cM]/bRrIf=J'_$\l2eV)S.)9@F*]*7J%X=_6)^MP=.PsI*F+l0?k";H)jIuo//=?<h`TtQ\8ZD:RHOLQ-R`L"8A0RX4VR=JA,aE.b[INA18-H2ZbnB7Xc[MV?oNbd5"fNgPa"7.IY$1.Z1=[hrA?]`eDgMS-Af2Kk_dltImI,H8Ag[6n-5[E@#rLacR:&.(m%KB_2LI1)`hWG5#8](\F"8]I`"gAjU]*Q^/"$l",deT_/aR^/o+?>jkA7iM:ErDVLTbkHjp&Q`_ttS+&\%RE,"KW.Lr$AC^h2?XA+aZ.5QWn7_i4`:*$#)XVn7TqBX-UN2.*@]21eOmT6R@b^KqkaVl?m%eR*`B7N;n!CI+&@Zgc]Scc.Yj8.*7d=AmBO'2>$_Y0NUF&IDte^9dJN522Bo23]rLq2,=Z(+'Eu=,?HVm(AtHd^n9n)i]m@IcPe8"1WCrSK08T5:s6e=eucVe+_krL:_[-X!`458CI>h3cb_m0_:]g=:p%8dEm[QjKG$^1!Klu#QG$V"%@n~>endstream
endobj
xref
0 11
0000000000 65535 f
0000000073 00000 n
0000000114 00000 n
0000000221 00000 n
0000001154 00000 n
0000001357 00000 n
0000001561 00000 n
0000001629 00000 n
0000001912 00000 n
0000001977 00000 n
0000005843 00000 n
trailer
<<
/ID
[<a9ce85721dd684ec30e14da37a0df48a><a9ce85721dd684ec30e14da37a0df48a>]
% ReportLab generated PDF document -- digest (http://www.reportlab.com)
/Info 7 0 R
/Root 6 0 R
/Size 11
>>
startxref
9186
%%EOF

View File

@ -0,0 +1,108 @@
%PDF-1.4
%“Œ‹ž ReportLab Generated PDF document http://www.reportlab.com
1 0 obj
<<
/F1 2 0 R /F2 3 0 R
>>
endobj
2 0 obj
<<
/BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font
>>
endobj
3 0 obj
<<
/BaseFont /STSong-Light /DescendantFonts [ <<
/BaseFont /STSong-Light /CIDSystemInfo <<
/Ordering (GB1) /Registry (Adobe) /Supplement 0
>> /DW 1000 /FontDescriptor <<
/Ascent 752 /CapHeight 737 /Descent -271 /Flags 6 /FontBBox [ -25 -254 1000 880 ] /FontName /STSongStd-Light
/ItalicAngle 0 /Leading 148 /MaxWidth 1000 /MissingWidth 500 /StemH 91 /StemV 58
/Type /FontDescriptor /XHeight 553
>> /Subtype /CIDFontType0 /Type /Font
/W [ 1 [ 207 270 342 467 462 797 710 239 374 ] 10 [ 374 423 605 238 375 238 334 462 ] 18 26 462 27 28 238
29 31 605 32 [ 344 748 684 560 695 739 563 511 729 793
318 312 666 526 896 758 772 544 772 628
465 607 753 711 972 647 620 607 374 333
374 606 500 239 417 503 427 529 415 264
444 518 241 230 495 228 793 527 524 ] 81 [ 524 504 338 336 277 517 450 652 466 452
407 370 258 370 605 ] ]
>> ] /Encoding /UniGB-UCS2-H /Name /F2 /Subtype /Type0 /Type /Font
>>
endobj
4 0 obj
<<
/Contents 9 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 8 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
5 0 obj
<<
/Contents 10 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 8 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
6 0 obj
<<
/PageMode /UseNone /Pages 8 0 R /Type /Catalog
>>
endobj
7 0 obj
<<
/Author (\(anonymous\)) /CreationDate (D:20251212051549+08'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20251212051549+08'00') /Producer (ReportLab PDF Library - www.reportlab.com)
/Subject (\(unspecified\)) /Title (\(anonymous\)) /Trapped /False
>>
endobj
8 0 obj
<<
/Count 2 /Kids [ 4 0 R 5 0 R ] /Type /Pages
>>
endobj
9 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 3570
>>
stream
Gatm=H!_6,(B*,d&]^NiAK]LN?(L2+N]Q2K3[>sRQa%oH9-@V1d0+"MZd6=_QL7L]a?8X`1eZG@QZLJ9<KS"^s!42jUIsW^Vm>s,X@Q@U$n=$47[;7@Q"QX,T5R7Z19+>a=Z?"GP/sXuKVWnc\gdm^<E?!3+77pX2.bEPO]EON*ibqYhEraK6.Y=$.;M&=ZSV4HmVs_P5#`o/:snO'PNk]qX*"%cSbn\ki`%\@7K4tr=0$)\(mo[G!%#J^ngCHis3hG`Dnh2B/6!gmC8GtEkMP,jKb,t''L*4Z7/X"Qj#m6m[j(a')2nESiGZ866Ni:9QUej@UT1;oH>*LU9nWN]!EHE)V]ucM#h1FsfYsgsIE'uOWS("2'&B25kQh$q"c&S;`DgREP(-2!A!GhkC\:VkaMV!+T4kpndVi^[V%:Q\hOC;jPW%X[a#XY(61<L$55?#`VEuZHn`fsp^Ll/pO]#`)@eLL(16540/bN>$k<Tjq`9A<0W9/njY#f`cl1/MD3"4a1:/i4`.39)gS5cNd<:NY$6?,YNE7B8Wo"X(!pc-@.>*$nZWKJa]aq,OdWp,E^HV]-N;OJg&S_oNmYo':Z7";&eW:aJdVBA>9(o^2\0FXQ@pJ0tNA;t%h9@F_(om6*'TZ"76C2.a&9Oa^oq^VZ0b_(ucrSpIrAa=?9KNV+"a)(M$`B&M7VC<n">FX!_Ln'TImtGhLUF2hQ&k,^H1.q,lG'X\P+*0ErWJX)^CPsT>@"CX(H(J2dNX4'(9jlt../K'm1G-(ua.ic"5>uH_5-e,I7l:up#3oBMSl+h*pA!QjNUoPLCBSuVP;-kSCVAh7Ij)^mYR,>q)n>CJRLWQrCN1E(eA2n@9Y9ZnV._l48W(1^D/3;saJ_Kdg^Qaf!A+hj!M!146$&5&KT>#4*3/dBCN=CC,EDM!Pc<:X+$*i#nQ*4obEsnBDjiP08'*J(]A%pU"j7^DPh+]I%HP%f1`-M=WK&!A&.WsCLSpY/?K-;Hg"`BYgAHaq[OI-/a]ZRKiM\;Rh]H]VE52"A)gAM]0;/Y>MVtFC2Lngo66DdN=D[L3DoarH])ZZ-5BUbDqr:Hem_sFX="s2.Y:Z@9A!J-O*61gqM@)q\"P<JbM&qe[Jq.Vml;?PR`g=oV!;Sr.)%1g<JQfn]ZrdY+io7W'!>Ep6@74Y*1@YCI&]&ut!_$?0^#4bV$eL#Z\$L<=M!`Pm-lWK\U2^uSS;@$.,BDJ4#5-%$9Y'On_^'2Xltal]jpq_fd3n42$DaOJ;bH:/<ZEY6;d9/(gp5fVEg(`X)s^IaM:#X)=,,ao3@3co3'(X1&]52eC,X5S)*=Bk"!iB8B?M;B,&YX;.&kCE^5W>pAPq7<I<UH^@_flklkI'f;=kO4qHrSuK0p?n0AufF:A\INkDKCNiF%#:7,I(2$<,>&On9+.mKGVF$9i!NaLO?X6B3K$ACD6pes=sa5FlfLVRUKr_>?ARkdg.gXhJYs$bQ/&>``_S]3edSV6FE).HBp3`<N`j"jY&P6O!fM8mE)cdj.2m#9hNA]>81b[j,G8GJ'k,Wg&%0[,j`]#m:0T)*gJXoJ<MlP^q9,O9*8HpI@`THm\#aB(hb/Q665_&K+'Rd2Y8ugC?dPU4'e`?'Q`ipZ*=!dC$!79Xu.!<"oQ7TO;l4FXm!s#^RI=^u/Z:<P<B"CCG8D,"^?5M(3Y$FC#f'Kd0IcO+bd>iaLD,[)]^6"`itJdD/d59,8`q.+&Y=V,L]CEmFHSQ:Pk;8i?.B:\_3MI)*20YP6C-2^u1/\sg?k/Ach4PR1KnZ20,f(f`Po0RjBZSQ^BqgpJMm4u]=X,%O00(LUc,JtH9G1+pZ%o@iesUb&l3S76'jl7s:<fs5`^:6(qG`U/ldbG$5YS16hPI&*m.bi5dVjF^2-:[g`$XC^h's).YP.\lH.L:e3?bVI@9Km#Kqs27(;L8tn;?qOC7ifS(mcpYfS7\b,1lZ"FW0@Q:nmT?G>7[\Rm&rs\[3fSBl4ESRm->_@?l(<4c+:</c%OQg*5t6.q8-*[hcFJAG-p(U[,FU-\_q1FH#"sLU6`7iPrbN7W;1NBq1>g-cE,GLX?uJ#),rN?E,A.@V/7L#d)1?P=Jd'';-"CS1G,X_kgSen@XjN@D"WPbeGJV7O?.#>&K-Y\i`uUTI^oNGVXC!N>bh;Fj_,Z(Xq%\]d8JprLSDIaDjlK&5A;?EQNp.4[R;!7H.=U*0UAIdLF8.#'<U3ia`<J%c)"@>V8tWCRkOjd460qr0g#Q:%q%%"#'&*;q7^t/,I&&toQ-cU&r5o0AcT4A:c13OjMHi!;'K`b49CYN9q/\N1/>hY:B[VM)rXaM=MU0G,_=M;ln`4H2Pm2]4j;dT@KB@dgk5TBsnV5VQgg\SV5\jLW19o]rm&R?g4>jlu-7V(]'d@\g>Q<d_S!ddS"g^#/acXbBCICD*cpS$_>knnd:A]4+q"J^T/"%M\=MUI3<2.Fth<_?[lp3V:gW:^Z,O=\ujUH8nPO.2n^HgOnUnPaNk*/:FH>e"YHWecTC%2>f:,'3;Lhp#Hk,^S/&WKjUAqk<GhS+!RJhdM(9LS%W*esS;,ag])i5PX.FF?Dt_t+Dcjq`$51</uig0,@F($,?KldUQ(J#H2id%,O=,KUX6gmnk_Io75OHET_<hr"X"e'f?u,327,kCq95F7hU7j3UD4MA%(>#ca(:[*NPCHhd+'$0"98ZU:8WeQk2+T%Y,DV=!rHPm"+#fO@,Es*:c@o1@K"HMR62;Y;a%#C4%&'et#Tbt1+2lIgKB5k"40"0Q_-E(cM'4JClod-n,&Vs[Wf9Ba^^8b&@]qRXXE5j<DaaS_md.[Zg`LTR:Y*j'9eOl<h'E$\s$Cm-l[o*(E8YkR-.l4P66Qi((NB'U9opjA8]Z3ns1"+"sA;t'Z#)uknOOhZi-5LP0m<:2*NO]8$IrE[P(LKj1C$?)JL-pRbSK`]iM`P&*Kh.8/k8A23LhAl9L4an[7/;)9l-KeV$%btB0ck[/*"^[gI$2PR,mqrG=^#/PSAeg8Df9ZZGgg@oI#+c%,:_kLA)>io<VMapo,(kW`odsX2Q"I,;EdESqfhP9&Al%BUZJ\nU/nm+#/i#+ZSjnW(fO5<E.tb`fRrU\.$'B/2%VQ"Gn)*]I39(KmjsQkoN=FOGH*On/M^p5!C4khYcGRGPrA]HU64jb=bT=-)CX!&%>,JC`jBWW@P+&-C5"TK(#5fV4qA<&(mf.>$](ZO%iJdfTk7a&V4#jP*#X4%.Z:5jceh6oKf\l^N[j5/'@san$LJJ!YLFX=!RH/E3SNns(\KWV#4\mqQIT1n5S!DA"aNIe<IR3.jVdH/JTsNP`&8m]J"Dc#@c/[&3*-+>Eg!'\^;TJq&jXnPtMf0hD\.'lXM-P\Z['q8)/RMe-Fh7H1#WqnaMShd>G'SrcYYXSQYM'C6=:3*$<I8AP7+[lde_F"[,;--=pJK'\51JP=MWK4sF8.Ej+4PPSfOO5oeckIL>-qTM"Oj(04pr>77:`^aF!4>ImQ\=@'RW)`_M0Z0'c]]t!`=U!mk/"JF-Ct"S>C.'[9b5*f_VT&p_s?r8Fu~>endstream
endobj
10 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 3634
>>
stream
Gatm=D0OIK')p1[E&fMD*66_K8S^[h0;YN#p(BB7Th-lJN_*]L`2%s;3,'N5p<Ge4X-IKOQsNODE3.UXbVLoubXg:frCC0(:270arS#8pZ6iSR5H`,,&_6a(CJXhOhVF<3A^kP7ZB_e3`l&='KV[epG!d/_8$,r^79XG)C[b?C[Bmsqg/I.Sd)IGTKW<,s7l:$lq7lBrR?1<W6HIVL$]uka<%l]UcBOXeNP)%j3`G[)Q4a)!19D2#R:Mb8Kb+d$N0_DW9H!*`+4<l+6^qfH5N^!>%l+lXdFn9%rc,(?J5u!`cSBWQdkF*F=l&0I,+UB3=&q@oV.J^fD6]rIjo1fF_O#GjI9,9DVHE@ZDIqPCs(+5gVi#C`^,5Z6i(Jt]hsmO<q?p>Z1aFV][CaHD8&ori\ui5O/JBVNAU<QK3P+FukV.T[WtRNfXT4(k%70-T"=$LTJiPLtq1WLHC^l",RVAXo\:i4?VW4$Xe`Kg?T!kul/Zi"DOO,n3r7=<Oec(j4MOopI\&5]89I8akoLqmS-CrhOm_n0<EQmW7B@$A8rc!kQ;O*8SD^+5W6,tja*cDI3fhQ)6E1::,e?Qoion$7Qfp.h".]?us8/hpC8I!hp>@S_?5$:`(cpQr_Fb!S2Jd$>q*SW@_059aNoD1cpSUC:=HU7EQJlbc"#XfMiVe8T$35P.=E,>"Q4Wl$aS@!Wqe]3#,,SZ`#6qe$M<[.P4gIjRg_:L_K_mOCUr@WrG##J+-jCV'7]4!r%a9I@*6OIW2>Ur7?;l!(KTiQ!s75q_eCJQoiYT\d%5^?WX^aj^L.\D\k:q<.QIn*%s;)/C$pdpdnQ[Ht?DH'\ZhN1$^JBbQPJCT"m+M,Hr,^YGQVL8*/"cNQ/#_(cElJP_9D,KfF]81PSWDi,>,_m+c9Z>:fp'<#bc+jS]"+<]C!VSJf(7ia&a1"*JWc3Q1]]LYM[eS;*5u+gr@Xt`h#cXX7#4-2%I2c5<Z"#Yg_irMHQcgsQ.KApYLJ0uEOS<J[gZrY/,\@aB&!3@:Y[`]re^d(t0:A#RnD7n&>QPTt>NS#3AVr^A@_9r5obklPVW=Y;;bW*J&q6'm_Wpt]MggR?;M5<c71f"]Ykn^u[M+ok)/gY:NQE-\]9G#aa4_l"[b1Gma'WJ4(#C@q;HUD(iPj]mQQb[AdnC:l)pXN=/^dZN4NJ\6fI\-CT4`g&8fHd#WgXO,aqoF?HDJ_2?[h"Xc[>P"qOr]6Ah+!JYh:BL2Y#@m@%EuVM(VfrK`n=eKO?NtJ5H(JTpTYSp>u_7aCZZ2WE(<'E>019IC:Ec3Dk]J)_nsC]j?S&+:fk(1^XfN4X[Y"dU*#PJg]!u-))]!,?;Ssl"^=\4=,qF3`k&U`8O+VSr[*i.`7kl7QY.k8u_h9E=C:]E:*5:rQ"lgQTbr0Qh^n.WesQLr>m&8bO"6mCJ*R1faZ*K3)*`'3*fX(+<Iq\s+E_LW,0!eE69YmJlLnNeDH#+H,<&U2.lK0O]Un%Z%*9gmZ?S?3BdLha:YQr,#_?njii$J&?NSSh`"8?r-.$t_=`O7:JW<b;.^tF!r7')UJ3$N1In5?]H.rP3_?piJ97NJKa0lA_\YbsbplQl27i`1poDSq?I8haCbRmR']:Om:A`:Fj]og^gCgu:P%)8(W_WMq5-Q*A(oS5g2a3leWG`H>KSW%#ELX01Hd!$NCk0_O2CKJVHE^5M=HC.5i"Pnus).=H-Fd/V&[K&hJh"HT:fN9H.:e#;S]MsqTVt7j8Xt)aRHlEpJ"X8l7e=X_[@m7BVfuCsb;WmWUX1,eSLL>1Hd:s`&GTc#@aI5V7G\(@0EFp4]SqpmJ,A%(Te)XW\4(7gMW%T88uX6;chP8FYZBl==N:k:#?>i%P50^5_6^'aL]o#(P9?3hSK>,u(.;l\_j$8qcR2qlNC0?2$ab4#Wb@[-i1CC)c36*j+g=S.ii<fE&Z28^865j+`A1dS#>A[B&=Lm-F-T30/;aAcis5"9AuOBC8\h'GG;6et0mih^I-2rQ]3/sd\f;_l[L-B;P!#O=p0-eJ<4?iAk#<&QI6eer.fQj>ZMT\go:uG#hs(o">q:_^$o1:`9$H&NRk<Munh8CY:l1)^Nq6Ado*&i]W[)hU6_dW"qViDT**A;>C-pU6/cm3PHNpQ@#Q%('>o!2E@/rBFhY-E;9;ot0`AVcX%At=8M<^'h6jetcc9^g*T+,:coH*p`>35)9\V,?'Nu!%p;LdeI5`((Z((q'A:t]>p3dC_&E0Z?*1u\TBZH/M^MZW)_^'tK8nZDtk&`sm21XajeK@ML^\iXQ"gf^XU6=g<n'`&S-a$gb!D!)F/L3&,c:]WD)9L1]Hc-`G-Bsklp=6"7BO:9`moHcPjZ$F[:!ULd1l,q;2.[W9i-0EWHYk>m@'.<tj&`n8tYRXRE"JsKZlW6gLq.rora27Y04:u;V8=J'2\k$Las(`-`RAW>`Z4rP=T!a'k\j,8qf2WL8h(Z5Z6ZX0VH/]3mcYKPM8V=H+Q)`9;q#\u%V"H&#39N[#/qkJV?'LnfE1s'@Ec(BMM5S)adThIAdfJX)T'$QT<hsu#+rRQVqVQg9"hir.KA<BY`+4OK_(BuVed@9ZXctT?f*g$pn0c_X=G*#HHLHsg5Mcc9"lFG;5d;@>@I?UENkmnLN1hf_!ohA!"g)%8n=ig4jl"o6SsD@s"5cITaKe1ohgD_1Ql^o5_3KjR#<Ck26=69)gX`F`osE+-`$8lM'6I?TPkdRC-rN\aCpX%F\V,[ofu,(u.JI6Ork(MA(t-W([?1>DY7S5P.b?:M\?TrjB;)jZ&fW,$Pa3=^k[J"/ki7QbM9:fI@SHI)LqG$@0NYAjrIrdjX1;Jt?>s-,\,TNd,Uj@cfp+uFL'_s@MF+64Fo.?gIeXtL`V-VWIW*2;rl$3(CJKIe'F*9iY!WZ3$`c\(f7ti@?#5q$g9uI<"[V8uD06(`-oI8d`SRdJ(+s4T9q^"mbV_'M[+F)9LQ<o!:.VdFpF$:B?=C._QWb9N7fKC?q&/&DR1R!A3N"H[$I`5'S`tTqK)p8U"3!J^b&hT8&mk0kF1h?*TDnF?Ki)jr+roh0c2#<5`JQT'N:S'UShRqo0iT+G"dMLu$`XF"*CbJtYXgLEM_"=<>h55FIV3\Mf!XoZ1g)JETR"M:=;?X<FAZj]<etm`:e*!/p%VJ-<kdK-U9\e=)57K,MjHb`YYQ@OOX16rM0#;4gb"B$L^a%fK^%U#H,1Y"\0;"UTebE:$*W0rS)_t4"'*"E:l%G'lK9Z/bdE4`LJd4O(f'V>gku4T-A^J85B/2B1IO`j+Qo,4GrkmNN0:1\DR``iBm-(['@Z>//Qn&!hIHR4a!RngIRk`MJ*u8):a*)MEuMWIEdlNK1WP3^&a#L_oHR$Ja%s:*qe1JYN<B2if%Kd#\\PU!&rmcN"1kY?a*<Qf\;e5?^)H"[MM2NEU/e,oQatC54NC[Rco0R.UhfTa]_1\2?F5`qW`rl\27CrLXATA/fW+HlieF<[]/"hH9BHW]cN8Gkhi[lp6">_Q;cMNB$?N#r>b-;fc0A'2eV4722ifSOD:5j[q76@fE#hC*@Pd3!#G:Pjc9g]k?F7Z\ci(WsOK/2[Im4O\G6QXSj*=Ab"s'gIWS;H]+_l6##2JL@.K~>endstream
endobj
xref
0 11
0000000000 65535 f
0000000073 00000 n
0000000114 00000 n
0000000221 00000 n
0000001154 00000 n
0000001357 00000 n
0000001561 00000 n
0000001629 00000 n
0000001912 00000 n
0000001977 00000 n
0000005638 00000 n
trailer
<<
/ID
[<5217e5cf013dd0edc079a44300d80fa5><5217e5cf013dd0edc079a44300d80fa5>]
% ReportLab generated PDF document -- digest (http://www.reportlab.com)
/Info 7 0 R
/Root 6 0 R
/Size 11
>>
startxref
9364
%%EOF

View File

@ -0,0 +1,108 @@
%PDF-1.4
%“Œ‹ž ReportLab Generated PDF document http://www.reportlab.com
1 0 obj
<<
/F1 2 0 R /F2 3 0 R
>>
endobj
2 0 obj
<<
/BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font
>>
endobj
3 0 obj
<<
/BaseFont /STSong-Light /DescendantFonts [ <<
/BaseFont /STSong-Light /CIDSystemInfo <<
/Ordering (GB1) /Registry (Adobe) /Supplement 0
>> /DW 1000 /FontDescriptor <<
/Ascent 752 /CapHeight 737 /Descent -271 /Flags 6 /FontBBox [ -25 -254 1000 880 ] /FontName /STSongStd-Light
/ItalicAngle 0 /Leading 148 /MaxWidth 1000 /MissingWidth 500 /StemH 91 /StemV 58
/Type /FontDescriptor /XHeight 553
>> /Subtype /CIDFontType0 /Type /Font
/W [ 1 [ 207 270 342 467 462 797 710 239 374 ] 10 [ 374 423 605 238 375 238 334 462 ] 18 26 462 27 28 238
29 31 605 32 [ 344 748 684 560 695 739 563 511 729 793
318 312 666 526 896 758 772 544 772 628
465 607 753 711 972 647 620 607 374 333
374 606 500 239 417 503 427 529 415 264
444 518 241 230 495 228 793 527 524 ] 81 [ 524 504 338 336 277 517 450 652 466 452
407 370 258 370 605 ] ]
>> ] /Encoding /UniGB-UCS2-H /Name /F2 /Subtype /Type0 /Type /Font
>>
endobj
4 0 obj
<<
/Contents 9 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 8 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
5 0 obj
<<
/Contents 10 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 8 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
6 0 obj
<<
/PageMode /UseNone /Pages 8 0 R /Type /Catalog
>>
endobj
7 0 obj
<<
/Author (\(anonymous\)) /CreationDate (D:20251212051549+08'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20251212051549+08'00') /Producer (ReportLab PDF Library - www.reportlab.com)
/Subject (\(unspecified\)) /Title (\(anonymous\)) /Trapped /False
>>
endobj
8 0 obj
<<
/Count 2 /Kids [ 4 0 R 5 0 R ] /Type /Pages
>>
endobj
9 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 3904
>>
stream
Gatm>Bj26T')q=&LcQ%25WDu?PAhQ2N/e9\'!fS6ZiL4790b+#U7h;9VlJ%nh9`r"qWMd[oNA3N;p/Bf0!?u(_s+^[<2mOo<T[Z[$5\uaW5;P7<I,`:YBoq<mVt0`eZ&qZl[$Me?Bp7bQj9gqSADDA;Z-92pE$EX__uS?ne(43.RN)86Jr?d<j-OM_Z@HA.rQN=;CRh&<,gD[):Q3s&?Pnm-^EOSV>%>PQ_+`8[c,PT&kc*(Bh]4I5<uG,!)ui2qmWL+o-u_e84^Qj<=4jc+oCsfaNY?F#^dJ:."#"`nKWFU[k)p$)0>T2iO@%_J3\STEWgJi<HVTs9+fN.('Xa?U14-<&P,"cF_`A'@c?W_4>5RJbFTOX]mu0!UbEdhii/%!*I^^U0hS'+"'C,0KK1Ru$2c/-r%#K7:PNj2O3.ncBN&J/l>d^S)$^!_$rO/NW13.N9U^K!n[SI/nShn^BCRLs/m&PII?@,S=-[&hE0X%-G%V,cp0RW1qs>E^OS,VIPUqTB-"-eb\e0e!"!@rZ2O,aU7</R&i9=J[*]4I(pA<mILOejD2F)MD#<Y$pGSXJ!l.Mt6C=.K!3-IU@A5o8]0[?KB,YRXb7>jFD2qMYrWA*UF"2DO[*J^G&Wk+L\_N=9VrW]-Jn8Z'?7+6(,6*TgW:j`E\&\G@lX;S*kL1'LKBuFGgom/C\1f=?>_*HG9?s-6Y<\T(L/k[eE?7Oo=&(QD1@e'O#'2A7^K,JUr!pX#1MdTjKHrTW5a2as,6^it=_L1!>iYNW41A=P\r_csuh1@d`mgDfc.t&+><KYXB$=D$F;\7Q`?k%JiL.a;u.8Dn=)5mem"Jb!gJs#g&K.LKchA^o*_AL[STb]RRN,^_Zd,?KC(Z.+>nS`ff`5dAIhpJsTj7iWK!k=K8f!LmsgpA6`/C9Q,k],k%#];t[$\T>HgDFk4!05@#ZPEomM8VKWQ.'3UJEm29UDF.S(,$60^Pf:!?g&V&n>kiGGZuPP7e<GFYsf$93-oI^-N2+16OO#[fIEF3aY.?484McZVe>?&"Jb]3(a-qX^+YYD%W>O&K/>$;ElUqq#g.'.&>[D[W5(KE3%tppAOf<<8]UAQ0'[n+J,!l.+/^]N?pT.>h(Pmp)jBr]F[?^iKR`[:IJgH;Mmj4**CK!F$R^K+"bgc=bssG0Y\A!JUs^.i)1<,B2%,gSL9HYO6h'G1O11#JM3Nm(n(_&qU^0C3B@U]\Sc%#aNP`\F-J0>H<gq-cXM`<&,`-eT$a"\0*R0XQZFkk\*;7f3*[9W$\CJIG6Ks6Rq8(4U#/)[BL;M6mZPE*;>iNYGYX:mDof4e^.3@I_+n<Qj9gl4hn>"6_a.iTki424.AuZ48R*lPJ$k!/dJ#38dF/]D*7)QdtZ4J%6LCFTc3QJI/T\-k7ZXS\$Cr3\i_<F':6u8_u,e'PA&lFA,:nFVMXG$\i87.7S;7\*>ZM'`FcebWUL*W=EbLo(Pi6-V!Z5/R0q@8AjTWc@k;T43_KE8iVU5P_0-dJeJ\hijg7+Po7ACM=OA09fuc=Y-U71=4mD:J4l6EgT]oB`DYE'u!*\.>3+%"mbGHaKWq!Z6jf3l[3o0J#$0bXhu#jgC^RBp=:8_E"0!)c9/"Ri$D6*8O^07.i1si4d!'*LOmaS^aKg[<(O_V+f?H=n&qS_$X=r2&%kN[Pm.s!fTV&3%H=SQT[gYLC[7E`=5"W&`=9(a>k@R4Xa5&5mp:oVq[k+UPo27PK.hY%3c%K'Eq(7$ARoN/V;2gre:LoPd3l^e+:k[dJSkJ8&QJb>7291PN=s"mSH@S(aCOtc/n+,$!dbX5Wcu>?p\U5>!tAtT'2=fD$11BeimJlAQmsN*;L]%\'[,T%q1[,e^p2IR>]G$T4ouIA'LU.9.gs-KhojS(a4`V!<Y(YAJ:Ci3Le(`hR9A%.k,j6rsX[fMh[4P-D,J;H1s%WXfm%fb-5tk!nEKh]S5;>%',i=K*Y(EIVTgX,UXlZJMMn#k"5:O"n`l,XgMMr/.4u&jXTTJ.]V3O=^V5lqV:4=oOI@YJ;-hEn[HT>bb>KYN;\%0"G2T\HfoPTL.5V47$DJLQU<&J'Kq6oQ]o?LnE097B\pk]hXr_"M$Dp`Y$Ak2oeRG>`3@-hQ6?"5g2_'5NX>jk+2]H`g`C/"k"aq](jFD:'YUY\=1@?'fVo4?WkA9RKa@j1Hf@Hn7/K28BKGAkMLhJ>&toBeO\>h`M:k@bs,#2`B=<oG68[;<TEtUB<Q\KjQNM8')"=TZnn(%*.RWPbLEknkFSeR90'OP,@._'lhYKB$Diql\``V]?#1c^L=^lK\8M=!'B_0LCOg)cmQJ8Y.CP0F?-P(N2A<_goQHIjC"A"'m/ClhL,Qatdn(;s0o@reSRFiV0*Lu^kgg8Y#_8)luF1Pa$*X4G&.'c5rrSbV%9Mlf\K2?B:$u4?0f-,8OX`8ir2H,]0>,c>l1ieaCL1$rR7n7t#-THU4[X]P0\IlY>*k%\=#.V24!OWL+!Z.#Flh<F+>1:TYP^(KqB`;J56@'McFC>($f)&]$!_!Z?#RdIVjtuf(ggrtu>8.blpM^Nk<u;I?;]0-i$`QAon>bF\AVN_R1I#/(Z>"mQ.nC]]Y\f^SNog&9q;D8A/QHl1?e/ocC^rr$RjBGBBV9-PGEZJ2\WE"k^"WEdm^1+j?$_,/c1TD!6@tW/*-l(r9/,G*o$pXRmgi!O6u6#/<tqq<db=+?PYYO\ppVkEHXOf4QK*87d3P[tPMh>S2cmetLS8H3?`:ug:(Rmh"sI,+2]n89oq=PklCV&q*V+BbgFqqE?rGcHU:1?`Q8d:7KDhQ3oV(q+&%MV%c?3(RR/)E6=1,2t[s.qc0];\lN1>Y/Cal^`8$?SQjuY,t:`3_T5EM.9Snu^5lBs_IccSmMY&;F4b5B$),+Ri\"h3T&:mpV1F)#0X4(1BKqOXV2%2tf1*)g=_:0Xp.h:#$hf?4c239!8'b[Ff/KoD!]#@t!-^uaG8%@`?SVf/Na8LKX]C6>/^npZ](&(IjiMq)RjZlAntpTmKjST7>:*Als/nTKh*)t&?O5SKgY?dn\"26d<XH8DaGC`5D!qP)q`B59_cm]am0(XBS4jUY_nN\/hOhARh]9JKo/MHX,o?0/bDaNfaH\"(*1Kak<,DpHai7QfdkaiDJG%GZ1?PVn3SoC?YMAYe!pQI.Dh;$(ee8Tl(P74rgr>P=KG9fcuW#>IYD,T#5D<H&?!#UM%%XKW8[*fQ"g[]BM.8Z;VkF3]Jk9\hY3FhCH#,j<dUb]q1K!?Xe#/fAV8ER*R0@Pgm*aE$DC8SJWNK5*[+TY73aSg,PVq-4l2FF^0SDp9s6pCR4JZ.]7o"iht/k01YiGG!!r`tjTaYrRH)i/Y(59*$l@PrD,lYD!"l3OUT):LIul>d8ZTX[`&CVo76?2f/?.?_4KW^7F@Ha*5mn.7d8X7VU>X7dk9]rS8ok?b("uD[O]@J(mC8`Wom$4$HTq)F`XQQa\J`kgV%Z@eAh9]&.VaP]]O?bdBHYkX/=^F)i(EDC_9Eh/t'YWM"sVW^Rg5JZBu!>&#Y(E2(=@2:ps)TpMErr,%"soZGsf1#8A+cD5!0W>)EDY_/O**E;M2[k(iYMD>pu[kg)$G+V73\%<P%[51m-ri1Xk?[nX0_4p:+Yt:al2r&'].nX/BO^`RO#'f.h5"#q)M^Vl@NZ.G<S*orM^/B.k(Q[[d2iME"fD'3kf!_I)J$kH=S7=8cs!O(%c1er>(c;-sN<^9s`BqqZGl:Y8NTV%"?UAoWgohVCfb0D]D*;sLPaTNhgnm62p@O0h]XtSF)S"i<U'PE@hH;5tIPosg-A@EdY,GPlq+2'F%d/%P^VFPP7^51O7(Q&D"Y4--<PcU.A#ZkBd$J#ABm;Q67`\6%\m*d_N68j6!?[RGgA~>endstream
endobj
10 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 3142
>>
stream
Gatm=qbu6?')nH:6L8%(8IFg0O1haNAM9Nh.bL&,!8$LPA$?CZ!eb4EI"2$9pWQ165f?aW8g<$<BVqD/J)0&qK0Pm/qkm;ud>_mjn;*"$4,LJIWi5e<HIH01=Q+_*W`M&rQptWP[V?\\_g<p(P7+Hc(L4%@7HFGsT!#jX4?Ze:h,?:46k+>eSlkd`1(fZq6Gl#ri);JkMb4gr5P3naG1GhqSO<fJXA%TX]hbHTM-pB+g:n9:/c=XcAF(cXL:%XCoaO#bs%0#Oo8@%RGegAYHQ708UZuiUG(s"bjLSTEVU>XoW3>P#qHr-%2Fe&e$kubMKEPkrD1b:rX[&akGZi(FF[&1,27UF<`UOH9&?n^r]nCC[]u1(9?l7PBfUG8YF`\Y]gaDMq[%G2u_:W.kejk4imSu<iX8Dc2mYXZIR)oQGo!4#d#AYhE1/0_pJt9=&7ir.)G)`!]lgKj/-YFga_msg9I8BT61UH#:3?0Bl^eK!"G5r^o#ibA+>XrG?$N>;b.&:L-B3q[ZDdYfV_anhA5)?(-cZ(-[Do"SX$7ct\3s+4`.&dY)NOES>_)`GUorke:BiqTN%r<Y+X!Aq.NBeGg_[1!M_QC57_*R%>08E8L15<+EM'TWH-cl@\&)8AF^AkD.7J[j.Of;:PCj!*VCSfRf;-6?*[a7&`b'T"Q.EmM!62sX+kB9g>XTVW)jg9/ns7&(iZ@pAU9q$">`'IVCVbAm^JF\k1@0K4a46Qi<;LG'a_FN&X[=p9'__X+SLE"Z&ft>m?Qd2r/p2iQ<;oF6;OqL$U=[:k<s!i]ga2->2fG.ch!b+O4_2b<@XO+Gm9eFrqkrD[.@\GYf3UEd!p^0_*ql+"8(HuBMl.!`*:D47KK@2#7QhBLcJb,"eOB5&8E(aHC[u^T^:s>InZId^5a>@"!)Bh_XaCpbi!%d,1B[m)>;@rFXWo@%B8'iL_13#[IW!@"Ys*fg(c7+h#:ic1K7KFD3,!pm]dSTp/l5=SoQuMCIbc*Y)FLJ+Bee3;OHIXi?UJt#p([6Ni`S=.VdpE[:j?78"eK'/A_An)(jlkEPJ>B^8`FRW?T][[YN0/1/%HE)FpkL\"X-DCRRS,b10>R7VL;Cp<06Jn63++4$-lMaB\e"A"Mq)$j.#OG*OGAh[)ELIi[C_X87-mhi0Oaln!ZoI"F$5,N:isOtKA6OcK$,]d,*Z[EL+_SkZ\B,$ZP2<7L/OPr.D4&C(=nZDH/#t(A9nS5GYBe3:r1mROq#KYKkM]QC_D>p=Vh(;M+,3!es@][k6V#Gg$kgHPOem%O7qs#KeUETE2DPKp9=PH259"?.s)#dW!U`4r+Bgo>]#<n[a7im*53&tID;e0^g9DA'd)jB-us)8MK+OrT9*%EY;/YmJJK5<mJ+iSp,+7OdSAC$nXg]2+Bp<"g94TB^U_7I=`M]upGsI@6ea0M!Yl$i@J[RZAlQYUaV*LuUmXLM%t%[E/hNc1]5#HmK"4\AdV_XdeYZ2TJ8F=$Uj0K/)&V@m-"(BfJZE%t0rd;_[3i;E"NaRQa6O]bK8"b<*ZQ?Bku40#^O!\)m+a<3%fu*H_<JX=Q$4s?^^Pn'O^tELq='n0H4+M)Jbip4#0WO41:SEdF>66^Vu`(NXR?44HibtDG$7he-%m)X_P2J5^*S6nXIr^bVjhr,%55KVj^5>!'V<YE-T,h7Qtd5apEg*UhhEoB`KV`SbW$)1oE;Mj9aJ0Ch!fcKa"Bk9Z,3P1JG2'[KG8\91*UlKk2r3VZRd>9k4lp$i@8YDC*cNj<Rl6'i0ePLo)Ge[Un8#8p=WMCime(3A7Mf7WgaRX`rk=P`6F+NZ=0q'-&XgAA*j(&crN=/7%qO>^mM@r>$rI`,Dn2lG(fP5FVh14#NG#Q3f9ZsUeZ]bYN'i@;KD)R(=*Q9QZV+%_(L<+RH[!K8>d$rU+AXE5@'qi2MhQ7hh?U`9IaNZ/DD`9s4^)E5j1J,dB]/sXtO#k.GO,ViFo7_iV_KA4=)BIm7!3-_WdceO;\Le03=_G@BX5a[]d_>4=7K+08CZLE:8D6P8[F8g'AZeIa3$a1SEXI'`_%N-Q>cJ+sJT>/Z)@V,SCd25TZ2_bSlLigDZpEHt.[r]J(s#]AS",=a@GZl>Qg,PBuiF.>$6pGm9p/J-"%h.F-Q:<`r`dp$r-9Ou>H&]/fhu08YW$o\QG2-Zf"_RMl1/mr;C"0;4M9<A91[<Ctnj]&6eTaC-PE1%elf(/L5=,37+s8kr-*Gou/s).-jHRfPjrbih^tJbDgmoP=Mkc!t)@E]b:8oIAfXD:M3aSK4AGIs0<JD!<sG.tU1feqnD^gsJk0$GngK85cumM;09A"L\VFJ8hDu#@YHa!=+`1(*AS*b-LILRZ31]mHM1i*3/d:;&`;E,Cq*84%D]FYdqkA*pAh3n?<OI=]C$=W0(LXL>BQt1jskIh%U7[)$.]ER\M(.,.tlcQr@Fk,gXe3H?2?c4X:=^nRiaW&=KFmRX1]kkJ:Q@+c931]WB-T\AO_ePL8uoa[X:#Hnh)>B)ACmao0-NP2HA+YUYne7h7%:]&7L#[4r.n4aC;RYAJNW^7__I*F+*\?qMpT+e)u8d&<a*6V5aK.$'=YRi-%F+9!7Aa/QblG_:eA3un#e.RtZLC$/'iqbM7hpg'0lWDI?ojQX>Ma-L@F5_T8;UcWMnl?[DH>3pi(;$7CnA.=lVN]P;$h/gBl+XBT24E6dKK,48'aF&t&l$8+kBM8Z=9sI24ku*XU#=oCG,5*[6hKmU?^?QQrC^\;KKk(.BZdc*raBHRnM_c4-4%ONa6C+%,:0fce=M8IN/K_HY3_L9:C]AT\+#j=c,?E<SGM`0e&%,jFdH0>'oL)F#-+W0?k9p0;1O[SJ*:-9A^^l6YTd01LBVB>=iu`n)Tk9afgXN(3ee*Zi`&7sqN"f%Q4;pGnSpF68nM2JI+VI4,F]O%[f_H,GbXMSc<JNf$Q?*b+Ao3ac_Q\uj?DC9O3SA`#k^d?M$5$W/`"ZCP$bl02bp")%7+8PLhL0mFQ:rKA40FQJoJ1#(+jAI1]PQsV]Ad+M*Do;+Bq+n%!6b]6=Gf'+2fUJ8#^?<3L>-.8'>eXI6i/Kjb8hA8c9FE^/P>&sJ-95`I=V&K<#dl-b=@1FC+S?,a4?GKEjYC%&%2Q/~>endstream
endobj
xref
0 11
0000000000 65535 f
0000000073 00000 n
0000000114 00000 n
0000000221 00000 n
0000001154 00000 n
0000001357 00000 n
0000001561 00000 n
0000001629 00000 n
0000001912 00000 n
0000001977 00000 n
0000005972 00000 n
trailer
<<
/ID
[<abe932c41923c8d42bf0a1609112b894><abe932c41923c8d42bf0a1609112b894>]
% ReportLab generated PDF document -- digest (http://www.reportlab.com)
/Info 7 0 R
/Root 6 0 R
/Size 11
>>
startxref
9206
%%EOF

View File

@ -0,0 +1,108 @@
%PDF-1.4
%“Œ‹ž ReportLab Generated PDF document http://www.reportlab.com
1 0 obj
<<
/F1 2 0 R /F2 3 0 R
>>
endobj
2 0 obj
<<
/BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font
>>
endobj
3 0 obj
<<
/BaseFont /STSong-Light /DescendantFonts [ <<
/BaseFont /STSong-Light /CIDSystemInfo <<
/Ordering (GB1) /Registry (Adobe) /Supplement 0
>> /DW 1000 /FontDescriptor <<
/Ascent 752 /CapHeight 737 /Descent -271 /Flags 6 /FontBBox [ -25 -254 1000 880 ] /FontName /STSongStd-Light
/ItalicAngle 0 /Leading 148 /MaxWidth 1000 /MissingWidth 500 /StemH 91 /StemV 58
/Type /FontDescriptor /XHeight 553
>> /Subtype /CIDFontType0 /Type /Font
/W [ 1 [ 207 270 342 467 462 797 710 239 374 ] 10 [ 374 423 605 238 375 238 334 462 ] 18 26 462 27 28 238
29 31 605 32 [ 344 748 684 560 695 739 563 511 729 793
318 312 666 526 896 758 772 544 772 628
465 607 753 711 972 647 620 607 374 333
374 606 500 239 417 503 427 529 415 264
444 518 241 230 495 228 793 527 524 ] 81 [ 524 504 338 336 277 517 450 652 466 452
407 370 258 370 605 ] ]
>> ] /Encoding /UniGB-UCS2-H /Name /F2 /Subtype /Type0 /Type /Font
>>
endobj
4 0 obj
<<
/Contents 9 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 8 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
5 0 obj
<<
/Contents 10 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 8 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
6 0 obj
<<
/PageMode /UseNone /Pages 8 0 R /Type /Catalog
>>
endobj
7 0 obj
<<
/Author (\(anonymous\)) /CreationDate (D:20251212051549+08'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20251212051549+08'00') /Producer (ReportLab PDF Library - www.reportlab.com)
/Subject (\(unspecified\)) /Title (\(anonymous\)) /Trapped /False
>>
endobj
8 0 obj
<<
/Count 2 /Kids [ 4 0 R 5 0 R ] /Type /Pages
>>
endobj
9 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 2871
>>
stream
Gatm=Blb4`%fPg&0lcT`AZmrU]/d,TM6j$`Nd-Dpb-O,W;\X('4t4J!._e+H\u0me3('sn.a'%XBJfPdGQ:o0@IT?,o6?iP5E:ooT6S4A1-/":8l[YC4kU_/q/D+98_$BicV0X,b>W*mLNW*/ar,TLPPXa/dlX4dLMaIbo,RH8M,:^;&@_hO2W_T(!i+@?hekR&V%qJ(>R3D4k)>]W]O^p>^7UA@,bkUd<cpRX4+MfT2G90UN$4[["U#27E%%!]TDC!=E<m'hR44LtV%BIjPeZ#S]:$Zo^k]ma_FK3=s+a\J/ISaq`>1X^poO*G+Agn,*<DA'e79b=7DO"I&-)i$idU.ukQ6=Z71(*@p3,KXom&1F+ZIG%'E!?j1u]F$-hhX1bQ0c3$R4_50"@?tG2i!H(Q&`E.J`&NfC2EU*o[i$JU*i*][)9HLUkdu(ppMR/u6__S8gHVPD84=H,3"cOe)W\'d+B`1*K@R85]WmN.!4`aoEb7\[4qc:SF+/$_blUU!tMV/&-"]PJJ+:Am,#Iei4>pWROPKT8E(\n<K#(M^Gu6HC?W]-ht,![.cf*5b=_Mi`fT7o:`P9DTh0u-_^GC]J=$:%H_<>E_5/lCUqill0)/dBZZ2$D`ba^0[1_?"=0IjUh"6X%+TlJD-JSm\e>3Ipd3XkSC*Q'-ehr)%9-bt"np=0pW%4Qq<P6e/>CW#E/Ye:!+K4"A#9nYpu;tpFWZ2tLJKpLO#1-I%K?lVN.hcFn;0J]C*Fb\/Fs$/K3*Z0F&F69L@<W.:*QKVE.Mg"jm3`ITM7X1NIj<5)fki<)o<OhK5+!("fME<TGfY&ihk1`phlO!,RM@:](Y*)B(BTnUcM\dKIjYWb;a42#8oKUB]9<4lJNlr7>VIoUn.NHX[9=;?bZ1up0a^\c;>l-kaa)HYOCZ]S4P`Tp@;U^gR')8QhO%<QlNQsLb8/1A9MsZ'(63!)HS[8TVK<Inttd.-a2HsRUug"24eB!:>`Hf(tX!tFEjS^5@$a4[.Zu:r4i5`5ja;K)*\$kZ2b$Z-](@3a33DWi]Y+4InYE4Gcrg2;?E!J@C\G3=%8ILL.(H*^;#!V@M=Zm5.W^7>nmced+uT`0uF>Gk>*+CUnggOrQk`c=oJg<"Lob-1<uQu"1na%+@@TqI%";l(X:"&kH)/I_g6e5HUsJb7:k4Ugmu^%>L4C((L94q8t"a\XcN>o<8c5bZMfJDr=ME=VBDQ8g&V1WC(2SVenbGQ;Q3WmSYR!56/^>KJ8u(:icMNW1)$Xl<jZ$>/dh_f9@TRt63%c02T/?!=NaUdNm%EEF[g?%&.$QV.G,-s&D;X4d2];Wk'OkRCsP&_N*r)(08\N"KO=QU+e7^n1U*"17TpO)RbhWkU4^Jr55P',$Yt!0TlF=&CE>C'4krKDq5`OeZPsj<7^LiIO!+0R'rQXS;ej:>_Euq[0Q7&=$Ub'k0CS;s`3L-!9h'm/2<&B"T=[u$]sj-n<k(2XYn^]YhBl!3-s.sd:>g9;B7:5o&lAE-\D+7)"M<-OnSLP?Sk*;aJR>sdWm`gO7AMe3eR3Rkc[W+KeTt62/Qk6K.Qt^l'A=O>LZV9-]1U_%RiQoZ\Y.lU2',%]rY@Sd*k";<S-'!tK0@MJ2O]&JUkHHs/Z"Y<#_L6&J$LEK8cdrdZgC,ZkjT_!K!M1WVme2jlZI[]0Xm5]Q1jI>(S`Il3:BWIVfX\qpdOkZ-:J>:=UrZlH$?<cq<<m[-XkhOpYZrhl+4\j.SGXWdPfaoAA_^tQ8sG"8:P&iWC7ELCnUdR<4b?'Yg(FgODH7fpVDrY&j.Sf_IfAfnhW[<;;C-c&%1;;iCdK#q_'(og`5"fa4p'7H<(3\gp6&]]ohc`.d%?9`IN[G/%OHE(Bc!720-674Ta*Bl]RuZ"(r`oJaF@h4T!O2K!QZ\7*O$3KiZ9HoU%i8A'Q<N*>VL;+BG1JA1V34#H&u/gq!49LI'>7]gYgH4q!2g9:H$]b,'f:m0mE3*$&.+>:Bn#>IsSQ&j!Y;H:E4#HrJ'^!/Z)TM;ou>X`=gcNA*bRcrbq9)-W8NhP+EN\na']0K,3%dsf1:(^>PpDN`0$1On1L2Gbn1SXOf&Ic>a.D#SEC'b-^(XMFF_'SD=U$]NNqLrMU#>sXDtMEk$M"]nBr<>k4bIlJhX?<50$.p$;3ETR"['\-pErn<YPa&pS:<Udf,"$l2n.XSkEH!lGm&C)1==?"SL[Vf9!@R*_E)bjI0*66`]+`1*Eq/.0!kpCK?kPZDFmV;J-H*1,$=&5'p/RJNnI8Gs^(3Et*"hG'$6R[[A`?Hb)^1[Gt"XdO>YU[\PpFef3Od*X`RW)pu/L#"fp]k\[5[*cGb#No$gmp%V5T8=/%Q(%5K'I'=c`i:r@sG>7bU>)i.`<Ubb`g`.rQ-SBPok-!V0oj7fd8LoWaCt6G\0laZM(>)DIa<gm5_SpqN!>VT(^a&9t>"O>gCi9[!+nq<#jpE>19)XatDBI]SBR:peba)U'mQSj`0-RNnJfTdDbXX1@CF*/a!)5dkYd"0nQS_Ta%ED`-(GQKTJ+0h'.ZK\[&j^<eDjN9DYmmLr*eX1e1h3hBFsH/lE.=a;f\]*WDphet,(*"BZ[9%o*pUXX&3A>*%B^(%,;ibN]pDb0m1Pc/rrY3<2KknA'aiNjk=As,\-)?f;GFpWPKL1bh?II2?TD:n`)!6X/$dd<K1"(58kRkCXEH7@+q(X^;Eq6lYr<:<6:$j/i;Z_rPI:@V<@86>,89/i:,'`(ma2s7uh9X2m(<2eUQ]T=hcqYJnEK*uNcCj$PBk%=]\p(G$,gU0dG25,5NLmFR@uJZ@^GJU&7F>*Fdu##,c;m=/Kn-48Nd'3-H0ht9TH^9:\1h"_nB1M$I~>endstream
endobj
10 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1979
>>
stream
Gb!;eD0$@L&H88.ERSW96;3JADn_Oc6AJ;D-&E9;@A5(lO;LLsKTP\phqm1S:\$Mip6jd(%R`MX<r;ISUXe0mAci!(*hNqKlukV*reJ]CAGsD>l4ol_s3C')(JYb,85aY5N6H.1\ZT.V6?I5(6Ea9P-@qA7(!+8l[t=jk,,8QsZi1N<6C%kOA9-\qiZkWH*-cFKeI)[)V";`d%53ATGQ<:2U-jR,!GHF/B^[%5iagdg%DAf%;gW*6gk3tTFjRu#DZB+E>n<66s5ZIs=%]!sh=+&c-rA3*i3/%)aL,%!!a9K7Pf2I5#D7M6nWSB`]+499aenT_oEs[K(@!*qgnttCCkG]nR\bXD5<ks#co^+&3T<1_Ba.llf,L6Q'h:RH6_.TlLIg+aa'UjtV6'\PlX.>Y)keReTC/?e97hA$=JoR@7qoEY%>tFe3R%31!"-TUJ%a+CZK>$f4]o`DZ?HNS&EM"R9F2-1Y+[NBr!R!4G`O(ZA3Zdlb<bOB=.H&B"AR=+>muWJ)uS4+(p=5'j5:_fP^L%6\ap@Ye0kY.j1lF$Ef*&B(T<r)9OIr!J-Q$'Eg`X`]\^D$LKEsC;p*r#-$\lK;Y>,%#D,/d7-O6VQd3:].?\q4cj;RM6Ge@41!1o4jjXU1T"J5g$VYZ2*4*tQc$J".1E:ced!*^F$J'D,cRo)*aXXaO'LkZ[2G&u(PZ@Wr"(s$*cia-,\b]dV+3a`?'-]WOi&F58.^(S@<6)I<1p%p@*JS(*IMbtaj?9r]L0r1`EJJU6MKY8+(`>gr9?ou"%RDr>iX;Z=Dm2b4l*BW/g-LKC^4(\T80jSb^_7ulgrA5&eJD;]B^^>8-En:>L)2ele/KR;-J!+"dm@g&^N6,9/TMh$*s_=r.NA7IkhmEe8!M))r@1ba+:\qtPkVq4q?icqXEuht=QgKN9<Yd3>:6-F(2W6NkT!7(<`6JEKgmb_l8KF=>?VN5>L`-3mu,N(]*P>b'i)oGH\jV?er=o<3s)JU\:\ocMJ9;ge2`,;b%UP_YF#tI?C;g+NVG:E-siH<=:s/a3:KP0Y[SR;A9HL;aJ62:4`@EMk8j/b3DMeD0Cc7I_uQo*>X[%KR)#Wa[/#LWOeE!$&u)L=(#(3:mehYD:T*saF96[GQ0'AX_[?!\l3rr&*+r5&]]CQ^,.o#s0H1_d\o!"=7*ckm!IuMqa;C[$6c/rc;eObXFX#lr<(n"j2FYU;[S]%R33#*JdIf4)lf@UbVs<?/,;LU/AtOf:1n6I[?+%+Xn1p\mW$U;bk9l"CO<e:7O[%*@#`bFd^m</978m[:edDBZ3-G-iCL_0dc^)bPng!P#F&><fX]<_DB[ZCfiK,)pk9q9-#*;kQ"&?pX_P%I.]F)[`d+Hq7BE:XE,9SUr1$[%rKUg;C:;f\P,=-EeFd"A:]mg91bUONF;mg`U?WEcIPRL9q%h5Y+d#$B;nA[k%%"3;*^)$dD4&\tEi.R+XQ(0:u<*MhU*&IgiZrTXplXucCURTMY8-D^mK_Q'u%A#da\$bLHnOrBnIeI'RGk5qqBq)2e;rr8)jM(/(;jl4ZAC9WYS/bCiF6j4.d3=Z`heO=Y;N/%Z/eub/pC3tQX-hil*=F2r_[V^=*CQ6B9lX3N%hfIPW?bLN?]-*\&oOim7*4"PkO96GJ>XTR5[[Xs[s=moYngOk[p36OA&>Q>LV2GU9C@@,Fs@qX&1C&2;EgWiY"gV:&kU_6>Ths.X.%*18Z*G=QOXqJ"dS^H2B<N=Cu)(h,^)'$5XDk]7mZ"hHTf6=55_EEc%Pg8%eK.Ld-T"LjpaZ"p`L[uFLG`[/g%Z`T3Y/2K;I%_c-UM@LCOEtGsLNs7ItRnp5]#o=0F`u`fTSC%7oKb.;>Vg+W)4Ym%GWp'tFKT4XeQ,l473OhY98S*fRR,%mE+n&)`1jEEKW^ouJd-h@:!=;#fIeckS5,i'U.ei]N4>\AbV\Q)X>crqVc.d?.(%7m(#N(O<Wa[f~>endstream
endobj
xref
0 11
0000000000 65535 f
0000000073 00000 n
0000000114 00000 n
0000000221 00000 n
0000001154 00000 n
0000001357 00000 n
0000001561 00000 n
0000001629 00000 n
0000001912 00000 n
0000001977 00000 n
0000004939 00000 n
trailer
<<
/ID
[<7455c0ceea57ebe142f69810571ecb49><7455c0ceea57ebe142f69810571ecb49>]
% ReportLab generated PDF document -- digest (http://www.reportlab.com)
/Info 7 0 R
/Root 6 0 R
/Size 11
>>
startxref
7010
%%EOF

View File

@ -0,0 +1,108 @@
%PDF-1.4
%“Œ‹ž ReportLab Generated PDF document http://www.reportlab.com
1 0 obj
<<
/F1 2 0 R /F2 3 0 R
>>
endobj
2 0 obj
<<
/BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font
>>
endobj
3 0 obj
<<
/BaseFont /STSong-Light /DescendantFonts [ <<
/BaseFont /STSong-Light /CIDSystemInfo <<
/Ordering (GB1) /Registry (Adobe) /Supplement 0
>> /DW 1000 /FontDescriptor <<
/Ascent 752 /CapHeight 737 /Descent -271 /Flags 6 /FontBBox [ -25 -254 1000 880 ] /FontName /STSongStd-Light
/ItalicAngle 0 /Leading 148 /MaxWidth 1000 /MissingWidth 500 /StemH 91 /StemV 58
/Type /FontDescriptor /XHeight 553
>> /Subtype /CIDFontType0 /Type /Font
/W [ 1 [ 207 270 342 467 462 797 710 239 374 ] 10 [ 374 423 605 238 375 238 334 462 ] 18 26 462 27 28 238
29 31 605 32 [ 344 748 684 560 695 739 563 511 729 793
318 312 666 526 896 758 772 544 772 628
465 607 753 711 972 647 620 607 374 333
374 606 500 239 417 503 427 529 415 264
444 518 241 230 495 228 793 527 524 ] 81 [ 524 504 338 336 277 517 450 652 466 452
407 370 258 370 605 ] ]
>> ] /Encoding /UniGB-UCS2-H /Name /F2 /Subtype /Type0 /Type /Font
>>
endobj
4 0 obj
<<
/Contents 9 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 8 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
5 0 obj
<<
/Contents 10 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 8 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
6 0 obj
<<
/PageMode /UseNone /Pages 8 0 R /Type /Catalog
>>
endobj
7 0 obj
<<
/Author (\(anonymous\)) /CreationDate (D:20251212051549+08'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20251212051549+08'00') /Producer (ReportLab PDF Library - www.reportlab.com)
/Subject (\(unspecified\)) /Title (\(anonymous\)) /Trapped /False
>>
endobj
8 0 obj
<<
/Count 2 /Kids [ 4 0 R 5 0 R ] /Type /Pages
>>
endobj
9 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 2535
>>
stream
Gau0ED,\qT&H9tYL``c04Z:O],aN(g0;>&D$d3j(?&hp(=TOd(!KiQBmFU0XbTrZgN<`N]_ijZ9F?eU[FO)M!)#S=kG<\LCYG5cVKh#B9UV2Ja=@Ju$dGrWkaTBd7<>')=RP_=9a3l^QoAFc8)*I$.m,-:V!j'NB2Eb1<"7.0TTl:McE!Mu11$8iMN8E.B/oG<\M(LT<5A$>j_7"j))iY?%dClJ[SI2C"_bZK-;T+DHUi*Mh?sWj";3CaH21QG<k89>9K%X65;:<5WFqO@Y)@(hG`BiGoiUGBIU:8?rU)?*6\:7QUf-=,J]H%$:Wn=*kD+25cbR4CP,'(H)#j;>@e--/I3:lUuX6Y[;3$Xc51+)eRR5A@tPJW9pJ[PjsRdjH+\=/rT^h3infuE+DD'l)E=N%+2>-jVK*bW?If9stoK0c0c$Q-g[CIX58fsoX/L`9No!,`9E`l:\CduKZW?3"Km$E[4A8kCXP']UT`%6,I+g^mFVJR&$N7AmcW?f!Yk'MJm8D=Q!q*K4I9XRf0!)n)>K;X%o8,\_J;.>kU\6Hk$,BAm3drGBf%.V#HCCitNaW>E']GOu8aGg8YQhuW@3PDj_4>k-Gl\lEa8VT&Em/s3Gl:RZk=;J!H#0[F''nr2rI0Ge+2(E6-mN\k>[4el89jHRYGLst..&,`5g:MB,SaBad(Ubl-q^b6F_OR09tl^YWU=/4Ra+#A@';MSj*M=&@8=\bC?MoRfQ3;c$Ur>CiATa9cd9mIqb^=lq`crrkEXhdrMM[o[j\`O5Wj&c-70NJM&=d1k;>U(2]?ksk\]IFZhZb(n^"PAUp.L66c,trl6a;)1$D0].;@qPOa;9=j4h!b!Yp(<H>D-M#J,r-g7asCJMPg&uS#'`dk\%"jQ"2N^(N-%pmgc>Gu-lASAr9FRVVoP1;H[`Vu9HFrgOKM",k8/#Yd-m?dgBE)3!SARM@)iS$L_>p5\":Yo^uK%:>&gW2<u@Cr-U@p9r&e*GK+]"8k+sk6!6e?H".5`>*c8c,S&8C-'nl1[R@GFc);7DrF-m9/4'!&\R$_l1gR1;706$e&#'!BPel4dn-neROQ'k!LcoMmC2_6P+#(-S]b3P8[dZU$N==[R_PX]qLP9u$TdAUSG453g,[PN8brlu8s4U*?lQ=:VVIf:rLS]=/lUSf_e+aDmT)00;(&Z@J-.i8CQl;7Tuq+Ng-PS#\h8ESS@Lj"T$B[O8)5J.(Z_'Tro2ouY3Y4.Vr5:'MEmYjI),$h%t"9J<,)o,D+@ut7i1fO_:4O5I/V@kIST"b3Ol.o+N6i<]>%0]T$!m/M*gTZ(p6=A1t-V!9QmrmkVmU%/#p*/;fo,Q=4Ki6%99hp>m;X,mR$*YD7Ge[:iq^>.m3`?r_?HU/n&#9Wa-5$c]G.k>F`G29qer&P+D\^[3*VgSc*(.rYT8fL+G_$f3*%H]]#13mtZV%]YI>L)e(cjL?;F"G;PP.q48@TJGNV9ZRo\=U5+ZE5f%%/?Ni`5=I43<,mQ/P>Oe"LZ-i^+DC&*XV$elJh.emQbBmNhqUjXUb-;"O][,:^BiNhZ,=!G3eT"e<9$a;qE]MB.QO3Lht_VODoo*FemN/]@>9(3iqBnjM:=/$7R6AMP\p\QjJH>n"+5(W_V%j3TRBc,msM#D8s$%1YPi#1e91&Tgb.oNpbLkQnp%%a@+Z"c7O0iL3AN`W[b+luF5o6q7pR]\WZrBq?j<:_F5?8K)=^X2:[4<8*.=agO?Sba82q(]e`mmF;bY`a'dq6,2M60e-=0$+L"ZTk%@tXoTPPA(()2XO,B'g]H*/ip[<c^Z"[/q0&RpeIIHeeuCN%PM;h"=ado'c/Igp]Okn&Pn5D"7uHrH'b6\\n5F"6fI#)o"8.YS_o_E'0?&<;<Qo'(M5$G9iaghJ4<;W[ZjP;^n`U9iM!m`(M3-1)cqYtpQ(W2^XdttB3iqM,nqfAbB3V1D6I"&WJrj$'1n?Xe;L6epH&BL0*8]WC*XB9pI,RNXmA*E2<KN>/SfQujJ@19:4U>6q`X9H>V8^$N4/Fi@i>bUSQ/kHrXRb/<&#DN7mS4t(3U4]]hJtn"e=4;VjP[)>\p&5gMBWZ#-&<=t7"n7s?BjNLl^m.+5fTVPM4l4<:)e6YC;gmP^a`Ke#_<s_+Qo\$Bd%[?mXh<&eITiUe\X5K<#9::#?nlcRGQ-1a9P]#QP#_t%4BVOb5mq@bT.Rc-ZC2nXSk!#/b9$&AC10Q8N:a4cr@oVeA+taRYo#kbgDZQ*QbYdqI\kNVN_.'YB!n@4!ueXAZ)[QE"PAGlTZc2W[$'LM^]`s4\rkpIXQ=J]:HT9+0j:1U.@=V$nt0:qd)X3;CfusICe>C#p?:<g\U%YNZ"dicYUp#]O`[eUe3Q*&p1SdB5,s0<Dis7Q+!B_!&>P+(1PXo"#rcdZ.fT.&M?\FDs,pr_lbd[l5!["1Ld3L^N./hh0Y,R&/c7B5=G&omN.8"SE8Y3T`(U#@WE3]WG)<p/Re;Ns152m"J@91;PNpH3I,2?g>NDPM-m#(H!_==r!Q>9_tO~>endstream
endobj
10 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1855
>>
stream
Gatm<=]680&:WeD/6-Zk%`i^P(B!+/E?%lL$cS4u=>E30Nen3r1+4LIpN6/rc5o%!10^CPmEYG!nb(Mi_]o@MSCZ.b;=nooHM/kM\;9uo&Q]DVp%P4_rO%.+Gd:7*)k+eoNi^V;Bc2]hi-%IUrqC0=#"!QrbN#Q$$&"0ap+fKSl0H@Mg"6VIg'<Wm[Y'LXKh\(:qWRUcP>[(79jD/=mt<N:cWiM>`SFS<d5A`M'7oq,$Q"h]Qo`7ORO5l"VbY$VBf4c*PMa*kG<Ssg@sT:)Fb7e"Hq'X0h`E/R,5K;sTHJlFo"(X?G4C;>BR9FTT%<CnV!A6+[n[8?)G#5=,_p^d[C,WC*/k]UGdg7j9_&.V:%[(sqB)L3dlEI9qM@nRZ7f5*Tg;'71BEA(M2K/=-#T7&VK_OT8OHhF6$Vf,W<@I"jrf5g,DB&2!CgAi=Tg%q)]&'2-nX9uD:l&oCUsSsNksJU#HGodg+4j3!(H(!i>kMAGlSCYh'A?\^0hqT)o.K.qZA41!=8fQ'YN]h;b1ICLM(mg3hR!(^.[aRn%(I@lTrA"X&GO"RMTIqiN+mVN^f$8p=;fc,mBO$bRFYQ2+g1m(oY#&8g\.Y"%7uMTiDM@;NaZl2/j:V/ncF<)E/A-AfA)TpPh+>'Y/mXd9UVPmbW>Z4KPopU&gVrbE^Z'Yi1_k\cpl)MWueO5lM3FVYo.^@k+%Dnjk.u8a@nZ+HI6t*d8/.J&::n0#)KOn\m@:jpWN')8_+.G(,3gJ7@Fsp]tJd^j6'D-OmhBa9".P#Vf_'%i,=NoIP4kOgkAYA3+%Q*bKSVZqP]UPP-aXc@cH+60rK-#b1H;!AJup+Ft@lWe"K0je/-P,Rcq`o%>7Y`.B2Q<WnjgWaT?K09;N3@Da="QD/)D*lmJL;T(%5adRA:&<]$tN-KgE:A"<ILMspr8i[uQiN@&?TY"2P1ig=WK^o1,c4q,&oZi:`:_k;u^`Ik\"MA7+fnocKIFWD.7/n>02*AN,?:ID3'cC">J8UhPSI7&+e/b35H1rZ<VJANg%etQ!hgi[4-t6b%j>WA$f([ct6d-^4X<eAm;CF%Lk^KK'Yj@>tK,;m$=tGIId\I4T5VX5;jXuBb/G3/)Pt3]?J"a-;6S^]U&uFqDfNg?r[8HV;joUs/1i@jo$<YV58-"'G8>rhJi$<a)b0$95Ra&gJ&0)D>8q"0;Sg[!^&4=*']+/1p^LF>GF/JlVpYUVsqA[OO6gk,sR\aPm\IBMCY,[]=(u)msERoSXp>Np\LXfE[cYN1j'P+3%4@*YT)o;b2s7u#PFe4pP@@7$:5ZH+^`-(;`:g7AMCKo]Y$K`gBQanqk:aSjE"@aj2p]>jm@a4^*.rAS4Pc8&AcufP/nN9s[@+fcbLV"NBFkZ)=jSODYn7.K=?tk;oSl@D5aZ@[Q1&mMT?Sr</C_ur6qStg?)TI`l^@1uRr@CenFg_gM.@[`m8#^`F'pTu9aD>3&QXNpL-tS/B\UD"t3OB[qj66SF!u;`gK%[_9(7OP"jpfNc@_kYXQJ?'jmF1TWlmkdE.JnpqbC%lB0O<8O8BI)jg_<6FH0\PVosq3,h6d1C:BrB%`,"D3P"k>p13t^dW%LY=<]KP?%Z1a'4D^(7lQ`%gOFskI0mL)kac%U:!DZ%q:J.+?ZqHjl$?k(UfS*'qW$b<.Dd1Ylh==K2aZOJ.:90BH\3KAFcK\FYY%m!PBU9F$DB8?Jmr[tSno]im;8PRRU3UYq:._bmGeB$5*ZX-m.3/DIkR;J3qd?(iAf%J'&GKS(l=5?WGQcFkN`t<+2-FG@^&<o72%:r%J"ZOqr(%+;.@En"hVsV`gSbjBP*-fT:s7I&MgF]&m=4Pn0o>~>endstream
endobj
xref
0 11
0000000000 65535 f
0000000073 00000 n
0000000114 00000 n
0000000221 00000 n
0000001154 00000 n
0000001357 00000 n
0000001561 00000 n
0000001629 00000 n
0000001912 00000 n
0000001977 00000 n
0000004603 00000 n
trailer
<<
/ID
[<734af0f0fe62a8330776ee2caa8641ca><734af0f0fe62a8330776ee2caa8641ca>]
% ReportLab generated PDF document -- digest (http://www.reportlab.com)
/Info 7 0 R
/Root 6 0 R
/Size 11
>>
startxref
6550
%%EOF

View File

@ -0,0 +1,127 @@
%PDF-1.4
%“Œ‹ž ReportLab Generated PDF document http://www.reportlab.com
1 0 obj
<<
/F1 2 0 R /F2 3 0 R
>>
endobj
2 0 obj
<<
/BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font
>>
endobj
3 0 obj
<<
/BaseFont /STSong-Light /DescendantFonts [ <<
/BaseFont /STSong-Light /CIDSystemInfo <<
/Ordering (GB1) /Registry (Adobe) /Supplement 0
>> /DW 1000 /FontDescriptor <<
/Ascent 752 /CapHeight 737 /Descent -271 /Flags 6 /FontBBox [ -25 -254 1000 880 ] /FontName /STSongStd-Light
/ItalicAngle 0 /Leading 148 /MaxWidth 1000 /MissingWidth 500 /StemH 91 /StemV 58
/Type /FontDescriptor /XHeight 553
>> /Subtype /CIDFontType0 /Type /Font
/W [ 1 [ 207 270 342 467 462 797 710 239 374 ] 10 [ 374 423 605 238 375 238 334 462 ] 18 26 462 27 28 238
29 31 605 32 [ 344 748 684 560 695 739 563 511 729 793
318 312 666 526 896 758 772 544 772 628
465 607 753 711 972 647 620 607 374 333
374 606 500 239 417 503 427 529 415 264
444 518 241 230 495 228 793 527 524 ] 81 [ 524 504 338 336 277 517 450 652 466 452
407 370 258 370 605 ] ]
>> ] /Encoding /UniGB-UCS2-H /Name /F2 /Subtype /Type0 /Type /Font
>>
endobj
4 0 obj
<<
/Contents 10 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 9 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
5 0 obj
<<
/Contents 11 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 9 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
6 0 obj
<<
/Contents 12 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 9 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
7 0 obj
<<
/PageMode /UseNone /Pages 9 0 R /Type /Catalog
>>
endobj
8 0 obj
<<
/Author (\(anonymous\)) /CreationDate (D:20251212051549+08'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20251212051549+08'00') /Producer (ReportLab PDF Library - www.reportlab.com)
/Subject (\(unspecified\)) /Title (\(anonymous\)) /Trapped /False
>>
endobj
9 0 obj
<<
/Count 3 /Kids [ 4 0 R 5 0 R 6 0 R ] /Type /Pages
>>
endobj
10 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 2915
>>
stream
Gau0Eq,?(g')p^:Kp"P"G!O87&s]utP/<5Xc[3Gg5bT_ea0(!O$Ngl&rq:I.N+O=Y_)h&mQsE9H1Hf)pI0lK!pu+'tSKu<1ULa04:UiqbPD#u9-):JdX.t#[mr:"[Z;gGNjGC9,Q'QEW#EMg/i%@foTC8ZO?qh]N=b;o7?k8A*KmO)V47Fds3R:N0["%3%6>u+oOBeq'N1"B'"<7A[58bIfUBen=I4D0VKV(/FV+<CP8DSFi_1DZW7j[T4GlUn1mkH!q"gb0BU8!/1klU(n1_'QlMhAki_;S>f7Sd1^7Pg?Li8J#(1*BEN]Ggm8X462SmmOs%/-l4W,&t@l"E]JcmRVq"Cg=DO%$b/8iB')>^Q=<h6Aj[jZKT6*\3E//"D9AG@$E?r'gfg10^pMTrc*)]pVjI&gZ5-e92)Jh_:XtYBt?UW1'lYJ"OuW8NiAo[P;\rGC$+s_BN1)S/7-ck##c_C"S!h4['EsC,le6X8B*dg*gdg1Oa/FaP22cb*<aa@XjAO&=;:+2P8$N\Y@&&LSJsmA.m^1A0D%jrprdIY[$Tl'^t,BEn418O%)3,(&c=;Lb]Qe@GY,^0D1\3W&WD2hKJfrPg,WCf`(f0?16Z(*G&Bc>B/VW8mK?$Q?9Z,Y0Zq\VR-55skA*jZ?h4]iD&$a-eOBQf:D`PO]>FkdDs4]Z2Ycgg65kE]!%gU%CHC_ji+0:S55-*t!f@Z1CBlSeEUn(h,#r"qH[,,CiB&=;3T*C)FH9hH1L0>M#`3ERlhNXe\-O!G]oC4-4@BFFr4R\33J=q+=>#rnKeI*R[S@(CDf860cq:,XR[B2UV;qmb++^@W-fM[%:D`7<T0Y`nkjNdmX2745ZdJ43lid75Cr<+*-l*(ji`8I<E#Sf&I.3mqW`3SWF2Ptp`Vq*#(YD)p&p3%JGf8j!5+:gD[Ao<*'G69j^t/F.ou(:SKIQS(%Xd?FPXoJmrqQ&I'F1J\@2%c?:?P*_5rVhTItarE,7mjL^KLS-0!gOFd]1kYMQm;]B*sCD(D&q.g%f0H<nqc1jUU^e@F"<>rpTr9W^:I`=AlL)e)'iorS*L#YMf3HK;UIl>8g!q#[`%c$)f49_e`Er[$"H'^:iu"4oludr<H5ec9rB@kdg:/V8bpM'$j*edLFKG%DS:_7>!]-Z!b*#9DF7'aiYs3N)`&p8:Hup3f#f.+GRW.D>4G+9RFj7Wm;aRJ,qC;3JTjY5l`q3KP)I.SV"MJR@"Zs3#VKjrhARc=!RO7/P(n$RN[ja/-Y6RB.-]H$3GDnkJ7]n7(:2,MVG<#]-o#:3%h"'[4kBY>bF<DDqo_VAP<H`G"6MJ71ctGiIh,&/<)8%1\M6gat,F$MJc][$NerDb4?L8Xl]VBT^n8t@N47+0q:fVC,-fe(Dc;`XF@@=\/.*oC:sDRnF[d)cfJSd3?n"O1"'I/l8Mr20uNTG@"WTq_8VG^)N,LCJ&RIK*!SC(e)kuo1#Gb+"qGXFJ:%J-FkE>q-8]R^KEW4g'W!Nh,bdPs]YV8-),*Ym=:7l*!3G>CrhJNP8/+ZV_o&VPf,152DinD^9H]`jJ]hkRPqPiQ"E$l*iH[*;mhYhbRXM3(&C9"($s^uA%Z+@$1k$O0AS(O"-PIDPV/WCS)%(=P.%f+_U/1>sb[;!19>d[4ar^OS1&PN0*Uf?:78WsM/'0]pd@$(MOO$7hP-9sc@40cM%^:JT(5FYfP_l'uKjD?kOe2\_bfX9HYc\_.(Z!6"q%V0*nDsg-N/@m2Zh;dr_6&Ec8SacS(mC#HPNhGopL@=0'6P3K#P4[Jb>^)^576PNHYO+ldTV/E?OCtW3_hPcPX&)dUj:uRDnl)]h9o<>1Sd46TnAJ1GMad%%0Cb4(0G^DDW)]]$k>J6_GZXo&MlhVm-$FCh#&f8:F<:Fq@7A[a`/^B`[[ML.2FQFG#V!aN_DGq,P+2Ld2#nO?%H=&20hnIFb[p7YR&,j>=nCQcP'8B[\9-HVam!.ifQc9.*NAehN+).&MV=C<8DZ$Hi<+?#\$Y=`V#?mFO8!>*8'$AWN8UF3>*MUf<N,)8V.GSS!2A2[,Wo!-L^B(7@ja84"*8GMuKn/5f>ND!mBFtQQ(6?N'VWCffk/F8q6mbNKjCg#ke_6;u>[>Lh5bA)SP;'/sVX^lN)b.,S?MLcu_J1pS2sdN=<G-OR3HgM(=00F\o2K)#.t+XD"+r7$"1boD)R>HI]b4[oJulhI0fsCYEJ-mgCZt7].ZHYm34lg/^C*=M9I&ki(2)0:deOHl$A&k-ld4;ST+TbouD8PK0!"(/JD_lRSOr.YXe.s'QpNW<I#G=A5)GB?eL$<1(fu=q]:g[?s'YhCnc9DM[#*?AfutlFmtC-HeK:@QEC;<qRF*T=U2]OXt!1=c+.V8lBR/$28g+9d`$:=N=JRj3s".Y%SttIFdlJECZF'/C`q1W\9q+h"l,_6Zc7;NNKj\+;t>3rLV?e_X(2o*iUjp3QDY6V@37#WGpB8ATo^SnN^Ho1LoL"jrO"QlgAoS*'rMKOgi`?`e6;B)d&[tgLjp)/oA.!6/\'_6L?.+Y_dXVluqLH<a\XFPr5fSpEshFkm7kM)adN$<EI%hC#&l9=n0K*3]ADLpf<q$MuP_u`0K;8o,FC_ZEB"WaYOc(Mn?hiW0YABl!IFOKE1f]3Ff`XO4.UJl,oUHGAG1r=Eh3=7l0'Hg"k\.FA0e%A3JBSZD*Z\m"iaZF;\KN7&1tg$R./!s"L7Mk@UYbCA>.]`\)X,ICa+MK/%RB!UdD'aUDU"e!mDA",Z"=V4HY!Y=X&"A/<O*r6pqe$q)C;hMd"#Bq>^hh%/^#$JZ7>Wc!kPbY[JYK.LB;1>eZ&'Y_Oo*-$Lr)?19fA*[BeoL$gopkko<cF]r,[7lVrd>bcI9olJjC:hMI-MdAE])#:9<[/scrW-j'\(q~>endstream
endobj
11 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 3556
>>
stream
GauHMCK"/)(B)O^LtD3#1$R<SPBa4/4$$Vd8eM2&TK!Pe&s*5n0n:D@\'Np3]?__DJ_\)0&e?8PFRNPLp=bRn'g_jFSpSMCb0+\!rhlhg<TsuCdaUseqmNf_?21uRrCGD97C$WsQ+.FX@NcZ^]nObU!O5B)HsN\MMYm3mYX#81FQ'1H4f1YJV<QRl'dm<O:6ZBJd.1ZjADB=BPVDF$M2ps14X>NW2U!&RI6b\ZIcq5i?]I=0^Eb:0oTnPskSljEC5ZCfM;nP9[h<QQKh/R/*M-[5O534DnU@3tRl4,I,UsEh"8u9mSt_)$UE3,\oPPk;32i""69V;iO"/t`N*<+^(b9@.RA_)cA^^[5S;^HYRY76Z;TG%@5?0NDU^B@Z$g8K0ao(JF]Q;2L!Y*kglk;ST67U\@D,0\lQ=%BgE4?;G]Lu$&%$(]:rfk0k0i.Mr=e`#*1X(E&B[l5RWY>]m2!KNP1?^"26@^K)s1jJSeP^cBe*YGUE12:*IbPDkgJlF<q]h@9\A<XIS7;X)Hhg5-OZ_d(`1KiVaVWGmPr9NKp+M66>$WiT[trnL7BEo[0.K@hK?*74R'=!=?XDdu4Ca?m'n0hF0J&ra/ttD1E9,&rNl5]'KKV'P&#'qo+*a)CIUBcu")'YS=W@VECa[BX<D]c\c;7erSKst+a5aY"VrKETo,0rm%t;j5XPB-;q+lIP)?9EpG]5FLTC"V.h[CWmgq:X!D&Ps"B_Ch;P!CDKoLaU,1rM`0DfOFn&U-&6W7T*ZibSo4B`j#c.QUq5:SW#i7>&!(GaA[3<@+W%NL^?3Ldak@#TXuZ51-q[^sRqEAd"'nSb"_I"=qiXd(Yb]F,H".c'fbJ9?A)0F?8=aZC6"JZ5+Eo2HuAu4mmK:>eOS.)\smoQ)9K:efOl4gWlQ[rB6if=R$4"L_$WUO>A4.qrBO%Fr[1hFKLb&c]g+ko[_$.o(W<.I.IsMZ8a,3EN%D2++mS[5)T@QQci,rA*k-e`6$]Y+2eA:-Jm1$K@P<P:lsL&m94.4*1*q;s4n\OP=0HT@6VV?Mro/)gKDK';W-Mq2;:EC)4o"5"etMB&%nO[i[V"P)T+P5!,n6tN!.UMBSKH%U^l:8_o!S;;&F6ujGDSsbX_#:5(X5reZRk;liU"QV!*bNkuaJG@siI<@pq@]2Wek7Po%4XQi]HqF=W$).Dq;?9\EFCa36qZg-aVs[NKpMh0$>r,`*!b.DCI[kkN(C#hsuSfI,hjABY0UbGe+IilAfg=,aCP$8SR?N/)c7NW+.#]5X0p48V=WTIHJ;$lZ#d14I]95!>$Sn,lEdp%%X@F.a9)Clc>k7qW.K>)(Rd*?QKKRT!Z>gT9Y\k]2N:U3+0kj*@-MEJmQhFn%RLZ=Y';Biu^(q##U`bs?R#9ud/.AH&"9+D=bE\FCI/+cYZC:pkCOOa8SM+*qX,g8ErtlZXo&r2->r:lG%Q$^-!oM"C-m'&==]X&iQK[8doJ&g8KUh\KbFq^lNL'bh_n6n?E%)tQB$p1UVM8Xkk\.P9ghdpB'&3%@<6O)l!fG<]1k]q'>i).V\mh;QNfJs_"=X-Mm6<`j0X7U;,4filj_6Pp*lbAbCN^;JcTSdik`%cV+7Ep(j#6XYUi_?kgMOj`l($=LuKNhcdZ5N^#;L=9!&18g[T?I'tHO<nnGCD^R0!WS5AJadS$4nq^&Y*BBP7kX?H4_8sPj79a2&Do+:O0)%0s3%6J*9!_s6!iO\kSZ/1iB8R1aiMFhG*2P5T+Q)IjpP7Pf"0WoT7khj?*"C@,(u?tD@'`hEMu>)f\6QCYK;b`o+<&u(]0B[*9KpFe=u'sG<9`P@.55dg65^aOX2.Fm=dr__nUDF8&SlU>=c$7c-]1;%#!<%ZT&YQE.rp:<Cqigk8b4^#[eHWE"sd!S^%?srlB-5aX+-=Oj+h>cg*A^5!R<naka':2-Po"O8>*_CPhCSD1Z6I)o+liij(K$Z@S*?@%-KS(^UV*K0C(Ol_=7fU3Q17c-U+r6k3Ih5!E1Vc57+U[mHr+%M>ZM1ukXMTF+:Q5cTO.(F#?65ar2P!NSPY`-Abq@-9+:31NTa"t-Dj28H>43ZcW@/-a=t9h($ZD5o^7l_[A]r9A/,V=[sg:]`gOEK5Lji=_C@-iImZ_"rZcQnEUl?61hheMA:9`9hp%EMI.+\@c<<PYMJ=[HE9Li"ftFY-s`N/;%<lfKgcu`.@KN#uu67J330!Yo'l26HU1t9[g"n5_)_uac];E,iJsh:m11;IToO<pr[KK$ODPXr":aDlM\5RA"Ni.V/'6nb0+eTOQh97E6rn@+Gu=4VgU5]d[;4BE5cV2Gp%u%AYE%U`lYsH2*\rDQ#Bbup"N`^r;-!4V(=+;+cBmY5!?eISi:;XSnTHG"o00W(,b6*n)7ee@3a4-CL;#9W_]-PWA&;,_4t9&>lG-46hb'Z&rmIs"rr,S$3M*:jBZi=0#[j\1t+>sZ5D]Wei<bcTD"U<_Jiq<qtW@S$C5%>'!c\LeV?RYT,!\FOMHM0lgO@JQ>G57'J9Ht^j't9:Ne1ZAP.B2HigiB*6D'UauQuITJ@5%S+pT/Gp.maK"n3^4se;P*-d'RcciFuLJt?S<pYlg7N)Wb2/A]CorX*n3oH@'0..%B?Z5koP,jNi[ohH50_6->(>KG_#8iuCR0d,99QRb`YD2e]>'KkU9om]**n!rN"&]K_?:pAF_F94SXkd0WiF9c5Du;1A-8Le9MXp=-7Q)9+fCJ((g2a#7`t2siTe&j,67]RA9ck$OD(;=,6P?oJD,Pl$PsKc:%;+c.@_+$1e@Q5Q9IcsFgfk+'9ig5!7h<a0J%.l4#K=gNW%HCogpWn_F,)]l(b4dOr5MrDkP!_N2k-H+)WJo6MDP]%Np'EqeG>=':MQ@K@QQB9@'b5_-oK-X.pp+,%VpfJ(Cht2aG1OhZ_,/6[6O5uZ'nr)ps/-s!1d"9S%!3Y0<]hDS'2E6>;enXUDp]/>GPh7c?=P%&NY3k\\51c4gLYA7MH8F6b_dZHEY]\gu0.TSQo!g`;qY;CDKao]C%6c3(orhOtF#uYsios;L!rn&/GsjgSaA@_(LNaHu#!o7HoI];OJ'.Z*gfP(%(E.)Hgm4c31OrNYk!C6hiW'fbg>;X@]08C=/3@lDGQbJ@f1Lo0j!JPTFIp`#d0WXHmpp.o!/!<:YduF*rF@'V6grcA:pN:CP!'TqB)Y$645\*Cf(l625G=c"kHjU:h[r+;pWQ&`8&+cE#H!:a+!Kn"CVLMu*-frur[D9)Q?Nr:L_k;=8mSp4_`_C7E]OU/%Pe1(]p.GWH(t(\3.iVSWIIPkO)G1g7ZSFsH13Yh:Z8QpP`:@*FOp97=.^"(`?96docDBMoF_E86E=n1q,$ms8*>=9?cn7r,aQj0#g-8tSm_RU,2F]RN'<SNk>T6KI&Rg9g9K1>=RGqr.o^=:lK&_pi>kTpOR7mc&?"0B;a0X?JT@"XI?5&h2p596r*>#LYTAk_M[R=_?d<)b.L[DY.@9O"XG8hLr$kHI)oIIN=q,:1#%0qe\'g[-0&P*^=QN\lmKS214t#=niL\f#F6~>endstream
endobj
12 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 360
>>
stream
Gar>B9htgF&A@P9Qm3GQB;XLe)fI'L0FD8=&t*.S+ONH+)D2U$]<C>VJE_6c1N2.9Rp@2WOrW?p7$j%]Y(]7m^6A??;nSs-=F:jhlh'@O,u*2lW2n>M(@V<j9&&NU<^9%_]$aD[5ZF`9C*popZpbeNbV\Vo-/L1IK8tFTKdTZPcIB+5Krm5h\f%TH%j9@X<&cToCNJKiIUq^Y'J[Y`4jDO,TOW$d!H.]@2'7g3]*L12A[5qKWm+s>dTYtKO&[As&%-/:r8_s4/N:(EE;'%PrM2YbD[-$G=88d.!7?=<8A0B(d4hH!JAVpN<9AIp2T8IL-iZ@D">l+&#&,F?PWnfH.G[qlYPM@#quITrE>J~>endstream
endobj
xref
0 13
0000000000 65535 f
0000000073 00000 n
0000000114 00000 n
0000000221 00000 n
0000001154 00000 n
0000001358 00000 n
0000001562 00000 n
0000001766 00000 n
0000001834 00000 n
0000002117 00000 n
0000002188 00000 n
0000005195 00000 n
0000008843 00000 n
trailer
<<
/ID
[<d92f3e57e5fb9d0d15eb360f44c4ef72><d92f3e57e5fb9d0d15eb360f44c4ef72>]
% ReportLab generated PDF document -- digest (http://www.reportlab.com)
/Info 8 0 R
/Root 7 0 R
/Size 13
>>
startxref
9294
%%EOF

View File

@ -0,0 +1,108 @@
%PDF-1.4
%“Œ‹ž ReportLab Generated PDF document http://www.reportlab.com
1 0 obj
<<
/F1 2 0 R /F2 3 0 R
>>
endobj
2 0 obj
<<
/BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font
>>
endobj
3 0 obj
<<
/BaseFont /STSong-Light /DescendantFonts [ <<
/BaseFont /STSong-Light /CIDSystemInfo <<
/Ordering (GB1) /Registry (Adobe) /Supplement 0
>> /DW 1000 /FontDescriptor <<
/Ascent 752 /CapHeight 737 /Descent -271 /Flags 6 /FontBBox [ -25 -254 1000 880 ] /FontName /STSongStd-Light
/ItalicAngle 0 /Leading 148 /MaxWidth 1000 /MissingWidth 500 /StemH 91 /StemV 58
/Type /FontDescriptor /XHeight 553
>> /Subtype /CIDFontType0 /Type /Font
/W [ 1 [ 207 270 342 467 462 797 710 239 374 ] 10 [ 374 423 605 238 375 238 334 462 ] 18 26 462 27 28 238
29 31 605 32 [ 344 748 684 560 695 739 563 511 729 793
318 312 666 526 896 758 772 544 772 628
465 607 753 711 972 647 620 607 374 333
374 606 500 239 417 503 427 529 415 264
444 518 241 230 495 228 793 527 524 ] 81 [ 524 504 338 336 277 517 450 652 466 452
407 370 258 370 605 ] ]
>> ] /Encoding /UniGB-UCS2-H /Name /F2 /Subtype /Type0 /Type /Font
>>
endobj
4 0 obj
<<
/Contents 9 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 8 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
5 0 obj
<<
/Contents 10 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 8 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
6 0 obj
<<
/PageMode /UseNone /Pages 8 0 R /Type /Catalog
>>
endobj
7 0 obj
<<
/Author (\(anonymous\)) /CreationDate (D:20251212051549+08'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20251212051549+08'00') /Producer (ReportLab PDF Library - www.reportlab.com)
/Subject (\(unspecified\)) /Title (\(anonymous\)) /Trapped /False
>>
endobj
8 0 obj
<<
/Count 2 /Kids [ 4 0 R 5 0 R ] /Type /Pages
>>
endobj
9 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 2661
>>
stream
Gatm=qbnG(')p^:`Q#HYSK'3P*f3Lc'&QubZctiJa/7LQ0Hfno@g<>#)#s!TrQX\h,\r+:TV.U!bkC)_m]UsQR0i_P3$)=8fop<^p8cE5b.>JaRbVH0(YQR8&)KO4EM[C1<]45>o3US5$VBg7j'2r&/$mpD+-%D(9Ne>t--6t!6Y4EE%]*9[Cc$2^)n_hjpsmj6K0hRq-m<p(63qd7-ma3>pce#8B&+Q7e`jQbg(sY2ZWO9@i>aD?^HdWj!P)aHn2org-s_W__+5l"Y*GGp@IiYmZ<LEp-pDl>(d;JXpfsBKWMn,3`[W'@F`69F6=<uB4T_d#En=:8=p/(t<!rs4Q%e*u"Dio[1ZSkS3-4n?[ntKedX1iVf\CE=$_cX2$glFQ78S18X^%LDr$KD6D&(dG6>?+O(DjK8(#P'd\N/Yj,Y#odB[joJ*A&-tok0u3HUYf9e>s<1r)"lGp'PBM>Is"+H1`MBgSEB.-jh-:aT]&qbIlH4q[C>7p_VlUHnLY,olt7X/`7iDb*jY#DR@nWbPA+'=7B9K,TQl'Pk\$\5@,DX3\Qh=:tf/YU[&p7Z<D4fKOTiDjHHFeCRDk#Y@MsGWBcJ'Pj&g!cW"3@plr]h6liQHI+OU]EhDm4%ER9)ZONP=L98G<>$X>,msIZ'5($)t5e[Q8KYcC(6<[`3Youjk(G(BHek:ZU@8=ggF%^a(_Mb.:?YJg3Y!&L?QMTsJ_^lHAeqtM8_?u(/b@cf8&VF\mjYo0u/$4;1q3XR6!6HD8Q!0="17cbnAZr,38;t1oqAf_3/dZObrZpI:Z2sfD[9Nt0r!qA5=KCoF6t\897tuh0&6dE-I:_@fjR9Da!:R:E;G`[DELd9CJp!qSCa]bT:Z[tKl!2jI#3"WE7U@0,*4:$8]m_$(+>uBUg[Y`eJ&OnEgpG(L^;@#BkG!2-T?[pj#VgFRQ.C4._TP3CQc-oSC7'X9Sl-5s)i'I$UP%=\kX[b`6djt?Q[c,RZ@^m780iK/%^R47HYpRY[P^7Z+L&4hD[bNs\GNuMS3IAK)UsgMgA)CabgBm+\G=b7iuuNAL]Z'RFNtB+J\;KM;B'40apNdHM*0a/W#91n3ZLDmA1KCaRC.&-b[HI2(>Liko\T`dm<t_P,tq@!gj-*g9r86'>]@aG:_CKBd0'<6!:7Q$)a`>8Tu8QLIYPEM0mrr4Ui!GAE.?q-_f4!^S:a>/aTci1,K22\(6loBP.X("UH,;aa-AF[\+u:k!jU$SPRf6EnSt="9Viu`Z-GU@@&gN8OmC,M`.r3W3n`4(Hpi*_Y@"S4BCr(#X4?-E0[=SIHD%CDW-/N,ml$To:il$%TH.SY.QKNj\qeiH<O2$u&ku#OB`f?^9CFqR0\uj;L3XrhPs>5E1s92/p&G>_]Kh2>p$VOq`TT`--C>"QIV!^1.!>Q]kd3K&A(0V]3"4D6M&-mkGSNpX_:2mn&eE7,<^hK.dI:kU@_Eh(&BmofH*e2f"imVg1ZS^l:iIT_8`g]La[]U@91,knlh/hRs(<*T;gOZZ?.!N5(VBt1LJM(r)R<P**i@M=OSUQWXP]+3M0ocV/Y6kmj:SW4DbEtYAOWbEUOGf_S#Z^:jJgngh+X_V4Bb;:cq2/hYYFT-m2q[69[^00Re>.?o!V_@=8Ehu[0Bhcc8Q(1a&\7/ol(@K:&.bSbrrH5WAY37mrIrfW\g;cY0Kr^arlX(:4jJiCPNI#6=95"Z#p*86iPF('Cd'l4@PLP[J&LF;er:iaQBJ?pE#S[4[j+X:3IMT]gm,o[DR)*[j8PT(J!NZ7]\*Yc&=-_(W'+I0a69l*%>QOHn[2;(HP9UF$g!9kWJ0:-8mH5F&6*YQU,np+XluS('1f[HU0amM-4\^M6%2dI2@R5Zl)$nJg7!_1R*K6kX3bG^]RLAZIqa*@ULfQ(IT,-!Pp(t/,15a%fUku_uAbq^ii>C-]e_e:PP#(CC?_8g+:?/b12PCau&O;ERKq445RlW4[Qs@cl/1js8SUPaBPB/;85Pa9iWdT/'ZR]?G>+q/_J<e#+ck%gl+IY30I6%$g,L:D]XDjlI+lkcoI@pBkItdR%%V",=0g^D(Ngj]o<b8'acA_573]G$O1V#PnV]J17pI"7^+r-=J$U2SE_uAdP\Zf^Q$M2/27%7o5>iSVG:E_ji&lYB%4'`)j^n9"7R"ImPNpr'\aRh,uBWNgUb2f7mCg`;TkTG[o'P[!1:9(@8e0h;^=5#g-B<`1r6LJBr:GI9R:@`TPWI*dafWT+NZJ&$bcXLXJ-T#l3o,hhiH5dfP[J56R[c!o+Xa'RA-#.([5WEk/cN8g2s2qE7`ct*;Y@"s%0b+Nah4<Ik_M0LF3l]X_G_#[tFuejNXR%s(X2UUKVV<FuaH7(/r>IQ:((uWH8?(`$@_ah:dZ:;lUAu5)L$0AnrEXlM'=-\AXG&@<;ja2#`#Rb%dRP.AGbA3hc;_H-9L.FaR>@UC%TX`LF4"YY?8IS6WMCpMcP3<p/^O8j6dLgj)k#.BgV_o80[:S#`K$fQkQ%+/.V(RP>#JMd4\VB(F^V);e%Q(9g%7VWkIj:^YjUTE`k(PJ'KUGWnPL:Rg:6SXW1L1m3G^Wkj5SZW54WE,3[8:!eMrZld8qE64Pb>5i//A&1ZVR24TPV]>2rZ6ILA<e4tgf4V21*rHPr+05\~>endstream
endobj
10 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1644
>>
stream
Gb!;cBi>s@&H/b=Ysi,C'U!fh/h*TZ.T1G!Q][A3$nfO$"HmR2Es)aT-GM_"4hE3fUnB]iLD2H/d51Bk]AMp\PlUb2)%TK+A2R(f]MaU',jco#<(rIh9jX]nMiu469snG1c.*G6obA!6V0Sp"=9E%@K8WV2PPBLX0@;DPfN@Gb4f)F=WPqSWbE:P5AcN9a!K@GbI*ehgoYbqU3X?#<%Z%i_#!hk\4oiB=4_SF&.Gp[!D.,YZo(:Se3aM!#R\j9b6V%1H*PI%$K[%9l+Y<,]jDqO$nVSsk4W3RlTXE[Skqij#@;O<]Sm_chD>/g4\s7QaD&REK'JNPk-<Vf&`7*a,p?(UA(sr0JeL3&A\2"&;&J/(giQ/*blePhFb\NGS+]-NJ+]KN^#hli.,X"cJV+4k*/CR`%cH0'/G^%6HfQ"3q#$3IA?]FB5>M\sW8rj[W9k/g!-f6C@Mjm4]ZbtX]5P5'%pEM'4q$C`1J?BPZ`=]pBguUtCk`';lqY-U"NP+-/*T=,.bh&cmQG=>oD1@uF@d+<U07,A#k:(b.,N_Jh2KA1;\7]p>+&Bu@PR6>L0.3J2o]Ws[mdAmV^QG4%5B!c96D2Tip"ZHD!IhJ`("`LM*0OMd561:tLe,bs>gZXS9%\u2Ej]Xj5\*b6Xf2o'N)nX['ctadiYL\+;GQ.OF)DHE0/-5W#batq7R#T&dst^=.bZ%@#-=kZ_7sR]('>eaHR!eK-,@>&qcb'/IcMd98V84gQmQ`<f_h"8E"\cNAoH;/Y-ZfD7Qa+.l2Y^")S;NboT3En@7$I:e>Ph<4%\M1OAb4>-6d.3H9C-?5@ZnITB"_$V81s$ISYW0Osp$M.kJ\e7f43:Z5#OdSXk.Lb7!^a+^?@0P"L?DFbB`]6L^0p<K:\3X4de>7)V^0nhHoEaI/^!4^:sl`iFO).kW<8VC4U#fQmgF%&1@V7g*/[/9Q2-cqNle`Yp;--5/d'8^jDU>p!^a_'kmBW$D]E`E]1p=:<:KcP#rsn#Z8pfp0fdj<PhRKEISjj]E8O@@_1&p(-K2&h-RT%lmEg?r$8JHOkk;X*]373gg@KVT!"A?YL)rSLJE6;b#as^a8-J'I]HQ-'a5O%*Es;_]Z^mEf=!X%Z`X<%RcZfMURH\qVaC_ghabsKjkL.Ei'.]fTWL_Q)(X'8t#W,Fj6VZ\/NpFb(Ql_@5)J&)sBY[),k2=G->@X+G'Oe1jnW50Y0h"AuF"[+YYE80p?M8Md5(ciFYB"\N^Z8(jVaO-[-]bH%(a?80rRY=*H;CZ:p$DbGj,;$1HF$r"S!A3%Jn]S=4U<LAl[jqm?f*&IF+n7REn9C&j2GO(/YDaToeM/`<\h=h-5k@hu$6:amZ*YZ-l\WbMG8H!u<WD!,TW@aF+Pql4mpKrA(1/(rq8aPOrBYmGpToJqnSh!fD>%(0\'$AR&PBj?[A5B/t.D'*@1LdB3>]$jLQ"F4jh`JVBc)jTfop$WTtoknAera^(/o^t2m>lU^--%14jfB+iR24+>g!o',C\O8K@UqaREdPp?Z=+B,'&),^S17+doC%_AoOk8:E&#`7)B*pQX)1@'O,JE7lL!-j;Pt#;/PLpFZ]d3;P]>*^Wmn1;H5A6IkQM9pi[e)s*q/gJgT!_,L3hE/>(L+3T0)~>endstream
endobj
xref
0 11
0000000000 65535 f
0000000073 00000 n
0000000114 00000 n
0000000221 00000 n
0000001154 00000 n
0000001357 00000 n
0000001561 00000 n
0000001629 00000 n
0000001912 00000 n
0000001977 00000 n
0000004729 00000 n
trailer
<<
/ID
[<330e4452cf6c305bc1751a92723cd5c6><330e4452cf6c305bc1751a92723cd5c6>]
% ReportLab generated PDF document -- digest (http://www.reportlab.com)
/Info 7 0 R
/Root 6 0 R
/Size 11
>>
startxref
6465
%%EOF

View File

@ -0,0 +1,127 @@
%PDF-1.4
%“Œ‹ž ReportLab Generated PDF document http://www.reportlab.com
1 0 obj
<<
/F1 2 0 R /F2 3 0 R
>>
endobj
2 0 obj
<<
/BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font
>>
endobj
3 0 obj
<<
/BaseFont /STSong-Light /DescendantFonts [ <<
/BaseFont /STSong-Light /CIDSystemInfo <<
/Ordering (GB1) /Registry (Adobe) /Supplement 0
>> /DW 1000 /FontDescriptor <<
/Ascent 752 /CapHeight 737 /Descent -271 /Flags 6 /FontBBox [ -25 -254 1000 880 ] /FontName /STSongStd-Light
/ItalicAngle 0 /Leading 148 /MaxWidth 1000 /MissingWidth 500 /StemH 91 /StemV 58
/Type /FontDescriptor /XHeight 553
>> /Subtype /CIDFontType0 /Type /Font
/W [ 1 [ 207 270 342 467 462 797 710 239 374 ] 10 [ 374 423 605 238 375 238 334 462 ] 18 26 462 27 28 238
29 31 605 32 [ 344 748 684 560 695 739 563 511 729 793
318 312 666 526 896 758 772 544 772 628
465 607 753 711 972 647 620 607 374 333
374 606 500 239 417 503 427 529 415 264
444 518 241 230 495 228 793 527 524 ] 81 [ 524 504 338 336 277 517 450 652 466 452
407 370 258 370 605 ] ]
>> ] /Encoding /UniGB-UCS2-H /Name /F2 /Subtype /Type0 /Type /Font
>>
endobj
4 0 obj
<<
/Contents 10 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 9 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
5 0 obj
<<
/Contents 11 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 9 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
6 0 obj
<<
/Contents 12 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 9 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
7 0 obj
<<
/PageMode /UseNone /Pages 9 0 R /Type /Catalog
>>
endobj
8 0 obj
<<
/Author (\(anonymous\)) /CreationDate (D:20251212051549+08'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20251212051549+08'00') /Producer (ReportLab PDF Library - www.reportlab.com)
/Subject (\(unspecified\)) /Title (\(anonymous\)) /Trapped /False
>>
endobj
9 0 obj
<<
/Count 3 /Kids [ 4 0 R 5 0 R 6 0 R ] /Type /Pages
>>
endobj
10 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 2716
>>
stream
Gau0EBi>s@&H0nXfHb#Q-s5W''hP5OG)V%e,UA$pMN%a@#=oD7C`saLIs\bRAe.HaW!ZG<kh)Jpf@T>[JHlU43/o"5K&BWRf\#0a(I=f4E##CGnQ54WZ1MaeHV"s+R[6`/Ya1'm1(Np6EQB#FbCeL"X8Wa5ajY+X@H@mL6Nfa7*^\cpK(4ro#R)-;\Yl:-0b`j7qCWOMIYepu.m[YV1fe%mWJLV^#!_j5Pp20G+gC\K#aPgJ2C`[\Zg_+LhHS'r\"OK[LHbaF"Fuo[6/Z-j:cJS;r0tEqV_!6d1Y-R(l$'\!3=Fn,0=HB[X3d)"\^1DtYZ(W$Bn]UL+;@FgBnHseU#uiI\s"(23C9!D5F8CT<'1po]L21.Th47/'C`8e"]qs>pAF(HI?QVH--AEESWY-0dM-IEb,GAS-Na$(X,]s).D#^R[)m_I+egS;V#)m1KRNGUs0]ROh?$9oZB$hh-3R/s/APuM3Es:3(/)mfYQrdRe4LM16Us6RG]%G$&kd0Hh._HJi-`NdLTQOE9r*\EX)de/M,*C^`k,;_<Uug@Z@#pQLoA^*jJ]J(/.>06!7p><'YG4i/apIc*;q%LC&u#D#oV@':b`]i<8[f%P[-O3MBWn5C/EOh0(u@8,"sO6#F-j\mm%W:JT!rG'L[*@CGShD@Y3o=Qm8mV*adNC^n53\f2CO?Y!0c80E!bqBhrKEj3-^gQ0nSAG:\a+M^?ugi*\R%hE!8pO&lf6I0@jHf<C\fJ:a76fN_qYLbrP],O?(o[9Z]QH`ot:6,G,Y>/CW1p;&h)I@)l$#Qk41>sr_dMM3f;5\[517OYp5\7(BFoIHqi#\k<^6gYlM=E]<1Y1Dn=JY^nt>I:V2Hl&CG$#&SE@3f#p;Cs(466+--]HHOihN0`M!"I\811u?4`&+jnM-Ci>U2BG4*?9OGiAD+[%rW%$\qZ3YD:ZP,3i=@;,eNr4'J4D@Wd[Oo;nOL9knTSdaEl_u:]QU9Q'Z1Pog<i<DB&af(d$s(6+_%*WC$uT/:<C9DmpnJR-qfaWWuH2R5kQS'^r^RZjH*'KCObe$/7MZh.ro%Qm-HdBFhR)=1o'#570n;",)2_GG.G=Z]q'm_(:I%Tu]E$:=@"]PDaL@mNN&2?GZ3"7Y^X0Wmk)JcJ1IUUV.[)(W_XNKJFm-3%JT)"V"-LnGIYCQ=VZ]*%t]MCjQOA!$3%IA$%-`%rn3I4H[+pr?H>?-Ot(L%(('b,ubu"n2PM-fau6"\17X#9Eh"[b]DEP',Pq_)?`cfiY*KUcQD-Z`Kt504OoVa>t>q=+cV2W^/Ml=FblI1LjXAc5l+jtHmdAY--SE5g2$9ZL#_?]c`jRCDUL<!(F8hp@$m`8!cWC;M'j<,l#b#/Bk14DH_&Q!*:M?3BB-EH<Bab)AKH@o8Bp[B7f*P'X,aT)[p(p?8q3L]9J`rBDV?9FYs'4(p5gAo8kfJM+g!Cl$FF?$9\5HldOu56Ok[fnWTQl&F`1>?ali+gX/O=K@rNUMPuZD5.Z^f(n;^?SN.3t%k`*l;EXG!3aWlnM?ZhY&,OEPY=9T(\<m],E^Agfsnd*&e8'B_J:/YTQW+U7T_L2*Y?/nR11[$kN<4`([Q``;;_6]%cq[C[kl(ds\X7,[M=_b`Gpf:U;#2EGRMMmBtk0Pk2aMjrEeu9?$bGQ(T7B1Oenigr[FX^%d@kN"G>GQZAgIPSY+Pf[#LGg"b+'0_OWPER/-J;RS50q0:,(`;>P`*j(i/1Ll=a5!oKA'jl6+DiXoE]SK1HO8-,Rd$0JPeMNgjZW#X9G00(1ZDc+)ADNYFQ5U:/A.o&Ek],')AC[UE2<>70h_uK<6>SXJ@ulAg6=k,q`b))fSEt2.%GQp_Ip<DCs1;P_h!A[AeP3#[C3`nLa7G'+\bF)Gm>!e<"]g@=RS/h1nGp'i+dZr@Xtn[V'TG.h)tZ`]RBK>hn:a#'0OBPcIP!8dh@<2Q9_^QY('1m57Mi2KJ%:#[,rpM,gpe'6_l:,jA!n/039;`)erG8+ebGc@#+B,_ackWWj,J&JX6:I"^WX::W'\:$D@E7mGnr#$A?J3'\i"4%V`5fs'#*6^uK6^$E4g%*fGXG2,rF9=Tp8;oQcn(H_EN4[sOUfnNj<dIEh]csg(iF8KLaN!`3+,2+lif92;D^>dsQft`M>(S9hqWnh*Ghg=Mn*i9[,#=\aDn?g>I9Q>s&/1>_C'T]%T&$^W=KG(6%M)gF'on7&hR?a;.YEB9Z#2$AO<7u=,K[U4JJk;^6@6\1oa-#mI*'ki#^;PQN:+G`57O],R3H\UnFFUO]&LXAL\`*!$1/dOW1g]<?eiq:G@E%S\Q>b!Fc@Ri8[-RWPBr3I(Etn#fU/PGJ)FmpX3m6h(LajYTG)@$7CVGSR>?;BB]7n,5"11sj;'Q*3@Cda!K]VBB]#"(iV\5iO<(!0\Ur6Xu7U_e&E^Y\1,Sb;MT=L')>s9D"IbQ+L(r3JgP;o!,_(2DB4"<A'.'cD23kZYAX);?=4gWBb>(>hP"LCQ"jO2W:'$JW_e:#qLCOc,;$@2O[q3'`Nid009>o\R=V:ce+XClD8(-'id#aYluB?)o5S-[lDGPtOq@aN+KQarCYX&Wt?Z00-*cH&67S>YYU>CJl(iR0u<#50IhAL:<+s5AEooCRJKNu=CVr&F%6L#k'dIIY'l==3N*Rd=qeb;$RF^;6R4;l/!hkrpmRq/k7n:^^"tZ&-+/_:!hNEeN?~>endstream
endobj
11 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 3542
>>
stream
GauHNqbnG(')p^:Kp!o%Qi_Q)]9;QWm[Q)A00p*O#*(j"!V$d>@p=IPjM*k6hotG#,o/"dlcNX%g=`'hmf'qLCh,u]5De_*H):(PXn$R:<huas*EJu8R`a>+Puha^/g!["daY9tertD+9l*h-6IKps];d@K^J@@\8;PLOb'IXdS:mn7h8s2a'-HCU(E8bRJq"OlV+%74rMYBuX%c08ag6GnQ2,?q'1GQjbqd!C,sS.[7F*G.>FA5tQNSQbampb>MrKZ1pKAp\]O$aHc!Ospbq0c>7:N(_$BY=*D!Ns,V3]\GA+>9@,ZgDBa_<*/gUQhc;Uj-Urg9Za:$s&T9DK#Y]dl#%"0,94A;7uEE^Y+FXtO>,r:.gTH/;d9RVn3JlA--UkoQq6`HRnQekR`2$WG'#_1`LlFHUa,r^umS6)Ed1`/SK6jGIY"2X."IR3KUK3jnGO,TdeCD=94[DO;%=d+1,(dd4Ujq-pINloIlM^MdZSd8m'WjA8EOHr$'o8o@;@i9H3L27o7lp5CVA4a-:*.M;0a-9kAo;<4uiTf*?$Jt_t6>;'1)AcoUIlOm=Ro^=EJ=BS?Ieeg)b0+df(_**V&H:C;V!1n-W7kn5-^.l0EO)9bU_@=&9m_OVf<qJ'cs%gB,`g;2JDopO-P3(@@%?d)nQ9c')qlpZ"qhQd5.K,mm*/U<PiZ*;5W0<jpY%!%DC`rWPZt&qJW[d$8J1dmMl1!ddgnn(lZiD2TH\`.XXE0NOc"57R_nFKO!%m,R`$%5/(XE^hd,eAWQXPL?:QBB^2UHe7o/[%No(fe`A\e&nnFg.Op9P"2%;`H)>TR-E)&m`mS"fQW?SHnq_j=GS_DJVr*sRK?^4[2:`nmK($-Y"'A^NC6lOKP4`72S8hV]Nkq"bC#fK&&r"0j#0F)3Hh0[aY]3R;bQA5m5GAuXRrp+Bg+$fDH[GhW*i^XD=3f[lm&6stKd9M%CH'(O[R0I><2$[r5GQs?/$,I`D`C+h:8WcVkm0e$$b@<21mQZ\h\R\=_pH9bU?DlY_>?!q_<<-.@g4srZC'Kgr[DE-L].2\5aa.:qGe!Gt6(NaI_c9dNYHeKoSj(HR?4a_7"`rQ])l,b%JjNN"%p-@_+PIY(nNZpNfA'Tpi>3>aC$VY`71gnZWkJTs3AW5)5H>Ce.OlK^q!%K6'(Z&'Y:tR'GVWI>!h9Kl%bp*sHrk7n,+.n)/_[^KmF3XX<heukW"5%Bc[PoF6@!<+3DfVR33HnrG("H(H-obEH&V?(O89B'UmZ]c.q_5oVX*IDdYrSL=_0@$a0/G1\>`u/9?EuW]3Q_*"ODMBb$1?RF[nNg6F+cIs7MUEI?oS8*C68of\g1lB`Y#?g4V"7SIAaGB^-Zgk6]oT0<Zr@`C9cM.Np*!`9k<\s9XqPE<.hki\:_LHn$kt.W`_W*7$U)?Q%N<fq1<rYDJ-aE9[m;Ph=!/mFVrdJC]`Z<J9ZtSA4WWMRq;ltV5bkb<A.A0VBTC::l^FdXaSc/8;n3^,`q`:i1m304bn)[kAW>;W=J]U!!!Aqp0tL#Y+cmBPi41YOAK]]S>-.Zhg`Eda<&AT>d,No(%2&'*_.1YY#\U2q$)5sIYAaML,l?*HJXb/+(GI)1tW\,Vb,'J)V6N:2GJ=84g-`q0^"s<G;$`9TaHqu5X$(\apo;ha2XU!JO_((-8+5#8Fba[D_Q`E<2:qEVbg;7_cSNW'F3Kml$Vj.MhngV^[oUQ:<#^,YMTf2[@!nk[\\sEX?r>G]VnY0`sUI!-f\NITD@-eNbNO*.NJ6\4R_Z(ZKO8;qUgVsJLC5U6N,Z2hqSm`rK-C>cEabn[A!RdKP[+N-1AP3cB^LhU?Xq^nmq%>RY.]j0%WO<7c(F/XU;'tbCOSR^>T%->JoFDUh*Q>W_'s'h+]KG(Hdqh#Qe2bZIVQV%G-oM3tj>K6o`c/KA@H)g%KRWl%.%:^5$sPQWDs6+=ZS;C+\!8%<:S]g!K2A_TWc3>=Pab:BW0+b\Al*E91rh8ES7Lo6h^m]$EMg.3!"^C7VSQ:k*IT5n+Qo@h&WuhPp^%P-TLp'-a9Y<O@\*_9Z\[4uk:Wh,kJd06l6!`^FFr*J^_Gp<mBPi=!8.*T>mXMH(?J0M2OF-/>B(:,)3Im[SQm_rh/;;)C-d9/stHBWe!PK!=q\!gd#Oq\UrbX@<22lf/I6ePNe=LVC#DWVXk!.3C.7p21u0Qqd!/OJt6nQ:@_$/$//4ZFrIh(Dk``$U2E7CN#pu!glm(JA+Fo.jiXDSItTCH'TpZBl&I#>H[]%Bd'[&hi..6C:F1n:M@I&r9.9WlMCA^f4cWR4^n0')m'AE)QoS=>5oHM@rhN3i(^5P8ZfXf1:eOp'AR0!XJllk%G<A9<;EQ\'`(f0^J&&)>!W,_kBZJ*EHZWCk+L"g:RH=I^ifq$Q)`7edrN]%/RS!4Q::B!GF3TBfU"WO8'OQM!2.iR\WL#7nNB>tmr3p3q>LD;h,LB=.!LZZ.UV[A.ZP*rp`u@U$ne,rU1H[MEo["PN-\..*cR@7G#qtki4b4-dJ,+<KF`M23)kspnC,04;@QWfE[-^OC<0D-,,*9/);ggU6r2oQ^<#lPB$BH>0nn&VNcBb.:#g;Si)3;E7L@P1[.in;*-;1^@A5M\Ja(1Df<Sh'0\_/^M^Qblhi-'i\.dT6bkEtCCFfeSo]1sckj5thZdg#D5Ci^$/"l,;4O:Y@g%.OpH&^_;=PfYR'?.ftUh&31%^qC5<'$5^A,&hXOAiJnIiQeJ]r,EG`JMI)hZ^fdKm<KRX#piS*K_;C""ZCu5&63fE-tJAk#b\_Nkq-$4V-;eY!.j]V]8t_0,*mc>l[YW8Y85LEiPrm4)3$]elp\*8XbsS`)MEN$Q_ib^4jD]]1@.`iSO$:BC=cmAg<Ap#jKAcPFe"=Z=J70XHInDi5^u:+]f^!LGhj&iNM"F?1(),i'mc!%+'oP3DN7fp,Vf[l0l7sM&Zeaid6lQh2/C_IkQ<l.Wf";p]c'=^>dqc;#\P1,&5>9FOEPE.b*lkFRYhk/d!b#JUg"X0?W1^Sb=LX(t8A6QYX,Y9.l<N3"9EmILVf08bZ[tAit>UT;,a[A:qbE\1I&27s2K$V-dnOUO+#8B$5r_gV,32fNmUUs2Of$6B,4T('?$NZ6rd3_7.TrRZGr#iV*`\L"Mh=O(l30=60pJK:9Y&rS&uhDlrRJF6mOO*O$3*<f(Y8HW]ia^>OQ11S-Ff>i>_[LM4dIFB*$48a>D#.uD@a4A]+T474s3CF$>B6lRMqB8((4c!ceX-mkf^O@r%;K.e%q=*U!"%>)p3Kc\dN;rj@]2l.YI8e!+sLgPobXko,COssSV:08s2:,s'E;.b(<F(M?WU<?XtP[uZ)P1h)]K.-1WUoi_d*bn\io):SKH6W!be8<U5ab3[)pubJ:iZ6?\O'c^"Q=1[HIg"g$Ri'N^A&-(\m)f8<6.`g#EC+0K3NIuG'fHBOT[^nXj9pEYVqPO'q3b#u/;:(Jf4X!m^TOU03gm#Gom\PGGW;D:/n\'ls,LcIpD9%pPcB"g/!'Z2nU-uU~>endstream
endobj
12 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1321
>>
stream
GatU1D,VB4&H9tY\29c)G)VQ,V%`jTc8;*!FUH-$/r;#Y'4,L1fT:d\+\dH5T3^:K+L+)RF:>H$X]Eb3]DKYr"s9o+d:nb+bEMVVCgnj87u;@_QfOXXo6fZ[MCgF97ap*mg.Ht+9b,2&*4D?$`4tp6$Cob:?fiUuKi:TIdAM6e@etL=C^ZuE+H(/jIl7IU'A#?p-n%o#%!F>O\1lM#'PqK:?g6KH<\rS3=>5M=g;1AXKe$&&L()@H&<hjOZL`$QT)OWu?$=YM4fd>c_(0olC?'b@4Ii^I<<l59]NjX*?T[7=DWBrm.)^uo\+d+jc7iIFhR`h/>g>e`\gc;/#cq:NG?Wi3eCFY1(r2[Y2L=j`1:`g@Q1<e&Ze^4c"Y2e7OQ>knr5UfS_ifZ0LCm2SEj\A_edtpJcTE2uAfGi1UV'rG1jQA`D-,VbS;uH%T>E"`%q@ZgAKcCNfjdT@_'TSe'KU"pBQsNY&hgBG)#9TAc_#dG*[7YBlPCGm1"SUZrslb*n+HQ[:@GXZV<&V0F@Vur>a`?fV1?Lt"S!+[dYaY6Ns,N(0ucY@*_,^s)Nh#:KlsF]h:Dc>f8h3g]66u?-s"T#SLHr*qO]hu0`8AQ"%Wo%:F0M2qZY/2dhCS[%lW=H:?5SHlh&1d?"Vbl)Zq&k$-$K9S[==;,enqU3P8AgRGH0)"#_81)*[Z1JO;41ZQ\<^hgfr`YXCYP,K)qNAP"CS,IFI-98*9MSCTM+:+X>OVAh=Ds/U/R?jit:WZ\Y9;LpMhkluru8UF<%,3;`KcX]sR7B!RBS)uBH*dS[,eh%iI-['f5?a_R`*MKKp_.C;<>0jt\N&jBn#RW"aB"P`6]TqWB.eYg+`<EddWiaCoT%q?8C*carWeua]AN]UBr5#!56rtkcC='SnKBLe<`R5KLf&("!20nl!mgfEL*oV!8X/b8YD!F8(ckh+WYCr2uCIR2;7EeMM=3IJl\FD`c<hNr^pC@^`Xh/_5o*tlk>eGeJ$%HRY%"693\DX)<=`ZGtaJ,H+a<29rV:+DFCMLIu\M?)uOccDedBl>qIVS2LFg_>4EHISf,Wa\hZS5%c*B/`=R7OS^8Phk(d'eiVl5N"1_XpuL$SPFd[<mZglm(%)orcCcdGcdSFCqbQ$Z52A>rZ`oD>lkah]`h[GE!@\Q<,KJQ5BS;@l(gqoLbm4&\D<=E?i-0Vhugl<`uPN#gZVWRQuVM@YONpA+qW&;JE+:2uZWhqJ20n4s$$TRcnU"El$hYD<+on/O'e"I<R:a&!_sV6=6K@drY%[CT[?u:jZ2O>1.44[XtZ)d#mS9D)3i5ai])cML0g~>endstream
endobj
xref
0 13
0000000000 65535 f
0000000073 00000 n
0000000114 00000 n
0000000221 00000 n
0000001154 00000 n
0000001358 00000 n
0000001562 00000 n
0000001766 00000 n
0000001834 00000 n
0000002117 00000 n
0000002188 00000 n
0000004996 00000 n
0000008630 00000 n
trailer
<<
/ID
[<831906e146e24214ff1bc324bdf309cb><831906e146e24214ff1bc324bdf309cb>]
% ReportLab generated PDF document -- digest (http://www.reportlab.com)
/Info 8 0 R
/Root 7 0 R
/Size 13
>>
startxref
10043
%%EOF

View File

@ -0,0 +1,127 @@
%PDF-1.4
%“Œ‹ž ReportLab Generated PDF document http://www.reportlab.com
1 0 obj
<<
/F1 2 0 R /F2 3 0 R
>>
endobj
2 0 obj
<<
/BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font
>>
endobj
3 0 obj
<<
/BaseFont /STSong-Light /DescendantFonts [ <<
/BaseFont /STSong-Light /CIDSystemInfo <<
/Ordering (GB1) /Registry (Adobe) /Supplement 0
>> /DW 1000 /FontDescriptor <<
/Ascent 752 /CapHeight 737 /Descent -271 /Flags 6 /FontBBox [ -25 -254 1000 880 ] /FontName /STSongStd-Light
/ItalicAngle 0 /Leading 148 /MaxWidth 1000 /MissingWidth 500 /StemH 91 /StemV 58
/Type /FontDescriptor /XHeight 553
>> /Subtype /CIDFontType0 /Type /Font
/W [ 1 [ 207 270 342 467 462 797 710 239 374 ] 10 [ 374 423 605 238 375 238 334 462 ] 18 26 462 27 28 238
29 31 605 32 [ 344 748 684 560 695 739 563 511 729 793
318 312 666 526 896 758 772 544 772 628
465 607 753 711 972 647 620 607 374 333
374 606 500 239 417 503 427 529 415 264
444 518 241 230 495 228 793 527 524 ] 81 [ 524 504 338 336 277 517 450 652 466 452
407 370 258 370 605 ] ]
>> ] /Encoding /UniGB-UCS2-H /Name /F2 /Subtype /Type0 /Type /Font
>>
endobj
4 0 obj
<<
/Contents 10 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 9 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
5 0 obj
<<
/Contents 11 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 9 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
6 0 obj
<<
/Contents 12 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 9 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
7 0 obj
<<
/PageMode /UseNone /Pages 9 0 R /Type /Catalog
>>
endobj
8 0 obj
<<
/Author (\(anonymous\)) /CreationDate (D:20251212051549+08'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20251212051549+08'00') /Producer (ReportLab PDF Library - www.reportlab.com)
/Subject (\(unspecified\)) /Title (\(anonymous\)) /Trapped /False
>>
endobj
9 0 obj
<<
/Count 3 /Kids [ 4 0 R 5 0 R 6 0 R ] /Type /Pages
>>
endobj
10 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 3221
>>
stream
Gau0EBm14N(B)O^W*UT>3u)V/ZI9d'!s9^:NpUiq,UYJ&pLSk?G/A0ipTC<lZK"R*-Tq]r':2>>]t3[H-Qs^#IjEamj!]6(O/CgW8?/W''1ik,W;frkVZ5`C'Bsk4At6r.D+/.gA"<run'U/t$Mmdm_k/<g:M<F)9J]*^+4D2Z;MO@2MJ#aP`_n_*6\"FQe+$[WOfO07.8-;uL47M,F!9m<e3AccP;MXA#diTMret$g<cQSlXEnsn-&N08b=(de0Fe\&GcElb1tG9!?rWbYdt1$*NT);H`c)T2o:u'e:IXdehO*:l(>i,@XY<SB]Uf/Y19k\q<\4F)MP:2kCoS,sMIL/(e7fV<X--\?'`0@3+?(2/nF,D.>T68hWS[7+o3+cWM;^V4cBXOEo3Ld'oBPQ)qW"=:^CLJ&J_90g-uJ8^X&dW!&?EnN*JTpaLb0D`!Fb*AEF.$NJP9aB)L,j`mHMdfEX/SA']lNCHUnp2FW$-G^fkJj#K@dca<]>ndC$&$9j)T5Vfg>rI)l;"P<bp&h-<O:CVn%UQZJ_=p%Ba,A!TBDgs21]=/<qq.>AO4rFM$U4$k3B$FOR8k9.#j[`tV6!n/Wjhk:E5Mu/3ZXeA4R55(IbIcuSGUEVt&*8XZ[5er1#dUfTGT7V15'l"$/p;IeqX&d%=ERi]Y$o1s6+jXk_U_7o71Q+hQTm7AM.SY9TH>[s.U0sP,kq;O^4Q>eN!GPc0d>H`/,F5Jrge])+r=q8@\8Z@b(P=(ugRc7fLVN=V#`H3a$QF8Y4$Qb0_5gHK#64saj]eldMtLsK>qpQCI8\!<.rp3;jeS&XFn<84:L&B3h/5IS8=D;%$?+,gM_m21X9!F=nh+V\H+:\[BX!4D2)MF/kqdl)9;0h[?dI,M,5K<LHGFptqmj/(VjH)n_Fs`ghpWHkO^PR9QRan[l@p-PF\Efn0e&a)1D\JP1LZF1^#gfH>5*JY&C-ZK,N9p_kfrZql,EnU8RZ7J2L5.Q?;r75hoHZ:/aBu=J.jWZd$U!AgH[T'[iHSXoNA</.86kc:!?=iS#?90]P<W7'>8ZpK1pH_",9ef^#2Hi'5a82p#_$Pjs>:Dj-VTmaMN$f0l++UYJC+pMm@TTX,\&kZL^8"-kpNTd]d2giP8*k!;<qo4?*<"ju#*t5.kKX15%<j,aOC/qN5KimBg>$cbpsJ2#%k62"u55:=(WYbL@CGl[F_qg-6$TF\F,38EesplZ@FB;a(]U*F=,^m64$I(.RlF0%.DD`'tb;-CQtF@5`ING=c*VMSj2\)14?1]d!X-N(0Fp!8;:7`>=>d_j+upGhp1eh&<XQIAi*VH@n.N&_#=-oaYnVdG^]nEeG.3?aY0Ohh[+LT*1fKapQ#$^5beW(6Lk1]QGVj6('nh3&5iq5C`aaN%(4a89%VjLCTBHI6P9i-)D]u-ulij"efAhd)k!D#`(:FJq]O%5XH[(BrYp1OD]sdO3Q5X:lmrC0'SS'bCHfJUQHfmaOrR3nKs!KiiPlM_A+o@Gpm*h1R*DQG.Ca(auqm3TN1\(.MrHPg?<a4$,7[8Mm'MAFPHLaI0+K00PJZW@f^2F]uP*]Bsr)b4k_YKGb=Qkj,,bAesXCs'FZ:(p:$5,=8'qnnAKCH`Fo2/'6:t,XRO>^?W%ueH>LP2&JsLA`ieg\SRsSG*Tl$TeetF&BH<\!J-`dVIcWXHMK?l!T.`;R,(p*@^c+6tq-&UaM)$C=@*[B;=fh17k$W>(nE]$g+GbT8SIdMI$4pQ]eZTq=<IHWShVcf.ajQQ3B)4HBPG/od`rM?9ffQZU3A^#]oKMD6`a-o15T1=DGgG]/CC_I'`1Z:.3InEnP+EQ!@0&4/JF-_U-Qq8#Qj?H4(7!LV/$LL]/%0r#IO$n&AnP'\"td9gkSoiHg/oAD90CNI&&cH(,.MYS:;\.>:AT!-YQ)'iJne12QAS!/TM]8!A;j8EIpP(<B36t48Y=q):7LQs-1!mnKG*LTW\'>k?MZ@n]H,CJm_HncH[8YjY,[eAC6:IP$Xf_\XeX.-X)>%F?gmRu"&;0OneP`t?(6FDG]gIQ9t84/&n8\/\ZDr5&?)H2MM(iJN>B`O#gsKUK;Jg.9s1*3IJ>TA'jNfebs&??TJA$pi2FE^TZXe.nAm/:63g#;ROe`]GrqQEQMP4[PUu$rq[of>/(V:7J#AuNg#93hDuc%_:-t"o>8A2Tmp+05//VpZX@)LQ9BZq=JHtnSLDSBM)VUU^YEZ:-GZ8sa@,#+:(3\5TrGX3WL[-=HJP3H$lW]`G#[\C0_c;')(Za&bfgNNu1El21d3ta2glA9!kq.^D^Z8TB]-N^`7hsKqpel,*j,2l3PoTq!-lXXa\:Njdq%PnlCO6.q2qmH3%TD@[e1%`dKC\ZdrF;Aogk!^]R^>1:QW%B]kB9$2r>+sd^Xc:-jb-$B3E&FZHSmnRc-qLneSAZinnhC;aK))1X\8+e_P,`kYVa[g(C>d%VDT^11q)t0ZA[9M5-Yl)<j:+.%^4#cHTQm\hls'h<*iXGiIL8.HmM<ZAueqq&tW&ub1U-E6m2ZB$3>K^6Xau=b*OOqZ*;s_L"VmKY&G^$^\r96VB+0Llmj_=<J3n`pe0lKRtr:*)BtRHrok.jBoUH,PaC4<NO'_)]]acu!RZ&D"h1e!.108?am))X9i>:gXGsL9mHsbG\D%iR<JO1ch4;Qb_U5Zt'(^<GYaM0Y:SKZF^iVs*@Vfn^rb>HAAC9@ul)$Ud`T?=R$`nU7)f'jb:uTVaWUf``5pjQ2%\nC>m`-O#Aj)*"YKXER3tMtj)+trW]E%E7oGMr1F76MsE&EW]r<4enrE7o'0'k]s(L<N9)VH"Z(N'n+ZjEXQnS>$s`u?8?N?+9;<"NV*(sOZ9>)d&7KOL3,\^i4Y?^Xk%SZQ)S,4XqJg`0?Mf0E93[*cj^];a-oc"EZ2j^&eH(/?PC'Xk3Xa:+Dq$7T$9c5,Jmk#&iu8A]#"+VB*tpV_+(>p-b\?5+=G>+KH^cJY6;O*bp#HWir,c?.&"mPA#`C2&%N=VSrhPM$oT57ukAJP961BARpEG/knt>MS0QFHp_3Y^>E#Z1g@[4/h34oYG:g51$:);H+s"qYRO0'@5e?ks'asJ*@A_!=j=+r+>`@;Y+=ajJ4Zr,^ii@M,?!U57OS74-lcCDCMi%LIW8+c,*?>!U\]U4`hXXPrjnO.>joM=23bS:oC9CGXBp>W;.,09al"T4o$1FrMcj~>endstream
endobj
11 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 3731
>>
stream
Gau0FqcDOl')nH:_JO3$U_f8D81U/fpU'02,e8mVR.*)62Sg44L/>`3"@E+]47hiS-/"T(%d?Or7bYoL4MLW'A6BN::ZC(iX]/W.=.[*i'r`\K#8J*\@:fD`b0'S9q4)OO_eKb)R]0<HC)k/Y<,(2oCZ9juncR2#!`cN*57Zgh([3m0]!?cW];eKJDTZ1Dr4.n;+VGO4Atieg9p@Pm&0g+,bSS57JbrW?1I^>8U5e<i(g=<LntW@%:rmjV*t[q<`g8&cWjD74/YS>\rf.4J2e]^8*AnKRohM\Xdb#:p'Ad%eg(.uJ-;"[ZU#YP9cH7S!&T,*jKH3QI3fN?Ol!33KDn!TM-=>JSWUL(s<EjtBY@M)/D4Pj94$ERAq_JKV!35]^I1,B;>Cdls=_p2kSruJu<JnCV.4B-)Bk@7QZMsH_euu7.hA.ro\rb>:6q]OB]V]%NQtR5k-R,J1cu6&aY)?>G9%3%4kU.hi>:48kP1E[.hPM51kNcAr/iHe;6Xb\4n,j-+)Q`Pt4rr*_K*H^n4kA]qI57?d^>$NrF4r;8)dYV[LA(3SJnPV@r7)^R's_IX-PEn14Pda8S$0XD*E')g9KcB]lRW8/D)U%]NbQ&.r>T#eqU'fA)3sqdQ1INB=n3*?EC[DH:nmh\$[s*VAoX-*bT>05Yd<?6Ac*8.o2+oW=Xr2tPR0ordY*R&ag7`odL/aEh.kN'XYU:V/l@a^YNRr41ao=8,V?U&0'Hau<lK(Y10l*q/FnKC:?R+7@7cP[6nptTXAuC?p3R(9RY7?6<J!\D"bI4_%Tft$#>B]LBI:)1+&`dK2@19NEedKX2!]65k^E8k*Gd<QH9ip=i@Mm9buJf%ObqZ[f3b]5=cZ\JQr-fkbU0sb#\P0ud!F(WYg='L$o=hSKE4NB.TM`gaq&_RZDTZG!bY:/Y")PBAe\4QR4N_4kEgPHLSXN&,q;E_oq`oo!Q$*;No-\IkV*.22uM0;39oDfe&jq/Zd6h4IK%SR]"2HSm,,$)'WG-6:6kN'L7$8aJM,^-=YZOnZp3<.O)/Tg$l(=jrF2T;'F%1ME0i>AiVX8SObhSPh!sCa+8W0k%1jG/`\'Z87=TMFcnVbig`_7!Sde+?ijF8IfXAc(7@uoVQ%ZIV/70\2d.sotWK&@3Jm!tfH.8K+2JttY4KkOhn#V!k=H"Efhtfc`c@'+dZA/PUHO>smF/%`+jbsV`3h_H_dp`Ml!%sa@o19ep^n4-n6NpfYQngInbT/$)`)q;*H8"PS9NWPb/XbA?32^r0UpT\u1K=+i@M+cUEN=`rAEEHlaVarDLZ%)"1>9g[QAS8uac*05k``!F=ufRGck#oL:mG\r@_ng*)i=J>CqO>-rPW^<_I6JebsHUYFNo+"%-VGj$j?AkWQLsFjp-8EF@@2Jc569;Itr5b#)XqN!/*Ei-UGj'9J_.Qi)E.c26d8(%_KVZ8/"QP$B>b6-cP-A(@1m:l^CilM_i]t*s,-uU<V58@'P]2[tA$VQ*%@@b>%<ji?YNM(8[QW"Le;0s4KTn/3m:!ffF:u'0[]<U5ciAA?hCb/?ZaH\>.S&aH>-tmd5XuV$CS@@gNun$'m#g=k,1Y4.ujP@saTeiBTNJPU7dcB-'!OP;0@f9R([G-B$4a1`1P0@jBbkrI'YNM0A'CXq1nV=`6R,mJ.cULm-H]_3@q=^4k9oWOhH2)C^TePj&hR]o?F%2Oup=a#jI.Jkc:GjCU"n1.pD+J`ND`bG#%n9LME)&m0mO2h.#P%^0*pX/X?(Y*>PbbLo5C.D?c\dKh"@(e#V^"iLF`3Jp5Q&,9dfQSf,:>e^()kk*g"j<o-@f6_]9[mBD_7(2qd:`JXY0\(3d+')tLI#<fuGXe>0`kH=AZ]@TqLM;$^o"mirCI4D4TVdN82Ye_\A=4r;?Wo*=ZMBq2Xn1@M,@5G1rG`RgN-V!l(m%W0_dA$ljIfAA<oh=Pp2m"XE$Q%M%su6r3Yrc&mgE7N3ol`(kO;'dqGPqB"++sjfRJWZ02ImfrtLa;Gio^0V#@03g&DSVGpH[IE5_dFh/#`e^L<-<@g>ZWa8G8f=M-gsS#-2)a=O&"<$s(iAfN6u1,S%tFTE"61lX"bnZbSr(R@W_[R8GS7f`IH1\JDjBr9!SSR];o4g=b1r)5rJ1,;5^/#h`*b4.f&UhJJYOU+G(p4XjXqt&WhnB>=e/T2<h)#)@#k0au7&lTZAqRB-m)YFM=R(RCH0ueoHeh_=PP[VdCI&?:V%.%.Fi3fDkk9+[8;b&?:2m_uJnE#05[[@`=6W4G-mC4.%U<jEq,]luIe04Zd@hD)bp9#QN&2t:(Bl498.cUar;I$"3ZGtsY"6MD8_^OFa?SlHG2B3c4e*$]D4=A3`-6PWZS?iL/1n%;>gj`+%`CsKIXNNAAWN<ZZ>=s:l;H'D145c1'r&WLZj&`V,q@%fr<FFgr]M#'$TcYu-04\oH$=`>X4;F\Tj1=g\!'+7o0\mY+jb4\G!O70,+GZ_pQ[)d+=7f4F[*a-[0!^;FKap&FWpHabV(rZsTb;I7pM+U906qSb><o^W5!%<(pNnD\V7UXeEL.SRqTmLm6)V+!XaodY?gOi%=%$'EN4;;T"3Qqk[6CE75Ca.p@hj\T13lD7`g)(X.N5Y.9$K!u,d!s;ci7jE!W3M[]ROpAHagh`QIk>8m^Z-&cct_ZWJZJ)K72rFWkdj:c7!IZf%'?NS2,a>n49d9V;M>->ag-U>GamSBg@$V6ldgd///<K'gREC>qohQWS=mU698lRnBk6qaKVY/<tm-cq#QQD9<^E%W":?2Yb$RM(WSnK>Qh)SaaQ$;erlr8BNE`+77^Fn/#%<Ck\fF\%sPNf7(+a"B"Pmr(UrFX,;(1D-QK6Qm@+J\?r906_@H4)cs#/^^aDFop3FG,/-JLNW=XBm?;-K%)s1g6DF7aE/A);KFEFqX?,9-[=EQ_h>m'/J,`_!"CI388()QRRZ&-7Y,!:+db[Ce_Fr'VmN79O+L</,nj'QME`A_7&\qB<,dhZ:V-!':O-M4FXPL/P@;uOXO90,XngG7;kieY[5j7YtbV<<A#b2OK&\p(*umWud="=Dm1?#Ok_=M'l@(KtYl+4mgD[qh(0H*[g[ZSLT2PPAua9V9mk<"H_$R0D]^PpK\0GmN,ADtj6d,,p*4NOfXkS7ZDg2,P[8(?K@:)WM&b(=nRh5-o$LOitIeJ1sc'O)b$q8i^Ok29=ThE]OfkV)Gt4CLXi@pfsJ]/rU7X*!an%(X,'nVShFr?ksU&"B`b10djHrXGZPNo720++8Iu2Rs6I#XeK7MeX=uM`3^<nk]9M"_US#O#Y[u^iTY:>-bqO<O$`(-JKsXY1'`L=UD<l>:`RBI[K.Kq]V-2oJsr;2Yfg;%[mqaHTe`;h]FE3DZ$0^0l6]nHPONj72%TM$E;Z7(R8Ig>TQ<u-j3:TV#qh,pNM'6d`jL09eE2UDFcd+)*,ps_6(Do4j&B'pN0ZpE(7c*5o._$dp'X%%U>PO2h[c%O0Xh6Nm^i*Kk<$UcrTj'^G@d9'9)>^oNODM%`YfXk3FkZ^V)T^#I_b\ia*!+>pXV7CGC*R>YQs)3bLRDlIAB<oN1Z-BCM&<r;.Wk1.9Uu(Wkn;qd;)MI.05Q7c6E+F;ZXU;1Wsu*!j,FE8oqY2%="\aZhiS_YEG9"pC\2MW\Q@1P6*]/Eg$&Hn7jk^$0AsrA_<gbCtZ9djP:-b<D1MGk4S/e4+Bsk:TX7>F8lL896p1~>endstream
endobj
12 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1014
>>
stream
Gatm9gJ/\R%"6H'N)Urd"j;kfQ>QMP"DTA2";XVQPX)a39;p!5#XlG@a'Npf"k"SlJS'+L4SJ=8Z"'$<T949b9W>Qhbq9iE8/6p&\BLp]8^/'2o7hOtFNr%!4QItM@huIiia/DOX?j5$_0I7M<W6@t)i.tg^g7ag#YHR"@rfMMmH"4f/!4g#m3f%/]:3?%h+Qhg*qo+LBksSFEMA?"%(7qr:XBsfrHQ,DC4j8$2Yd^lT-e>_5A?l1Z0,\Q(W2.p5QZBb=WLO'!TY#[N?6EMJ"Ea$#GEq%(>3kWqe@pL%@;onCpsle79;P`^D";V.7gN^@)Bbg4Q25i[tZWV'V7-#h>s3R]3Og--;.[Jh,^-)$[07$L.(d?pMF`+'S8Z9-][M3%$khFq8Gj[ClIHN`,HDtZc8oTILgrc?kR/"<Dc9>KaW7KBp/N$38>mVfAJIYL8ao)nD]0GQq[8b\3iT3AOB713l_Yl]`reu#;LcFD7"omX4cL:'rt])'jgN1q1TJ:2"LscfWsK/.EA+uB\#!r)i2LL<kI)D5;X6m<]/P_<+'krW_AF:rYo^qFV]#?a.a#oC4k,]R+)Z;lC]&;M']NRb;iZrj=]1QLO"!&[]RkRY=FS<eZ)i18qeO<N/)JF53f!CMK"+f5YWh3flW5YY.ZCALp+q3\'icP+s/;BHSFWkkF^sCUc*d*Ec&jc_Bo.D=V$p^OeuVG&"QY`]JEYWH<MYI#Y:/tgBP%#hCiC@!2QAr\-6h)k9Ji"l)j"uQuTgInqgWfp\[9'QBBne8*@`A`W2N%=6nM25+%TJa=-HXLju,,K?H'17N8NH1:=r6eY7^&eXt\T`SsZmSjWc.giFY&*Z:Cs=G7"*=Pdp\QL".eLUk7WrJ'M@a4;!,TZ7p?d>U+r]mu[4Y`UEj/K\=U3<fmq0;CnCgR%iL>Lo^qbcZ=,:5-g4[nO0(Kg(5E='`bMJW2bf0H<2q6\]_hTMiiUprZ'VR.*2Qdki-oLL'o@V=h9GY,\Ml)dTf<g&~>endstream
endobj
xref
0 13
0000000000 65535 f
0000000073 00000 n
0000000114 00000 n
0000000221 00000 n
0000001154 00000 n
0000001358 00000 n
0000001562 00000 n
0000001766 00000 n
0000001834 00000 n
0000002117 00000 n
0000002188 00000 n
0000005501 00000 n
0000009324 00000 n
trailer
<<
/ID
[<f55fc5a4a8907d6e2e16a196a910b596><f55fc5a4a8907d6e2e16a196a910b596>]
% ReportLab generated PDF document -- digest (http://www.reportlab.com)
/Info 8 0 R
/Root 7 0 R
/Size 13
>>
startxref
10430
%%EOF

View File

@ -0,0 +1,108 @@
%PDF-1.4
%“Œ‹ž ReportLab Generated PDF document http://www.reportlab.com
1 0 obj
<<
/F1 2 0 R /F2 3 0 R
>>
endobj
2 0 obj
<<
/BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font
>>
endobj
3 0 obj
<<
/BaseFont /STSong-Light /DescendantFonts [ <<
/BaseFont /STSong-Light /CIDSystemInfo <<
/Ordering (GB1) /Registry (Adobe) /Supplement 0
>> /DW 1000 /FontDescriptor <<
/Ascent 752 /CapHeight 737 /Descent -271 /Flags 6 /FontBBox [ -25 -254 1000 880 ] /FontName /STSongStd-Light
/ItalicAngle 0 /Leading 148 /MaxWidth 1000 /MissingWidth 500 /StemH 91 /StemV 58
/Type /FontDescriptor /XHeight 553
>> /Subtype /CIDFontType0 /Type /Font
/W [ 1 [ 207 270 342 467 462 797 710 239 374 ] 10 [ 374 423 605 238 375 238 334 462 ] 18 26 462 27 28 238
29 31 605 32 [ 344 748 684 560 695 739 563 511 729 793
318 312 666 526 896 758 772 544 772 628
465 607 753 711 972 647 620 607 374 333
374 606 500 239 417 503 427 529 415 264
444 518 241 230 495 228 793 527 524 ] 81 [ 524 504 338 336 277 517 450 652 466 452
407 370 258 370 605 ] ]
>> ] /Encoding /UniGB-UCS2-H /Name /F2 /Subtype /Type0 /Type /Font
>>
endobj
4 0 obj
<<
/Contents 9 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 8 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
5 0 obj
<<
/Contents 10 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 8 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
6 0 obj
<<
/PageMode /UseNone /Pages 8 0 R /Type /Catalog
>>
endobj
7 0 obj
<<
/Author (\(anonymous\)) /CreationDate (D:20251212051549+08'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20251212051549+08'00') /Producer (ReportLab PDF Library - www.reportlab.com)
/Subject (\(unspecified\)) /Title (\(anonymous\)) /Trapped /False
>>
endobj
8 0 obj
<<
/Count 2 /Kids [ 4 0 R 5 0 R ] /Type /Pages
>>
endobj
9 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 2981
>>
stream
Gatm=CKhIo')q=&R,'n4\e+_pM.`Hol`RBc8;mqXEtU*[S$9[85ns7a>P30cA0t_-kE/8OR$kZf]iF`+<@\_KIjE%9_^,&gQRk:bM,[&b4-?CKP2;,X8akNX4W.n$B#DcWCF.i\LA!s^3r7WnK&4X\o&i5!pLm?**4&0t+4;#V;23CnMGK>Z2Pb0[K\kI_YO`RfB@?ZN)=pq,Pff4kR9$2S$/p'kNTblh0^7sP]gp1RFXn*<6[u6P?`QZF3J`1`"=8p3Un:5qharMiY"utE&hDo[>,dZKjfe8$\$.tC*]ssfLP1H+i\u6"`G\k`aFc&#Po^;9We]1Ni**#:>,kS\J8:$O![45"n95KGRj68e:;\PV4O1^`PVg44d]p:iS!d+DJ!kKFMCb]]N^f@LiOXX'fM"<=QAdRFb`I:OG=(r,M&)]>BZ\&gpR1_m-(CecR^^,9a-lL54]>DZc'p?Wm$&#TBf>?0eb^kJXo#cOW`c5om1m0r)S=M!loiB$3Nb:@l$PiHmHT8P\sU:,ifuAQK$n>3IF@%NfdU0a8<FBQ2KN9Lch$Nt)p&]^S2JN*I4KYhMm>/&.=>9X0Cahfd6j)SmUSXOeAp2:IK+EUjYRX:O,mC+&N\scq4B5*9onNhEXiOs=Ji2Wp:FUQgX6OJNNP.D[B3oT?(3gunW788m?.8Y&P=glO>FsrAA^9AXn]mPhf#_MOl>])S_YG\Hr%<V$VbnZmrnp/2Aq=\6&VLdScP+a&0$+@ko=NMYe@t>IcB<hq_;=)rjgd\20pLrN0)K[;l#>-q,ar6+41J8S3fdn0ZaeXhe`j:F,bJ6[V2Al,keIL7OZlbB1^hba-^MnP4pDD$>5UmV3=Sg5BP_f86_UaFC:T&[W:Qgjjok'N`6\(cl$#PG@Stdn_7Y'Mt!-LO>Qc`L!D>Rg-&*^[lXhjWu(6M?STf+jLKjG(`:su"CNZbKP&EtZe[_@r;B,doRf/5^dj_?WufLgI0Q9Z5e8a%/*@GW_;PLM_<hd,#[sH;V/4H2.FU$fdP>Cg=dBP*![?`Ia@j:I1e>Ud4+l.-Gcb7[Z].0t0,R1^5W&WS3##]/'"kEd*5i<?IXJ\MQ4"^RNNa_4NF$V0>N@5aN,l^36]'6#d`gp&'?G7cJ,pdSh*0kUG<d!Z8s*H.09`:"Qh"^KV1Q*o>(/FX>j#EUQ!)EOjA%rUHmT%2_@<ksV#!mF3405tCs>>B)Q<DN-8oVU2:"fJ'lBcHU^7+nP!g(gR]an$&]$.uGU]["Gi`u`Xk9:b^(Pq5e%DcO@Y-1XiHq*JF8(C-.sq?-qMm:>@)^abFDN7t8n\mp=G7l95NV\.A)ILMf&naOT8WBQ@#O@O(8uirqJ@;pHiqc(R-gNN`U^7Z#NO>HLDAShi^(U*Yd5?(/-Elm%_FrmZ.^n?fq8e&4dRZt9Xst!6kCOWZ+p5;)iaIV%)ND(d)OT`,2H/9KJ0D]FomAX,<PW#rr^l'jB4,+4]d]b9RJMG9RiTqTMT4[8X'K`p(j%r28nl3C>Whemo@&Yc4gr+:rSN)"(`[Q12FptNT?W\X[4'<HDgd3*DX^b#(;:GAe<Sh)<=5(\>GW$K_:)Cs1AdX>quqD<#i7&\.PBeAgtB+brB\G"pj"HAK5cTQEN%m6UglC)iK@^ZZ(N;MZP>.=m5UeK.hDP"_!9t\<!lXT2qjW/6ts$+]fKXMX84=J)5[,US.k%hq=rgG.K?S0HDkpVi1m%.!3%f4oi(aS"V;_&k\;;Od!qu4OBdafWW_+UUVSt*H#`*RN,W7$raMki-$6P`[QMN5$'n$#"P8a[1'32-KhR!*8q8J]\kWTaY.)l<>kUe-6ZTRh#M4S4U\D'WCCHkSj\T?)g6W:oMl2>E>>)rA^c/Mf8*J$"HB!AVBO*d3o]E83PhCOS1L>Efu(4Z-P:]?r<U4"=cr5SYIPk$CS9I#5SS\'(#`iu5976IP"A3h%.%W"S%[qs>'GH`WWO9S)\,!KJu,A^(a>bs:koc8a.5`fYW?u+'Q1IoO9.-P82TC$FrRA["Bcuo-JiAH$"X)aFU@Tik7BC.+EoER8"qZ(0e97NoqoUX?Y3-d=%p+Ken$u&HEl1pX=46J10A8mXiO5R%;*s]Zt9nu-3gV!?f\i,\J^=\c9^nZR^.jlYtE;WmO8]^g:r?3@h=p!O.TOsD2\2a1.8%lJR=$X<7QGD2C8bD-*G[*Z-m*3&@Udg0L(<Y2pq(jBcEMb/9ktW=JBNq_?<;PE;FR_\O's=e&A&dV&J@6aS2OEYC>m#2CQp;`R2BF`#C1Pk(Q\D8[U!J>89=@HZfgGC4$R5(5=Xa;=*j;.p,Q0*Cj?"ejeABqLP938\)<^KZKG5#rlr/#oCjF$H.r3\dg%]'@qi&->%o`kCNT8<l3s(d/WIu]gJs%]Dl<.pQ4BtXabK!4pOsgWC#^OY6GsKd>I6PckINLWju6,U$hgkDAl<k#nUA.pV/2`B[3[1AVHLu_0]8=K-#(lD8S);;ocSgd[SdP%!SEEL.d'DcU8ks5t2"rKO!MW<6WFAZ=OtY2s]oZAQ'?Xm]%1j+hKt/DY;?h?bW(C7W?)I!l;$UaI6YTF*@'keC69gU%SFQOg:WN%t6"c&_u6njs:/N)qb_G+<7oi>mp]Fg58uS+;nQaqe9\2Fbt*`W,F=(f.IcTT)drFlf'd%^H&k.h%dC-<<[@)0mu1r]@0n8!QkQVh^T'*e@0Ba`#D&UU@dT/2d[-73Zf%FBBM%W>e-/GVc)AQmRk!c<^7gHGaQi%IfYq`H^).WafYogc?\Y,VHV>8hb>3Z4<cl76'po\)_]e*2OSbr2^UjSGEKZdWg4U_4g?E:L&gQK?EJ_kXqUT7[5i3bnAB?n8$8jD8ute#!qDD35$t&Jg<+2G5(j;+f1u'SR`X%/A<NJB]^bqo8C4A_+nOt4-um03El<-nQ*@'&37k1FBl@bc?Mq"V?/N$4]\Ni6%Hk1+6c+@8"mosuc_)D+EpmA.UB,]~>endstream
endobj
10 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 2599
>>
stream
Gau`UCJtm<'`II'R,(qI71&p_-L+dHDRhr'&e^p03@6."TV.qZ@XS+I^$#+]]TSE110%Po0U_1GI@bf^7RhuY,[YcP7a^$X[.99:Ul#A?8=Gj$#*5O+K1kYda`O=]D->PPgQBsfV4E])O']:pjF9D\?(sbu[]XVti%6O\U:+DB.oni?4[&,7FVAV&U9o62-m947jEdPk4JP]LP6e.J<2-0_Zut7=Xjq#-<'5EpOTrdVhO@6N;gUG9V;*T&F0D3LAUgE"C-0h[dO_5@n*-*/FDU`kS'gOi97<B[LXgYT/7s03qGTo==%8%Pl6K4]M'[hl;u09f#\C`u9J>FNk>cng27lE]H0kSud6M[R6:nYNC=2pc7lTuZ]s<j^CXM'71g$2$$*X1$mIr^&Q!IQnKO%N5fg]/6#q7HN'-8F+gq#8R8,)OW\'q$JhDVnF%UnKedR^^9kN3dkV<ZJb7JbJLW6Eu$.Tj:rG&b#8KudC`So26;!KQ>=<d;[se"2sQ_+`^V/P?VHd&O@;gf_CDe3e8!r/$0m4tG(!7HI9hj)%PD27A4k8rs4aX#"&6@ISX40o$!loa:;NiTT&647l!kVo;AF!(HFSnR%nT2@)K1cb6K@bs[fBG?At^BQ#?d3Mb#ZGsrdl(V!]="tTk"q8BP+R0)qr+L8nK&Il*[?Us`^ViLF.c=NpDE/\lL,6T2t64CY'6QSkf(324AqO+5%=$Es<G1Ba!Zb-NgfM]W;i2+s!&cn`)P2E.N/U.C2r\9tLleuN67'"E-,.Vl=/CN/^.YpA5e"`O\5biGE$*ai1R6)NtD.`qVM54)$ZjDX!jb\n!\10QB9Iet`N*6&.!)1AX=.`AQ5X>G2_.0:G(2e(SOcIr!nm_E)Vcr-p>;*`sbm+(G8SnPP-)f73RXhrj4X>&3QF-GXoQ8=6Gr#5DEsiS?ChI,4CnR+L/KH?AYEt3S!C+q([MpW<Y`n'-O9@Npi_bm*qM0mO&kj!>pTRdO%LgPdj,r(]#mmi%!@FQUK6rrdR2RS.Quef&(nSpjgI3;!kg+t/P.`ru)U@paTS1aV$]hK=,fX3$4RCo-@+_CS!G`57<cG(R[R5(kg'eHd]YV-2KRW_,aREuSK@%t:ngAr9mLp!7876]@!":E&<b@HPZ/a!-dQ5d./K%Y.qZe55E&4&)#[h.2?]`f;mf>]6ES-VS6Da=N*/L:*>Ht/%iJV-bj5@rg,?Wo`WuMB6F838SmfaRn1K1q6Ri:)o:1Bo#EEfhd_q)gO)t8Kae[e'!<au2-3r+00'Y/p\W[HOT*s:i[\$n'Ip5ug/Yo+]o#5q+mUaU;9NWKSgBaOu,2\kJ:HTflkQlJEK<t^GS_-IAB5fc88A?e`1MYYN:I@em%mn!mb'p<:%k>+=Q[KSVA`G_^g10;=2l`AgVmc<e/P#HB*c1&GM,3NGD;68QW_M(fLZ,`!))jJ6Ff0VeG:;8paoQ-Gm'L';rI-t@5XN[fFS`M'qH$q^s.r%Oak"j2:8ha8N*g^o!-<49<o2W4J-Z`%99pqQ3aX2#(+T&h=YDqN2&k,PG3j%GtpgaLZpqk-rHIf^CSJnb)<a"HdUhsA/<O//)pt9*f*&N=08=SX;6KO8@dC6Rf7.N0qTZW/*V(P$J5j$)L]/X.3!&T\,;Aq6e8'5NUO\`?MAWn48iOok6llBstI&-j<Tp'Q=S1`r[*!.<3MePWq1T8)13CE(@"sS&C.?9LB0h3'n.R)_s69YccMOhe3BGW1%,S!IS#)j'M*7e_iH&7pNl0D8!K6ETfed<iJ@?2$9B/nVV6>/*E2N:%3>M:!$)hl;RCqudE,/om-OXr4?W8X.6#V8=8rVbIeCL`;T$MuWlE/+fd3#\I@;O1PL4qTDSq/1SoI_5.V!:f+hd!EtF'V#K.IKNl3`%OXtCqomT/k)c>VnifN,ik[.1rK>P;a=llYK1!5?C0Q/gbAtNp$!<a&2[K;Qj!I':Tr@]`k2n)YmIdQ0.]R0Fqh8tMm@"6[.eJ@S`b5mAsX9/_1a-5nk@\_]t8'fX71,$fG]b[$3\L*LRgr#)VE!>7HR<1_Y9_\j-]9uqU[-+1UDo(;Dh*cl1DLVL`9q2j9.8ZI<6Y'HIb>u]eJZ>YP.I]:1na^c?/3\eV6-^P9k=r:MdX&4H>k`^K_UDeg=nsoNW0&WD_H&Xir7*$n(S&j`!1(1^IX8(Hs-<KUfZ%-0eiU%Fnc%*p,sjpd_,\&9FoTh;+Q-k!XpF6:6u)6\EIJhVU-9aY@.Vc4c6\b(M*U`E[65[,]oV7e$N\ZbUG*,7Y\lWa"=f\lo?+5'$rO9Weff/5Hk3leQOF/\aKeU&>A]EArMETN'k*bdZaTSd1;pfYoBM1iliHE>*[of^uJR\N#5!kI*\rflp:No;po-0-$%--Om/M(5AOS^-7qS:=]/I*mSG$q!N[b`cH"trP/bSqgJn)?je''1b!P2)jioB$s)se?Hl?KU.jFUW4Z7$Nb4I9<qo95n%`n#-#NJIq7W#h(TT/i(P\W12kJ.-,QFT*;PBH4RG.8^VKDam>t._q'tXt&7\sB(.5ptS2gcpld!UkVC]Clsc=q%8fnf5?$t&=BqdkQ/.pXmu]GOrN(Cc,T[/~>endstream
endobj
xref
0 11
0000000000 65535 f
0000000073 00000 n
0000000114 00000 n
0000000221 00000 n
0000001154 00000 n
0000001357 00000 n
0000001561 00000 n
0000001629 00000 n
0000001912 00000 n
0000001977 00000 n
0000005049 00000 n
trailer
<<
/ID
[<8959b99a91133a70485291ae748e5f10><8959b99a91133a70485291ae748e5f10>]
% ReportLab generated PDF document -- digest (http://www.reportlab.com)
/Info 7 0 R
/Root 6 0 R
/Size 11
>>
startxref
7740
%%EOF

View File

@ -0,0 +1,127 @@
%PDF-1.4
%“Œ‹ž ReportLab Generated PDF document http://www.reportlab.com
1 0 obj
<<
/F1 2 0 R /F2 3 0 R
>>
endobj
2 0 obj
<<
/BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font
>>
endobj
3 0 obj
<<
/BaseFont /STSong-Light /DescendantFonts [ <<
/BaseFont /STSong-Light /CIDSystemInfo <<
/Ordering (GB1) /Registry (Adobe) /Supplement 0
>> /DW 1000 /FontDescriptor <<
/Ascent 752 /CapHeight 737 /Descent -271 /Flags 6 /FontBBox [ -25 -254 1000 880 ] /FontName /STSongStd-Light
/ItalicAngle 0 /Leading 148 /MaxWidth 1000 /MissingWidth 500 /StemH 91 /StemV 58
/Type /FontDescriptor /XHeight 553
>> /Subtype /CIDFontType0 /Type /Font
/W [ 1 [ 207 270 342 467 462 797 710 239 374 ] 10 [ 374 423 605 238 375 238 334 462 ] 18 26 462 27 28 238
29 31 605 32 [ 344 748 684 560 695 739 563 511 729 793
318 312 666 526 896 758 772 544 772 628
465 607 753 711 972 647 620 607 374 333
374 606 500 239 417 503 427 529 415 264
444 518 241 230 495 228 793 527 524 ] 81 [ 524 504 338 336 277 517 450 652 466 452
407 370 258 370 605 ] ]
>> ] /Encoding /UniGB-UCS2-H /Name /F2 /Subtype /Type0 /Type /Font
>>
endobj
4 0 obj
<<
/Contents 10 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 9 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
5 0 obj
<<
/Contents 11 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 9 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
6 0 obj
<<
/Contents 12 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 9 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
7 0 obj
<<
/PageMode /UseNone /Pages 9 0 R /Type /Catalog
>>
endobj
8 0 obj
<<
/Author (\(anonymous\)) /CreationDate (D:20251212051549+08'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20251212051549+08'00') /Producer (ReportLab PDF Library - www.reportlab.com)
/Subject (\(unspecified\)) /Title (\(anonymous\)) /Trapped /False
>>
endobj
9 0 obj
<<
/Count 3 /Kids [ 4 0 R 5 0 R 6 0 R ] /Type /Pages
>>
endobj
10 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 2655
>>
stream
Gau0DD,V*>&H9tY=KW!".]i5*M.]t8HD$dk9gSt6p5"C2,7t)*'F+6>?['iab\kKgY/CAgA7qd;qs!OHH^7/1IQ3>aVc!*!)a.Nh&Jn==.,l^W;>3eld[`Ilj4R%)O#:jC7V"*3V.CY?_0!m=4QXuOkNCkcONIGUb96Tpc4H+7G_QcSK&AEH]T*B2#<-62S#K6L-tP_g;lTPeW&ogH9-C:B%Ff43cSSXuM!N'BWm_aijqiP".WW:fb-P@I$m2B/Z`t4=TR1[%0kH;X*!?`e#DGNu_`.T;bqf;@m9%AZqe(Vd!J/\XeHhOsMG6Gp.M4@hq$#tV/$s%ZYu$TV)oXcDI01&L9Q%r43gr2,I5+$cV*^'S;>IR3P4VUjoN!H$9a,0J@"<BiNJ>!o\!SUEd0^Jrhat4uY'.^:H*2;KlXE]K&Cf=P.?gRlPA/n-]a2>47V0J=g-+EaBkD8!!A"u&TY2APK6YXKYi%6l0pR4<FmBk![pPUb$9X\qYRM]4CrYpE?COD8[?B(_6[n2+DK2S[1\gQ'!33WoRk"JFNA!qTK>QhDYQ:A1[LXEGK>cMtHs$h34M'm\_fGAB0GRX)/6?5n'ur0CB)Ctld93cDYh%9Q!#0ug;CU9O#W*L"jSC:A4o,e%.+k5%(-gpE3gG4Bp^3T04B8aQ^^eOKl[UhT48Ytu$4\X-2LJIq+,OtC]_2_Rc"SXbl_KTU^j3AYH"$4E/^6F:$/HCo!`0LlQ%HJ6$ZtH9OtKDUD&?:M`<hn]qg^NXL'N#0i%mfh%Nce.Vo.)(k*.sj@)"i]SIkj<=:QJ!fDSjPS:L;!<6$Z((Y](&4tHRil(opj_EmEji+KTThuCW'/V/[t&+o&K(AJ$.V6KF)"?$Gf-2E]DF:PN/$3Bu;MRUAj8-^\K6?W<F+/A-i'saHb[lrBp#l4_)Zj#07jFY`&>E%I^Z8i^bc8piup.>S(R8ZdT#T7%TW&\FgM`6Aso))PS4&^)Q3XVL]HZ08L^P:>Z%N^rnjC[C.(F7c_n;UXB$Bfi6qP43!C(`)"7cA!jpBen/Lig_b@cFrbj;KpY5mCa9n/QA%5L\\s+0\Rmre<?R<'cQ8QAJmuJ@W3WZ)oj:%"[pK1NUq/&:V#<rkQZn<BB:K-j%n`RV/tYCHYdm2\GleH@F3C5T*"m(`n&A?Z3Bf+V_t.WW6.ck8r]CS:;M3Bl\HX15N$/:r?IHhESrWD<s+^R04-DA+FIe3rNq7<fKRblFN.4Q-oF*rDsPL(i^'QFEg+.T0Zu^&$34).SC]rgep,)iOc^@9IgoBlb_*(N1u5Jm5Kmh,2>[UM1U9t7_bLa2OBX#1gT@I6ZNOW>Y&A"_o,bu]IDnK:,pPP"V7)3qR;:rp*$s`Z.@%]O(T0S']AF%P2&6%)6.%r*ml_XXsjg<G.ibu2PWg[N7Er=Kt=rYUaY<b1s]2&7?^`G<)Lh5c:a+1gICC3;(]if2J*d*0Z:kk75Z*[a5"(27Df!KG#tti.p2OH:9BXa;Vkg3,(3dLqT+lKM2/pP0_%Kn_eIR$0g'%GGYA8]Ws85*X#MD>l3:ru4Vb94$K_Ik)X^CQKX>NN)pA'm$kD)?OZX,ZosBu0c-/J-*e[/)&6N[%F>r8g_Vs]upH]I>R+B_-L:SUT$rW`P,,2m8=Ya&VH'UGW-&OX\7C#NO9*^S4O$9;norMjO$,jR.bV%PHLS//mfdTDm2pQK[-m^X_DD/D)"oa1$-Z/%C;jB\O]%g[MF)23mS[F*WRj>feWc!pkaZ@PYhLoJfaIQ@6-7"b'K3l!b/;345CW\!H793"b]df,B/<RJG);4t?]'mmG/#6#s**uo%TMtFiI_gGb'3"E4df8KR.(P.n[A$QE!G*K_E8Sg))c<>j..84mZ$0so>tka1XhMXS^\S*uH24;p_RdO\7_e7`BrZlFI$^98,*W[K7G!:>?lS:8W6Q><ke;uJ"A@kpFD+oU46Xg[Ss!&H>Xs\9F?WK*7RZSkUBANA^>j7XBBDh>kd"006FV.h\`\oF'<3aKZ2V`bH-p;7Z]M+:RG"smq\Y@PT<WCn_H)-<GLapBh:ciJk]u$q>#$s-oaep)M!Gs:>f1j54d8'of+YgZp+kK.4aKj)WC$6l&k(UP]PM<gLkVqK^`Ts"j\+$=2].DoZ3/7+G4"bW"d,*@GhFAX(rL^].<g90]T!mpHhVK<5.XY+kd-a+ddA)3.TBB/8<JmuXrYAC%U+&@Z)GihE&TK-Z<c+In%B3T`4Me:2f($V^%s#bY=lXg-Sp*Ql#GrM*qs"dFs\J,de'Z9%-]oj;KHD^d<_[ch?:7:=7dYM'O$Y]6AVo*4C4<D.`qn503+1:%lH_9Xclh#qFB+=b&"(3m;_oXoZf4IprR/D%A$2jN^CkJ?I#8+nr\V*mnME2:K(-frbn6_r2,?sH;Z-Yq?k`RMA7lbnG-E65?U0Hh,&D1p8Q8tF4sVZHs4,0)[snB^Q$N^lgJ&)Db00sHi)4&S@J1B<cG$._T2(E[L_3-*4_cYKj!U,>T[i'JsV[O/CS:D$uLfMb?H2EEjura_.aMmOA#sh[lc/c8/WAqW.$O[=8$"o]"Zt!#iDUlZ0<m:Ftb#pR?jPdcZOp!j5#I@X.(hB^B_?FBV=d@b>EAaRc?MX:K?hUq`%7;q`8tqT#u3'gj^TD>Hn~>endstream
endobj
11 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 2896
>>
stream
Gau0ECK&tY(B'h3U!tX"aVHf5;ThhD[SiO9,g6J-E#)Q_An,ZK0M*St9Gf2(Dr5n;9.e8ON&%V+,-]S^^5m?\^"o!*THB$VnV8633=N?FQ@W#OE#)!n1r8Zun7qa^o-9Z^1p(@<gU8+j2JhYL8:$=<2c\f8I5uR@P=RpAC^7ig1oUi9DGHdCl/Ruf=9ocp+_#$D4P%Ys@jO"g't=O`2#(PX`sob!p4&!cQEefH(M-CSZ.@ma_:MdZ2HEGuUlq>uH=1D<XaZtu,1`IOmds9ZoZ22b+m&*7LY`>_P%V;`*rWF_GG_X&@"RK5ka*O3[A=UP.B+6!31eKdGl7K"3V8r4UDq7OXeSu+rA5@_#K+<YKJ[afQ[VAY[&@6*'AD699.Pe&Q=farTpeb:E]^ObU5qFofoRNlUIuLH^!?a6s$@;R+WIE#Yu#U;K0u*NOF[uS=-hX8-dql5N\2c%_A%_+!V?eYViDAcqXd^@^ecp6+^0i?nc:fB"4f^oXF\`fZefd7R*6bkJU>gZghp%Q."l+h3D.%8#kXY(Y+bq[6AFNu2>e&lNk+mq<(<QN&]B],"ig17cg`MMY#0l!7O>/:j?pXQ?mbAWROoT!:\34f[`iLd[`8_WX]EgV6B$EoqLtg5OKWiT"'^YiWgp>Y]h0[aCd+]nC42Yen[t#tG:mKc*gY8[+CAo_fk53>VVPSjn4pku8*R&VDa]o=NC"]4Ns>5,Hr&ghbX<=TrAn\!:sKarXJ'ut#cG%bdA:AL#@TUi&e@6PgM/U"Q=2)uD.NQpq\"A@m&H<>FH>CU!GfruIh;0T<QfKdmmm@l(9`mN]i`cl4d^Le6&AicU`uS$aO,%T()0@%jZmFY&BAp<5d8el!hLpEKQ<:gWn8#',:Z375P)pL_*udh,Sd^HKn@GU2QHOZUj7<P\:0R=kZYrUP('&`TL-)c\dCuEs"0CifH[;n`%79i51!<0`$#DK*od0*X=`O+MRQ#3A/:7ug1j^?*M8>Ze&lE.&O?D!Z;09alh4-',WOD/^s";Ye`3"IF[4+_Q>9Lm>4kKF/*h$8U.e&E"-,7t8`WOn7b0gjlorguE'`;Qp7uA:X&Pq^Kou$183:@X6IR:S0LVBYB_#/W.oN*>-'8s?CSapls.%WKVZ/1ANA>"i.0,MD&4rb3UNO9bhsFJ^[[OY,g=:Wiis4@<cG,L`i<bnlA]?)g:9tC\UCN!NEK[&nNcKoL<QE6cD4>1K-sdhk5tN0j/(%7g9loNP<Y>hK6$KP/E7LmU,O9$A'W/HM&mq-28Q8f2o.DG>`jcX(UZjuQrlPQqYm,tP:>[>c!PQV4lh#&f'!#I\Z55`6rX/NTC#0K1nulY26\/6?D,KYi7<p&XI@:j0Zml)5%2&C,isY9qMY<6"6rm-HBUKG+3n*Y#M9rOQBVKCS,jg'BEj@iM&u_lmA?DrTC=<Z^K''1'^M-8(i1B0$1b,3&I)+#$6f498Net0:hg:@&@?6-A";i/SO84E.F4u)`HKqP%<@%cAU%t%6YHI*f4`brD7G9I@7AoMZ(IK/V+E:\,Ro3`P7F$kSZ6Pr7]]'<V__)%3kk-XI/3^N=5@'Y;i0;;AN)WEF)I;dK<\i`?OY9k<*1#,L/GtB('Mbim)9>70A=Sc^Cr"46&kok^i`U5jSD5P]-.,4bpYnlc9#M&lOCN_'hMFH\cVING=FMIjgXlTlH<<CCE[V'tQOW5SA*;X?:BLM<)Ke'BAQ+@R=*%P7I_\*,%5U<9bY38uE23G;GFPX;ZApg8.T\s(rWOSm&pYBo,',U+!uQZ]NgF*:D'M']DJS!Hjth]URb@pFV9nUA5V0L8r_HZmL)01ZkDj9XM6VjVOh3fpN_<#`?me91OJ[[h1P+R6on_n**Dp`jI?0k$SS[EmYCXA,R$MEQ"5q=n@SNimMrcJ89)7_kEDl;Tr1e)g,=5MbrRD$'[J<POWnpinXjcJ5hZa`c$iC$&G(<PsEBGQqUO`SSCUbg1PGX>>r=mBb\0jLZ2fXpI3uQ:lkS^:4BqnmX1uuid'>>pUGOMqh\P@"=i7)bCeq$/.DG;=EiX.Ofl).."Vb3SYQKjJbDVrgWk*[/T2oM\;;Y2FsU.:I8gh%6oQJuY>R-%.X*F,o0Nn^DBYei^W44uIr-7`A9\%<&E<#n.pWhTHa2/CIg,/rT#q.013*UDW:'Q"f6[Y@"55K5=@'&?5<`dTf"-2ibnEDB;gX!tp0[dolIiJ.mTC`9k,Xmjs\9^/$M`'=\lUYH`'Q]l6bs*hh!bf($ibndE$]N2uZ=g'8h9"17"@(!"sGCI=0Yakgr[P-LJ,M!L1QS_*j(Pg$J4l)R&-Q[Ci/u)S[eDb^V^^CRskG<jo(%,lnXA47p<cmUlJqt8*^d3muU3FU]WW*N#'HX;O?^lK$:3uiLj$O[c1V<Q"<<(3%hQ\%O$>g<?q%3<f?,T2ACQ;aeY=cq!8/&N9nk<j(BBcm`GCRjA7a/pP1g_hK:F\qBUIl!cme0GSf3nKr3"_kIr^aW;"dcuPrdZ&_E&a?Z$AD;"/15g65&q*,osSD=rRh)C;7^DaIiY!]VCHQ@SV"YnbMIHMg<tkUNM>]*0km^2n.;F$8s&r(3Ua1S_XNGkN@NiIoK#.%fmTKe!SnpmWp*Aa?0Y'[a1^s,h(sdu2*'"GX??,N5hODDF+UffS;Aq?QdXPYS%2WO>Nejq0@OcN+pioPo]V!1Z7%`G-ikjfauM,*k$>U/=*5#E8Y2LEaUoAS\Lu9]]7[;KCSg7/WMFt?!_\*E\(`a)-jh?j5ig0mk=9J.RoJa*!$@^n*PG%f+eON1,qU4Xnct\0!-.6"(9%;X!OkW&kMPB6FUgS($keq`K78k7o[J?Gdb0YL"O:%jUMP'2i1Y>tgj?Q[H0uD)>5[ueJR(#mGk=5#%P[n~>endstream
endobj
12 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 2787
>>
stream
Gau0EBiEbW&H0nXclO`0$I%:gZT$P^A7HS3:-o:&-3dlkF"H:+f7a(qmHtjO,\)BR.[?76<mOG]n+AF)JAFHFceY?==R-3mJ+8&ITYDRfePJR3Aaj>^iH0W48JO*>Djk8L7U[NP/:r!PnQZ)H]til!K82doB$_)]EZ#&jHjUmA*%et"h!4tg++XnGi.c?0:kRHINtTI"_FF\M*$7HjKMJ=Bn5EXu-;qtA7&Y&@?A9O7-Mc\prupSj6$qSuQ)/2FTWY^p#VQ09M89+_2*tqF1p%iU)[[Z/SV""QC=:3Fr$$00d?`k@30?<C-&aYXXRWRT9k>bEds&po]8\S.WM;7fekirNQLjfY+uS\:5!0ET]PpojL]&$fh_L"-=JOiOJQF1Z`kR?9"j/s(rS0`$@kI!JE/?IuHCY>DE@"a0`UHjsZSjk<%;U[j"F>sS?CQ2n=X$s-]@2"khP'M4L'\Nh&)TQ$m'(nE]c>Us'ti!f-b,\Zn0q]q@$*^^ZDc"Dc\G>]N<TVZXsO;9d,S:k91dTq?DRf@'DPZTT>-"[]_hXC#/n9cT'9S.QVoU)I^DUa1JWVNfpaNlE"Hj.O\apoSL?>\Jp";VL[.;9'qI;?gL$^3\)=)S@:O_nga93=pHJimapG_7*AM/r?&Zm>2'<lrL,;4ro$ZaC$TsN;6aBp8ejI?1F,AR7+S3V1eE3D8FnD`R_6QNuQJ_6&$m0u["P[;Ns$6)Q!nJb=<<4e8L0IUCf8=GCABgcTQ?VfWUPFnQg^ZH`7%@F75ZY`25eQh1AHU#cG2l=ZV(fdll*37dOEnDR<l%'a*jm_FN1RroP_q8AQtprIXU/PIm]BloC"_,f^&c)uU,oF2LhM/N@J5fahiikH$H<^DAq2V,io)BnBJB[!;FCKgQpIo!7mkW)SRhG34-!m/N<I1*!plca-:*(\T6.%:VQ5(-a%e/D@<bIHJO;drfYqsJe)u!'+bRmuhUrk;0H.`5-4.b-H8co5iU?Lg08gaG.@QO_eP5-/*_p%8>r=rfP8/bu%'u4H(.,uqg[M&P=*<%SWhXqnAqQ+?//d3ZZ@JWa"4T[5)Eq=oghko7T;dDdPB\1l"tu/M2YiB]!C;J6I(QcakNjhP2:nm3XDbcG5=*=meDau2$Rl71FR\0dJeEE[oO751;.bqJ^oc#MK$5-`q3%[>i&M6j+`Xd"4E7o-Sc[p%._9p%+KHs(n`U^P1Lie#QZ_*X@$u/(n6TDu],eRjg;7ZfD*^[Wo>dmA_pg\e%]=4.m8>lg4ImOeB6I$@*\H!p/B7G9\sSlD4)MI^<0V^&$nG8?G$=,7K*5%G43>1O")2uLmJA,#rt8LoegCT;cEk,_<D?ahPC%MP`<8jO0mmIO*SInNe\ufa8@VhnE6.&Fii0lC:kW,.jI87qZmC`*`sDcd'81]KHkqa.doD8@e_gJ4:RCR=j3[I!Fr>7!o(EDVJ",p0-`da4Guj!mCOcJ,RF@JoS*Ei5XC!&OQ'`[b_\NFq>kX;uX%76<?8,o=_8E5>T,`=3K<mopIb("D]"o.E>+>9d,unR/&:DU)ZmDiKmqeVp=o09J!e+t1d(e=]21Xgf4J[s9&T:4BA0iOd$GF7,*Ee(8=jc&6R%E'^+0s)9<6*`OL_a?.Fsfjr(atg^'31*sMX0X-!uX=!?eb/37-E^$d1[^nKo3[36e9<_12PN<Z=ZDIS'@F4QRhf0JdO*qc1rlFif3qnLcDZGPbl[N;N=R_?i[VcHIrh\[A]1cK^'[3#2$s2AlSfI[HXMGHDOl)(1!J"`cTp:4$YZdNb50*hV!l4Pum?A8kW<H@PlQC9!#%7XeRLo0cr6CMnaZ=;Xj+!mnb%RJjR>*II&YQ(7B%,R-,0QQqQ9)@SQh(7N2o#Y`^)+$SV!L#i^7(FCpi+f<uKnQWm/CVN/Z=fockAjXZ(cfk#Ym6@&E%DIh$%G6n7*RhUS/k-J\4Mmjha"*368=hr?'Q01h>Ui9I.cm;VRkm\iQ9dRF?Ytfogb8'SMN69lG_Qc*mDroH8K&3).rG/UDrRA6_8Z\`(Xn-90D;N(o+DM_<'5-J`j]J0!F^3OCUI\.rrmp.,FA4*ZA'W*H?.)#O.&+_XXB(6T9Jg/Wl?X\La:!BdJn%1@FGlSN2a0M^20]AIj:6>M4`o<3`X"0]k^("T",o:7N&SUG1W@"MC9YU?<-ik?n!p2g?G34m-Yk?6_4rNqp](CI1LALsPW+_9TIgq^6QH\FY4HqIrSq_c<+<m?R=^@"A"t1]D\##Vr2rh>Q84u@Zu61']E$/[^^]&8=e4HC\t`iZE\T';p:?+^m=DrW<K^#n]"*^3.g>Ya0<sBHb:SXE`6[C]8^7(/]GJ&`Q5b?iKO;S9+,8<IN'\pGn.i0DLO@$\.1Hr$-8_k5)X9tlJjemg#p)NXPeT/e]q/3\rPclCP^u_KC6W`t:!OC/@23kElpXuXL1>pf^+"$/St;jDbX]>J9Qmbi?eB^F5<Ie7SJhENp(9c7CnT#FL<HNII@FM'`%N_(>iqqA+Fg][naF(-lu^9^Fk^FG27i]60njAa^'1h(Q;[l`"5W%&ro+Pt!c!Da0VH?^'B;3.3Lb`Q2f[Vl0CV5c#=$Xi1KrYrr>5+H#&p^H"(BP0>VGq-OKn%q+$WK(=e8s^o6$b8*DWeE;m4k3'M'uBhltk0ZiQY]RW;#kS*D51&Fc:qd5'cgUCMaiW*Neo@AT06=CKYb*Di3E?(5(oKNYM^h/,G-C;+Jql^tc9_;S<^eJC,K8h]\Lk_uGp>K]B#1\SY+8jG51OHD=k#7LP6Mshk`~>endstream
endobj
xref
0 13
0000000000 65535 f
0000000073 00000 n
0000000114 00000 n
0000000221 00000 n
0000001154 00000 n
0000001358 00000 n
0000001562 00000 n
0000001766 00000 n
0000001834 00000 n
0000002117 00000 n
0000002188 00000 n
0000004935 00000 n
0000007923 00000 n
trailer
<<
/ID
[<730f7c5b502320dc9445f5e11cbf45a7><730f7c5b502320dc9445f5e11cbf45a7>]
% ReportLab generated PDF document -- digest (http://www.reportlab.com)
/Info 8 0 R
/Root 7 0 R
/Size 13
>>
startxref
10802
%%EOF

View File

@ -3,21 +3,18 @@ import json
import os import os
def get_fundamentals(ticker: str, curr_date: str = None, use_toon: bool = None) -> str: def get_fundamentals(ticker: str, curr_date: str = None, use_toon: bool = True) -> str:
""" """
使用 Alpha Vantage 檢索給定股票代碼的綜合基本面數據 使用 Alpha Vantage 檢索給定股票代碼的綜合基本面數據
Args: Args:
ticker (str): 公司的股票代碼 ticker (str): 公司的股票代碼
curr_date (str): 您正在交易的當前日期格式為 yyyy-mm-dd (Alpha Vantage 未使用) curr_date (str): 您正在交易的當前日期格式為 yyyy-mm-dd (Alpha Vantage 未使用)
use_toon (bool): 是否使用toon格式減少token消耗默認從環境變量讀取 use_toon (bool): 是否使用toon格式減少token消耗默認True
Returns: Returns:
str: 公司概覽數據包括財務比率和關鍵指標JSON或toon格式 str: 公司概覽數據包括財務比率和關鍵指標JSON或toon格式
""" """
# 從環境變量或參數決定是否使用toon
if use_toon is None:
use_toon = os.getenv("USE_TOON_FORMAT", "true").lower() == "true"
params = { params = {
"symbol": ticker, "symbol": ticker,
@ -88,7 +85,7 @@ def get_fundamentals(ticker: str, curr_date: str = None, use_toon: bool = None)
return response return response
def get_balance_sheet(ticker: str, freq: str = "quarterly", curr_date: str = None, use_toon: bool = None) -> str: def get_balance_sheet(ticker: str, freq: str = "quarterly", curr_date: str = None, use_toon: bool = True) -> str:
""" """
使用 Alpha Vantage 檢索給定股票代碼的資產負債表數據 使用 Alpha Vantage 檢索給定股票代碼的資產負債表數據
@ -96,14 +93,11 @@ def get_balance_sheet(ticker: str, freq: str = "quarterly", curr_date: str = Non
ticker (str): 公司的股票代碼 ticker (str): 公司的股票代碼
freq (str): 報告頻率年度/季度 (預設為季度) - Alpha Vantage 未使用 freq (str): 報告頻率年度/季度 (預設為季度) - Alpha Vantage 未使用
curr_date (str): 您正在交易的當前日期格式為 yyyy-mm-dd (Alpha Vantage 未使用) curr_date (str): 您正在交易的當前日期格式為 yyyy-mm-dd (Alpha Vantage 未使用)
use_toon (bool): 是否使用toon格式減少token消耗默認從環境變量讀取 use_toon (bool): 是否使用toon格式默認為 True
Returns: Returns:
str: 具有標準化欄位的資產負債表數據JSON或toon格式 str: 具有標準化欄位的資產負債表數據JSON或toon格式
""" """
# 從環境變量或參數決定是否使用toon
if use_toon is None:
use_toon = os.getenv("USE_TOON_FORMAT", "true").lower() == "true"
params = { params = {
"symbol": ticker, "symbol": ticker,
@ -141,7 +135,7 @@ def get_balance_sheet(ticker: str, freq: str = "quarterly", curr_date: str = Non
return response return response
def get_cashflow(ticker: str, freq: str = "quarterly", curr_date: str = None, use_toon: bool = None) -> str: def get_cashflow(ticker: str, freq: str = "quarterly", curr_date: str = None, use_toon: bool = True) -> str:
""" """
使用 Alpha Vantage 檢索給定股票代碼的現金流量表數據 使用 Alpha Vantage 檢索給定股票代碼的現金流量表數據
@ -149,14 +143,11 @@ def get_cashflow(ticker: str, freq: str = "quarterly", curr_date: str = None, us
ticker (str): 公司的股票代碼 ticker (str): 公司的股票代碼
freq (str): 報告頻率年度/季度 (預設為季度) - Alpha Vantage 未使用 freq (str): 報告頻率年度/季度 (預設為季度) - Alpha Vantage 未使用
curr_date (str): 您正在交易的當前日期格式為 yyyy-mm-dd (Alpha Vantage 未使用) curr_date (str): 您正在交易的當前日期格式為 yyyy-mm-dd (Alpha Vantage 未使用)
use_toon (bool): 是否使用toon格式減少token消耗默認從環境變量讀取 use_toon (bool): 是否使用toon格式默認為 True
Returns: Returns:
str: 具有標準化欄位的現金流量表數據JSON或toon格式 str: 具有標準化欄位的現金流量表數據JSON或toon格式
""" """
# 從環境變量或參數決定是否使用toon
if use_toon is None:
use_toon = os.getenv("USE_TOON_FORMAT", "true").lower() == "true"
params = { params = {
"symbol": ticker, "symbol": ticker,
@ -194,7 +185,7 @@ def get_cashflow(ticker: str, freq: str = "quarterly", curr_date: str = None, us
return response return response
def get_income_statement(ticker: str, freq: str = "quarterly", curr_date: str = None, use_toon: bool = None) -> str: def get_income_statement(ticker: str, freq: str = "quarterly", curr_date: str = None, use_toon: bool = True) -> str:
""" """
使用 Alpha Vantage 檢索給定股票代碼的損益表數據 使用 Alpha Vantage 檢索給定股票代碼的損益表數據
@ -202,14 +193,11 @@ def get_income_statement(ticker: str, freq: str = "quarterly", curr_date: str =
ticker (str): 公司的股票代碼 ticker (str): 公司的股票代碼
freq (str): 報告頻率年度/季度 (預設為季度) - Alpha Vantage 未使用 freq (str): 報告頻率年度/季度 (預設為季度) - Alpha Vantage 未使用
curr_date (str): 您正在交易的當前日期格式為 yyyy-mm-dd (Alpha Vantage 未使用) curr_date (str): 您正在交易的當前日期格式為 yyyy-mm-dd (Alpha Vantage 未使用)
use_toon (bool): 是否使用toon格式減少token消耗默認從環境變量讀取 use_toon (bool): 是否使用toon格式默認為 True
Returns: Returns:
str: 具有標準化欄位的損益表數據JSON或toon格式 str: 具有標準化欄位的損益表數據JSON或toon格式
""" """
# 從環境變量或參數決定是否使用toon
if use_toon is None:
use_toon = os.getenv("USE_TOON_FORMAT", "true").lower() == "true"
params = { params = {
"symbol": ticker, "symbol": ticker,

View File

@ -4,7 +4,7 @@ import json
import os import os
def get_news(ticker, start_date, end_date, use_toon: bool = None) -> dict[str, str] | str: def get_news(ticker, start_date, end_date, use_toon: bool = True) -> dict[str, str] | str:
""" """
返回全球主要新聞機構的即時和歷史市場新聞與情緒數據 返回全球主要新聞機構的即時和歷史市場新聞與情緒數據
@ -14,14 +14,11 @@ def get_news(ticker, start_date, end_date, use_toon: bool = None) -> dict[str, s
ticker: 新聞文章的股票代碼 ticker: 新聞文章的股票代碼
start_date: 新聞搜索的開始日期 start_date: 新聞搜索的開始日期
end_date: 新聞搜索的結束日期 end_date: 新聞搜索的結束日期
use_toon (bool): 是否使用toon格式減少token消耗默認從環境變量讀取 use_toon (bool): 是否使用toon格式默認為 True
Returns: Returns:
包含新聞情緒數據的字典或 JSON/Toon 字串 包含新聞情緒數據的字典或 JSON/Toon 字串
""" """
# 從環境變量或參數決定是否使用toon
if use_toon is None:
use_toon = os.getenv("USE_TOON_FORMAT", "true").lower() == "true"
params = { params = {
"tickers": ticker, "tickers": ticker,
@ -97,7 +94,7 @@ def get_news(ticker, start_date, end_date, use_toon: bool = None) -> dict[str, s
print(f"警告:無法總結新聞數據:{e}") print(f"警告:無法總結新聞數據:{e}")
return response return response
def get_insider_transactions(symbol: str) -> dict[str, str] | str: def get_insider_transactions(symbol: str, use_toon: bool = True) -> dict[str, str] | str:
""" """
返回主要利益相關者的最新和歷史內部交易 返回主要利益相關者的最新和歷史內部交易
@ -105,9 +102,10 @@ def get_insider_transactions(symbol: str) -> dict[str, str] | str:
Args: Args:
symbol: 股票代碼範例"IBM" symbol: 股票代碼範例"IBM"
use_toon (bool): 是否使用toon格式默認為 True
Returns: Returns:
包含內部交易數據的字典或 JSON 字串 包含內部交易數據的字典或 JSON/Toon 字串
""" """
params = { params = {
@ -125,7 +123,16 @@ def get_insider_transactions(symbol: str) -> dict[str, str] | str:
if isinstance(data["data"], list): if isinstance(data["data"], list):
data["data"] = data["data"][:15] data["data"] = data["data"][:15]
return json.dumps(data, ensure_ascii=False, indent=2) # 使用toon格式或JSON格式返回
if use_toon:
try:
from tradingagents.utils.toon_converter import convert_json_to_toon
return convert_json_to_toon(data)
except Exception as e:
print(f"警告toon轉換失敗{e}使用JSON格式")
return json.dumps(data, ensure_ascii=False, indent=2)
else:
return json.dumps(data, ensure_ascii=False, indent=2)
return response return response

View File

@ -0,0 +1,19 @@
# -*- coding: utf-8 -*-
"""
此檔案為向後相容的別名模組
正確的模組名稱為 finmind不是 findmind
請改用from tradingagents.dataflows import finmind
"""
# 重新匯出所有 finmind 模組的內容
from .finmind import *
# 發出棄用警告
import warnings
warnings.warn(
"模組名稱 'findmind' 已棄用,請改用 'finmind'"
"例如from tradingagents.dataflows import finmind",
DeprecationWarning,
stacklevel=2
)

View File

@ -0,0 +1,214 @@
# -*- coding: utf-8 -*-
"""
FinMind 台灣股市資料整合模組
整合所有 FinMind API 功能的統一入口點
API 文檔
- 基本面https://finmind.github.io/tutor/TaiwanMarket/Fundamental/
- 技術面https://finmind.github.io/tutor/TaiwanMarket/Technical/
- 籌碼面https://finmind.github.io/tutor/TaiwanMarket/Chip/
使用方式
from tradingagents.dataflows import finmind
# 獲取股價
stock_data = finmind.get_stock("2330", "2024-01-01", "2024-12-01")
# 獲取基本面
fundamentals = finmind.get_fundamentals("2330")
# 獲取技術指標
indicator = finmind.get_indicator("2330", "per", "2024-12-01", 30)
環境變數設定
export FINMIND_API_TOKEN='your_token_here'
可在 https://finmindtrade.com/ 註冊獲取 Token
"""
# 從各子模組匯入函式
from .finmind_common import (
# 例外類別
FinMindError,
FinMindRateLimitError,
FinMindAuthenticationError,
FinMindDataNotFoundError,
# 工具函式
get_api_token,
format_date,
get_default_start_date,
normalize_stock_id,
validate_taiwan_stock_id,
# 市場類型判斷
get_stock_market_type,
get_yfinance_ticker,
is_taiwan_stock,
# 內部函式(供進階使用)
_make_api_request,
_filter_by_date_range,
# 資料集定義
FUNDAMENTAL_DATASETS,
TECHNICAL_DATASETS,
CHIP_DATASETS,
RESTRICTED_DATASETS,
)
from .finmind_stock import (
get_stock,
get_stock_info,
get_stock_per,
get_day_trading,
)
from .finmind_fundamentals import (
get_fundamentals,
get_income_statement,
get_balance_sheet,
get_cashflow,
get_month_revenue,
get_dividend,
get_financial_statements,
)
from .finmind_indicator import (
get_indicator,
get_margin_data,
get_institutional_data,
INDICATOR_DESCRIPTIONS,
)
from .finmind_news import (
get_news,
get_global_news,
get_insider_sentiment,
get_insider_transactions,
)
# 版本資訊
__version__ = "1.0.0"
__author__ = "TradingAgentsX"
# 便利函式:快速獲取股票完整資訊
def get_stock_overview(
ticker: str,
curr_date: str = None
) -> dict:
"""
獲取股票的完整概覽包含股價基本面和籌碼面資訊
Args:
ticker: 股票代碼例如 "2330"
curr_date: 當前日期預設為今天
Returns:
dict: 包含各類資訊的字典
"""
import json
from datetime import datetime, timedelta
if not curr_date:
curr_date = datetime.now().strftime("%Y-%m-%d")
start_date = (datetime.strptime(curr_date, "%Y-%m-%d") - timedelta(days=30)).strftime("%Y-%m-%d")
overview = {
"ticker": ticker,
"date": curr_date,
"stock_price": None,
"fundamentals": None,
"per_pbr": None,
"margin": None,
"institutional": None,
}
try:
# 股價
stock_data = get_stock(ticker, start_date, curr_date)
if stock_data and "error" not in stock_data.lower():
overview["stock_price"] = "已獲取"
except Exception:
pass
try:
# 基本面
fundamentals_data = get_fundamentals(ticker, curr_date)
if fundamentals_data:
overview["fundamentals"] = json.loads(fundamentals_data) if isinstance(fundamentals_data, str) else fundamentals_data
except Exception:
pass
try:
# PER/PBR
per_data = get_stock_per(ticker, start_date, curr_date)
if per_data and "error" not in per_data.lower():
overview["per_pbr"] = "已獲取"
except Exception:
pass
try:
# 融資融券
margin_data = get_margin_data(ticker, start_date, curr_date)
if margin_data and "error" not in margin_data.lower():
overview["margin"] = "已獲取"
except Exception:
pass
try:
# 法人買賣超
inst_data = get_institutional_data(ticker, start_date, curr_date)
if inst_data and "error" not in inst_data.lower():
overview["institutional"] = "已獲取"
except Exception:
pass
return overview
# 模組說明
__all__ = [
# 例外類別
"FinMindError",
"FinMindRateLimitError",
"FinMindAuthenticationError",
"FinMindDataNotFoundError",
# 股價相關
"get_stock",
"get_stock_info",
"get_stock_per",
"get_day_trading",
# 基本面相關
"get_fundamentals",
"get_income_statement",
"get_balance_sheet",
"get_cashflow",
"get_month_revenue",
"get_dividend",
"get_financial_statements",
# 技術指標/籌碼面
"get_indicator",
"get_margin_data",
"get_institutional_data",
# 新聞相關
"get_news",
"get_global_news",
"get_insider_sentiment",
"get_insider_transactions",
# 工具函式
"get_stock_overview",
"format_date",
"get_default_start_date",
"normalize_stock_id",
"validate_taiwan_stock_id",
# 市場類型判斷
"get_stock_market_type",
"get_yfinance_ticker",
"is_taiwan_stock",
]

View File

@ -0,0 +1,585 @@
# -*- coding: utf-8 -*-
"""
FinMind API 共用工具模組
用於與 FinMind 台灣股市資料 API 進行互動
API 文檔https://finmind.github.io/
注意本模組僅使用公開可用的 API 端點
不使用需要 backer/sponsor 會員資格的功能
"""
import os
import requests
import json
from datetime import datetime, timedelta
from typing import Optional, Dict, Any, Union
from io import StringIO
# ============================================================================
# 常數定義
# ============================================================================
API_BASE_URL = "https://api.finmindtrade.com/api/v4/data"
# 可用的公開資料集(不需要 backer/sponsor 會員)
# 基本面
FUNDAMENTAL_DATASETS = {
"financial_statements": "TaiwanStockFinancialStatements", # 綜合損益表
"balance_sheet": "TaiwanStockBalanceSheet", # 資產負債表
"cashflow": "TaiwanStockCashFlowsStatement", # 現金流量表
"dividend": "TaiwanStockDividend", # 股利政策表
"dividend_result": "TaiwanStockDividendResult", # 除權除息結果表
"month_revenue": "TaiwanStockMonthRevenue", # 月營收表
"capital_reduction": "TaiwanStockCapitalReductionReferencePrice", # 減資恢復買賣參考價格
"delisting": "TaiwanStockDelisting", # 台灣股票下市櫃表
"split_price": "TaiwanStockSplitPrice", # 台股分割後參考價
"par_value_change": "TaiwanStockParValueChange", # 變更面額恢復買賣參考價格
}
# 技術面
TECHNICAL_DATASETS = {
"stock_info": "TaiwanStockInfo", # 台股總覽
"stock_info_warrant": "TaiwanStockInfoWithWarrant", # 台股總覽(含權證)
"trading_date": "TaiwanStockTradingDate", # 台股交易日
"stock_price": "TaiwanStockPrice", # 股價日成交資訊
"stock_per": "TaiwanStockPER", # PER、PBR 資料
"order_book_trade": "TaiwanStockStatisticsOfOrderBookAndTrade", # 每5秒委託成交統計
"indicators_5sec": "TaiwanVariousIndicators5Seconds", # 台股加權指數
"day_trading": "TaiwanStockDayTrading", # 當日沖銷交易
"total_return_index": "TaiwanStockTotalReturnIndex", # 加權、櫃買報酬指數
}
# 籌碼面
CHIP_DATASETS = {
"margin_purchase": "TaiwanStockMarginPurchaseShortSale", # 個股融資融劵表
"margin_total": "TaiwanStockTotalMarginPurchaseShortSale", # 整體市場融資融劵表
"institutional": "TaiwanStockInstitutionalInvestorsBuySell", # 法人買賣表
"institutional_total": "TaiwanStockTotalInstitutionalInvestors", # 市場三大法人買賣表
"shareholding": "TaiwanStockShareholding", # 外資持股表
"securities_lending": "TaiwanStockSecuritiesLending", # 借券成交明細
"short_sale_suspension": "TaiwanStockMarginShortSaleSuspension", # 暫停融券賣出表
"short_sale_balances": "TaiwanDailyShortSaleBalances", # 信用額度總量管制餘額表
"securities_trader_info": "TaiwanSecuritiesTraderInfo", # 證券商資訊表
}
# 需要 backer/sponsor 會員的資料集(不使用)
RESTRICTED_DATASETS = [
"TaiwanStockMarketValue", # 台灣股價市值表
"TaiwanStockMarketValueWeight", # 台股市值比重表
"TaiwanStockWeekPrice", # 台股週 K 資料表
"TaiwanStockMonthPrice", # 台股月 K 資料表
"TaiwanStockPriceAdj", # 台灣還原股價資料表
"TaiwanStockPriceTick", # 台灣股價歷史逐筆資料表
"TaiwanStock10Year", # 台灣個股十年線資料表
"TaiwanStockKBar", # 台股分 K 資料表
"TaiwanStockEvery5SecondsIndex", # 每 5 秒指數統計
"TaiwanStockHoldingSharesPer", # 股權持股分級表
"TaiwanStockTradingDailyReport", # 台股分點資料表
"TaiwanStockWarrantTradingDailyReport", # 台股權證分點資料表
"TaiwanstockGovernmentBankBuySell", # 台股八大行庫賣賣表
"TaiwanTotalExchangeMarginMaintenance", # 台灣大盤融資維持率
"TaiwanStockTradingDailyReportSecIdAgg",# 當日卷商分點統計表
"TaiwanStockDispositionSecuritiesPeriod",# 公布處置有價證券表
"TaiwanStockInfoWithWarrantSummary", # 台股權證標的對照表
]
# ============================================================================
# 自定義例外
# ============================================================================
class FinMindError(Exception):
"""FinMind API 通用錯誤"""
pass
class FinMindRateLimitError(FinMindError):
"""當超過 FinMind API 速率限制時引發的例外"""
pass
class FinMindAuthenticationError(FinMindError):
"""當 API Token 無效或缺失時引發的例外"""
pass
class FinMindDataNotFoundError(FinMindError):
"""當查詢的資料不存在時引發的例外"""
pass
# ============================================================================
# API Token 管理
# ============================================================================
def get_api_token() -> str:
"""
從環境變數中檢索 FinMind API Token
FinMind 使用 Bearer Token 進行身份驗證
您可以在 https://finmindtrade.com/ 註冊後獲取 Token
Returns:
str: API Token
Raises:
FinMindAuthenticationError: 當環境變數未設定時
"""
token = os.getenv("FINMIND_API_TOKEN")
if not token:
# 也支援舊的環境變數名稱
token = os.getenv("FINMIND_API_KEY")
if not token:
raise FinMindAuthenticationError(
"未設定 FINMIND_API_TOKEN 環境變數。"
"請在 https://finmindtrade.com/ 註冊並獲取 Token"
"然後設定環境變數export FINMIND_API_TOKEN='your_token'"
)
return token
# ============================================================================
# 日期格式處理
# ============================================================================
def format_date(date_input: Union[str, datetime]) -> str:
"""
將各種日期格式轉換為 FinMind API 所需的 YYYY-MM-DD 格式
Args:
date_input: 日期字串或 datetime 物件
Returns:
str: 格式化後的日期字串 (YYYY-MM-DD)
Raises:
ValueError: 當日期格式不支援時
"""
if isinstance(date_input, datetime):
return date_input.strftime("%Y-%m-%d")
if isinstance(date_input, str):
# 如果已經是正確格式,直接返回
if len(date_input) == 10 and date_input[4] == '-' and date_input[7] == '-':
return date_input
# 嘗試解析常見的日期格式
formats_to_try = [
"%Y-%m-%d",
"%Y/%m/%d",
"%Y%m%d",
"%Y-%m-%d %H:%M:%S",
"%Y-%m-%d %H:%M",
]
for fmt in formats_to_try:
try:
dt = datetime.strptime(date_input, fmt)
return dt.strftime("%Y-%m-%d")
except ValueError:
continue
raise ValueError(f"不支援的日期格式:{date_input}")
raise ValueError(f"日期必須是字串或 datetime 物件,但得到的是 {type(date_input)}")
def get_default_start_date(years_back: int = 3) -> str:
"""
獲取預設的開始日期預設為往前推算指定年數
Args:
years_back: 往前推算的年數
Returns:
str: 格式化的開始日期
"""
start_date = datetime.now() - timedelta(days=years_back * 365)
return format_date(start_date)
# ============================================================================
# 輸出格式化toon / JSON
# ============================================================================
def _convert_to_serializable(obj):
"""
numpy/pandas 資料類型轉換為 Python 原生類型
以便 JSON 序列化
"""
import numpy as np
import pandas as pd
if isinstance(obj, dict):
return {k: _convert_to_serializable(v) for k, v in obj.items()}
elif isinstance(obj, list):
return [_convert_to_serializable(item) for item in obj]
elif hasattr(obj, 'item'): # numpy scalar types
return obj.item()
elif hasattr(obj, 'tolist'): # numpy array
return obj.tolist()
elif pd.isna(obj):
return None
else:
return obj
def format_output(data: dict, use_toon: bool = True) -> str:
"""
格式化輸出資料強制使用 toon 格式以減少 token 消耗
toon 格式可以大幅減少 token 消耗通常節省 40-60%
Args:
data: 要輸出的資料字典
use_toon: 是否使用 toon 格式預設為 True強制使用 toon
Returns:
str: 格式化後的字串JSON toon 格式
"""
# 先確保資料可序列化
serializable_data = _convert_to_serializable(data)
if use_toon:
try:
from tradingagents.utils.toon_converter import convert_json_to_toon
return convert_json_to_toon(serializable_data)
except Exception as e:
print(f"警告toon 轉換失敗:{e},使用 JSON 格式")
return json.dumps(serializable_data, ensure_ascii=False, indent=2)
else:
return json.dumps(serializable_data, ensure_ascii=False, indent=2)
# ============================================================================
# API 請求處理
# ============================================================================
def _make_api_request(
dataset: str,
data_id: Optional[str] = None,
start_date: Optional[str] = None,
end_date: Optional[str] = None,
**extra_params
) -> Dict[str, Any]:
"""
發送 API 請求並處理回應的輔助函式
根據 FinMind 文檔API 請求格式為
GET https://api.finmindtrade.com/api/v4/data
必要參數
- dataset: 資料集名稱
選填參數
- data_id: 股票代碼例如 "2330"
- start_date: 開始日期
- end_date: 結束日期
Args:
dataset: FinMind 資料集名稱
data_id: 股票代碼例如 "2330"
start_date: 開始日期 (YYYY-MM-DD)
end_date: 結束日期 (YYYY-MM-DD)
**extra_params: 額外的查詢參數
Returns:
dict: API 回應的 JSON 資料
Raises:
FinMindRateLimitError: 當超過 API 速率限制時
FinMindAuthenticationError: Token 無效時
FinMindDataNotFoundError: 當資料不存在時
FinMindError: 其他 API 錯誤
"""
# 獲取 Token
token = get_api_token()
# 建立請求標頭
headers = {
"Authorization": f"Bearer {token}"
}
# 建立請求參數
params = {
"dataset": dataset,
}
# 添加股票代碼(如果提供)
if data_id:
params["data_id"] = normalize_stock_id(data_id)
# 添加開始日期(如果提供)
if start_date:
params["start_date"] = format_date(start_date)
# 添加結束日期(如果提供)
if end_date:
params["end_date"] = format_date(end_date)
# 添加額外參數
params.update(extra_params)
try:
response = requests.get(
API_BASE_URL,
headers=headers,
params=params,
timeout=30
)
response.raise_for_status()
# 解析 JSON 回應
data = response.json()
# 檢查 API 層級的錯誤
if "msg" in data:
msg = data["msg"].lower()
# 速率限制錯誤
if "rate limit" in msg or "too many requests" in msg:
raise FinMindRateLimitError(f"超過 FinMind API 速率限制:{data['msg']}")
# 認證錯誤
if "token" in msg or "authentication" in msg or "unauthorized" in msg:
raise FinMindAuthenticationError(f"FinMind API 認證失敗:{data['msg']}")
# 資料不存在
if "no data" in msg or "not found" in msg:
raise FinMindDataNotFoundError(f"查無資料:{data['msg']}")
# 其他錯誤
if data.get("status") != 200:
raise FinMindError(f"FinMind API 錯誤:{data['msg']}")
return data
except requests.exceptions.Timeout:
raise FinMindError("FinMind API 請求超時")
except requests.exceptions.RequestException as e:
raise FinMindError(f"FinMind API 請求失敗:{str(e)}")
except json.JSONDecodeError:
raise FinMindError("無法解析 FinMind API 回應")
# ============================================================================
# 資料驗證和處理工具
# ============================================================================
def validate_taiwan_stock_id(stock_id: str) -> bool:
"""
驗證台灣股票代碼格式
台灣股票代碼通常為 4-6 位數字
ETF 或特殊商品可能包含字母
Args:
stock_id: 股票代碼
Returns:
bool: 是否為有效的股票代碼格式
"""
if not stock_id:
return False
# 移除空白
stock_id = stock_id.strip()
# 基本長度檢查
if len(stock_id) < 4 or len(stock_id) > 6:
return False
# 大多數台股代碼為純數字
if stock_id.isdigit():
return True
# 某些 ETF 或特殊商品可能包含字母(如 00878
if stock_id[0].isdigit():
return True
return False
def normalize_stock_id(stock_id: str) -> str:
"""
標準化股票代碼格式
Args:
stock_id: 股票代碼
Returns:
str: 標準化後的股票代碼
"""
# 移除空白和特殊字元
normalized = stock_id.strip().upper()
# 移除可能的 .TW 或 .TWO 後綴(台股在某些系統的格式)
for suffix in [".TW", ".TWO", ".TT"]:
if normalized.endswith(suffix):
normalized = normalized[:-len(suffix)]
break
return normalized
def _filter_by_date_range(
data: list,
date_field: str,
start_date: str,
end_date: str
) -> list:
"""
按日期範圍過濾資料列表
Args:
data: 要過濾的資料列表
date_field: 日期欄位名稱
start_date: 開始日期
end_date: 結束日期
Returns:
list: 過濾後的資料列表
"""
if not data:
return data
try:
start_dt = datetime.strptime(start_date, "%Y-%m-%d")
end_dt = datetime.strptime(end_date, "%Y-%m-%d")
filtered = []
for item in data:
if date_field in item:
try:
item_date = datetime.strptime(item[date_field], "%Y-%m-%d")
if start_dt <= item_date <= end_dt:
filtered.append(item)
except (ValueError, TypeError):
continue
return filtered
except Exception:
return data
# ============================================================================
# 台股市場類型判斷
# ============================================================================
# 股票市場類型緩存(避免重複查詢)
_stock_market_type_cache: Dict[str, str] = {}
def get_stock_market_type(stock_id: str) -> str:
"""
獲取台股的市場類型上市/上櫃/興櫃
透過 FinMind TaiwanStockInfo API 查詢股票資訊
根據 type 欄位判斷市場類型
- twse: 上市Yahoo Finance 後綴 .TW
- tpex: 上櫃Yahoo Finance 後綴 .TWO
- rotc: 興櫃Yahoo Finance 後綴 .TWO
Args:
stock_id: 台灣股票代碼例如 "2330"
Returns:
str: 市場類型代碼 ("twse", "tpex", "rotc") "unknown"
"""
global _stock_market_type_cache
stock_id = normalize_stock_id(stock_id)
# 檢查緩存
if stock_id in _stock_market_type_cache:
return _stock_market_type_cache[stock_id]
try:
response = _make_api_request(
dataset="TaiwanStockInfo",
data_id=stock_id
)
if "data" in response and response["data"]:
for item in response["data"]:
if item.get("stock_id") == stock_id:
market_type = item.get("type", "unknown")
_stock_market_type_cache[stock_id] = market_type
return market_type
# 如果找不到,預設為上市
_stock_market_type_cache[stock_id] = "twse"
return "twse"
except Exception as e:
print(f"警告:無法獲取 {stock_id} 的市場類型:{e}")
# 預設為上市
return "twse"
def get_yfinance_ticker(stock_id: str) -> str:
"""
將台股代碼轉換為 Yahoo Finance 格式
根據市場類型添加適當的後綴
- 上市(twse): .TW
- 上櫃(tpex): .TWO
- 興櫃(rotc): .TWO
Args:
stock_id: 台灣股票代碼例如 "2330"
Returns:
str: Yahoo Finance 格式的代碼例如 "2330.TW"
"""
stock_id = normalize_stock_id(stock_id)
# 檢查是否為台股代碼數字開頭4-6位
if not stock_id or not stock_id[0].isdigit():
return stock_id # 非台股,直接返回
if len(stock_id) < 4 or len(stock_id) > 6:
return stock_id # 不符合台股格式
# 獲取市場類型
market_type = get_stock_market_type(stock_id)
if market_type == "twse":
return f"{stock_id}.TW"
elif market_type in ["tpex", "rotc"]:
return f"{stock_id}.TWO"
else:
# 預設使用上市後綴
return f"{stock_id}.TW"
def is_taiwan_stock(stock_id: str) -> bool:
"""
判斷股票代碼是否為台灣股票
判斷邏輯
- 4-6 位數字開頭
- 或已有 .TW/.TWO 後綴
Args:
stock_id: 股票代碼
Returns:
bool: 是否為台灣股票
"""
if not stock_id:
return False
stock_id = stock_id.strip().upper()
# 檢查是否有台股後綴
if stock_id.endswith(".TW") or stock_id.endswith(".TWO"):
return True
# 檢查是否為純數字或數字開頭的 4-6 位代碼
if len(stock_id) >= 4 and len(stock_id) <= 6 and stock_id[0].isdigit():
return True
return False

View File

@ -0,0 +1,626 @@
# -*- coding: utf-8 -*-
"""
FinMind 基本面資料模組
用於獲取台灣股市基本面財務資料
API 文檔https://finmind.github.io/tutor/TaiwanMarket/Fundamental/
可用的資料集
- TaiwanStockFinancialStatements: 綜合損益表1990-03-01 ~ now
- TaiwanStockBalanceSheet: 資產負債表2011-12-01 ~ now
- TaiwanStockCashFlowsStatement: 現金流量表2008-06-01 ~ now
- TaiwanStockDividend: 股利政策表2005-05-01 ~ now
- TaiwanStockDividendResult: 除權除息結果表2003-05-01 ~ now
- TaiwanStockMonthRevenue: 月營收表2002-02-01 ~ now
注意本模組僅使用公開可用的 API 端點
不使用需要 backer/sponsor 會員資格的功能 TaiwanStockMarketValue
"""
import json
import os
from datetime import datetime, timedelta
from typing import Optional, Dict, Any, List
import pandas as pd
import numpy as np
from .finmind_common import (
_make_api_request,
format_date,
get_default_start_date,
normalize_stock_id,
FinMindError,
FinMindDataNotFoundError,
)
def _convert_to_serializable(obj):
"""
numpy/pandas 資料類型轉換為 Python 原生類型
以便 JSON 序列化
"""
if isinstance(obj, dict):
return {k: _convert_to_serializable(v) for k, v in obj.items()}
elif isinstance(obj, list):
return [_convert_to_serializable(item) for item in obj]
elif isinstance(obj, (np.integer, np.int64)):
return int(obj)
elif isinstance(obj, (np.floating, np.float64)):
return float(obj)
elif isinstance(obj, np.ndarray):
return obj.tolist()
elif pd.isna(obj):
return None
else:
return obj
def _format_output(data: dict, use_toon: bool = True) -> str:
"""
格式化輸出資料支援 JSON toon 格式
Args:
data: 要輸出的資料字典
use_toon: 是否使用 toon 格式預設為 True強制使用 toon
Returns:
str: 格式化後的字串JSON toon 格式
"""
# 先確保資料可序列化
serializable_data = _convert_to_serializable(data)
if use_toon:
try:
from tradingagents.utils.toon_converter import convert_json_to_toon
return convert_json_to_toon(serializable_data)
except Exception as e:
print(f"警告toon 轉換失敗:{e},使用 JSON 格式")
return json.dumps(serializable_data, ensure_ascii=False, indent=2)
else:
return json.dumps(serializable_data, ensure_ascii=False, indent=2)
def get_income_statement(
ticker: str,
freq: str = "quarterly",
curr_date: Optional[str] = None,
use_toon: bool = True
) -> str:
"""
獲取綜合損益表TaiwanStockFinancialStatements
資料區間1990-03-01 ~ now
返回欄位
- date: 財報日期
- stock_id: 股票代碼
- type: 科目類型
- value: 數值
- origin_name: 原始科目名稱
Args:
ticker: 股票代碼例如 "2330"
freq: 報告頻率quarterly/annual- 此參數保留但 FinMind 統一返回所有資料
curr_date: 當前日期用於計算查詢範圍
use_toon: 是否使用 toon 格式保留但未實作
Returns:
str: JSON 格式的損益表資料
"""
ticker = normalize_stock_id(ticker)
# 計算日期範圍(往前推 3 年)
if curr_date:
end_date = format_date(curr_date)
start_dt = datetime.strptime(end_date, "%Y-%m-%d") - timedelta(days=3*365)
start_date = format_date(start_dt)
else:
start_date = get_default_start_date(years_back=3)
end_date = format_date(datetime.now())
try:
response = _make_api_request(
dataset="TaiwanStockFinancialStatements",
data_id=ticker,
start_date=start_date,
end_date=end_date
)
if "data" in response and response["data"]:
df = pd.DataFrame(response["data"])
# 只保留最近 2 期的資料以減少 token
unique_dates = df["date"].unique()
if len(unique_dates) > 2:
recent_dates = sorted(unique_dates, reverse=True)[:2]
df = df[df["date"].isin(recent_dates)]
# 轉換為 pivot 格式(更易閱讀)
try:
pivot_df = df.pivot_table(
index="date",
columns="type",
values="value",
aggfunc="first"
).reset_index()
result = {
"stock_id": ticker,
"report_type": "income_statement",
"data": pivot_df.to_dict(orient="records")
}
except Exception:
# 如果 pivot 失敗,返回原始格式
result = {
"stock_id": ticker,
"report_type": "income_statement",
"data": df.to_dict(orient="records")
}
return _format_output(result, use_toon)
else:
return _format_output({
"stock_id": ticker,
"report_type": "income_statement",
"data": [],
"message": "查無資料"
}, use_toon)
except FinMindDataNotFoundError:
return _format_output({
"stock_id": ticker,
"report_type": "income_statement",
"data": [],
"message": f"找不到股票 {ticker} 的損益表資料"
}, use_toon)
except FinMindError as e:
return _format_output({
"error": str(e),
"stock_id": ticker
}, use_toon)
def get_balance_sheet(
ticker: str,
freq: str = "quarterly",
curr_date: Optional[str] = None,
use_toon: bool = True
) -> str:
"""
獲取資產負債表TaiwanStockBalanceSheet
資料區間2011-12-01 ~ now
返回欄位
- date: 財報日期
- stock_id: 股票代碼
- type: 科目類型
- value: 數值
- origin_name: 原始科目名稱
Args:
ticker: 股票代碼例如 "2330"
freq: 報告頻率quarterly/annual
curr_date: 當前日期
use_toon: 是否使用 toon 格式
Returns:
str: JSON 格式的資產負債表資料
"""
ticker = normalize_stock_id(ticker)
if curr_date:
end_date = format_date(curr_date)
start_dt = datetime.strptime(end_date, "%Y-%m-%d") - timedelta(days=3*365)
start_date = format_date(start_dt)
else:
start_date = get_default_start_date(years_back=3)
end_date = format_date(datetime.now())
try:
response = _make_api_request(
dataset="TaiwanStockBalanceSheet",
data_id=ticker,
start_date=start_date,
end_date=end_date
)
if "data" in response and response["data"]:
df = pd.DataFrame(response["data"])
# 只保留最近 2 期的資料
unique_dates = df["date"].unique()
if len(unique_dates) > 2:
recent_dates = sorted(unique_dates, reverse=True)[:2]
df = df[df["date"].isin(recent_dates)]
# 轉換為 pivot 格式
try:
pivot_df = df.pivot_table(
index="date",
columns="type",
values="value",
aggfunc="first"
).reset_index()
result = {
"stock_id": ticker,
"report_type": "balance_sheet",
"data": pivot_df.to_dict(orient="records")
}
except Exception:
result = {
"stock_id": ticker,
"report_type": "balance_sheet",
"data": df.to_dict(orient="records")
}
return _format_output(result, use_toon)
else:
return _format_output({
"stock_id": ticker,
"report_type": "balance_sheet",
"data": [],
"message": "查無資料"
}, use_toon)
except FinMindDataNotFoundError:
return _format_output({
"stock_id": ticker,
"report_type": "balance_sheet",
"data": [],
"message": f"找不到股票 {ticker} 的資產負債表資料"
}, use_toon)
except FinMindError as e:
return _format_output({
"error": str(e),
"stock_id": ticker
}, use_toon)
def get_cashflow(
ticker: str,
freq: str = "quarterly",
curr_date: Optional[str] = None,
use_toon: bool = True
) -> str:
"""
獲取現金流量表TaiwanStockCashFlowsStatement
資料區間2008-06-01 ~ now
Returns:
str: JSON 格式的現金流量表資料
"""
ticker = normalize_stock_id(ticker)
if curr_date:
end_date = format_date(curr_date)
start_dt = datetime.strptime(end_date, "%Y-%m-%d") - timedelta(days=3*365)
start_date = format_date(start_dt)
else:
start_date = get_default_start_date(years_back=3)
end_date = format_date(datetime.now())
try:
response = _make_api_request(
dataset="TaiwanStockCashFlowsStatement",
data_id=ticker,
start_date=start_date,
end_date=end_date
)
if "data" in response and response["data"]:
df = pd.DataFrame(response["data"])
unique_dates = df["date"].unique()
if len(unique_dates) > 2:
recent_dates = sorted(unique_dates, reverse=True)[:2]
df = df[df["date"].isin(recent_dates)]
try:
pivot_df = df.pivot_table(
index="date",
columns="type",
values="value",
aggfunc="first"
).reset_index()
result = {
"stock_id": ticker,
"report_type": "cashflow",
"data": pivot_df.to_dict(orient="records")
}
except Exception:
result = {
"stock_id": ticker,
"report_type": "cashflow",
"data": df.to_dict(orient="records")
}
return _format_output(result, use_toon)
else:
return _format_output({
"stock_id": ticker,
"report_type": "cashflow",
"data": [],
"message": "查無資料"
}, use_toon)
except FinMindDataNotFoundError:
return _format_output({
"stock_id": ticker,
"report_type": "cashflow",
"data": [],
"message": f"找不到股票 {ticker} 的現金流量表資料"
}, use_toon)
except FinMindError as e:
return _format_output({
"error": str(e),
"stock_id": ticker
}, use_toon)
def get_month_revenue(
ticker: str,
start_date: Optional[str] = None,
end_date: Optional[str] = None
) -> str:
"""
獲取月營收表TaiwanStockMonthRevenue
資料區間2002-02-01 ~ now
返回欄位
- date: 公布日期
- stock_id: 股票代碼
- country: 地區
- revenue: 當月營收
- revenue_month: 營收月份
- revenue_year: 營收年份
Returns:
str: JSON 格式的月營收資料
"""
ticker = normalize_stock_id(ticker)
if not start_date:
start_date = get_default_start_date(years_back=2)
if not end_date:
end_date = format_date(datetime.now())
try:
response = _make_api_request(
dataset="TaiwanStockMonthRevenue",
data_id=ticker,
start_date=start_date,
end_date=end_date
)
if "data" in response and response["data"]:
df = pd.DataFrame(response["data"])
# 只保留最近 12 個月的資料
df = df.sort_values("date", ascending=False).head(12)
result = {
"stock_id": ticker,
"report_type": "month_revenue",
"data": df.to_dict(orient="records")
}
return _format_output(result)
else:
return _format_output({
"stock_id": ticker,
"report_type": "month_revenue",
"data": [],
"message": "查無資料"
})
except FinMindError as e:
return _format_output({
"error": str(e),
"stock_id": ticker
})
def get_dividend(
ticker: str,
start_date: Optional[str] = None,
end_date: Optional[str] = None
) -> str:
"""
獲取股利政策表TaiwanStockDividend
資料區間2005-05-01 ~ now
返回欄位包含現金股利股票股利除權息日等完整股利資訊
Returns:
str: JSON 格式的股利政策資料
"""
ticker = normalize_stock_id(ticker)
if not start_date:
start_date = get_default_start_date(years_back=5)
if not end_date:
end_date = format_date(datetime.now())
try:
response = _make_api_request(
dataset="TaiwanStockDividend",
data_id=ticker,
start_date=start_date,
end_date=end_date
)
if "data" in response and response["data"]:
df = pd.DataFrame(response["data"])
# 只保留最近 10 筆
df = df.sort_values("date", ascending=False).head(10)
result = {
"stock_id": ticker,
"report_type": "dividend",
"data": df.to_dict(orient="records")
}
return _format_output(result)
else:
return _format_output({
"stock_id": ticker,
"report_type": "dividend",
"data": [],
"message": "查無資料"
})
except FinMindError as e:
return _format_output({
"error": str(e),
"stock_id": ticker
})
def get_fundamentals(
ticker: str,
curr_date: Optional[str] = None,
use_toon: bool = True
) -> str:
"""
獲取公司綜合基本面資料
整合多個資料來源提供完整的基本面概覽
- 最新月營收
- 最近一期損益表摘要
- 最近一期資產負債表摘要
- 最近股利資訊
Args:
ticker: 股票代碼例如 "2330"
curr_date: 當前日期 (YYYY-MM-DD)
use_toon: 是否使用 toon 格式
Returns:
str: toon 格式的綜合基本面資料
"""
ticker = normalize_stock_id(ticker)
if not curr_date:
curr_date = format_date(datetime.now())
start_date = get_default_start_date(years_back=2)
fundamentals = {
"stock_id": ticker,
"report_date": curr_date,
"月營收": None,
"損益表摘要": None,
"資產負債表摘要": None,
"股利政策": None,
}
# 1. 獲取月營收
try:
revenue_response = _make_api_request(
dataset="TaiwanStockMonthRevenue",
data_id=ticker,
start_date=start_date,
end_date=curr_date
)
if "data" in revenue_response and revenue_response["data"]:
df = pd.DataFrame(revenue_response["data"])
latest = df.sort_values("date", ascending=False).iloc[0]
fundamentals["月營收"] = {
"日期": latest.get("date"),
"營收": latest.get("revenue"),
"營收年份": latest.get("revenue_year"),
"營收月份": latest.get("revenue_month"),
}
except FinMindError:
pass
# 2. 獲取損益表
try:
income_response = _make_api_request(
dataset="TaiwanStockFinancialStatements",
data_id=ticker,
start_date=start_date,
end_date=curr_date
)
if "data" in income_response and income_response["data"]:
df = pd.DataFrame(income_response["data"])
latest_date = df["date"].max()
latest_data = df[df["date"] == latest_date]
key_items = {}
for _, row in latest_data.iterrows():
key_items[row["type"]] = row["value"]
fundamentals["損益表摘要"] = {
"日期": latest_date,
"關鍵指標": key_items
}
except FinMindError:
pass
# 3. 獲取資產負債表
try:
balance_response = _make_api_request(
dataset="TaiwanStockBalanceSheet",
data_id=ticker,
start_date=start_date,
end_date=curr_date
)
if "data" in balance_response and balance_response["data"]:
df = pd.DataFrame(balance_response["data"])
latest_date = df["date"].max()
latest_data = df[df["date"] == latest_date]
key_items = {}
for _, row in latest_data.iterrows():
key_items[row["type"]] = row["value"]
fundamentals["資產負債表摘要"] = {
"日期": latest_date,
"關鍵指標": key_items
}
except FinMindError:
pass
# 4. 獲取股利資訊
try:
dividend_start = get_default_start_date(years_back=3)
dividend_response = _make_api_request(
dataset="TaiwanStockDividend",
data_id=ticker,
start_date=dividend_start,
end_date=curr_date
)
if "data" in dividend_response and dividend_response["data"]:
df = pd.DataFrame(dividend_response["data"])
latest = df.sort_values("date", ascending=False).iloc[0].to_dict()
# 只保留重要欄位
key_fields = [
"date", "year",
"CashEarningsDistribution", "StockEarningsDistribution",
"CashExDividendTradingDate", "StockExDividendTradingDate"
]
fundamentals["股利政策"] = {
k: latest.get(k) for k in key_fields if k in latest
}
except FinMindError:
pass
# 轉換所有資料為可序列化的格式並輸出
return _format_output(fundamentals, use_toon)
# 別名,與現有系統相容
get_financial_statements = get_income_statement

View File

@ -0,0 +1,654 @@
# -*- coding: utf-8 -*-
"""
FinMind 技術指標資料模組
用於獲取台灣股市技術指標和籌碼面數據
API 文檔
- 技術面https://finmind.github.io/tutor/TaiwanMarket/Technical/
- 籌碼面https://finmind.github.io/tutor/TaiwanMarket/Chip/
可用的資料集
- TaiwanStockPER: 個股 PERPBR 資料
- TaiwanStockMarginPurchaseShortSale: 個股融資融劵表
- TaiwanStockInstitutionalInvestorsBuySell: 法人買賣表
- TaiwanStockShareholding: 外資持股表
技術指標計算
- 本模組會從 FinMind 獲取股價數據自行計算技術指標SMARSIMACD
- 不需要依賴 Alpha Vantage 或其他外部服務
注意本模組不使用需要 backer/sponsor 會員資格的功能
"""
import json
from datetime import datetime
from dateutil.relativedelta import relativedelta
from typing import Optional
import pandas as pd
import numpy as np
from .finmind_common import (
_make_api_request,
format_date,
get_default_start_date,
normalize_stock_id,
FinMindError,
FinMindDataNotFoundError,
format_output,
)
# 指標描述
INDICATOR_DESCRIPTIONS = {
"per": "本益比PER股價與每股盈餘之比用於評估股票價值。較低的 PER 可能表示股票被低估。",
"pbr": "股價淨值比PBR股價與每股淨值之比用於評估公司淨資產價值。PBR 低於 1 可能表示股票被低估。",
"dividend_yield": "殖利率:股利與股價之比,衡量股票收益率。較高的殖利率可能吸引存股族。",
"margin_purchase": "融資餘額:投資人向券商借錢買股票的未還金額。融資增加可能表示看多情緒。",
"short_sale": "融券餘額:投資人借股票賣出的未補回數量。融券增加可能表示看空情緒。",
"institutional": "三大法人買賣超:外資、投信、自營商的買賣超情況,是重要的市場動向指標。",
"foreign_holding": "外資持股比例:外資持有該股票的比例。外資持續買超可能推升股價。",
# 技術指標描述
"sma": "簡單移動平均線SMA過去 N 日收盤價的平均值,用於判斷趨勢方向。",
"ema": "指數移動平均線EMA加權移動平均對近期價格給予較高權重。",
"rsi": "相對強弱指標RSI衡量價格動能RSI>70 為超買RSI<30 為超賣。",
"macd": "MACD趨勢動能指標由快線、慢線和柱狀圖組成用於判斷買賣時機。",
"bbands": "布林通道Bollinger Bands由中軌SMA和上下軌組成用於判斷價格波動範圍。",
}
# 支援的技術指標列表
CALCULATED_INDICATORS = [
"sma", "ema", "rsi", "macd", "bbands",
"close_5_sma", "close_10_sma", "close_20_sma", "close_50_sma", "close_100_sma", "close_200_sma",
"close_5_ema", "close_10_ema", "close_20_ema", "close_50_ema",
]
def _get_stock_price_data(symbol: str, start_date: str, end_date: str) -> pd.DataFrame:
"""獲取股價數據並轉換為 DataFrame"""
response = _make_api_request(
dataset="TaiwanStockPrice",
data_id=symbol,
start_date=start_date,
end_date=end_date
)
if "data" not in response or not response["data"]:
raise FinMindDataNotFoundError(f"找不到 {symbol} 的股價數據")
df = pd.DataFrame(response["data"])
df["date"] = pd.to_datetime(df["date"])
df = df.sort_values("date").reset_index(drop=True)
# 重命名欄位
df = df.rename(columns={
"max": "high",
"min": "low",
"Trading_Volume": "volume"
})
return df
def _calculate_sma(df: pd.DataFrame, period: int) -> pd.Series:
"""計算簡單移動平均線"""
return df["close"].rolling(window=period).mean()
def _calculate_ema(df: pd.DataFrame, period: int) -> pd.Series:
"""計算指數移動平均線"""
return df["close"].ewm(span=period, adjust=False).mean()
def _calculate_rsi(df: pd.DataFrame, period: int = 14) -> pd.Series:
"""計算 RSI 指標"""
delta = df["close"].diff()
gain = delta.where(delta > 0, 0)
loss = (-delta).where(delta < 0, 0)
avg_gain = gain.rolling(window=period).mean()
avg_loss = loss.rolling(window=period).mean()
rs = avg_gain / avg_loss
rsi = 100 - (100 / (1 + rs))
return rsi
def _calculate_macd(df: pd.DataFrame, fast: int = 12, slow: int = 26, signal: int = 9) -> dict:
"""計算 MACD 指標"""
ema_fast = df["close"].ewm(span=fast, adjust=False).mean()
ema_slow = df["close"].ewm(span=slow, adjust=False).mean()
macd_line = ema_fast - ema_slow
signal_line = macd_line.ewm(span=signal, adjust=False).mean()
histogram = macd_line - signal_line
return {
"macd": macd_line,
"signal": signal_line,
"histogram": histogram
}
def _calculate_bbands(df: pd.DataFrame, period: int = 20, std_dev: float = 2.0) -> dict:
"""計算布林通道"""
sma = df["close"].rolling(window=period).mean()
std = df["close"].rolling(window=period).std()
return {
"upper": sma + (std * std_dev),
"middle": sma,
"lower": sma - (std * std_dev)
}
def get_indicator(
symbol: str,
indicator: str,
curr_date: str,
look_back_days: int,
interval: str = "daily",
time_period: int = 14,
series_type: str = "close"
) -> str:
"""
返回 FinMind 在一個時間窗口內的技術指標/籌碼面數據
支援的籌碼面指標
- per: 本益比
- pbr: 股價淨值比
- dividend_yield: 殖利率
- margin_purchase: 融資餘額
- short_sale: 融券餘額
- institutional: 三大法人買賣超
- foreign_holding: 外資持股比例
支援的技術指標從股價計算
- sma, close_N_sma: 簡單移動平均線
- ema, close_N_ema: 指數移動平均線
- rsi: 相對強弱指標
- macd: MACD 指標
- bbands: 布林通道
Args:
symbol: 股票代碼例如 "2330"
indicator: 要獲取的指標類型
curr_date: 當前交易日期格式為 YYYY-mm-dd
look_back_days: 回溯天數
interval: 時間間隔保留參數FinMind 只支援日線
time_period: 用於計算的天數
series_type: 價格類型保留參數
Returns:
str: 包含指標值和描述的字串
"""
symbol = normalize_stock_id(symbol)
indicator = indicator.lower()
# 籌碼面指標
chip_indicators = [
"per", "pbr", "dividend_yield",
"margin_purchase", "short_sale",
"institutional", "foreign_holding"
]
curr_date_dt = datetime.strptime(curr_date, "%Y-%m-%d")
before = curr_date_dt - relativedelta(days=look_back_days)
start_date = format_date(before)
end_date = format_date(curr_date_dt)
try:
# 籌碼面指標
if indicator in chip_indicators:
if indicator in ["per", "pbr", "dividend_yield"]:
return _get_per_pbr_indicator(symbol, indicator, start_date, end_date)
elif indicator in ["margin_purchase", "short_sale"]:
return _get_margin_indicator(symbol, indicator, start_date, end_date)
elif indicator == "institutional":
return _get_institutional_indicator(symbol, start_date, end_date)
elif indicator == "foreign_holding":
return _get_foreign_holding_indicator(symbol, start_date, end_date)
# 技術指標(從股價計算)
else:
return _calculate_technical_indicator(
symbol=symbol,
indicator=indicator,
start_date=start_date,
end_date=end_date,
time_period=time_period,
look_back_days=look_back_days
)
except Exception as e:
print(f"獲取 {indicator} 的 FinMind 指標數據時出錯:{e}")
return f"檢索 {indicator} 數據時出錯:{str(e)}"
def _calculate_technical_indicator(
symbol: str,
indicator: str,
start_date: str,
end_date: str,
time_period: int,
look_back_days: int
) -> str:
"""計算技術指標"""
indicator = indicator.lower()
# 解析指標名稱(例如 close_50_sma -> sma, period=50
period = time_period
indicator_type = indicator
# 解析 close_N_sma 或 close_N_ema 格式
if "_sma" in indicator:
parts = indicator.split("_")
for i, p in enumerate(parts):
if p.isdigit():
period = int(p)
indicator_type = "sma"
elif "_ema" in indicator:
parts = indicator.split("_")
for i, p in enumerate(parts):
if p.isdigit():
period = int(p)
indicator_type = "ema"
# 需要更多歷史數據來計算指標
start_date_dt = datetime.strptime(start_date, "%Y-%m-%d")
extended_start = start_date_dt - relativedelta(days=max(period + 50, 300))
extended_start_str = format_date(extended_start)
try:
# 獲取股價數據
df = _get_stock_price_data(symbol, extended_start_str, end_date)
if df.empty:
return f"找不到 {symbol} 的股價數據來計算 {indicator}"
# 計算指標
if indicator_type == "sma":
df["indicator"] = _calculate_sma(df, period)
desc = f"{period} 日簡單移動平均線"
elif indicator_type == "ema":
df["indicator"] = _calculate_ema(df, period)
desc = f"{period} 日指數移動平均線"
elif indicator_type == "rsi":
df["indicator"] = _calculate_rsi(df, period)
desc = f"{period} 日 RSI 相對強弱指標"
elif indicator_type == "macd":
macd_data = _calculate_macd(df)
df["macd"] = macd_data["macd"]
df["signal"] = macd_data["signal"]
df["histogram"] = macd_data["histogram"]
desc = "MACD 指標12, 26, 9"
elif indicator_type == "bbands":
bbands_data = _calculate_bbands(df, period)
df["bb_upper"] = bbands_data["upper"]
df["bb_middle"] = bbands_data["middle"]
df["bb_lower"] = bbands_data["lower"]
desc = f"{period} 日布林通道"
else:
return f"不支援的技術指標 {indicator}。支援的技術指標sma, ema, rsi, macd, bbands, close_N_sma, close_N_ema"
# 過濾日期範圍
start_date_dt = datetime.strptime(start_date, "%Y-%m-%d")
df = df[df["date"] >= pd.Timestamp(start_date_dt)]
# 只顯示最近的數據
df = df.tail(min(look_back_days, 30))
# 格式化輸出
ind_string = ""
if indicator_type == "macd":
for _, row in df.iterrows():
date = row["date"].strftime("%Y-%m-%d")
macd_val = row["macd"]
signal_val = row["signal"]
hist_val = row["histogram"]
if pd.notna(macd_val):
ind_string += f"{date}: MACD={macd_val:.4f}, Signal={signal_val:.4f}, Histogram={hist_val:.4f}\n"
elif indicator_type == "bbands":
for _, row in df.iterrows():
date = row["date"].strftime("%Y-%m-%d")
upper = row["bb_upper"]
middle = row["bb_middle"]
lower = row["bb_lower"]
close = row["close"]
if pd.notna(upper):
ind_string += f"{date}: Upper={upper:.2f}, Middle={middle:.2f}, Lower={lower:.2f}, Close={close:.2f}\n"
else:
for _, row in df.iterrows():
date = row["date"].strftime("%Y-%m-%d")
value = row["indicator"]
close = row["close"]
if pd.notna(value):
ind_string += f"{date}: {indicator.upper()}={value:.4f}, Close={close:.2f}\n"
if not ind_string:
ind_string = "指定日期範圍內無足夠數據計算指標。\n"
result_str = (
f"## 從 {start_date}{end_date}{desc} ({symbol})\n\n"
+ ind_string
+ "\n\n"
+ INDICATOR_DESCRIPTIONS.get(indicator_type, "技術指標計算自 FinMind 股價數據。")
)
return result_str
except FinMindError as e:
return f"獲取 {indicator} 數據時出錯:{str(e)}"
except Exception as e:
return f"計算 {indicator} 時出錯:{str(e)}"
def _get_per_pbr_indicator(
symbol: str,
indicator: str,
start_date: str,
end_date: str
) -> str:
"""獲取 PER、PBR、殖利率指標"""
try:
response = _make_api_request(
dataset="TaiwanStockPER",
data_id=symbol,
start_date=start_date,
end_date=end_date
)
if "data" in response and response["data"]:
data = response["data"]
# 欄位映射
field_map = {
"per": "PER",
"pbr": "PBR",
"dividend_yield": "dividend_yield"
}
field_name = field_map.get(indicator, indicator)
# 格式化輸出
ind_string = ""
for row in sorted(data, key=lambda x: x.get("date", "")):
date = row.get("date", "")
value = row.get(field_name, "N/A")
ind_string += f"{date}: {value}\n"
if not ind_string:
ind_string = "指定日期範圍內無可用數據。\n"
result_str = (
f"## 從 {start_date}{end_date}{indicator.upper()} 值:\n\n"
+ ind_string
+ "\n\n"
+ INDICATOR_DESCRIPTIONS.get(indicator, "無可用描述。")
)
return result_str
else:
return f"找不到 {symbol}{indicator} 數據。"
except FinMindError as e:
return f"獲取 {indicator} 數據時出錯:{str(e)}"
def _get_margin_indicator(
symbol: str,
indicator: str,
start_date: str,
end_date: str
) -> str:
"""獲取融資融券指標"""
try:
response = _make_api_request(
dataset="TaiwanStockMarginPurchaseShortSale",
data_id=symbol,
start_date=start_date,
end_date=end_date
)
if "data" in response and response["data"]:
data = response["data"]
# 欄位映射
if indicator == "margin_purchase":
field_name = "MarginPurchaseTodayBalance"
display_name = "融資餘額"
else: # short_sale
field_name = "ShortSaleTodayBalance"
display_name = "融券餘額"
# 格式化輸出
ind_string = ""
for row in sorted(data, key=lambda x: x.get("date", "")):
date = row.get("date", "")
value = row.get(field_name, "N/A")
ind_string += f"{date}: {value:,}\n" if isinstance(value, (int, float)) else f"{date}: {value}\n"
if not ind_string:
ind_string = "指定日期範圍內無可用數據。\n"
result_str = (
f"## 從 {start_date}{end_date}{display_name} ({symbol})\n\n"
+ ind_string
+ "\n\n"
+ INDICATOR_DESCRIPTIONS.get(indicator, "無可用描述。")
)
return result_str
else:
return f"找不到 {symbol} 的融資融券數據。"
except FinMindError as e:
return f"獲取融資融券數據時出錯:{str(e)}"
def _get_institutional_indicator(
symbol: str,
start_date: str,
end_date: str
) -> str:
"""獲取三大法人買賣超指標"""
try:
response = _make_api_request(
dataset="TaiwanStockInstitutionalInvestorsBuySell",
data_id=symbol,
start_date=start_date,
end_date=end_date
)
if "data" in response and response["data"]:
data = response["data"]
df = pd.DataFrame(data)
# 按日期分組計算各法人買賣超
ind_string = ""
# 獲取唯一日期
dates = sorted(df["date"].unique())
for date in dates:
day_data = df[df["date"] == date]
# 彙總各法人買賣超
foreign = day_data[day_data["name"].str.contains("外資", na=False)]["buy"].sum() - \
day_data[day_data["name"].str.contains("外資", na=False)]["sell"].sum()
investment_trust = day_data[day_data["name"].str.contains("投信", na=False)]["buy"].sum() - \
day_data[day_data["name"].str.contains("投信", na=False)]["sell"].sum()
dealer = day_data[day_data["name"].str.contains("自營商", na=False)]["buy"].sum() - \
day_data[day_data["name"].str.contains("自營商", na=False)]["sell"].sum()
total = foreign + investment_trust + dealer
ind_string += f"{date}: 外資 {foreign:+,} / 投信 {investment_trust:+,} / 自營 {dealer:+,} / 合計 {total:+,}\n"
if not ind_string:
ind_string = "指定日期範圍內無可用數據。\n"
result_str = (
f"## 從 {start_date}{end_date} 的三大法人買賣超 ({symbol})\n\n"
+ ind_string
+ "\n\n"
+ INDICATOR_DESCRIPTIONS.get("institutional", "無可用描述。")
)
return result_str
else:
return f"找不到 {symbol} 的三大法人買賣超數據。"
except FinMindError as e:
return f"獲取三大法人數據時出錯:{str(e)}"
def _get_foreign_holding_indicator(
symbol: str,
start_date: str,
end_date: str
) -> str:
"""獲取外資持股比例指標"""
try:
response = _make_api_request(
dataset="TaiwanStockShareholding",
data_id=symbol,
start_date=start_date,
end_date=end_date
)
if "data" in response and response["data"]:
data = response["data"]
# 格式化輸出
ind_string = ""
for row in sorted(data, key=lambda x: x.get("date", "")):
date = row.get("date", "")
holding_percent = row.get("ForeignInvestmentSharesRatio", "N/A")
holding_shares = row.get("ForeignInvestmentShares", "N/A")
if isinstance(holding_percent, (int, float)):
ind_string += f"{date}: {holding_percent:.2f}% ({holding_shares:,} 股)\n"
else:
ind_string += f"{date}: {holding_percent}\n"
if not ind_string:
ind_string = "指定日期範圍內無可用數據。\n"
result_str = (
f"## 從 {start_date}{end_date} 的外資持股比例 ({symbol})\n\n"
+ ind_string
+ "\n\n"
+ INDICATOR_DESCRIPTIONS.get("foreign_holding", "無可用描述。")
)
return result_str
else:
return f"找不到 {symbol} 的外資持股數據。"
except FinMindError as e:
return f"獲取外資持股數據時出錯:{str(e)}"
def get_margin_data(
symbol: str,
start_date: str,
end_date: str
) -> str:
"""
獲取個股融資融劵表完整數據
資料區間2001-01-01 ~ now
返回欄位
- date: 日期
- stock_id: 股票代碼
- MarginPurchaseBuy: 融資買進
- MarginPurchaseSell: 融資賣出
- MarginPurchaseTodayBalance: 融資今日餘額
- ShortSaleBuy: 融券買進
- ShortSaleSell: 融券賣出
- ShortSaleTodayBalance: 融券今日餘額
Returns:
str: JSON 格式的融資融券數據
"""
symbol = normalize_stock_id(symbol)
try:
response = _make_api_request(
dataset="TaiwanStockMarginPurchaseShortSale",
data_id=symbol,
start_date=start_date,
end_date=end_date
)
if "data" in response and response["data"]:
result = {
"stock_id": symbol,
"data_type": "margin_trading",
"data": response["data"]
}
return format_output(result)
else:
return format_output({
"stock_id": symbol,
"data": [],
"message": "查無資料"
})
except FinMindError as e:
return format_output({
"error": str(e),
"stock_id": symbol
})
def get_institutional_data(
symbol: str,
start_date: str,
end_date: str
) -> str:
"""
獲取法人買賣表完整數據
資料區間2005-01-01 ~ now
返回欄位
- date: 日期
- stock_id: 股票代碼
- name: 法人名稱外資投信自營商等
- buy: 買進金額
- sell: 賣出金額
Returns:
str: JSON 格式的法人買賣數據
"""
symbol = normalize_stock_id(symbol)
try:
response = _make_api_request(
dataset="TaiwanStockInstitutionalInvestorsBuySell",
data_id=symbol,
start_date=start_date,
end_date=end_date
)
if "data" in response and response["data"]:
result = {
"stock_id": symbol,
"data_type": "institutional_investors",
"data": response["data"]
}
return format_output(result)
else:
return format_output({
"stock_id": symbol,
"data": [],
"message": "查無資料"
})
except FinMindError as e:
return format_output({
"error": str(e),
"stock_id": symbol
})

View File

@ -0,0 +1,387 @@
# -*- coding: utf-8 -*-
"""
FinMind 新聞資料模組
用於獲取台灣股市相關新聞和公告
API 文檔https://finmind.github.io/
主要資料集
- TaiwanStockNews: 台股相關新聞主要新聞來源
- TaiwanStockDividendResult: 除權息公告
- TaiwanStockMonthRevenue: 月營收公告
- TaiwanStockInstitutionalInvestorsBuySell: 法人買賣超
"""
import json
from datetime import datetime, timedelta
from typing import Optional
import pandas as pd
from .finmind_common import (
_make_api_request,
format_date,
get_default_start_date,
normalize_stock_id,
FinMindError,
FinMindDataNotFoundError,
format_output,
)
def get_news(
ticker: str,
start_date: str,
end_date: str,
use_toon: bool = True
) -> str:
"""
獲取台灣股市相關新聞資訊
使用 FinMind TaiwanStockNews 資料集獲取真正的台股新聞
資料區間2019-04-01 ~ now
返回欄位
- date: 新聞日期
- stock_id: 股票代碼
- description: 新聞內容
- link: 新聞連結
- source: 新聞來源
- title: 新聞標題
Args:
ticker: 股票代碼例如 "2330"
start_date: 開始日期
end_date: 結束日期
use_toon: 是否使用 toon 格式保留參數
Returns:
str: JSON 格式的新聞資訊
"""
ticker = normalize_stock_id(ticker)
news_items = []
# 1. 獲取真正的新聞TaiwanStockNews
# 注意TaiwanStockNews 只支援 start_date不支援 end_date
try:
import requests
import os
url = "https://api.finmindtrade.com/api/v4/data"
token = os.getenv("FINMIND_API_TOKEN") or os.getenv("FINMIND_API_KEY")
headers = {"Authorization": f"Bearer {token}"} if token else {}
params = {
"dataset": "TaiwanStockNews",
"data_id": ticker,
"start_date": start_date,
}
response = requests.get(url, headers=headers, params=params, timeout=30)
response.raise_for_status()
news_response = response.json()
if "data" in news_response and news_response["data"]:
# 過濾日期範圍內的新聞
filtered_news = []
for item in news_response["data"]:
news_date = item.get("date", "")[:10] # 只取日期部分
if news_date and start_date <= news_date <= end_date:
filtered_news.append(item)
# 取最近 20 筆新聞
for item in filtered_news[-20:]:
news_items.append({
"title": item.get("title", "無標題"),
"date": item.get("date", "")[:10], # 只保留日期部分
"type": "news",
"summary": "", # TaiwanStockNews 沒有 description 欄位
"link": item.get("link", ""),
"source": item.get("source", "FinMind")
})
except FinMindError as e:
print(f"獲取新聞時發生錯誤: {e}")
# 2. 如果沒有新聞或新聞太少,補充其他資訊
if len(news_items) < 5:
# 補充股利公告
try:
dividend_response = _make_api_request(
dataset="TaiwanStockDividendResult",
data_id=ticker,
start_date=start_date,
end_date=end_date
)
if "data" in dividend_response and dividend_response["data"]:
for item in dividend_response["data"][:3]:
news_items.append({
"title": f"{ticker} 除權息公告",
"date": item.get("date", ""),
"type": "dividend",
"summary": f"除權息日:{item.get('date', '')}"
f"參考價:{item.get('reference_price', 'N/A')}"
f"股利合計:{item.get('stock_and_cache_dividend', 'N/A')}",
"link": "",
"source": "FinMind"
})
except FinMindError:
pass
# 補充月營收公告
try:
revenue_response = _make_api_request(
dataset="TaiwanStockMonthRevenue",
data_id=ticker,
start_date=start_date,
end_date=end_date
)
if "data" in revenue_response and revenue_response["data"]:
for item in revenue_response["data"][-3:]:
revenue = item.get("revenue", 0)
if isinstance(revenue, (int, float)):
revenue_str = f"{revenue:,.0f}"
else:
revenue_str = str(revenue)
news_items.append({
"title": f"{ticker} 月營收公告",
"date": item.get("date", ""),
"type": "revenue",
"summary": f"{item.get('revenue_year', '')}{item.get('revenue_month', '')}月營收:{revenue_str}",
"link": "",
"source": "FinMind"
})
except FinMindError:
pass
# 按日期排序(最新的在前)
news_items.sort(key=lambda x: x.get("date", ""), reverse=True)
# 統計新聞類型
news_count = len([n for n in news_items if n.get("type") == "news"])
other_count = len(news_items) - news_count
result = {
"stock_id": ticker,
"items": len(news_items),
"news_count": news_count,
"note": f"包含 {news_count} 則新聞" + (f"{other_count} 則公司公告" if other_count > 0 else ""),
"feed": news_items[:15] # 限制最多 15 筆
}
return format_output(result, use_toon)
def get_global_news(
curr_date: str,
look_back_days: int = 7
) -> str:
"""
獲取台灣股市整體市場新聞/動態
注意FinMind 不提供全球新聞 API
本函式透過市場整體指標提供替代資訊
Args:
curr_date: 當前日期
look_back_days: 回溯天數
Returns:
str: JSON 格式的市場動態
"""
curr_date_dt = datetime.strptime(curr_date, "%Y-%m-%d")
start_date_dt = curr_date_dt - timedelta(days=look_back_days)
start_date = format_date(start_date_dt)
end_date = format_date(curr_date_dt)
market_news = []
# 1. 獲取整體市場融資融券
try:
margin_response = _make_api_request(
dataset="TaiwanStockTotalMarginPurchaseShortSale",
start_date=start_date,
end_date=end_date
)
if "data" in margin_response and margin_response["data"]:
for item in margin_response["data"][-3:]: # 取最近 3 筆
market_news.append({
"title": "台股整體融資融券動態",
"date": item.get("date", ""),
"type": "margin_total",
"summary": f"{item.get('name', '')}:今日餘額 {item.get('TodayBalance', 'N/A'):,}"
f"增減 {item.get('TodayBalance', 0) - item.get('YesBalance', 0):+,}",
"source": "FinMind"
})
except FinMindError:
pass
# 2. 獲取整體三大法人買賣超
try:
institutional_response = _make_api_request(
dataset="TaiwanStockTotalInstitutionalInvestors",
start_date=start_date,
end_date=end_date
)
if "data" in institutional_response and institutional_response["data"]:
df = pd.DataFrame(institutional_response["data"])
dates = sorted(df["date"].unique(), reverse=True)[:3]
for date in dates:
day_data = df[df["date"] == date]
summary_parts = []
for _, row in day_data.iterrows():
name = row.get("name", "")
buy = row.get("buy", 0)
sell = row.get("sell", 0)
net = buy - sell
if isinstance(net, (int, float)):
summary_parts.append(f"{name} {net/100000000:+,.2f}")
if summary_parts:
market_news.append({
"title": "台股三大法人買賣超",
"date": date,
"type": "institutional_total",
"summary": "".join(summary_parts),
"source": "FinMind"
})
except FinMindError:
pass
# 按日期排序
market_news.sort(key=lambda x: x.get("date", ""), reverse=True)
result = {
"market": "Taiwan",
"items": len(market_news),
"note": "FinMind 不提供新聞 API此為市場整體動態資訊",
"feed": market_news
}
return format_output(result)
def get_insider_sentiment(ticker: str, curr_date: str) -> str:
"""
獲取內部人交易情緒透過法人買賣超資料模擬
Args:
ticker: 股票代碼
curr_date: 當前日期
Returns:
str: JSON 格式的情緒分析
"""
ticker = normalize_stock_id(ticker)
curr_date_dt = datetime.strptime(curr_date, "%Y-%m-%d")
start_date_dt = curr_date_dt - timedelta(days=30)
start_date = format_date(start_date_dt)
try:
response = _make_api_request(
dataset="TaiwanStockInstitutionalInvestorsBuySell",
data_id=ticker,
start_date=start_date,
end_date=curr_date
)
if "data" in response and response["data"]:
df = pd.DataFrame(response["data"])
# 計算整體買賣超趨勢
total_buy = df["buy"].sum()
total_sell = df["sell"].sum()
net = total_buy - total_sell
# 判斷情緒
if net > 0:
sentiment = "正面"
sentiment_score = min(1.0, net / (total_buy + total_sell) * 2) if (total_buy + total_sell) > 0 else 0
else:
sentiment = "負面"
sentiment_score = max(-1.0, net / (total_buy + total_sell) * 2) if (total_buy + total_sell) > 0 else 0
result = {
"stock_id": ticker,
"period": f"{start_date} ~ {curr_date}",
"sentiment": sentiment,
"sentiment_score": round(sentiment_score, 3),
"total_buy": int(total_buy),
"total_sell": int(total_sell),
"net": int(net),
"note": "基於法人買賣超資料計算的情緒指標"
}
return format_output(result)
else:
return format_output({
"stock_id": ticker,
"error": "查無資料"
})
except FinMindError as e:
return format_output({
"stock_id": ticker,
"error": str(e)
})
def get_insider_transactions(symbol: str) -> str:
"""
獲取內部人交易資訊
注意FinMind 未提供內部人交易 API
本函式透過法人買賣超資料提供類似資訊
Args:
symbol: 股票代碼
Returns:
str: JSON 格式的交易資訊
"""
symbol = normalize_stock_id(symbol)
end_date = format_date(datetime.now())
start_date = get_default_start_date(years_back=0) # 最近 1 個月
start_date_dt = datetime.now() - timedelta(days=30)
start_date = format_date(start_date_dt)
try:
response = _make_api_request(
dataset="TaiwanStockInstitutionalInvestorsBuySell",
data_id=symbol,
start_date=start_date,
end_date=end_date
)
if "data" in response and response["data"]:
# 只保留最近 15 筆
data = response["data"][-15:]
result = {
"stock_id": symbol,
"data_type": "institutional_trading",
"note": "FinMind 不提供內部人交易 API此為法人買賣超資料",
"data": data
}
return format_output(result)
else:
return format_output({
"stock_id": symbol,
"data": [],
"message": "查無資料"
})
except FinMindError as e:
return format_output({
"error": str(e),
"stock_id": symbol
})

View File

@ -0,0 +1,250 @@
# -*- coding: utf-8 -*-
"""
FinMind 股價資料模組
用於獲取台灣股市股價數據
API 文檔https://finmind.github.io/tutor/TaiwanMarket/Technical/
可用的資料集
- TaiwanStockPrice: 股價日成交資訊1994-10-01 ~ now
- TaiwanStockInfo: 台股總覽
- TaiwanStockPER: 個股 PERPBR 資料
注意本模組不使用需要 backer/sponsor 會員資格的功能
TaiwanStockPriceAdjTaiwanStockWeekPriceTaiwanStockMonthPrice
"""
import json
from datetime import datetime
from typing import Optional
from .finmind_common import (
_make_api_request,
format_date,
normalize_stock_id,
FinMindError,
FinMindDataNotFoundError,
_filter_by_date_range,
format_output,
)
def get_stock(
symbol: str,
start_date: str,
end_date: str
) -> str:
"""
返回台灣股票的每日 OHLCV 數據
資料區間1994-10-01 ~ now
返回欄位
- date: 日期
- stock_id: 股票代碼
- Trading_Volume: 成交量
- Trading_money: 成交金額
- open: 開盤價
- max: 最高價
- min: 最低價
- close: 收盤價
- spread: 漲跌價差
- Trading_turnover: 成交筆數
Args:
symbol: 股票代碼例如 "2330"
start_date: 開始日期格式為 YYYY-MM-DD
end_date: 結束日期格式為 YYYY-MM-DD
Returns:
str: CSV 格式的股價數據字串
"""
symbol = normalize_stock_id(symbol)
try:
response = _make_api_request(
dataset="TaiwanStockPrice",
data_id=symbol,
start_date=start_date,
end_date=end_date
)
if "data" in response and response["data"]:
data = response["data"]
# 轉換為 CSV 格式(與 Alpha Vantage 保持一致)
if not data:
return "date,open,high,low,close,volume\n"
# 建立 CSV 標頭
csv_lines = ["date,open,high,low,close,volume"]
for row in data:
csv_lines.append(
f"{row.get('date', '')},"
f"{row.get('open', '')},"
f"{row.get('max', '')},"
f"{row.get('min', '')},"
f"{row.get('close', '')},"
f"{row.get('Trading_Volume', '')}"
)
return "\n".join(csv_lines)
else:
return "date,open,high,low,close,volume\n"
except FinMindDataNotFoundError:
return "date,open,high,low,close,volume\n"
except FinMindError as e:
print(f"警告:獲取股價數據失敗:{e}")
return "date,open,high,low,close,volume\n"
def get_stock_info(stock_id: Optional[str] = None) -> str:
"""
獲取台股總覽資訊
包含所有上市上櫃興櫃的股票名稱代碼和產業類別
返回欄位
- industry_category: 產業類別
- stock_id: 股票代碼
- stock_name: 股票名稱
- type: 類型twse/tpex/rotc
- date: 更新日期
Args:
stock_id: 股票代碼選填可查詢特定股票
Returns:
str: JSON 格式的股票資訊
"""
try:
response = _make_api_request(
dataset="TaiwanStockInfo",
data_id=stock_id
)
if "data" in response and response["data"]:
# 如果查詢特定股票,只返回該股票的資訊
if stock_id:
stock_id = normalize_stock_id(stock_id)
filtered = [
d for d in response["data"]
if d.get("stock_id") == stock_id
]
return format_output(filtered)
else:
# 限制返回數量以減少 token
data = response["data"][:100]
return format_output(data)
else:
return format_output([])
except FinMindError as e:
return format_output({"error": str(e)})
def get_stock_per(
symbol: str,
start_date: str,
end_date: str
) -> str:
"""
獲取個股 PERPBR 資料
返回欄位
- date: 日期
- stock_id: 股票代碼
- dividend_yield: 殖利率
- PER: 本益比
- PBR: 股價淨值比
Args:
symbol: 股票代碼例如 "2330"
start_date: 開始日期
end_date: 結束日期
Returns:
str: JSON 格式的 PER/PBR 資料
"""
symbol = normalize_stock_id(symbol)
try:
response = _make_api_request(
dataset="TaiwanStockPER",
data_id=symbol,
start_date=start_date,
end_date=end_date
)
if "data" in response and response["data"]:
result = {
"stock_id": symbol,
"data": response["data"]
}
return format_output(result)
else:
return format_output({
"stock_id": symbol,
"data": [],
"message": "查無資料"
})
except FinMindDataNotFoundError:
return format_output({
"stock_id": symbol,
"data": [],
"message": f"找不到股票 {symbol} 的 PER/PBR 資料"
})
except FinMindError as e:
return format_output({
"error": str(e),
"stock_id": symbol
})
def get_day_trading(
symbol: str,
start_date: str,
end_date: str
) -> str:
"""
獲取當日沖銷交易標的及成交量值
Args:
symbol: 股票代碼例如 "2330"
start_date: 開始日期
end_date: 結束日期
Returns:
str: JSON 格式的當沖資料
"""
symbol = normalize_stock_id(symbol)
try:
response = _make_api_request(
dataset="TaiwanStockDayTrading",
data_id=symbol,
start_date=start_date,
end_date=end_date
)
if "data" in response and response["data"]:
result = {
"stock_id": symbol,
"data": response["data"]
}
return format_output(result)
else:
return format_output({
"stock_id": symbol,
"data": [],
"message": "查無資料"
})
except FinMindError as e:
return format_output({
"error": str(e),
"stock_id": symbol
})

View File

@ -17,6 +17,21 @@ from .alpha_vantage import (
) )
from .alpha_vantage_common import AlphaVantageRateLimitError from .alpha_vantage_common import AlphaVantageRateLimitError
# FinMind 台灣股市資料供應商
from .finmind import (
get_stock as get_finmind_stock,
get_indicator as get_finmind_indicator,
get_fundamentals as get_finmind_fundamentals,
get_balance_sheet as get_finmind_balance_sheet,
get_cashflow as get_finmind_cashflow,
get_income_statement as get_finmind_income_statement,
get_news as get_finmind_news,
get_global_news as get_finmind_global_news,
get_insider_sentiment as get_finmind_insider_sentiment,
get_insider_transactions as get_finmind_insider_transactions,
FinMindRateLimitError,
)
# 設定和路由邏輯 # 設定和路由邏輯
from .config import get_config from .config import get_config
@ -58,7 +73,9 @@ VENDOR_LIST = [
"local", "local",
"yfinance", "yfinance",
"openai", "openai",
"google" "google",
"alpha_vantage",
"finmind", # 台灣股市資料供應商
] ]
# 方法與其特定供應商實現的映射 # 方法與其特定供應商實現的映射
@ -68,33 +85,39 @@ VENDOR_METHODS = {
"alpha_vantage": get_alpha_vantage_stock, "alpha_vantage": get_alpha_vantage_stock,
"yfinance": get_YFin_data_online, "yfinance": get_YFin_data_online,
"local": get_YFin_data, "local": get_YFin_data,
"finmind": get_finmind_stock, # 台股資料
}, },
# 技術指標 # 技術指標
"get_indicators": { "get_indicators": {
"alpha_vantage": get_alpha_vantage_indicator, "alpha_vantage": get_alpha_vantage_indicator,
"yfinance": get_stock_stats_indicators_window, "yfinance": get_stock_stats_indicators_window,
"local": get_stock_stats_indicators_window "local": get_stock_stats_indicators_window,
"finmind": get_finmind_indicator, # 台股技術指標/籌碼面
}, },
# 基本面數據 # 基本面數據
"get_fundamentals": { "get_fundamentals": {
"alpha_vantage": get_alpha_vantage_fundamentals, "alpha_vantage": get_alpha_vantage_fundamentals,
"openai": get_fundamentals_openai, "openai": get_fundamentals_openai,
"yfinance": get_yfinance_fundamentals, "yfinance": get_yfinance_fundamentals,
"finmind": get_finmind_fundamentals, # 台股基本面
}, },
"get_balance_sheet": { "get_balance_sheet": {
"alpha_vantage": get_alpha_vantage_balance_sheet, "alpha_vantage": get_alpha_vantage_balance_sheet,
"yfinance": get_yfinance_balance_sheet, "yfinance": get_yfinance_balance_sheet,
"local": get_simfin_balance_sheet, "local": get_simfin_balance_sheet,
"finmind": get_finmind_balance_sheet, # 台股資產負債表
}, },
"get_cashflow": { "get_cashflow": {
"alpha_vantage": get_alpha_vantage_cashflow, "alpha_vantage": get_alpha_vantage_cashflow,
"yfinance": get_yfinance_cashflow, "yfinance": get_yfinance_cashflow,
"local": get_simfin_cashflow, "local": get_simfin_cashflow,
"finmind": get_finmind_cashflow, # 台股現金流量表
}, },
"get_income_statement": { "get_income_statement": {
"alpha_vantage": get_alpha_vantage_income_statement, "alpha_vantage": get_alpha_vantage_income_statement,
"yfinance": get_yfinance_income_statement, "yfinance": get_yfinance_income_statement,
"local": get_simfin_income_statements, "local": get_simfin_income_statements,
"finmind": get_finmind_income_statement, # 台股損益表
}, },
# 新聞數據 # 新聞數據
"get_news": { "get_news": {
@ -102,18 +125,22 @@ VENDOR_METHODS = {
"openai": get_stock_news_openai, "openai": get_stock_news_openai,
"google": get_google_news, "google": get_google_news,
"local": [get_finnhub_news, get_reddit_company_news, get_google_news], "local": [get_finnhub_news, get_reddit_company_news, get_google_news],
"finmind": get_finmind_news, # 台股公告/法人動態
}, },
"get_global_news": { "get_global_news": {
"openai": get_global_news_openai, "openai": get_global_news_openai,
"local": get_reddit_global_news "local": get_reddit_global_news,
"finmind": get_finmind_global_news, # 台股市場動態
}, },
"get_insider_sentiment": { "get_insider_sentiment": {
"local": get_finnhub_company_insider_sentiment "local": get_finnhub_company_insider_sentiment,
"finmind": get_finmind_insider_sentiment, # 台股法人情緒
}, },
"get_insider_transactions": { "get_insider_transactions": {
"alpha_vantage": get_alpha_vantage_insider_transactions, "alpha_vantage": get_alpha_vantage_insider_transactions,
"yfinance": get_yfinance_insider_transactions, "yfinance": get_yfinance_insider_transactions,
"local": get_finnhub_company_insider_transactions, "local": get_finnhub_company_insider_transactions,
"finmind": get_finmind_insider_transactions, # 台股法人交易
}, },
} }
@ -213,6 +240,12 @@ def route_to_vendor(method: str, *args, **kwargs):
print(f"調試:速率限制詳細資訊:{e}") print(f"調試:速率限制詳細資訊:{e}")
# 繼續到下一個供應商進行備援 # 繼續到下一個供應商進行備援
continue continue
except FinMindRateLimitError as e:
if vendor == "finmind":
print(f"速率限制:超過 FinMind 速率限制,將備援至下一個可用供應商")
print(f"調試:速率限制詳細資訊:{e}")
# 繼續到下一個供應商進行備援
continue
except Exception as e: except Exception as e:
# 記錄詳細錯誤但繼續其他實現 # 記錄詳細錯誤但繼續其他實現
error_type = type(e).__name__ error_type = type(e).__name__

View File

@ -19,16 +19,24 @@ DEFAULT_CONFIG = {
"max_recur_limit": 100, "max_recur_limit": 100,
# 資料供應商設定 # 資料供應商設定
# 類別層級設定 (該類別所有工具的預設值) # 類別層級設定 (該類別所有工具的預設值)
# 可用供應商:
# - yfinance: Yahoo Finance (美股為主)
# - alpha_vantage: Alpha Vantage API (美股為主)
# - finmind: FinMind API (台股專用)
# - openai: OpenAI 網路搜尋
# - google: Google News
# - local: 本地資料
"data_vendors": { "data_vendors": {
"core_stock_apis": "yfinance", # 選項: yfinance, alpha_vantage, local "core_stock_apis": "yfinance", # 選項: yfinance, alpha_vantage, finmind, local
"technical_indicators": "yfinance", # 選項: yfinance, alpha_vantage, local "technical_indicators": "yfinance", # 選項: yfinance, alpha_vantage, finmind, local
"fundamental_data": "alpha_vantage", # 選項: openai, alpha_vantage, local "fundamental_data": "alpha_vantage", # 選項: openai, alpha_vantage, yfinance, finmind
"news_data": "openai", # 選項: openai, alpha_vantage, google, local "news_data": "openai", # 選項: openai, alpha_vantage, google, finmind, local
}, },
# 工具層級設定 (優先於類別層級設定) # 工具層級設定 (優先於類別層級設定)
"tool_vendors": { "tool_vendors": {
# 範例: "get_stock_data": "alpha_vantage", # 覆寫類別預設值 # 範例: "get_stock_data": "alpha_vantage", # 覆寫類別預設值
# 範例: "get_news": "openai", # 覆寫類別預設值 # 範例: "get_news": "openai", # 覆寫類別預設值
# 範例: "get_stock_data": "finmind", # 使用 FinMind 獲取台股資料
"get_global_news": "openai", # get_global_news 不支持 alpha_vantage使用 openai 作為主要供應商 "get_global_news": "openai", # get_global_news 不支持 alpha_vantage使用 openai 作為主要供應商
}, },
} }