Merge branch 'master' into fix-boards-webapp-unit-tests

Этот коммит содержится в:
Caleb Roseland
2023-03-29 09:37:24 -05:00
родитель 4331ad24d3 c78d6d47ac
Коммит 6da94c769c
1364 изменённых файлов: 4408 добавлений и 4279 удалений

4
.github/codeql/codeql-config.yml поставляемый
Просмотреть файл

@@ -14,6 +14,6 @@ paths-ignore:
- templates - templates
- tests - tests
- 'api4/*_local.go' - 'api4/*_local.go'
- webapp/channels/e2e
- webapp/channels/tests - webapp/channels/tests
- '**/*.test.*' - '**/*.test.*'
- e2e-tests

50
.github/workflows/channels-ci.yml поставляемый
Просмотреть файл

@@ -5,6 +5,9 @@ on:
branches: branches:
- master - master
- mono-repo* - mono-repo*
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.ref != 'refs/heads/master' }}
defaults: defaults:
run: run:
shell: bash shell: bash
@@ -29,14 +32,14 @@ jobs:
# with: # with:
# path: | # path: |
# '**/node_modules' # '**/node_modules'
# 'e2e/playwright/node_modules' # 'e2e-tests/playwright/node_modules'
# 'e2e/cypress/node_modules' # 'e2e-tests/cypress/node_modules'
# key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}-${{ hashFiles('e2e/cypress/package-lock.json') }}-${{ hashFiles('e2e/playwright/package-lock.json') }} # key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}-${{ hashFiles('e2e-tests/cypress/package-lock.json') }}-${{ hashFiles('e2e-tests/playwright/package-lock.json') }}
- name: ci/get-node-modules - name: ci/get-node-modules
# if: steps.npm-cache.outputs.cache-hit != 'true' # if: steps.npm-cache.outputs.cache-hit != 'true'
run: | run: |
make node_modules make node_modules
# make channels/e2e/playwright/node_modules # make channels/e2e-tests/playwright/node_modules
- name: ci/lint - name: ci/lint
run: | run: |
npm run check npm run check
@@ -60,14 +63,14 @@ jobs:
# with: # with:
# path: | # path: |
# '**/node_modules' # '**/node_modules'
# 'e2e/playwright/node_modules' # 'e2e-tests/playwright/node_modules'
# 'e2e/cypress/node_modules' # 'e2e-tests/cypress/node_modules'
# key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}-${{ hashFiles('e2e/cypress/package-lock.json') }}-${{ hashFiles('e2e/playwright/package-lock.json') }} # key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}-${{ hashFiles('e2e-tests/cypress/package-lock.json') }}-${{ hashFiles('e2e-tests/playwright/package-lock.json') }}
- name: ci/get-node-modules - name: ci/get-node-modules
# if: steps.npm-cache.outputs.cache-hit != 'true' # if: steps.npm-cache.outputs.cache-hit != 'true'
run: | run: |
make node_modules make node_modules
# make channels/e2e/playwright/node_modules # make channels/e2e-tests/playwright/node_modules
- name: ci/lint - name: ci/lint
working-directory: webapp/channels working-directory: webapp/channels
run: | run: |
@@ -100,14 +103,14 @@ jobs:
# with: # with:
# path: | # path: |
# '**/node_modules' # '**/node_modules'
# 'e2e/playwright/node_modules' # 'e2e-tests/playwright/node_modules'
# 'e2e/cypress/node_modules' # 'e2e-tests/cypress/node_modules'
# key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}-${{ hashFiles('e2e/cypress/package-lock.json') }}-${{ hashFiles('e2e/playwright/package-lock.json') }} # key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}-${{ hashFiles('e2e-tests/cypress/package-lock.json') }}-${{ hashFiles('e2e-tests/playwright/package-lock.json') }}
- name: ci/get-node-modules - name: ci/get-node-modules
# if: steps.npm-cache.outputs.cache-hit != 'true' # if: steps.npm-cache.outputs.cache-hit != 'true'
run: | run: |
make node_modules make node_modules
# make channels/e2e/playwright/node_modules # make channels/e2e-tests/playwright/node_modules
- name: ci/lint - name: ci/lint
run: | run: |
npm run check-types npm run check-types
@@ -135,14 +138,14 @@ jobs:
# with: # with:
# path: | # path: |
# '**/node_modules' # '**/node_modules'
# 'e2e/playwright/node_modules' # 'e2e-tests/playwright/node_modules'
# 'e2e/cypress/node_modules' # 'e2e-tests/cypress/node_modules'
# key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}-${{ hashFiles('e2e/cypress/package-lock.json') }}-${{ hashFiles('e2e/playwright/package-lock.json') }} # key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}-${{ hashFiles('e2e-tests/cypress/package-lock.json') }}-${{ hashFiles('e2e-tests/playwright/package-lock.json') }}
- name: ci/get-node-modules - name: ci/get-node-modules
# if: steps.npm-cache.outputs.cache-hit != 'true' # if: steps.npm-cache.outputs.cache-hit != 'true'
run: | run: |
make node_modules make node_modules
# make channels/e2e/playwright/node_modules # make channels/e2e-tests/playwright/node_modules
- name: ci/test - name: ci/test
env: env:
NODE_OPTIONS: --max_old_space_size=5120 NODE_OPTIONS: --max_old_space_size=5120
@@ -151,13 +154,6 @@ jobs:
npm run test-ci --workspace=channels npm run test-ci --workspace=channels
npm run test-ci --workspace=platform/client npm run test-ci --workspace=platform/client
npm run test-ci --workspace=playbooks npm run test-ci --workspace=playbooks
- name: ci/publish-test-results
uses: EnricoMi/publish-unit-test-result-action@a3caf02865c0604ad3dc1ecfcc5cdec9c41b7936 # v2.3.0
if: always()
with:
junit_files: "webapp/channels/build/**/*.xml"
comment_mode: always
compare_to_earlier_commit: false
build: build:
runs-on: ubuntu-22.04 runs-on: ubuntu-22.04
defaults: defaults:
@@ -178,14 +174,14 @@ jobs:
# with: # with:
# path: | # path: |
# '**/node_modules' # '**/node_modules'
# 'e2e/playwright/node_modules' # 'e2e-tests/playwright/node_modules'
# 'e2e/cypress/node_modules' # 'e2e-tests/cypress/node_modules'
# key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}-${{ hashFiles('e2e/cypress/package-lock.json') }}-${{ hashFiles('e2e/playwright/package-lock.json') }} # key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}-${{ hashFiles('e2e-tests/cypress/package-lock.json') }}-${{ hashFiles('e2e-tests/playwright/package-lock.json') }}
- name: ci/get-node-modules - name: ci/get-node-modules
# if: steps.npm-cache.outputs.cache-hit != 'true' # if: steps.npm-cache.outputs.cache-hit != 'true'
run: | run: |
make node_modules make node_modules
# make channels/e2e/playwright/node_modules # make channels/e2e-tests/playwright/node_modules
- name: ci/build - name: ci/build
run: | run: |
npm run build npm run build

