Major Changes: - Add StreamingService with OpenAI Compatible format - Upgrade Chat component V2 with Ant Design X integration - Implement AIA module with 12 intelligent agents - Update API routes to unified /api/v1 prefix - Update system documentation Backend (~1300 lines): - common/streaming: OpenAI Compatible adapter - modules/aia: 12 agents, conversation service, streaming integration - Update route versions (RVW, PKB to v1) Frontend (~3500 lines): - modules/aia: AgentHub + ChatWorkspace (100% prototype restoration) - shared/Chat: AIStreamChat, ThinkingBlock, useAIStream Hook - Update API endpoints to v1 Documentation: - AIA module status guide - Universal capabilities catalog - System overview updates - All module documentation sync Tested: Stream response verified, authentication working Status: AIA V2.0 core completed (85%)
285 lines
6.0 KiB
Markdown
285 lines
6.0 KiB
Markdown
# PKB<4B>滨垢<E6BBA8>蠘<EFBFBD>撉諹<E69289><E8ABB9><EFBFBD><EFBFBD>
|
||
|
||
## <20>㴓 撉諹<E69289><E8ABB9>格<EFBFBD>
|
||
|
||
撉諹<EFBFBD>PKB璅∪<EFBFBD><EFBFBD>滨垢<EFBFBD>蠘<EFBFBD><EFBFBD>臬炏甇<EFBFBD>虜餈鞱<EFBFBD>嚗<EFBFBD><EFBFBD><EFBFBD>穿<EFBFBD>
|
||
1. <20>?Dashboard憿菟𢒰皜脫<E79A9C>
|
||
2. <20>?<3F>𥕦遣<F0A595A6>亥<EFBFBD>摨𤘪<E691A8>蝔?
|
||
3. <20>?Workspace憿菟𢒰<E88F9F>?蝘滚極雿𨀣芋撘?
|
||
4. <20>?Ant Design X Chat<61><74><EFBFBD>
|
||
|
||
---
|
||
|
||
## <20><> 敹恍<E695B9>笔鍳<E7AC94>?
|
||
|
||
### 1. <20>臬𢆡<E887AC>𡒊垢<F0A1928A>滚𦛚
|
||
```bash
|
||
cd D:\MyCursor\AIclinicalresearch\backend
|
||
npm run dev
|
||
```
|
||
|
||
### 2. <20>臬𢆡<E887AC>滨垢<E6BBA8>滚𦛚
|
||
```bash
|
||
cd D:\MyCursor\AIclinicalresearch\frontend-v2
|
||
npm run dev
|
||
```
|
||
|
||
### 3. 霈輸䔮憿菟𢒰
|
||
<EFBFBD>枏<EFBFBD>瘚讛<EFBFBD><EFBFBD>刻挪<EFBFBD>殷<EFBFBD>`http://localhost:5173/knowledge-base/dashboard`
|
||
|
||
---
|
||
|
||
## <20>?撉諹<E69289>皜<EFBFBD><E79A9C>
|
||
|
||
### <20>嗆挾1嚗鋽ashboard憿菟𢒰撉諹<E69289>
|
||
|
||
#### 1.1 憿菟𢒰皜脫<E79A9C>
|
||
- [ ] 憿菟𢒰甇<F0A292B0>虜<EFBFBD>㰘蝸嚗峕<E59A97><E5B395>賢<EFBFBD>
|
||
- [ ] <20>𥕦遣<F0A595A6>亥<EFBFBD>摨枏㨃<E69E8F><E3A883>遬蝷箸迤撣賂<E692A3><E8B382>肽𠧧皜𣂼<E79A9C><F0A382BC>峕艶嚗?
|
||
- [ ] 5銝芰䰻霂<E4B0BB><E99C82>蝐餃<E89D90><E9A483>暹<EFBFBD><E69AB9>曄內甇<E585A7>虜
|
||
- [ ] <20>唳<EFBFBD><E594B3>亥<EFBFBD>摨枏㨃<E69E8F><E3A883><EFBFBD>銵冽遬蝷綽<E89DB7>憒<EFBFBD><E68692><EFBFBD>㗇㺭<E39787>殷<EFBFBD>
|
||
|
||
#### 1.2 <20>𥕦遣<F0A595A6>亥<EFBFBD>摨𤘪<E691A8>蝔?
|
||
**甇仿炊**:
|
||
1. <20>孵稬"<22>𥕦遣<F0A595A6>亥<EFBFBD>摨?<3F>∠<EFBFBD>
|
||
2. 撉諹<E69289>Modal撘孵枂
|
||
3. <20>㗇𥋘"銝游<E98A9D><E6B8B8><EFBFBD><EFBFBD>"蝐餃<E89D90>
|
||
4. <20>孵稬"銝衤<E98A9D>甇?
|
||
5. 颲枏<E9A2B2><E69E8F>滨妍嚗?瘚贝<E7989A><E8B49D>亥<EFBFBD>摨𡤄5"
|
||
6. <20>㗇𥋘蝘穃恕嚗?敹<><E695B9>蝘?
|
||
7. <20>孵稬"銝衤<E98A9D>甇?
|
||
8. <20>亦<EFBFBD><E4BAA6><EFBFBD>辣銝𠹺<E98A9D><F0A0B9BA>屸𢒰
|
||
9. <20>孵稬"摰峕<E691B0>撟嗉<E6929F><E59789>亙極雿𨅯蝱"
|
||
|
||
**憸<><E686B8>蝏𤘪<E89D8F>**:
|
||
- [ ] Modal甇<6C>虜撘孵枂
|
||
- [ ] 3甇亙<E79487>撖潭迤撣詨<E692A3><E8A9A8>?
|
||
- [ ] 銵典<E98AB5>撉諹<E69289><E8ABB9><EFBFBD><EFBFBD>嚗<EFBFBD><E59A97>蝘啣<E89D98>憛恬<E6869B>
|
||
- [ ] <20>𣂼<EFBFBD><F0A382BC>𥕦遣<F0A595A6>舘歲頧砍<E9A0A7>Workspace
|
||
|
||
#### 1.3 <20>瑕<EFBFBD>璉<EFBFBD><E79289>?
|
||
- [ ] <20>𥕦遣<F0A595A6>∠<EFBFBD>擃睃漲銝?40px
|
||
- [ ] <20>∠<EFBFBD><E288A0><EFBFBD><EFBFBD>銝氳ounded-xl
|
||
- [ ] <20>砍<EFBFBD><E7A08D>嗆<EFBFBD>shadow-lg<6C><67><EFBFBD>
|
||
- [ ] "餈𥕦<E9A488>撌乩<E6928C><E4B9A9>?<3F>厰僼銝漳late-800<30>峕艶
|
||
|
||
---
|
||
|
||
### <20>嗆挾2嚗阳orkspace憿菟𢒰撉諹<E69289>
|
||
|
||
#### 2.1 憿菟𢒰撣<F0A292B0><E692A3>
|
||
- [ ] 瘛梯𠧧Header嚗Ê̄g-slate-900嚗厰<E59A97>摨虫蛹h-14
|
||
- [ ] "餈𥪜<E9A488><F0A5AA9C>亥<EFBFBD>摨枏<E691A8>銵?<3F>厰僼<E58EB0>曄內
|
||
- [ ] <20>亥<EFBFBD>摨枏<E691A8>蝘唳遬蝷箸迤蝖?
|
||
- [ ] Tab撖潸⏛<E6BDB8>曄內嚗<E585A7>惣<EFBFBD>賡䔮蝑𢛵<E89D91><F0A29BB5>䰻霂<E4B0BB><E99C82>鈭改<E988AD>
|
||
- [ ] 暺䁅恕瞈<E68195>瘣?<3F>箄<EFBFBD><E7AE84>桃<EFBFBD>"Tab
|
||
|
||
#### 2.2 <20>箄<EFBFBD><E7AE84>桃<EFBFBD>Tab
|
||
**撌乩<E6928C>璅∪<E79285><E288AA>㗇𥋘<E39787>?*:
|
||
- [ ] Collapse蝏<65>辣甇<E8BEA3>虜撅訫<E69285>/<2F>嗉絲
|
||
- [ ] 3蝘齿芋撘嗬adio甇<6F>虜<EFBFBD>曄內
|
||
- [ ] <20>冽<EFBFBD><E586BD><EFBFBD>粉璅∪<E79285>嚗𡁏遬蝷摭oken雿輻鍂<E8BCBB><E98D82><EFBFBD>敶Z<E695B6>摨行辺
|
||
- [ ] <20>鞟<EFBFBD>蝎曇粉璅∪<E79285>嚗𡁏遬蝷箸<E89DB7>獢<EFBFBD><E78DA2>㗇𥋘銝𧢲<E98A9D>獢?
|
||
- [ ] <20>孵<EFBFBD><E5ADB5><EFBFBD>芋撘𧶏<E69298><F0A7B68F>曄內璅⊥踎<E28AA5>㗇𥋘銝𧢲<E98A9D>獢?
|
||
|
||
**<EFBFBD>冽<EFBFBD><EFBFBD><EFBFBD>粉璅∪<EFBFBD>**:
|
||
1. <20>㗇𥋘"<22>冽<EFBFBD><E586BD><EFBFBD>粉璅∪<E79285>"
|
||
2. <20>亦<EFBFBD>甈Z<E79488>瘨<EFBFBD><E798A8>
|
||
3. 颲枏<E9A2B2>瘚贝<E7989A><E8B49D>桅<EFBFBD>嚗?霂瑟<E99C82>餌<EFBFBD>餈嗘葵<E59798>亥<EFBFBD>摨梶<E691A8>銝餉<E98A9D><E9A489><EFBFBD>捆"
|
||
4. <20>孵稬<E5ADB5>煾<EFBFBD>?
|
||
|
||
**憸<><E686B8>蝏𤘪<E89D8F>**:
|
||
- [ ] 甈Z<E79488>瘨<EFBFBD><E798A8>甇<EFBFBD>虜<EFBFBD>曄內
|
||
- [ ] 颲枏<E9A2B2>獢<EFBFBD>迤撣詨極雿?
|
||
- [ ] 瘨<><E798A8><EFBFBD>煾<EFBFBD><E785BE><EFBFBD><EFBFBD>?
|
||
- [ ] AI<41>𧼮<EFBFBD>甇<EFBFBD>虜<EFBFBD>曄內嚗<E585A7><E59A97>撘讛<E69298><E8AE9B>綽<EFBFBD>
|
||
- [ ] 瘨<><E798A8>瘞娍部<E5A88D>瑕<EFBFBD>甇<EFBFBD>&嚗㇁I: slate-50, <20>冽<EFBFBD>: blue-600嚗?
|
||
|
||
**<EFBFBD>鞟<EFBFBD>蝎曇粉璅∪<EFBFBD>**:
|
||
1. <20>㗇𥋘"<22>鞟<EFBFBD>蝎曇粉璅∪<E79285>"
|
||
2. <20>其<EFBFBD><E585B6>㗇<EFBFBD>銝剝<E98A9D>㗇𥋘1-2蝭<32><E89DAD>獢?
|
||
3. <20>亦<EFBFBD>"撌脤<E6928C>㗇𥋘 X 蝭<><E89DAD>獢?<3F>鞟內
|
||
4. 颲枏<E9A2B2>瘚贝<E7989A><E8B49D>桅<EFBFBD>
|
||
5. <20>煾<EFBFBD><E785BE><EFBFBD><EFBFBD>?
|
||
|
||
**憸<><E686B8>蝏𤘪<E89D8F>**:
|
||
- [ ] <20><>﹝<EFBFBD>㗇𥋘甇<F0A58B98>虜
|
||
- [ ] <20><>憭𡁻<E686AD>?蝭<><E89DAD><EFBFBD>嗥<EFBFBD><E597A5>?
|
||
- [ ] Alert<72>鞟內<E99E9F>曄內
|
||
- [ ] Chat<61>屸𢒰甇<F0A292B0>虜撌乩<E6928C>
|
||
|
||
**<EFBFBD>孵<EFBFBD><EFBFBD><EFBFBD>芋撘?*:
|
||
1. <20>㗇𥋘"<22>孵<EFBFBD><E5ADB5><EFBFBD>芋撘?
|
||
2. <20>㗇𥋘璅⊥踎嚗?銝游<E98A9D><E6B8B8>𠉛弦靽⊥<E99DBD><E28AA5>𣂼<EFBFBD>"
|
||
3. <20>孵稬"撘<>憪𧢲<E686AA>銵?
|
||
4. <20>亦<EFBFBD>餈𥕦漲<F0A595A6>?
|
||
|
||
**憸<><E686B8>蝏𤘪<E89D8F>**:
|
||
- [ ] 璅⊥踎<E28AA5>㗇𥋘甇<F0A58B98>虜
|
||
- [ ] <20>扯<EFBFBD><E689AF>厰僼<E58EB0>舐<EFBFBD><E88890>?
|
||
- [ ] 餈𥕦漲<F0A595A6>⊥迤撣豢遬蝷?
|
||
|
||
#### 2.3 <20>亥<EFBFBD>韏<EFBFBD>漣Tab
|
||
1. <20>孵稬"<22>亥<EFBFBD>韏<EFBFBD>漣"Tab
|
||
2. <20>亦<EFBFBD><E4BAA6><EFBFBD>﹝<EFBFBD>𡑒”銵冽聢
|
||
|
||
**憸<><E686B8>蝏𤘪<E89D8F>**:
|
||
- [ ] Tab<61><62>揢甇<E68FA2>虜
|
||
- [ ] 銵冽聢甇<E881A2>虜<EFBFBD>曄內
|
||
- [ ] <20><>﹝靽⊥<E99DBD>甇<EFBFBD>&嚗<EFBC86><E59A97>隞嗅<E99A9E><E59785><EFBFBD>𠶖<EFBFBD><F0A0B696><EFBFBD><EFBFBD>之撠譌<E692A0><E8AD8C>okens<6E><73><EFBFBD>隡䭾𧒄<E4ADBE>湛<EFBFBD>
|
||
- [ ] MinerU閫<55><E996AB><EFBFBD>嗆<EFBFBD><E59786>噬蝡䭾迤蝖格遬蝷?
|
||
- [ ] <20>𣳇膄<F0A3B387>厰僼<E58EB0>曄內嚗<E585A7><E59A97><EFBFBD>𨀣𧒄嚗?
|
||
|
||
#### 2.4 PDF靘扯器<E689AF>?
|
||
1. <20>冽惣<E586BD>賡䔮蝑烱ab銝?
|
||
2. <20>孵稬<E5ADB5>喃儒"撅訫<E69285> PDF 憸<><E686B8>"<22>厰僼
|
||
3. <20>亦<EFBFBD>PDF靘扯器<E689AF>?
|
||
|
||
**憸<><E686B8>蝏𤘪<E89D8F>**:
|
||
- [ ] 靘扯器<E689AF>譍<EFBFBD><E8AD8D>喃儒皛穃<E79A9B>嚗Ònimate-slide-in-right嚗?
|
||
- [ ] 摰賢漲銝?5%
|
||
- [ ] <20>喲𡡒<E596B2>厰僼甇<E583BC>虜撌乩<E6928C>
|
||
- [ ] PDF璅⊥<E79285><E28AA5>峕艶甇<E889B6>虜<EFBFBD>曄內
|
||
|
||
---
|
||
|
||
### <20>嗆挾3嚗𡁏甅撘讐移蝖桀漲撉諹<E69289>
|
||
|
||
#### 3.1 Dashboard<72>瑕<EFBFBD>
|
||
```css
|
||
<EFBFBD>?<EFBFBD>𥕦遣<EFBFBD>∠<EFBFBD>: bg-gradient-to-br from-blue-50 to-indigo-50
|
||
<EFBFBD>?<EFBFBD>∠<EFBFBD>擃睃漲: h-[240px]
|
||
<EFBFBD>?<EFBFBD>厰僼憸𡏭𠧧: bg-slate-800 hover:bg-blue-600
|
||
<EFBFBD>?<EFBFBD><EFBFBD><EFBFBD>: rounded-xl
|
||
```
|
||
|
||
#### 3.2 Workspace<63>瑕<EFBFBD>
|
||
```css
|
||
<EFBFBD>?Header: h-14 bg-slate-900
|
||
<EFBFBD>?Tab瞈<EFBFBD>瘣? border-blue-600 text-blue-600 font-bold
|
||
<EFBFBD>?PDF靘扯器<EFBFBD>? w-[45%] bg-slate-100
|
||
<EFBFBD>?瘨<EFBFBD><EFBFBD>瘞娍部: bg-slate-50 (AI) / bg-blue-600 (<EFBFBD>冽<EFBFBD>)
|
||
```
|
||
|
||
---
|
||
|
||
## <20><> 撣貉<E692A3><E8B289>桅<EFBFBD><E6A185>埝䰻
|
||
|
||
### <20>桅<EFBFBD>1嚗𡁻△<F0A181BB>Y蒾撅?
|
||
**<2A>航<EFBFBD><E888AA>笔<EFBFBD>**:
|
||
- 頝舐眏<E88890>滨蔭<E6BBA8>躰秤
|
||
- 蝏<>辣撖澆<E69296><E6BE86>躰秤
|
||
- API靚<49>鍂憭梯揖
|
||
|
||
**<EFBFBD>埝䰻甇仿炊**:
|
||
1. <20>枏<EFBFBD>瘚讛<E7989A><E8AE9B>冽綉<E586BD>嗅蝱<E59785>亦<EFBFBD><E4BAA6>躰秤
|
||
2. 璉<><E79289>代etwork<72>X踎API霂瑟<E99C82>
|
||
3. 璉<><E79289>匝moduleRegistry.ts`銝致KB璅∪<E79285>瘜典<E7989C>
|
||
|
||
### <20>桅<EFBFBD>2嚗鋫PI霂瑟<E99C82>憭梯揖
|
||
**<2A>航<EFBFBD><E888AA>笔<EFBFBD>**:
|
||
- <20>𡒊垢<F0A1928A>滚𦛚<E6BB9A>芸鍳<E88AB8>?
|
||
- API頝舐眏銝滚龪<E6BB9A>?
|
||
- CORS<52>桅<EFBFBD>
|
||
|
||
**<EFBFBD>埝䰻甇仿炊**:
|
||
1. 蝖株恕<E6A0AA>𡒊垢<F0A1928A>滚𦛚餈鞱<E9A488><E99EB1>灼http://localhost:3000`
|
||
2. 璉<><E79289>丕PI頝舐眏<E88890>臬炏銝槁/api/v1/pkb/*`
|
||
3. <20>亦<EFBFBD><E4BAA6>𡒊垢<F0A1928A>亙<EFBFBD>
|
||
|
||
### <20>桅<EFBFBD>3嚗鋴hat蝏<74>辣銝齿遬蝷?
|
||
**<2A>航<EFBFBD><E888AA>笔<EFBFBD>**:
|
||
- ChatContainer撖澆<E69296>頝臬<E9A09D><E887AC>躰秤
|
||
- conversationType<70>滨蔭<E6BBA8>躰秤
|
||
- requestFn<46>賣㺭<E8B3A3>躰秤
|
||
|
||
**<EFBFBD>埝䰻甇仿炊**:
|
||
1. 璉<><E79289>匝@/shared/components/Chat`撖澆<E69296>
|
||
2. 蝖株恕`conversationType="pkb"`
|
||
3. 璉<><E79289>匝providerConfig.requestFn`摰䂿緵
|
||
|
||
### <20>桅<EFBFBD>4嚗𡁏甅撘譍<E69298>甇<EFBFBD>&
|
||
**<2A>航<EFBFBD><E888AA>笔<EFBFBD>**:
|
||
- Tailwind CSS<53>芰<EFBFBD><E88AB0>?
|
||
- class<73>滨妍<E6BBA8>澆<EFBFBD><E6BE86>躰秤
|
||
- 瘚讛<E7989A><E8AE9B>函<EFBFBD>摮?
|
||
|
||
**<EFBFBD>埝䰻甇仿炊**:
|
||
1. 皜<>膄瘚讛<E7989A><E8AE9B>函<EFBFBD>摮?
|
||
2. 璉<><E79289>冉ailwind<6E>滨蔭
|
||
3. 雿輻鍂瘚讛<E7989A><E8AE9B>求evTools璉<73><E79289>亙<EFBFBD>蝝䭾甅撘?
|
||
|
||
---
|
||
|
||
## <20><> 撉諹<E69289><E8ABB9>亙<EFBFBD>璅⊥踎
|
||
|
||
```markdown
|
||
## PKB<4B>滨垢撉諹<E69289><E8ABB9>亙<EFBFBD>
|
||
|
||
**撉諹<E69289><E8ABB9>園𡢿**: YYYY-MM-DD HH:mm
|
||
**撉諹<E69289>鈭?*: XXX
|
||
**瘚讛<E7989A><E8AE9B>?*: Chrome/Firefox/Safari
|
||
|
||
### Dashboard憿菟𢒰
|
||
- [ ] 憿菟𢒰皜脫<E79A9C>: <20>?<3F>?
|
||
- [ ] <20>𥕦遣瘚<E981A3><E7989A>: <20>?<3F>?
|
||
- [ ] <20>瑕<EFBFBD>甇<EFBFBD>&: <20>?<3F>?
|
||
- **<2A>桅<EFBFBD>**: 嚗<><E59A97><EFBFBD>㚁<EFBFBD>
|
||
|
||
### Workspace憿菟𢒰
|
||
- [ ] 憿菟𢒰撣<F0A292B0><E692A3>: <20>?<3F>?
|
||
- [ ] <20>箄<EFBFBD><E7AE84>桃<EFBFBD>Tab: <20>?<3F>?
|
||
- [ ] <20>亥<EFBFBD>韏<EFBFBD>漣Tab: <20>?<3F>?
|
||
- [ ] PDF靘扯器<E689AF>? <20>?<3F>?
|
||
- **<2A>桅<EFBFBD>**: 嚗<><E59A97><EFBFBD>㚁<EFBFBD>
|
||
|
||
### 撌乩<E6928C>璅∪<E79285>
|
||
- [ ] <20>冽<EFBFBD><E586BD><EFBFBD>粉: <20>?<3F>?
|
||
- [ ] <20>鞟<EFBFBD>蝎曇粉: <20>?<3F>?
|
||
- [ ] <20>孵<EFBFBD><E5ADB5>? <20>?<3F>?
|
||
- **<2A>桅<EFBFBD>**: 嚗<><E59A97><EFBFBD>㚁<EFBFBD>
|
||
|
||
### <20>颱<EFBFBD>霂<EFBFBD>遠
|
||
- **摰峕<E691B0>摨?*: XX%
|
||
- **撱箄悅**: XXX
|
||
```
|
||
|
||
---
|
||
|
||
## <20>㴓 撉諹<E69289><E8ABB9>𣂼<EFBFBD><F0A382BC><EFBFBD><EFBFBD>
|
||
|
||
### 敹<>◆<EFBFBD>朞<EFBFBD>嚗㇊0嚗?
|
||
- <20>?Dashboard憿菟𢒰甇<F0A292B0>虜皜脫<E79A9C>
|
||
- <20>?<3F>𥕦遣<F0A595A6>亥<EFBFBD>摨𤘪<E691A8>蝔见<E89D94><E8A781>?
|
||
- <20>?Workspace憿菟𢒰甇<F0A292B0>虜<EFBFBD>曄內
|
||
- <20>?3蝘滚極雿𨀣芋撘誩虾<E8AAA9><E899BE>揢
|
||
- <20>?Chat蝏<74>辣甇<E8BEA3>虜撌乩<E6928C>
|
||
|
||
### 摨磰砲<E7A3B0>朞<EFBFBD>嚗㇊1嚗?
|
||
- <20>?<3F>瑕<EFBFBD>100%<25>萄儐霈曇恣蝔?
|
||
- <20>?<3F>函𤫇<E587BD><F0A4AB87><EFBFBD>瘚<EFBFBD><E7989A>
|
||
- <20>?<3F>滚<EFBFBD>撘誩<E69298>撅<EFBFBD>甇<EFBFBD>虜
|
||
|
||
### <20>臭誑隡睃<E99AA1>嚗㇊2嚗?
|
||
- <20><> <20><>辣銝𠹺<E98A9D><F0A0B9BA>蠘<EFBFBD>
|
||
- <20><> <20>孵<EFBFBD><E5ADB5><EFBFBD><EFBFBD><EFBFBD>𨅯<EFBFBD>蝷?
|
||
- <20><> PDF<44>笔<EFBFBD><E7AC94><EFBFBD>捆憸<E68D86><E686B8>
|
||
|
||
---
|
||
|
||
**銝衤<E98A9D>甇?*: <20>寞旿撉諹<E69289>蝏𤘪<E89D8F>靽桀<E99DBD><E6A180>桅<EFBFBD>嚗𣬚<E59A97><F0A3AC9A>舘<EFBFBD><E88898>充VW璅∪<E79285>餈<EFBFBD>宏嚗?
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|