Initial Dansori character workspace

This commit is contained in:
eKeerar
2026-07-04 10:34:46 +09:00
commit 5a419816ff
2480 changed files with 38692 additions and 0 deletions
+59
View File
@@ -0,0 +1,59 @@
# 결정 기준
## D1. 최종 구현 방식
WPF 앱에 들어갈 캐릭터는 Live2D Cubism 모델로 제작한다.
산출물:
- `.moc3`
- `.model3.json`
- texture atlas PNG
- `.motion3.json`
- `.exp3.json`
- `.physics3.json`
## D2. AI 제작 범위
AI는 다음을 담당한다.
- 캐릭터 정체성 유지.
- Live2D PSD용 분리 레이어 생성.
- 움직임으로 드러나는 부위 보강.
- 표정, 입, 눈, 머리카락, 손 파츠 생성.
- 레이어 파일명과 투명 알파 검수.
## D3. PSD 구성
- `sori_live2d_material_separation.psd`: 작업용 PSD.
- `sori_live2d_import.psd`: Cubism import용 PSD.
- PNG 레이어 번들은 `03_Assets/Live2D/layer_manifest.json``file` 값을 따른다.
## D4. Cubism 파라미터
기본 파라미터는 `04_Rig/live2d_parameters.json`을 기준으로 한다. 표준 이름을 유지해 SDK, 표정, 모션, 외부 컨트롤러 연동을 단순하게 만든다.
## D5. WPF 통합 방식
WPF 앱은 WebView2와 Cubism SDK for Web을 사용해 Live2D 런타임을 호스팅한다.
## D6. 반응 시스템
앱 이벤트는 `motion`, `expression`, `mouth`, `caption`, `sfx` 조합으로 실행한다. 매핑은 `06_Reactions/reactions.json``06_Reactions/clips/*.json`을 따른다.
## D7. 이미지와 색공간
원화 레이어는 투명 알파를 유지하고, Cubism import용 PSD는 RGB, 8bit/channel, sRGB 기준으로 관리한다.
## D8. 레이어명 안정성
PSD 레이어명은 `layer_manifest.json``id`를 따른다. Cubism 작업 중 레이어명, 그룹명, 파일명을 임의로 바꾸지 않는다.
## 열린 항목
| ID | 내용 | 기준 |
|---|---|---|
| O1 | 런타임 방식 | WebView2 우선 |
| O2 | 대사 출력 | 말풍선과 TTS 모두 고려 |
| O3 | 원화 해상도 | 1600x2800 권장 |
| O4 | 입 모양 제어 | 볼륨 기반부터 시작, 음소 기반 확장 가능 |
@@ -0,0 +1,40 @@
# 목적과 방향
## 최종 목적
이소리를 **WPF 앱에 탑재되는 Live2D 인터랙티브 마스코트**로 제작한다. 앱의 상태와 사용자 행동에 맞춰 캐릭터가 자연스럽게 움직이고, 표정과 입 모양, 제스처, 말풍선 또는 TTS가 함께 반응해야 한다.
## 대표 사용 시나리오
| 상황 | Live2D 반응 |
|---|---|
| 오류/금지된 동작 | `motion_no` + `exp_negative` + 고개 젓기 + "안돼요" |
| 성공/완료/칭찬 | `motion_heart` + `exp_love` + 바운스 + "잘됐어요" |
| 대기/유휴 | `motion_idle_dance` 루프 + 자동 눈깜빡임 + 호흡 + 머리카락 물리 |
| 인사 | `motion_greet` + `exp_smile` + 손 흔들기 |
| 안내/설명 | `motion_present` + `exp_neutral` + 말하기 |
| 생각중/로딩 | `motion_thinking` + `exp_thinking` + 갸웃 |
## 제작 원칙
1. **Live2D Cubism 모델을 최종 산출물로 한다**
WPF 앱에는 Cubism export 산출물을 탑재한다.
2. **AI는 원화 분리와 보강에 집중한다**
AI는 PSD 레이어 원화, 누락 부위 보강, 입/눈/머리카락/손 파츠 생성을 담당한다.
3. **PSD 레이어 품질을 최우선으로 한다**
눈, 눈썹, 입, 얼굴 윤곽, 앞머리, 옆머리, 뒷머리, 목, 어깨, 팔, 손가락, 의상 겹침 부위를 Live2D 제어에 맞게 분리한다.
4. **Cubism 표준 파라미터를 사용한다**
`ParamAngleX/Y/Z`, `ParamEyeLOpen`, `ParamMouthOpenY`, `ParamBodyAngleX/Y/Z`, `ParamBreath`, `ParamHairFront/Side/Back`을 우선 사용한다.
5. **WPF 앱 이벤트는 상황키로 연결한다**
앱은 `success`, `error`, `idle` 같은 상황키만 보낸다. Live2D 런타임은 motion, expression, caption, mouth driver를 선택한다.
## 제작 범위
- Live2D PSD 레이어 원화.
- Cubism 리깅과 모션.
- WPF WebView2 런타임 연동.
- 상황별 반응 데이터.
@@ -0,0 +1,96 @@
# 아키텍처
## 전체 파이프라인
```text
[입력 이미지와 캐릭터 기준]
|
v
[AI Live2D 원화 분리]
- material PSD
- 투명 PNG 레이어 번들
- 숨은 부위 보강
|
v
[Cubism import PSD]
- 고유 레이어명
- RGB, 8bit/channel, sRGB
- 먼지/프린지/마스크 잔여물 제거
|
v
[Live2D Cubism Editor]
- ArtMesh
- Warp/Rotation Deformer
- Parameter
- Physics
- Motion/Expression
|
v
[Embedded Export]
- .moc3
- .model3.json
- texture atlas PNG
- .motion3.json / .exp3.json / .physics3.json
|
v
[WPF Runtime Host]
- WebView2
- Cubism SDK for Web
|
v
[앱 이벤트 반응]
- error / success / idle / greet / explain / thinking
```
## 제작 레이어
| 레이어 | 책임 | 주요 파일 |
|---|---|---|
| Source Art | AI가 만드는 분리 원화 | `03_Assets/Live2D/Layer_Manifest.md`, `layer_manifest.json` |
| Cubism Model | 리깅, 파라미터, 물리 | `04_Rig/live2d_parameters.json` |
| Motion | idle, no, heart, greet 등 | `05_Animation/live2d_motion_plan.json` |
| Reaction | 앱 상황키 매핑 | `06_Reactions/reactions.json`, `clips/*.json` |
| WPF Host | 모델 로드와 앱 브리지 | `08_Roadmap/App_Integration.md` |
## AI 원화 분리 규칙
- 최종 PSD의 각 파츠는 Cubism에서 하나의 ArtMesh가 될 수 있도록 단일 레이어로 정리한다.
- 눈, 눈썹, 입은 좌우와 세부 요소를 분리한다.
- 머리카락은 앞머리, 옆머리, 뒷머리, 잔머리, 하이라이트를 분리한다.
- 몸과 의상은 Rotation Deformer와 Warp Deformer 적용을 고려해 분리한다.
- 손하트, 팔짱, 손흔들기 같은 제스처는 손과 팔 파츠를 충분히 확보한다.
## Cubism 파라미터 계층
```text
ParamBaseX/Y
ParamBodyAngleX/Y/Z
ParamAngleX/Y/Z
Face / Eyes / Brows / Mouth
Arms / Hands
Hair physics
```
기본 파라미터 범위는 `04_Rig/live2d_parameters.json`을 따른다.
## WPF 통합 구조
WPF는 WebView2를 띄우고 Live2D 런타임 HTML/JS에 메시지를 보낸다.
```text
WPF
-> WebView2.PostWebMessageAsJson({ type: "react", key: "success" })
-> Live2D runtime
-> reactions.json
-> StartMotion + SetExpression + caption/TTS event
```
## 공식 기준 확인 항목
- PSD import.
- ArtMesh.
- Deformer.
- Parameter.
- Physics.
- Embedded export.
- Cubism SDK for Web.
@@ -0,0 +1,61 @@
# 한계와 완화
## L1. AI 원화와 Cubism 리깅의 역할 분리
AI는 원화 분리와 보강에 강하고, Cubism Editor는 ArtMesh, Deformer, Physics, Motion 검수에 필요하다.
**완화**
- AI 산출물은 PSD/PNG 레이어와 manifest 기준으로 검수한다.
- Cubism 작업은 파라미터, 디포머, 물리, 모션 단위로 검수한다.
- 반복 작업은 레이어명, 파라미터명, 모션명, 체크리스트로 관리한다.
## L2. Live2D 세부 레이어 필요
정밀한 Live2D 표현에는 눈꺼풀, 눈동자, 눈 하이라이트, 입 안쪽, 치아, 혀, 눈썹, 앞머리, 옆머리, 뒷머리, 옷 주름 레이어가 필요하다.
**완화**
- `03_Assets/Live2D/layer_manifest.json`의 required 레이어를 모두 만든다.
- 얼굴, 머리카락, 손 파츠를 우선 제작한다.
- 숨은 피부, 머리, 의상 밑그림을 충분히 채색한다.
## L3. 누락 부위 보강
고개 회전, 팔 움직임, 머리카락 흔들림에는 피부, 머리, 의상 밑그림이 필요하다.
**완화**
- AI 프롬프트에 "Paint hidden areas underneath overlaps"를 명시한다.
- 목 뒤, 귀 뒤, 헤어 안쪽, 어깨 뒤, 소매 안쪽, 손목, 허리 주변을 별도 확인한다.
- Cubism에서 큰 회전 각도는 자연스러운 범위로 제한한다.
## L4. 립싱크
정밀 립싱크에는 입 레이어와 파라미터 설계가 필요하다.
**완화**
- 입은 `mouth_inside`, `mouth_line`, `upper_lip`, `lower_lip`, `teeth`, `tongue`로 분리한다.
- `ParamMouthOpenY``ParamMouthForm`을 기본으로 만든다.
- WPF/TTS 연동은 볼륨 기반 mouth open으로 시작한다.
- 음소 표현이 필요하면 입 morph 파라미터를 추가한다.
## L5. WPF 통합 비용
WPF 통합에는 모델 로드, WebView2 메시지 브리지, 리소스 경로, 배포 구성이 필요하다.
**완화**
- WebView2 + Cubism SDK for Web을 1차 경로로 사용한다.
- 메시지는 JSON 형식으로 통일한다.
- 앱 리소스 구조는 `08_Roadmap/App_Integration.md`를 따른다.
## L6. 라이선스와 배포 조건
Live2D Cubism Editor와 SDK 사용 조건을 확인해야 한다.
**완화**
- 앱 배포 전 Live2D 공식 라이선스와 SDK 사용 조건을 확인한다.
- 리소스와 SDK 배포 범위를 체크리스트로 관리한다.
@@ -0,0 +1,45 @@
# 자산 전체 맵
이 폴더는 Live2D 제작에 필요한 입력 이미지, 레이어 명세, PSD 제작 자료를 관리한다.
## 입력 이미지
| 종류 | 위치 | 용도 |
|---|---|---|
| 정체성 시트 | `Reference/sori_sheet.png` | 얼굴, 헤어, 의상, 색상 기준 |
| A-pose 이미지 | `Parts/Images/sori_part_master_apose.png` | 전신 비율과 관절 위치 기준 |
| 표정 이미지 | `Library/Heads/` | Live2D expression 목표 설정 |
| 포즈 이미지 | `Library/BakedPoses/` | Live2D motion 키포즈 설정 |
| 머리 영역 이미지 | `Library/Hairmasks/` | 머리카락 레이어 분리 기준 |
| 액세서리 이미지 | `Library/Accessories/` | 헤드폰, 마이크, 소품 기준 |
## Live2D 제작 자산
| 산출물 | 위치 | 설명 |
|---|---|---|
| 레이어 명세 | `Live2D/Layer_Manifest.md` | PSD/PNG 레이어 제작 지시서 |
| 레이어 manifest | `Live2D/layer_manifest.json` | 레이어 파일명, 그룹, 필수 여부 |
| PSD 제작 워크플로 | `Live2D/AI_PSD_Workflow.md` | AI 생성과 PSD 조립 순서 |
| 자산 체크리스트 | `Live2D/Asset_Audit.md` | 제작 입력 자료와 산출물 확인 |
| 작업 PSD | `Live2D/sori_live2d_material_separation.psd` | 원화 편집용 PSD |
| import PSD | `Live2D/sori_live2d_import.psd` | Cubism import 대상 |
| 레이어 PNG 번들 | `Live2D/LayerPNGs/` | PSD 조립용 투명 PNG |
## PSD 요구사항
- 권장 캔버스: 1600x2800.
- 배경: 완전 투명.
- 색공간: sRGB.
- Cubism import PSD: RGB, 8bit/channel.
- 모든 import 레이어명은 고유해야 한다.
- 눈, 눈썹, 입, 머리카락, 액세서리, 팔, 손, 의상 겹침 부위를 별도 레이어로 만든다.
- 각 레이어에는 움직임으로 드러날 숨은 밑그림이 있어야 한다.
## 제작 우선순위
1. 고해상도 A-pose 원화.
2. 얼굴, 눈, 눈썹, 입, 머리카락 레이어.
3. 상체, 팔, 손, 의상 레이어.
4. Cubism import PSD.
5. 눈깜빡임, 입열림, 고개 회전, 호흡, 머리카락 물리.
6. 하트, 거절, 대기춤 motion.
Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 639 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 636 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 636 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 638 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 638 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 636 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 636 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 640 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 640 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 639 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 639 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 639 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 640 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 639 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 640 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 657 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 559 KiB