41
.github/workflows/ci.yml поставляемый
Просмотреть файл

@@ -7,6 +7,11 @@ on:
- cloud - cloud
- release-* - release-*
- mono-repo* - mono-repo*
env:
go-version: "1.19.5"
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.ref != 'refs/heads/master' }}
jobs: jobs:
check-mocks: check-mocks:
name: Check mocks name: Check mocks
@@ -17,6 +22,10 @@ jobs:
steps: steps:
- name: Checkout mattermost-server - name: Checkout mattermost-server
uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0
- name: Setup Go
uses: actions/setup-go@4d34df0c2316fe8122ab82dc22947d607c0c91f9 # v4.0.0
with:
go-version: ${{ env.go-version }}
- name: Generate mocks - name: Generate mocks
run: make mocks run: make mocks
- name: Check mocks - name: Check mocks
@@ -30,6 +39,10 @@ jobs:
steps: steps:
- name: Checkout mattermost-server - name: Checkout mattermost-server
uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0
- name: Setup Go
uses: actions/setup-go@4d34df0c2316fe8122ab82dc22947d607c0c91f9 # v4.0.0
with:
go-version: ${{ env.go-version }}
- name: Run go mod tidy - name: Run go mod tidy
run: make modules-tidy run: make modules-tidy
- name: Check modules - name: Check modules
@@ -43,6 +56,10 @@ jobs:
steps: steps:
- name: Checkout mattermost-server - name: Checkout mattermost-server
uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0
- name: Setup Go
uses: actions/setup-go@4d34df0c2316fe8122ab82dc22947d607c0c91f9 # v4.0.0
with:
go-version: ${{ env.go-version }}
- name: Run make-gen-serialized - name: Run make-gen-serialized
run: make gen-serialized run: make gen-serialized
- name: Check serialized - name: Check serialized
@@ -56,6 +73,10 @@ jobs:
steps: steps:
- name: Checkout mattermost-server - name: Checkout mattermost-server
uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0
- name: Setup Go
uses: actions/setup-go@4d34df0c2316fe8122ab82dc22947d607c0c91f9 # v4.0.0
with:
go-version: ${{ env.go-version }}
- name: Reset config - name: Reset config
run: make config-reset run: make config-reset
- name: Run plugin-checker - name: Run plugin-checker
@@ -81,6 +102,10 @@ jobs:
steps: steps:
- name: Checkout mattermost-server - name: Checkout mattermost-server
uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0
- name: Setup Go
uses: actions/setup-go@4d34df0c2316fe8122ab82dc22947d607c0c91f9 # v4.0.0
with:
go-version: ${{ env.go-version }}
- name: Checkout mattermost-api-reference - name: Checkout mattermost-api-reference
run: | run: |
cd .. cd ..
@@ -99,6 +124,10 @@ jobs:
steps: steps:
- name: Checkout mattermost-server - name: Checkout mattermost-server
uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0
- name: Setup Go
uses: actions/setup-go@4d34df0c2316fe8122ab82dc22947d607c0c91f9 # v4.0.0
with:
go-version: ${{ env.go-version }}
- name: Generate work templates - name: Generate work templates
run: make generate-worktemplates run: make generate-worktemplates
- name: Check generated work templates - name: Check generated work templates
@@ -127,6 +156,10 @@ jobs:
steps: steps:
- name: Checkout mattermost-server - name: Checkout mattermost-server
uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0
- name: Setup Go
uses: actions/setup-go@4d34df0c2316fe8122ab82dc22947d607c0c91f9 # v4.0.0
with:
go-version: ${{ env.go-version }}
- name: Generate store layers - name: Generate store layers
run: make store-layers run: make store-layers
- name: Check generated code - name: Check generated code
@@ -140,6 +173,10 @@ jobs:
steps: steps:
- name: Checkout mattermost-server - name: Checkout mattermost-server
uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0
- name: Setup Go
uses: actions/setup-go@4d34df0c2316fe8122ab82dc22947d607c0c91f9 # v4.0.0
with:
go-version: ${{ env.go-version }}
- name: Generate app layers - name: Generate app layers
run: make app-layers run: make app-layers
- name: Check generated code - name: Check generated code
@@ -175,6 +212,10 @@ jobs:
steps: steps:
- name: Checkout mattermost-server - name: Checkout mattermost-server
uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0
- name: Setup Go
uses: actions/setup-go@4d34df0c2316fe8122ab82dc22947d607c0c91f9 # v4.0.0
with:
go-version: ${{ env.go-version }}
- name: Build - name: Build
run: | run: |
make config-reset make config-reset

