Compare commits
No commits in common. "af3fb2b621bd99dd6adccdbde66bb4694b1f5c2a" and "29822be2adc4acb85cecd0fd0f202ea4f92baccc" have entirely different histories.
af3fb2b621
...
29822be2ad
|
|
@ -5,10 +5,6 @@
|
||||||
appsettings.Production.json
|
appsettings.Production.json
|
||||||
secrets.json
|
secrets.json
|
||||||
|
|
||||||
# --- Python ---
|
|
||||||
__pycache__/
|
|
||||||
*.pyc
|
|
||||||
|
|
||||||
# --- .NET ---
|
# --- .NET ---
|
||||||
bin/
|
bin/
|
||||||
obj/
|
obj/
|
||||||
|
|
@ -50,10 +46,6 @@ client/Assets/StreamingAssets/aa/*
|
||||||
client/*.log
|
client/*.log
|
||||||
client/TestResults*.xml
|
client/TestResults*.xml
|
||||||
|
|
||||||
# Локальный 4x-арт (251 МБ, кодом не используется) — не коммитим
|
|
||||||
client/Assets/Vanguard/Resources/CardArt_4x/
|
|
||||||
client/Assets/Vanguard/Resources/CardArt_4x.meta
|
|
||||||
|
|
||||||
# --- Unity прочее ---
|
# --- Unity прочее ---
|
||||||
*.unitypackage
|
*.unitypackage
|
||||||
crashlytics-build.properties
|
crashlytics-build.properties
|
||||||
|
|
|
||||||
|
|
@ -49,8 +49,7 @@ description: Use for any work in the Vanguard ReMaster repository: Cardfight!! V
|
||||||
- **После блока:** клиентские EditMode, серверные тесты (на home), `validate`,
|
- **После блока:** клиентские EditMode, серверные тесты (на home), `validate`,
|
||||||
`translations check`, коммит и push.
|
`translations check`, коммит и push.
|
||||||
- **Сначала план, потом код:** новые изменения проходят анализ DeepSeek с
|
- **Сначала план, потом код:** новые изменения проходят анализ DeepSeek с
|
||||||
записью в `docs/Development/IMPLEMENTATION_PLAN.md`, затем реализацию —
|
записью в `docs/Development/IMPLEMENTATION_PLAN.md`, затем реализацию Kimi.
|
||||||
её тоже выполняет DeepSeek, отдельным проходом по готовому плану.
|
|
||||||
Передача — через файлы и Git, не через память модели. Детали —
|
Передача — через файлы и Git, не через память модели. Детали —
|
||||||
`docs/Development/AGENT-WORKFLOW.md`.
|
`docs/Development/AGENT-WORKFLOW.md`.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -64,12 +64,6 @@
|
||||||
|
|
||||||
- **[D]** 3D-сцена, отдельные сцены Login/Lobby/DeckBuilder/Battle; HUD —
|
- **[D]** 3D-сцена, отдельные сцены Login/Lobby/DeckBuilder/Battle; HUD —
|
||||||
uGUI; reference 1920×1080.
|
uGUI; reference 1920×1080.
|
||||||
- **[D]** Анимации описываются для локального игрока. Для противника
|
|
||||||
применяются те же правила, но зеркально с его стороны поля: направление,
|
|
||||||
сторона появления карты, наклон веера и порядок перекрытия зеркальны;
|
|
||||||
камера также отражается относительно центра стола. Отдельные
|
|
||||||
«противнические» анимации не делать, если это не подтверждённое
|
|
||||||
исключение.
|
|
||||||
- **[D]** Камера в покое фиксирована по центру поля с небольшим наклоном;
|
- **[D]** Камера в покое фиксирована по центру поля с небольшим наклоном;
|
||||||
временно двигается только `CameraDirector` в trigger-последовательности.
|
временно двигается только `CameraDirector` в trigger-последовательности.
|
||||||
- **[D]** Выбор карты/круга/зоны/цели — клик/драг по объекту; кнопки только
|
- **[D]** Выбор карты/круга/зоны/цели — клик/драг по объекту; кнопки только
|
||||||
|
|
@ -118,8 +112,7 @@
|
||||||
|
|
||||||
## 4. Процесс разработки
|
## 4. Процесс разработки
|
||||||
|
|
||||||
Формальный двухэтапный процесс (анализ → план → реализация; обе стадии
|
Формальный двухэтапный процесс DeepSeek → Kimi описан в
|
||||||
выполняет DeepSeek, но раздельно) описан в
|
|
||||||
`docs/Development/AGENT-WORKFLOW.md`; активный план задачи — в
|
`docs/Development/AGENT-WORKFLOW.md`; активный план задачи — в
|
||||||
`docs/Development/IMPLEMENTATION_PLAN.md`. Ниже — краткие правила, без
|
`docs/Development/IMPLEMENTATION_PLAN.md`. Ниже — краткие правила, без
|
||||||
дублирования шаблона плана.
|
дублирования шаблона плана.
|
||||||
|
|
|
||||||
24
AGENTS.md
|
|
@ -40,9 +40,8 @@
|
||||||
|
|
||||||
## Вопросы
|
## Вопросы
|
||||||
|
|
||||||
- **Все вопросы задавай только через специальный инструмент `question`.**
|
- Для существенной неопределённости используй специальный инструмент
|
||||||
Это относится к любым уточнениям, выборам и открытым вопросам. Обычным
|
`question` (если он недоступен — задай вопрос обычным сообщением).
|
||||||
сообщением вопрос задавай только если инструмент недоступен.
|
|
||||||
- Предлагай 2–4 коротких варианта с рекомендацией и возможность своего ответа.
|
- Предлагай 2–4 коротких варианта с рекомендацией и возможность своего ответа.
|
||||||
- Дождись ответа, прежде чем принимать зависящее от него решение.
|
- Дождись ответа, прежде чем принимать зависящее от него решение.
|
||||||
- Не спрашивай о том, что уже однозначно установлено кодом, документацией или
|
- Не спрашивай о том, что уже однозначно установлено кодом, документацией или
|
||||||
|
|
@ -51,23 +50,22 @@
|
||||||
## Двухэтапная разработка
|
## Двухэтапная разработка
|
||||||
|
|
||||||
- Любое пожелание, требующее изменения игры/кода, сначала проходит **анализ и
|
- Любое пожелание, требующее изменения игры/кода, сначала проходит **анализ и
|
||||||
план**, затем **реализацию**. Оба этапа выполняет DeepSeek, но раздельно:
|
план DeepSeek**, затем **реализацию Kimi**. Не начинай код без плана, кроме
|
||||||
не начинай код в том же проходе, где анализируешь, кроме явно тривиальной
|
явно тривиальной правки, которую пользователь разрешил сделать сразу.
|
||||||
правки, которую пользователь разрешил сделать сразу.
|
|
||||||
- Активный план и журнал задач — `docs/Development/IMPLEMENTATION_PLAN.md`;
|
- Активный план и журнал задач — `docs/Development/IMPLEMENTATION_PLAN.md`;
|
||||||
подробный процесс — `docs/Development/AGENT-WORKFLOW.md`.
|
подробный процесс — `docs/Development/AGENT-WORKFLOW.md`.
|
||||||
- На этапе анализа не меняются игровой код, сцены, префабы, SO и конфиги;
|
- DeepSeek на этапе анализа не меняет игровой код, сцены, префабы, SO и
|
||||||
можно читать, задавать вопросы и обновлять план/документацию.
|
конфиги; можно читать, задавать вопросы и обновлять план/документацию.
|
||||||
- Перед реализацией прочитай `AGENTS.md`, Skill и раздел задачи, проверь Git и
|
- Kimi перед реализацией читает `AGENTS.md`, Skill и раздел задачи, проверяет
|
||||||
актуальность файлов/методов. Устаревший план не является разрешением на
|
Git и актуальность файлов/методов. Устаревший план не является разрешением на
|
||||||
изменения.
|
изменения.
|
||||||
- Передача контекста — только через файлы репозитория и Git, не через память
|
- Передача контекста — только через файлы репозитория и Git, не через память
|
||||||
модели. Если агенты в разных ветках/копиях, это фиксируется в плане.
|
модели. Если агенты в разных ветках/копиях, это фиксируется в плане.
|
||||||
- Статусы пунктов: `[ ]`, `[x]`, `[!]`, `[-]`; отдельно указывается
|
- Статусы пунктов: `[ ]`, `[x]`, `[!]`, `[-]`; отдельно указывается
|
||||||
«Реализация» и «Проверка». `[x]` без проверки запрещён.
|
«Реализация» и «Проверка». `[x]` без проверки запрещён.
|
||||||
- На этапе реализации не расширяй объём, не делай необязательный рефакторинг и
|
- Kimi не расширяет объём, не делает необязательный рефакторинг и не удаляет
|
||||||
не удаляй чужие изменения. При новом существенном решении пользователя —
|
чужие изменения. При новом существенном решении пользователя — вопрос и
|
||||||
вопрос и остановка зависимой части.
|
остановка зависимой части.
|
||||||
|
|
||||||
## Изменения
|
## Изменения
|
||||||
|
|
||||||
|
|
|
||||||
18
README.md
|
|
@ -98,22 +98,13 @@ OK: ошибок 0, предупреждений 0
|
||||||
|
|
||||||
## Контент
|
## Контент
|
||||||
|
|
||||||
Первоисточник — официальный карт-лист `en.cf-vanguard.com`: и параметры карт,
|
Первоисточник — официальный карт-лист `en.cf-vanguard.com`; триггеры и редкости
|
||||||
и арты берутся с одного сайта (`tools/import_official.py`). Пересобрать YAML
|
выгружены из вики. Пересобрать YAML:
|
||||||
и докачать недостающие арты:
|
|
||||||
|
|
||||||
```powershell
|
```powershell
|
||||||
py tools/import_official.py --sets BT01,TD01,TD02
|
python tools/import_cards.py
|
||||||
```
|
```
|
||||||
|
|
||||||
Полезные режимы: `--list-sets` (какие сеты есть и их id), `--no-art`,
|
|
||||||
`--dry-run`, `--limit N` для пробного прогона. На Windows, где `python` —
|
|
||||||
заглушка Microsoft Store, используйте `py`.
|
|
||||||
|
|
||||||
`tools/import_cards.py` — прежний вариант (триггеры и редкости брались из вики,
|
|
||||||
арты — с Fandom); оставлен как справка. Ручные поля из существующих YAML
|
|
||||||
(`snipeBackRow`, `boost`, `nameRu`, `textRu`) новый импорт сохраняет.
|
|
||||||
|
|
||||||
Валидатор проверяет инварианты, которые легко нарушить вручную:
|
Валидатор проверяет инварианты, которые легко нарушить вручную:
|
||||||
|
|
||||||
- у grade 0 щит 5000 **только** у Draw-триггера, иначе 10000;
|
- у grade 0 щит 5000 **только** у Draw-триггера, иначе 10000;
|
||||||
|
|
@ -167,8 +158,7 @@ dotnet run --project server/src/Vanguard.Cli -- translations check
|
||||||
- `IMPLEMENTATION_CHECKLIST.md` — исторический план по блокам и гейтам.
|
- `IMPLEMENTATION_CHECKLIST.md` — исторический план по блокам и гейтам.
|
||||||
- `docs/Development/IMPLEMENTATION_PLAN.md` — активный журнал задач и шаблон
|
- `docs/Development/IMPLEMENTATION_PLAN.md` — активный журнал задач и шаблон
|
||||||
плана.
|
плана.
|
||||||
- `docs/Development/AGENT-WORKFLOW.md` — двухэтапный процесс: анализ → реализация
|
- `docs/Development/AGENT-WORKFLOW.md` — двухэтапный процесс DeepSeek → Kimi.
|
||||||
(обе стадии на DeepSeek).
|
|
||||||
- `docs/HANDOFF.md` — состояние на конец сессии и порядок следующих шагов.
|
- `docs/HANDOFF.md` — состояние на конец сессии и порядок следующих шагов.
|
||||||
- `docs/protocol.md` — протокол матча: кадры, интенты, события, таймеры, реконнект.
|
- `docs/protocol.md` — протокол матча: кадры, интенты, события, таймеры, реконнект.
|
||||||
- `docs/game-rules.md` — конспект правил и сверка с текущей реализацией.
|
- `docs/game-rules.md` — конспект правил и сверка с текущей реализацией.
|
||||||
|
|
|
||||||
|
|
@ -84,7 +84,6 @@ MonoBehaviour:
|
||||||
m_SupportScreenSpaceLensFlare: 1
|
m_SupportScreenSpaceLensFlare: 1
|
||||||
m_GPUResidentDrawerMode: 0
|
m_GPUResidentDrawerMode: 0
|
||||||
m_SmallMeshScreenPercentage: 0
|
m_SmallMeshScreenPercentage: 0
|
||||||
m_ShadowSmallMeshScreenPercentages: {x: 0, y: 0, z: 0, w: 0}
|
|
||||||
m_GPUResidentDrawerEnableOcclusionCullingInCameras: 0
|
m_GPUResidentDrawerEnableOcclusionCullingInCameras: 0
|
||||||
m_ShadowType: 1
|
m_ShadowType: 1
|
||||||
m_LocalShadowsSupported: 0
|
m_LocalShadowsSupported: 0
|
||||||
|
|
@ -101,18 +100,18 @@ MonoBehaviour:
|
||||||
m_Keys: []
|
m_Keys: []
|
||||||
m_Values:
|
m_Values:
|
||||||
m_PrefilteringModeMainLightShadows: 3
|
m_PrefilteringModeMainLightShadows: 3
|
||||||
m_PrefilteringModeAdditionalLight: 0
|
m_PrefilteringModeAdditionalLight: 4
|
||||||
m_PrefilteringModeAdditionalLightShadows: 2
|
m_PrefilteringModeAdditionalLightShadows: 0
|
||||||
m_PrefilterXRKeywords: 1
|
m_PrefilterXRKeywords: 1
|
||||||
m_PrefilteringModeForwardPlus: 2
|
m_PrefilteringModeForwardPlus: 1
|
||||||
m_PrefilteringModeDeferredRendering: 0
|
m_PrefilteringModeDeferredRendering: 0
|
||||||
m_PrefilteringModeScreenSpaceOcclusion: 2
|
m_PrefilteringModeScreenSpaceOcclusion: 1
|
||||||
m_PrefilteringModeScreenSpaceReflection: 0
|
m_PrefilteringModeScreenSpaceReflection: 1
|
||||||
m_PrefilterWriteSmoothness: 1
|
m_PrefilterWriteSmoothness: 1
|
||||||
m_PrefilterDebugKeywords: 1
|
m_PrefilterDebugKeywords: 1
|
||||||
m_PrefilterWriteRenderingLayers: 1
|
m_PrefilterWriteRenderingLayers: 0
|
||||||
m_PrefilterHDROutput: 1
|
m_PrefilterHDROutput: 1
|
||||||
m_PrefilterAlphaOutput: 1
|
m_PrefilterAlphaOutput: 0
|
||||||
m_PrefilterSSAODepthNormals: 0
|
m_PrefilterSSAODepthNormals: 0
|
||||||
m_PrefilterSSAOSourceDepthLow: 1
|
m_PrefilterSSAOSourceDepthLow: 1
|
||||||
m_PrefilterSSAOSourceDepthMedium: 1
|
m_PrefilterSSAOSourceDepthMedium: 1
|
||||||
|
|
@ -124,23 +123,20 @@ MonoBehaviour:
|
||||||
m_PrefilterSSAOSampleCountHigh: 1
|
m_PrefilterSSAOSampleCountHigh: 1
|
||||||
m_PrefilterDBufferMRT1: 1
|
m_PrefilterDBufferMRT1: 1
|
||||||
m_PrefilterDBufferMRT2: 1
|
m_PrefilterDBufferMRT2: 1
|
||||||
m_PrefilterDBufferMRT3: 1
|
m_PrefilterDBufferMRT3: 0
|
||||||
m_PrefilterSoftShadowsQualityLow: 1
|
m_PrefilterSoftShadowsQualityLow: 0
|
||||||
m_PrefilterSoftShadowsQualityMedium: 1
|
m_PrefilterSoftShadowsQualityMedium: 0
|
||||||
m_PrefilterSoftShadowsQualityHigh: 1
|
m_PrefilterSoftShadowsQualityHigh: 0
|
||||||
m_PrefilterSoftShadows: 0
|
m_PrefilterSoftShadows: 0
|
||||||
m_PrefilterScreenCoord: 1
|
m_PrefilterScreenCoord: 1
|
||||||
m_PrefilterScreenSpaceIrradiance: 1
|
m_PrefilterScreenSpaceIrradiance: 0
|
||||||
m_PrefilterNativeRenderPass: 1
|
m_PrefilterNativeRenderPass: 1
|
||||||
m_PrefilterUseLegacyLightmaps: 0
|
m_PrefilterUseLegacyLightmaps: 0
|
||||||
m_PrefilterBicubicLightmapSampling: 1
|
m_PrefilterBicubicLightmapSampling: 0
|
||||||
m_PrefilterReflectionProbeRotation: 0
|
m_PrefilterReflectionProbeRotation: 0
|
||||||
m_PrefilterReflectionProbeBlending: 0
|
m_PrefilterReflectionProbeBlending: 0
|
||||||
m_PrefilterReflectionProbeBoxProjection: 0
|
m_PrefilterReflectionProbeBoxProjection: 0
|
||||||
m_PrefilterReflectionProbeAtlas: 0
|
m_PrefilterReflectionProbeAtlas: 0
|
||||||
m_PrefilterPointSamplingUpsampling: 1
|
|
||||||
m_Light2DPrefilteringMode: 0
|
|
||||||
m_Light2DKeptVariantCombos: []
|
|
||||||
m_ShaderVariantLogLevel: 0
|
m_ShaderVariantLogLevel: 0
|
||||||
m_ShadowCascades: 0
|
m_ShadowCascades: 0
|
||||||
m_Textures:
|
m_Textures:
|
||||||
|
|
|
||||||
|
|
@ -72,22 +72,7 @@ MonoBehaviour:
|
||||||
- rid: 6588237625532874761
|
- rid: 6588237625532874761
|
||||||
- rid: 6588237625532874762
|
- rid: 6588237625532874762
|
||||||
m_RuntimeSettings:
|
m_RuntimeSettings:
|
||||||
m_List:
|
m_List: []
|
||||||
- rid: 6852985685364965378
|
|
||||||
- rid: 6852985685364965380
|
|
||||||
- rid: 6852985685364965381
|
|
||||||
- rid: 6852985685364965384
|
|
||||||
- rid: 6852985685364965392
|
|
||||||
- rid: 6852985685364965394
|
|
||||||
- rid: 8712630790384254976
|
|
||||||
- rid: 4284062438471237637
|
|
||||||
- rid: 5747374308340793346
|
|
||||||
- rid: 5747374308340793347
|
|
||||||
- rid: 5747374308340793348
|
|
||||||
- rid: 6588237625532874753
|
|
||||||
- rid: 6588237625532874756
|
|
||||||
- rid: 6588237625532874759
|
|
||||||
- rid: 6588237625532874761
|
|
||||||
m_AssetVersion: 11
|
m_AssetVersion: 11
|
||||||
m_ObsoleteDefaultVolumeProfile: {fileID: 0}
|
m_ObsoleteDefaultVolumeProfile: {fileID: 0}
|
||||||
m_RenderingLayerNames:
|
m_RenderingLayerNames:
|
||||||
|
|
|
||||||
|
|
@ -115,21 +115,17 @@ namespace Vanguard.Editor
|
||||||
|
|
||||||
var active = SceneManager.GetActiveScene().name;
|
var active = SceneManager.GetActiveScene().name;
|
||||||
var environment = GameObject.Find("Vanguard 3D Environment");
|
var environment = GameObject.Find("Vanguard 3D Environment");
|
||||||
var backdrop = GameObject.Find("LoginBackdrop");
|
|
||||||
var login = GameObject.Find("LoginScreen");
|
var login = GameObject.Find("LoginScreen");
|
||||||
var lobby = GameObject.Find("MetaScreen");
|
var lobby = GameObject.Find("MetaScreen");
|
||||||
var onboarding = GameObject.Find("OnboardingScreen");
|
var onboarding = GameObject.Find("OnboardingScreen");
|
||||||
var isLogin = active == SceneFlow.Login;
|
var success = environment != null
|
||||||
var isLobby = active == SceneFlow.Lobby;
|
&& (active == SceneFlow.Login || active == SceneFlow.Lobby)
|
||||||
var success = (isLogin || isLobby)
|
&& (login != null || lobby != null || onboarding != null);
|
||||||
&& (login != null || lobby != null || onboarding != null)
|
|
||||||
&& (isLogin ? backdrop != null : environment != null);
|
|
||||||
|
|
||||||
Debug.Log(
|
Debug.Log(
|
||||||
"SCENE_SMOKE success=" + success
|
"SCENE_SMOKE success=" + success
|
||||||
+ " active=" + active
|
+ " active=" + active
|
||||||
+ " env=" + (environment != null)
|
+ " env=" + (environment != null)
|
||||||
+ " backdrop=" + (backdrop != null)
|
|
||||||
+ " login=" + (login != null)
|
+ " login=" + (login != null)
|
||||||
+ " lobby=" + (lobby != null)
|
+ " lobby=" + (lobby != null)
|
||||||
+ " onboarding=" + (onboarding != null)
|
+ " onboarding=" + (onboarding != null)
|
||||||
|
|
|
||||||
|
|
@ -28,25 +28,15 @@ MonoBehaviour:
|
||||||
intercept: 1.9
|
intercept: 1.9
|
||||||
perfectGuard: 2
|
perfectGuard: 2
|
||||||
inputLockTail: 0.15
|
inputLockTail: 0.15
|
||||||
eventPause: 1.5
|
|
||||||
postDrivePause: 1.5
|
|
||||||
postTriggerPause: 1.5
|
|
||||||
postDamagePause: 1.5
|
|
||||||
arrowShowDuration: 0.25
|
arrowShowDuration: 0.25
|
||||||
arrowHideDuration: 0.2
|
arrowHideDuration: 0.2
|
||||||
moveDuration: 0.8
|
moveDuration: 0.5
|
||||||
importantMoveDuration: 1.3
|
importantMoveDuration: 0.9
|
||||||
moveDelayBetweenCards: 0.22
|
moveDelayBetweenCards: 0.18
|
||||||
arcHeight: 0.45
|
arcHeight: 0.45
|
||||||
introOverheadHold: 1.5
|
cameraZoomDuration: 0.35
|
||||||
introCameraMoveDuration: 1
|
triggerRevealHold: 1.2
|
||||||
introMainHold: 1.5
|
cameraReturnDuration: 0.4
|
||||||
introDrawDuration: 0.6
|
|
||||||
cameraZoomDuration: 0.5
|
|
||||||
vanguardRevealDuration: 0.8
|
|
||||||
triggerRevealDuration: 0.35
|
|
||||||
triggerRevealHold: 0.75
|
|
||||||
cameraReturnDuration: 0.5
|
|
||||||
cameraRezoomDuration: 0.3
|
cameraRezoomDuration: 0.3
|
||||||
growDuration: 0.35
|
growDuration: 0.35
|
||||||
dashScrollSpeed: 1.5
|
dashScrollSpeed: 1.5
|
||||||
|
|
|
||||||
|
After Width: | Height: | Size: 142 KiB |
|
Before Width: | Height: | Size: 364 KiB |
|
After Width: | Height: | Size: 87 KiB |
|
Before Width: | Height: | Size: 381 KiB |
|
After Width: | Height: | Size: 114 KiB |
|
Before Width: | Height: | Size: 418 KiB |
|
After Width: | Height: | Size: 465 KiB |
|
Before Width: | Height: | Size: 422 KiB |
|
After Width: | Height: | Size: 192 KiB |
|
Before Width: | Height: | Size: 412 KiB |
|
After Width: | Height: | Size: 61 KiB |
|
Before Width: | Height: | Size: 426 KiB |
|
After Width: | Height: | Size: 117 KiB |
|
Before Width: | Height: | Size: 391 KiB |
|
After Width: | Height: | Size: 189 KiB |
|
Before Width: | Height: | Size: 396 KiB |
|
After Width: | Height: | Size: 108 KiB |
|
Before Width: | Height: | Size: 400 KiB |
|
After Width: | Height: | Size: 48 KiB |
|
Before Width: | Height: | Size: 466 KiB |
|
After Width: | Height: | Size: 121 KiB |
|
Before Width: | Height: | Size: 443 KiB |
|
After Width: | Height: | Size: 123 KiB |
|
Before Width: | Height: | Size: 393 KiB |
|
After Width: | Height: | Size: 132 KiB |
|
Before Width: | Height: | Size: 356 KiB |
|
After Width: | Height: | Size: 115 KiB |
|
Before Width: | Height: | Size: 406 KiB |
|
After Width: | Height: | Size: 143 KiB |
|
Before Width: | Height: | Size: 409 KiB |
|
After Width: | Height: | Size: 109 KiB |
|
Before Width: | Height: | Size: 383 KiB |
|
After Width: | Height: | Size: 111 KiB |
|
Before Width: | Height: | Size: 452 KiB |
|
After Width: | Height: | Size: 187 KiB |
|
Before Width: | Height: | Size: 353 KiB |
|
After Width: | Height: | Size: 121 KiB |
|
Before Width: | Height: | Size: 398 KiB |
|
After Width: | Height: | Size: 212 KiB |
|
Before Width: | Height: | Size: 455 KiB |
|
After Width: | Height: | Size: 67 KiB |
|
Before Width: | Height: | Size: 386 KiB |
|
After Width: | Height: | Size: 368 KiB |
|
Before Width: | Height: | Size: 349 KiB |
|
After Width: | Height: | Size: 399 KiB |
|
Before Width: | Height: | Size: 400 KiB |
|
After Width: | Height: | Size: 186 KiB |
|
Before Width: | Height: | Size: 393 KiB |
|
After Width: | Height: | Size: 204 KiB |
|
Before Width: | Height: | Size: 435 KiB |
|
After Width: | Height: | Size: 177 KiB |
|
Before Width: | Height: | Size: 393 KiB |
|
After Width: | Height: | Size: 184 KiB |
|
Before Width: | Height: | Size: 353 KiB |
|
After Width: | Height: | Size: 37 KiB |
|
Before Width: | Height: | Size: 420 KiB |
|
After Width: | Height: | Size: 187 KiB |
|
Before Width: | Height: | Size: 410 KiB |
|
After Width: | Height: | Size: 186 KiB |
|
Before Width: | Height: | Size: 380 KiB |
|
After Width: | Height: | Size: 192 KiB |