@@ -0,0 +1,172 @@
{
"name": "LeeSoriDance",
"status": "leesori_solo3_dance_pose_parts_2026_07_04",
"canvas": {
"width": 773,
"height": 1448
},
"imageBase": "./Images/",
"note": "Solo Dance 3 inspired pose-part rig. Parts are broad overlapping masks for the CSS Live2DHost dance loop.",
"bones": [
{
"name": "base",
"parent": null,
"pivot": [
386.5,
839.8399999999999
],
"z": 0,
"image": "solo3_base.png"
},
{
"name": "pelvis",
"parent": "base",
"pivot": [
386.5,
695.04
],
"z": 2,
"image": "solo3_pelvis.png"
},
{
"name": "chest",
"parent": "base",
"pivot": [
386.5,
448.88
],
"z": 4,
"image": "solo3_chest.png"
},
{
"name": "upperarm_l",
"parent": "chest",
"pivot": [
231.89999999999998,
390.96000000000004
],
"z": 5,
"image": "solo3_upperarm_l.png"
},
{
"name": "forearm_l",
"parent": "upperarm_l",
"pivot": [
139.14,
622.64
],
"z": 6,
"image": "solo3_forearm_l.png"
},
{
"name": "hand_l",
"parent": "forearm_l",
"pivot": [
77.30000000000001,
868.8
],
"z": 7,
"image": "solo3_hand_l.png"
},
{
"name": "upperarm_r",
"parent": "chest",
"pivot": [
541.0999999999999,
390.96000000000004
],
"z": 5,
"image": "solo3_upperarm_r.png"
},
{
"name": "forearm_r",
"parent": "upperarm_r",
"pivot": [
633.86,
622.64
],
"z": 6,
"image": "solo3_forearm_r.png"
},
{
"name": "hand_r",
"parent": "forearm_r",
"pivot": [
695.7,
868.8
],
"z": 7,
"image": "solo3_hand_r.png"
},
{
"name": "thigh_l",
"parent": "pelvis",
"pivot": [
309.20000000000005,
810.8800000000001
],
"z": 2,
"image": "solo3_thigh_l.png"
},
{
"name": "shin_l",
"parent": "thigh_l",
"pivot": [
301.47,
1071.52
],
"z": 2,
"image": "solo3_shin_l.png"
},
{
"name": "foot_l",
"parent": "shin_l",
"pivot": [
301.47,
1332.16
],
"z": 2,
"image": "solo3_foot_l.png"
},
{
"name": "thigh_r",
"parent": "pelvis",
"pivot": [
463.79999999999995,
810.8800000000001
],
"z": 2,
"image": "solo3_thigh_r.png"
},
{
"name": "shin_r",
"parent": "thigh_r",
"pivot": [
471.53,
1071.52
],
"z": 2,
"image": "solo3_shin_r.png"
},
{
"name": "foot_r",
"parent": "shin_r",
"pivot": [
471.53,
1332.16
],
"z": 2,
"image": "solo3_foot_r.png"
},
{
"name": "head",
"parent": "chest",
"pivot": [
386.5,
231.68
],
"z": 10,
"image": "solo3_head.png"
}
]
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 944 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 853 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 774 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 MiB

@@ -0,0 +1,45 @@
# 표정과 포즈
이 문서는 Live2D expression과 motion 제작 기준을 정의한다.
## Live2D 표정 프리셋
| Expression ID | 감정 | 주요 파라미터 |
|---|---|---|
| `exp_neutral` | 기본 | 모든 표정 파라미터 기본값 |
| `exp_smile` | 미소 | `ParamMouthForm +`, `ParamEyeLSmile/RSmile +` |
| `exp_positive` | 밝음 | smile + cheek |
| `exp_love` | 호감/성공 | smile + cheek + 눈 미소 |
| `exp_negative` | 불만/거절 | `ParamBrowLAngle/RAngle -`, `ParamMouthForm -` |
| `exp_pout` | 삐침 | mouth form -, cheek |
| `exp_confused` | 당황 | brow 비대칭, eye open 증가 |
| `exp_thinking` | 생각중 | brow 한쪽 상승, gaze side |
| `exp_surprised` | 놀람 | eye open 증가, mouth open |
| `exp_sleepy` | 졸림 | eye open 감소, brow 낮춤 |
## 말하기
Live2D 입 레이어를 파라미터로 움직인다.
- 기본: `ParamMouthOpenY` 0..1 볼륨 기반.
- 감정: `ParamMouthForm` -1..1.
- WPF/TTS 초기 연동: 음성 볼륨 또는 대사 타이밍에 맞춰 mouth open 구동.
- 확장: "아/이/우/에/오" morph 파라미터 추가.
## 포즈와 제스처
| Motion ID | 용도 |
|---|---|
| `motion_idle_breath` | 기본 호흡 |
| `motion_idle_dance` | 대기춤 |
| `motion_no` | 거절/오류 |
| `motion_heart` | 성공/칭찬 |
| `motion_greet` | 인사 |
| `motion_present` | 안내/제시 |
| `motion_thinking` | 생각중 |
## 제스처 원칙
- 손과 팔은 motion으로 제어한다.
- 자기 가림이 큰 포즈는 swap part를 활용할 수 있다.
- 표정은 `.exp3.json`, 몸 동작은 `.motion3.json`으로 분리한다.
Binary file not shown.

After

Width:  |  Height:  |  Size: 652 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 396 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 216 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 350 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 403 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 455 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 921 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 743 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 709 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 683 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 820 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 663 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 696 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 708 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 416 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 665 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 368 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 675 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 716 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 651 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 761 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 643 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 706 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 675 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 729 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 786 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 738 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 733 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 851 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 709 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 734 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 751 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 438 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 705 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 387 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 718 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 755 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 698 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 804 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 680 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 774 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 721 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 767 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 693 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 632 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 611 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 745 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 605 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 650 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 642 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 405 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 637 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 331 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 632 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 645 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 614 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 690 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 609 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 612 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 627 KiB

Some files were not shown because too many files have changed in this diff Show More