28
.github/workflows/codeql-analysis.yml поставляемый
Просмотреть файл

@@ -1,12 +1,16 @@
name: "CodeQL" name: "CodeQL"
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.ref != 'refs/heads/master' }}
on: on:
pull_request: pull_request:
# The branches below must be a subset of the branches above # The branches below must be a subset of the branches above
branches: [ master ] branches: [ master ]
schedule: schedule:
- cron: '30 5,17 * * *' - cron: '30 5,17 * * *'
permissions: permissions:
contents: read contents: read
@@ -20,7 +24,7 @@ jobs:
strategy: strategy:
fail-fast: false fail-fast: false
matrix: matrix:
language: [ 'go' ] language: [ 'go', 'javascript' ]
steps: steps:
- name: Checkout repository - name: Checkout repository
@@ -32,14 +36,26 @@ jobs:
with: with:
languages: ${{ matrix.language }} languages: ${{ matrix.language }}
debug: false debug: false
config-file: ./.github/codeql/codeql-config.yml config-file: ./.github/codeql/codeql-config.yml
- name: Build - name: Build JavaScript
uses: github/codeql-action/autobuild@v2
if: ${{ matrix.language == 'javascript' }}
- name: Setup go
uses: actions/setup-go@v2
with:
go-version: '1.20'
if: ${{ matrix.language == 'go' }}
- name: Build Golang
run: | run: |
cd server cd server
make setup-go-work make setup-go-work
make build-linux-amd64 make build-linux-amd64
if: ${{ matrix.language == 'go' }}
# Perform Analysis # Perform Analysis
- name: Perform CodeQL Analysis - name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v2 uses: github/codeql-action/analyze@v2

Просмотреть файл

@@ -1,10 +1,13 @@
name: mattermost-e2e name: mattermost-e2e-tests
on: on:
pull_request: pull_request:
push: push:
branches: branches:
- master - master
- mono-repo* - mono-repo*
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.ref != 'refs/heads/master' }}
defaults: defaults:
run: run:
shell: bash shell: bash
@@ -13,7 +16,7 @@ jobs:
runs-on: ubuntu-22.04 runs-on: ubuntu-22.04
defaults: defaults:
run: run:
working-directory: e2e/cypress working-directory: e2e-tests/cypress
steps: steps:
- name: ci/checkout-repo - name: ci/checkout-repo
uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0
@@ -23,7 +26,7 @@ jobs:
with: with:
node-version-file: ".nvmrc" node-version-file: ".nvmrc"
cache: npm cache: npm
cache-dependency-path: 'e2e/cypress/package-lock.json' cache-dependency-path: 'e2e-tests/cypress/package-lock.json'
- name: ci/cypress/npm-install - name: ci/cypress/npm-install
run: | run: |
npm ci npm ci
@@ -34,7 +37,7 @@ jobs:
runs-on: ubuntu-22.04 runs-on: ubuntu-22.04
defaults: defaults:
run: run:
working-directory: e2e/playwright working-directory: e2e-tests/playwright
steps: steps:
- name: ci/checkout-repo - name: ci/checkout-repo
uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0
@@ -44,7 +47,7 @@ jobs:
with: with:
node-version-file: ".nvmrc" node-version-file: ".nvmrc"
cache: npm cache: npm
cache-dependency-path: 'e2e/playwright/package-lock.json' cache-dependency-path: 'e2e-tests/playwright/package-lock.json'
- name: ci/get-webapp-node-modules - name: ci/get-webapp-node-modules
working-directory: webapp working-directory: webapp
# requires build of client and types # requires build of client and types

6
.github/workflows/test.yml поставляемый
Просмотреть файл

@@ -8,6 +8,8 @@ on:
drivername: drivername:
required: true required: true
type: string type: string
env:
go-version: "1.19.5"
jobs: jobs:
run-tests: run-tests:
runs-on: ubuntu-latest-8-cores runs-on: ubuntu-latest-8-cores
@@ -17,6 +19,10 @@ jobs:
steps: steps:
- name: Checkout mattermost-server - name: Checkout mattermost-server
uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0
- name: Setup Go
uses: actions/setup-go@4d34df0c2316fe8122ab82dc22947d607c0c91f9 # v4.0.0
with:
go-version: ${{ env.go-version }}
- name: Run docker compose - name: Run docker compose
run: | run: |
cd server/build cd server/build

34
.gitignore поставляемый
Просмотреть файл

@@ -23,25 +23,25 @@ config/logging.json
/plugins /plugins
# disable folders generated by Cypress # disable folders generated by Cypress
e2e/cypress/node_modules e2e-tests/cypress/node_modules
e2e/cypress/tests/downloads e2e-tests/cypress/tests/downloads
e2e/cypress/tests/screenshots e2e-tests/cypress/tests/screenshots
e2e/cypress/tests/videos e2e-tests/cypress/tests/videos
e2e/cypress/tests/integration/benchmark/__benchmarks__ e2e-tests/cypress/tests/integration/benchmark/__benchmarks__
e2e/cypress/tests/integration/performance/logs e2e-tests/cypress/tests/integration/performance/logs
e2e/cypress/tests/fixtures/ldap_tmp e2e-tests/cypress/tests/fixtures/ldap_tmp
e2e/cypress/tests/fixtures/mmctl e2e-tests/cypress/tests/fixtures/mmctl
e2e/cypress/results e2e-tests/cypress/results
e2e/cypress/.eslintcache e2e-tests/cypress/.eslintcache
# disable files/folders generated by Playwright # disable files/folders generated by Playwright
e2e/playwright/node_modules e2e-tests/playwright/node_modules
e2e/playwright/playwright-report e2e-tests/playwright/playwright-report
e2e/playwright/storage_state e2e-tests/playwright/storage_state
e2e/playwright/test-results e2e-tests/playwright/test-results
e2e/playwright/tests/**/*-darwin.png e2e-tests/playwright/tests/**/*-darwin.png
e2e/playwright/tests/**/*-window.png e2e-tests/playwright/tests/**/*-window.png
e2e/playwright/.eslintcache e2e-tests/playwright/.eslintcache
# Enterprise & products imports files # Enterprise & products imports files
imports/imports.go imports/imports.go

Просмотреть файл

@@ -7,7 +7,7 @@ stages:
include: include:
- project: mattermost/ci/mattermost-server - project: mattermost/ci/mattermost-server
ref: monorepo-testing ref: master
file: private.yml file: private.yml
variables: variables:

Просмотреть файл

@@ -1 +1,9 @@
/plugin/ @mattermost/toolkit /plugin/ @mattermost/toolkit
/.github/workflows/channels-ci.yml @mattermost/web-platform
/webapp/package.json @mattermost/web-platform
/webapp/channels/package.json @mattermost/web-platform
/webapp/Makefile @mattermost/web-platform
/webapp/package-lock.json @mattermost/web-platform
/webapp/platform/*/package.json @mattermost/web-platform
/webapp/scripts @mattermost/web-platform

Просмотреть файл

@@ -11,8 +11,8 @@ You may be licensed to use source code to create compiled versions not produced
1. Under the Free Software Foundations GNU AGPL v.3.0, subject to the exceptions outlined in this policy; or 1. Under the Free Software Foundations GNU AGPL v.3.0, subject to the exceptions outlined in this policy; or
2. Under a commercial license available from Mattermost, Inc. by contacting commercial@mattermost.com 2. Under a commercial license available from Mattermost, Inc. by contacting commercial@mattermost.com
You are licensed to use the source code in Admin Tools and Configuration Files (templates/, config/default.json, i18n/, model/, You are licensed to use the source code in Admin Tools and Configuration Files (server/templates/, server/i18n/, model/,
plugin/ and all subdirectories thereof) under the Apache License v2.0. plugin/, server/boards/, server/playbooks/, webapp/ and all subdirectories thereof) under the Apache License v2.0.
We promise that we will not enforce the copyleft provisions in AGPL v3.0 against you if your application (a) does not We promise that we will not enforce the copyleft provisions in AGPL v3.0 against you if your application (a) does not
link to the Mattermost Platform directly, but exclusively uses the Mattermost Admin Tools and Configuration Files, and link to the Mattermost Platform directly, but exclusively uses the Mattermost Admin Tools and Configuration Files, and

0
e2e/.gitignore → e2e-tests/.gitignore поставляемый
Просмотреть файл

Просмотреть файл

Просмотреть файл

Просмотреть файл

Просмотреть файл

Просмотреть файл

Просмотреть файл

Просмотреть файл

Просмотреть файл

Просмотреть файл

Просмотреть файл

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 21 KiB

После

Ширина:  |  Высота:  |  Размер: 21 KiB

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 341 KiB

После

Ширина:  |  Высота:  |  Размер: 341 KiB

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 769 KiB

После

Ширина:  |  Высота:  |  Размер: 769 KiB

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 3.3 KiB

После

Ширина:  |  Высота:  |  Размер: 3.3 KiB

Просмотреть файл

Просмотреть файл

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 356 B

После

Ширина:  |  Высота:  |  Размер: 356 B

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 559 B

После

Ширина:  |  Высота:  |  Размер: 559 B

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 382 B

После

Ширина:  |  Высота:  |  Размер: 382 B

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 514 B

После

Ширина:  |  Высота:  |  Размер: 514 B

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 114 KiB

После

Ширина:  |  Высота:  |  Размер: 114 KiB

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 470 KiB

После

Ширина:  |  Высота:  |  Размер: 470 KiB

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 611 KiB

После

Ширина:  |  Высота:  |  Размер: 611 KiB

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 7.7 KiB

После

Ширина:  |  Высота:  |  Размер: 7.7 KiB

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 11 KiB

После

Ширина:  |  Высота:  |  Размер: 11 KiB

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 956 B

После

Ширина:  |  Высота:  |  Размер: 956 B

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 3.5 KiB

После

Ширина:  |  Высота:  |  Размер: 3.5 KiB

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 14 KiB

После

Ширина:  |  Высота:  |  Размер: 14 KiB

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 2.3 KiB

После

Ширина:  |  Высота:  |  Размер: 2.3 KiB

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 1.0 KiB

После

Ширина:  |  Высота:  |  Размер: 1.0 KiB

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 1.3 KiB

После

Ширина:  |  Высота:  |  Размер: 1.3 KiB

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 16 KiB

После

Ширина:  |  Высота:  |  Размер: 16 KiB

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 13 KiB

После

Ширина:  |  Высота:  |  Размер: 13 KiB

Просмотреть файл

До

Ширина:  |  Высота:  |  Размер: 89 KiB

После

Ширина:  |  Высота:  |  Размер: 89 KiB

Просмотреть файл

Просмотреть файл

Просмотреть файл

Просмотреть файл

Просмотреть файл

Некоторые файлы не были показаны из-за слишком большого количества измененных файлов Показать больше