Updated Jules Jordan scraper.
|
@ -1,21 +1,23 @@
|
||||||
<template>
|
<template>
|
||||||
|
<iframe
|
||||||
|
v-if="campaign?.banner?.type === 'html'"
|
||||||
|
:width="campaign.banner.width"
|
||||||
|
:height="campaign.banner.height"
|
||||||
|
:src="getSource(campaign)"
|
||||||
|
scrolling="none"
|
||||||
|
marginwidth="0"
|
||||||
|
marginheight="0"
|
||||||
|
class="campaign frame"
|
||||||
|
/>
|
||||||
|
|
||||||
<a
|
<a
|
||||||
v-if="campaign"
|
v-else-if="campaign"
|
||||||
:href="campaign.url || campaign.affiliate?.url"
|
:href="campaign.url || campaign.affiliate?.url"
|
||||||
target="_blank"
|
target="_blank"
|
||||||
class="campaign"
|
class="campaign"
|
||||||
>
|
>
|
||||||
<img
|
<img
|
||||||
v-if="campaign.banner.entity.type === 'network' || !campaign.banner.entity.parent"
|
:src="getSource(campaign)"
|
||||||
:src="`/img/banners/${campaign.banner.entity.slug}/${campaign.banner.id}.${campaign.banner.type || 'jpg'}`"
|
|
||||||
:width="campaign.banner.width"
|
|
||||||
:height="campaign.banner.height"
|
|
||||||
class="campaign-banner"
|
|
||||||
>
|
|
||||||
|
|
||||||
<img
|
|
||||||
v-if="campaign.banner.entity.type === 'channel' && campaign.banner.entity.parent?.type === 'network'"
|
|
||||||
:src="`/img/banners/${campaign.banner.entity.parent.slug}/${campaign.banner.entity.slug}/${campaign.banner.id}.${campaign.banner.type || 'jpg'}`"
|
|
||||||
:width="campaign.banner.width"
|
:width="campaign.banner.width"
|
||||||
:height="campaign.banner.height"
|
:height="campaign.banner.height"
|
||||||
class="campaign-banner"
|
class="campaign-banner"
|
||||||
|
@ -37,6 +39,12 @@ function ratioFilter(banner) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (banner.type === 'html' && banner.width > window.innerWidth) {
|
||||||
|
// usually non-scalable iframes
|
||||||
|
console.log('TOO WIDE');
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
if (this.minRatio && banner.ratio < this.minRatio) {
|
if (this.minRatio && banner.ratio < this.minRatio) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -48,6 +56,18 @@ function ratioFilter(banner) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function getSource(campaign) {
|
||||||
|
if (campaign.banner.entity.type === 'network' || !campaign.banner.entity.parent) {
|
||||||
|
return `/banners/${campaign.banner.entity.slug}/${campaign.banner.id}.${campaign.banner.type || 'jpg'}`;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (campaign.banner.entity.type === 'channel' && campaign.banner.entity.parent?.type === 'network') {
|
||||||
|
return `/banners/${campaign.banner.entity.parent.slug}/${campaign.banner.entity.slug}/${campaign.banner.id}.${campaign.banner.type || 'jpg'}`;
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
function entityCampaign() {
|
function entityCampaign() {
|
||||||
const bannerCampaigns = this.entity.campaigns
|
const bannerCampaigns = this.entity.campaigns
|
||||||
.concat(this.entity.children?.flatMap((child) => child.campaigns))
|
.concat(this.entity.children?.flatMap((child) => child.campaigns))
|
||||||
|
@ -106,7 +126,21 @@ async function genericCampaign() {
|
||||||
return randomCampaign;
|
return randomCampaign;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async function specificCampaign(campaignId) {
|
||||||
|
const campaign = await this.$store.dispatch('fetchCampaign', campaignId);
|
||||||
|
|
||||||
|
this.campaign = campaign;
|
||||||
|
this.$emit('campaign', campaign);
|
||||||
|
|
||||||
|
return campaign;
|
||||||
|
}
|
||||||
|
|
||||||
async function mounted() {
|
async function mounted() {
|
||||||
|
if (this.$route.query.campaign) {
|
||||||
|
await this.specificCampaign(this.$route.query.campaign);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (this.entity) {
|
if (this.entity) {
|
||||||
await this.entityCampaign();
|
await this.entityCampaign();
|
||||||
return;
|
return;
|
||||||
|
@ -161,7 +195,9 @@ export default {
|
||||||
methods: {
|
methods: {
|
||||||
entityCampaign,
|
entityCampaign,
|
||||||
genericCampaign,
|
genericCampaign,
|
||||||
|
getSource,
|
||||||
ratioFilter,
|
ratioFilter,
|
||||||
|
specificCampaign,
|
||||||
tagCampaign,
|
tagCampaign,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
@ -169,10 +205,10 @@ export default {
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
.campaign {
|
.campaign {
|
||||||
height: 100%;
|
|
||||||
display: inline-flex;
|
display: inline-flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
|
border: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
.campaign-banner {
|
.campaign-banner {
|
||||||
|
|
|
@ -49,11 +49,11 @@ import Campaign from '../campaigns/campaign.vue';
|
||||||
|
|
||||||
function photos() {
|
function photos() {
|
||||||
if (this.tag.poster && this.$store.state.ui.sfw) {
|
if (this.tag.poster && this.$store.state.ui.sfw) {
|
||||||
return [this.tag.poster].concat(this.tag.photos).map(photo => photo.sfw);
|
return [this.tag.poster].concat(this.tag.photos).map((photo) => photo.sfw);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.$store.state.ui.sfw) {
|
if (this.$store.state.ui.sfw) {
|
||||||
return this.tag.photos.map(photo => photo.sfw);
|
return this.tag.photos.map((photo) => photo.sfw);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.tag.poster) {
|
if (this.tag.poster) {
|
||||||
|
|
|
@ -166,6 +166,47 @@ const movieFields = `
|
||||||
}
|
}
|
||||||
`;
|
`;
|
||||||
|
|
||||||
|
const campaignFields = `
|
||||||
|
id
|
||||||
|
url
|
||||||
|
affiliate {
|
||||||
|
id
|
||||||
|
url
|
||||||
|
parameters
|
||||||
|
}
|
||||||
|
banner {
|
||||||
|
id
|
||||||
|
type
|
||||||
|
width
|
||||||
|
height
|
||||||
|
ratio
|
||||||
|
entity {
|
||||||
|
id
|
||||||
|
type
|
||||||
|
name
|
||||||
|
slug
|
||||||
|
parent {
|
||||||
|
id
|
||||||
|
type
|
||||||
|
name
|
||||||
|
slug
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
entity {
|
||||||
|
id
|
||||||
|
type
|
||||||
|
name
|
||||||
|
slug
|
||||||
|
parent {
|
||||||
|
id
|
||||||
|
type
|
||||||
|
name
|
||||||
|
slug
|
||||||
|
}
|
||||||
|
}
|
||||||
|
`;
|
||||||
|
|
||||||
const campaignsFragment = `
|
const campaignsFragment = `
|
||||||
campaigns(filter: {
|
campaigns(filter: {
|
||||||
or: [
|
or: [
|
||||||
|
@ -187,44 +228,7 @@ const campaignsFragment = `
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}) {
|
}) {
|
||||||
id
|
${campaignFields}
|
||||||
url
|
|
||||||
affiliate {
|
|
||||||
id
|
|
||||||
url
|
|
||||||
parameters
|
|
||||||
}
|
|
||||||
banner {
|
|
||||||
id
|
|
||||||
type
|
|
||||||
width
|
|
||||||
height
|
|
||||||
ratio
|
|
||||||
entity {
|
|
||||||
id
|
|
||||||
type
|
|
||||||
name
|
|
||||||
slug
|
|
||||||
parent {
|
|
||||||
id
|
|
||||||
type
|
|
||||||
name
|
|
||||||
slug
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
entity {
|
|
||||||
id
|
|
||||||
type
|
|
||||||
name
|
|
||||||
slug
|
|
||||||
parent {
|
|
||||||
id
|
|
||||||
type
|
|
||||||
name
|
|
||||||
slug
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
`;
|
`;
|
||||||
|
|
||||||
|
@ -670,6 +674,7 @@ export {
|
||||||
actorFields,
|
actorFields,
|
||||||
actorStashesFields,
|
actorStashesFields,
|
||||||
batchFragment,
|
batchFragment,
|
||||||
|
campaignFields,
|
||||||
campaignsFragment,
|
campaignsFragment,
|
||||||
mediaFields,
|
mediaFields,
|
||||||
mediaFragment,
|
mediaFragment,
|
||||||
|
|
|
@ -1,5 +1,12 @@
|
||||||
import { graphql, patch } from '../api';
|
import { graphql, patch } from '../api';
|
||||||
import { releaseFields, batchFragment, actorStashesFields } from '../fragments';
|
|
||||||
|
import {
|
||||||
|
releaseFields,
|
||||||
|
batchFragment,
|
||||||
|
campaignFields,
|
||||||
|
actorStashesFields,
|
||||||
|
} from '../fragments';
|
||||||
|
|
||||||
import { curateRelease, curateActor, curateNotification } from '../curate';
|
import { curateRelease, curateActor, curateNotification } from '../curate';
|
||||||
|
|
||||||
function initUiActions(store, _router) {
|
function initUiActions(store, _router) {
|
||||||
|
@ -240,29 +247,7 @@ function initUiActions(store, _router) {
|
||||||
$maxRatio: BigFloat
|
$maxRatio: BigFloat
|
||||||
) {
|
) {
|
||||||
randomCampaign: getRandomCampaign(minRatio: $minRatio, maxRatio: $maxRatio) {
|
randomCampaign: getRandomCampaign(minRatio: $minRatio, maxRatio: $maxRatio) {
|
||||||
url
|
${campaignFields}
|
||||||
affiliate {
|
|
||||||
url
|
|
||||||
}
|
|
||||||
banner {
|
|
||||||
id
|
|
||||||
type
|
|
||||||
ratio
|
|
||||||
entity {
|
|
||||||
type
|
|
||||||
slug
|
|
||||||
parent {
|
|
||||||
type
|
|
||||||
slug
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
entity {
|
|
||||||
slug
|
|
||||||
}
|
|
||||||
parent {
|
|
||||||
slug
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
`, {
|
`, {
|
||||||
|
@ -273,6 +258,23 @@ function initUiActions(store, _router) {
|
||||||
return randomCampaign;
|
return randomCampaign;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async function fetchCampaign(context, campaignId) {
|
||||||
|
console.log(campaignId);
|
||||||
|
const { campaign } = await graphql(`
|
||||||
|
query Campaign(
|
||||||
|
$campaignId: Int!
|
||||||
|
) {
|
||||||
|
campaign(id: $campaignId) {
|
||||||
|
${campaignFields}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
`, {
|
||||||
|
campaignId: Number(campaignId),
|
||||||
|
});
|
||||||
|
|
||||||
|
return campaign;
|
||||||
|
}
|
||||||
|
|
||||||
async function fetchStats() {
|
async function fetchStats() {
|
||||||
const {
|
const {
|
||||||
scenes,
|
scenes,
|
||||||
|
@ -312,6 +314,7 @@ function initUiActions(store, _router) {
|
||||||
setBatch,
|
setBatch,
|
||||||
setSfw,
|
setSfw,
|
||||||
setTheme,
|
setTheme,
|
||||||
|
fetchCampaign,
|
||||||
fetchRandomCampaign,
|
fetchRandomCampaign,
|
||||||
fetchNotifications,
|
fetchNotifications,
|
||||||
fetchStats,
|
fetchStats,
|
||||||
|
|
|
@ -1552,6 +1552,11 @@ exports.up = (knex) => Promise.resolve()
|
||||||
.defaultTo(knex.fn.now());
|
.defaultTo(knex.fn.now());
|
||||||
}))
|
}))
|
||||||
.then(() => knex.schema.createTable('random_campaign', (table) => {
|
.then(() => knex.schema.createTable('random_campaign', (table) => {
|
||||||
|
table.integer('id')
|
||||||
|
.notNullable()
|
||||||
|
.references('id')
|
||||||
|
.inTable('campaigns');
|
||||||
|
|
||||||
table.text('banner_id')
|
table.text('banner_id')
|
||||||
.references('id')
|
.references('id')
|
||||||
.inTable('banners');
|
.inTable('banners');
|
||||||
|
@ -1903,7 +1908,7 @@ exports.up = (knex) => Promise.resolve()
|
||||||
CREATE FUNCTION get_random_campaign(min_ratio decimal default 0, max_ratio decimal default 1000.0) RETURNS random_campaign AS $$
|
CREATE FUNCTION get_random_campaign(min_ratio decimal default 0, max_ratio decimal default 1000.0) RETURNS random_campaign AS $$
|
||||||
SELECT * FROM (
|
SELECT * FROM (
|
||||||
SELECT DISTINCT ON (CASE WHEN parent_id IS NOT NULL THEN parent_id ELSE entity_id END)
|
SELECT DISTINCT ON (CASE WHEN parent_id IS NOT NULL THEN parent_id ELSE entity_id END)
|
||||||
banner_id, url, entity_id, affiliate_id, parent_id
|
id, banner_id, url, entity_id, affiliate_id, parent_id
|
||||||
FROM (
|
FROM (
|
||||||
SELECT
|
SELECT
|
||||||
campaigns.*, entities.parent_id as parent_id
|
campaigns.*, entities.parent_id as parent_id
|
||||||
|
|
|
@ -0,0 +1,58 @@
|
||||||
|
exports.up = async (knex) => {
|
||||||
|
await knex.schema.alterTable('random_campaign', (table) => {
|
||||||
|
table.integer('id')
|
||||||
|
.notNullable()
|
||||||
|
.references('id')
|
||||||
|
.inTable('campaigns');
|
||||||
|
});
|
||||||
|
|
||||||
|
await knex.raw(`
|
||||||
|
CREATE OR REPLACE FUNCTION get_random_campaign(min_ratio decimal default 0, max_ratio decimal default 1000.0) RETURNS random_campaign AS $$
|
||||||
|
SELECT * FROM (
|
||||||
|
SELECT DISTINCT ON (CASE WHEN parent_id IS NOT NULL THEN parent_id ELSE entity_id END)
|
||||||
|
banner_id, url, entity_id, affiliate_id, parent_id, id
|
||||||
|
FROM (
|
||||||
|
SELECT
|
||||||
|
campaigns.*, entities.parent_id as parent_id
|
||||||
|
FROM campaigns
|
||||||
|
LEFT JOIN entities ON entities.id = campaigns.entity_id
|
||||||
|
LEFT JOIN banners ON banners.id = campaigns.banner_id
|
||||||
|
WHERE banner_id IS NOT NULL
|
||||||
|
AND ratio >= min_ratio
|
||||||
|
AND ratio <= max_ratio
|
||||||
|
ORDER BY RANDOM()
|
||||||
|
) random_campaigns
|
||||||
|
) random_banners
|
||||||
|
ORDER BY RANDOM()
|
||||||
|
LIMIT 1;
|
||||||
|
$$ LANGUAGE SQL STABLE;
|
||||||
|
`);
|
||||||
|
};
|
||||||
|
|
||||||
|
exports.down = async (knex) => {
|
||||||
|
await knex.schema.alterTable('random_campaign', (table) => {
|
||||||
|
table.dropColumn('campaign_id');
|
||||||
|
});
|
||||||
|
|
||||||
|
await knex.raw(`
|
||||||
|
CREATE OR REPLACE FUNCTION get_random_campaign(min_ratio decimal default 0, max_ratio decimal default 1000.0) RETURNS random_campaign AS $$
|
||||||
|
SELECT * FROM (
|
||||||
|
SELECT DISTINCT ON (CASE WHEN parent_id IS NOT NULL THEN parent_id ELSE entity_id END)
|
||||||
|
banner_id, url, entity_id, affiliate_id, parent_id
|
||||||
|
FROM (
|
||||||
|
SELECT
|
||||||
|
campaigns.*, entities.parent_id as parent_id
|
||||||
|
FROM campaigns
|
||||||
|
LEFT JOIN entities ON entities.id = campaigns.entity_id
|
||||||
|
LEFT JOIN banners ON banners.id = campaigns.banner_id
|
||||||
|
WHERE banner_id IS NOT NULL
|
||||||
|
AND ratio >= min_ratio
|
||||||
|
AND ratio <= max_ratio
|
||||||
|
ORDER BY RANDOM()
|
||||||
|
) random_campaigns
|
||||||
|
) random_banners
|
||||||
|
ORDER BY RANDOM()
|
||||||
|
LIMIT 1;
|
||||||
|
$$ LANGUAGE SQL STABLE;
|
||||||
|
`);
|
||||||
|
};
|
|
@ -0,0 +1,11 @@
|
||||||
|
exports.up = async (knex) => {
|
||||||
|
await knex.schema.alterTable('banners', (table) => {
|
||||||
|
table.text('html');
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
exports.down = async (knex) => {
|
||||||
|
await knex.schema.alterTable('banners', (table) => {
|
||||||
|
table.dropColumn('html');
|
||||||
|
});
|
||||||
|
};
|
Before Width: | Height: | Size: 100 KiB After Width: | Height: | Size: 100 KiB |
Before Width: | Height: | Size: 105 KiB After Width: | Height: | Size: 105 KiB |
Before Width: | Height: | Size: 71 KiB After Width: | Height: | Size: 71 KiB |
Before Width: | Height: | Size: 67 KiB After Width: | Height: | Size: 67 KiB |
Before Width: | Height: | Size: 67 KiB After Width: | Height: | Size: 67 KiB |
Before Width: | Height: | Size: 33 KiB After Width: | Height: | Size: 33 KiB |
Before Width: | Height: | Size: 59 KiB After Width: | Height: | Size: 59 KiB |
Before Width: | Height: | Size: 31 KiB After Width: | Height: | Size: 31 KiB |
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 32 KiB |
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 26 KiB |
Before Width: | Height: | Size: 50 KiB After Width: | Height: | Size: 50 KiB |
Before Width: | Height: | Size: 64 KiB After Width: | Height: | Size: 64 KiB |
Before Width: | Height: | Size: 37 KiB After Width: | Height: | Size: 37 KiB |
Before Width: | Height: | Size: 37 KiB After Width: | Height: | Size: 37 KiB |
Before Width: | Height: | Size: 74 KiB After Width: | Height: | Size: 74 KiB |
Before Width: | Height: | Size: 85 KiB After Width: | Height: | Size: 85 KiB |
Before Width: | Height: | Size: 190 KiB After Width: | Height: | Size: 190 KiB |
Before Width: | Height: | Size: 41 KiB After Width: | Height: | Size: 41 KiB |
Before Width: | Height: | Size: 44 KiB After Width: | Height: | Size: 44 KiB |
Before Width: | Height: | Size: 92 KiB After Width: | Height: | Size: 92 KiB |
Before Width: | Height: | Size: 98 KiB After Width: | Height: | Size: 98 KiB |
Before Width: | Height: | Size: 88 KiB After Width: | Height: | Size: 88 KiB |
Before Width: | Height: | Size: 48 KiB After Width: | Height: | Size: 48 KiB |
Before Width: | Height: | Size: 85 KiB After Width: | Height: | Size: 85 KiB |
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 22 KiB |
Before Width: | Height: | Size: 87 KiB After Width: | Height: | Size: 87 KiB |
Before Width: | Height: | Size: 83 KiB After Width: | Height: | Size: 83 KiB |
Before Width: | Height: | Size: 90 KiB After Width: | Height: | Size: 90 KiB |
Before Width: | Height: | Size: 70 KiB After Width: | Height: | Size: 70 KiB |
Before Width: | Height: | Size: 81 KiB After Width: | Height: | Size: 81 KiB |
Before Width: | Height: | Size: 72 KiB After Width: | Height: | Size: 72 KiB |
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 19 KiB |
Before Width: | Height: | Size: 146 KiB After Width: | Height: | Size: 146 KiB |
Before Width: | Height: | Size: 48 KiB After Width: | Height: | Size: 48 KiB |
Before Width: | Height: | Size: 498 KiB After Width: | Height: | Size: 498 KiB |
Before Width: | Height: | Size: 145 KiB After Width: | Height: | Size: 145 KiB |
Before Width: | Height: | Size: 38 KiB After Width: | Height: | Size: 38 KiB |
Before Width: | Height: | Size: 46 KiB After Width: | Height: | Size: 46 KiB |
Before Width: | Height: | Size: 191 KiB After Width: | Height: | Size: 191 KiB |
Before Width: | Height: | Size: 44 KiB After Width: | Height: | Size: 44 KiB |
Before Width: | Height: | Size: 41 KiB After Width: | Height: | Size: 41 KiB |
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 22 KiB |
Before Width: | Height: | Size: 73 KiB After Width: | Height: | Size: 73 KiB |
|
@ -0,0 +1 @@
|
||||||
|
<iframe style="background-color: white;" width="300" height="100" scrolling="no" frameborder="0" allowtransparency="true" marginheight="0" marginwidth="0" name="spot_id_10002480" src="//a.adtng.com/get/10002480?ata=DebaucheryLibrarian"></iframe>
|
|
@ -0,0 +1 @@
|
||||||
|
<iframe style="background-color: white;" width="300" height="250" scrolling="no" frameborder="0" allowtransparency="true" marginheight="0" marginwidth="0" name="spot_id_10001807" src="//a.adtng.com/get/10001807?ata=DebaucheryLibrarian"></iframe>
|
|
@ -0,0 +1 @@
|
||||||
|
<iframe style="background-color: white;" width="315" height="300" scrolling="no" frameborder="0" allowtransparency="true" marginheight="0" marginwidth="0" name="spot_id_10002484" src="//a.adtng.com/get/10002484?ata=DebaucheryLibrarian"></iframe>
|
|
@ -0,0 +1 @@
|
||||||
|
<iframe style="background-color: white;" width="728" height="90" scrolling="no" frameborder="0" allowtransparency="true" marginheight="0" marginwidth="0" name="spot_id_10002466" src="//a.adtng.com/get/10002466?ata=DebaucheryLibrarian"></iframe>
|
Before Width: | Height: | Size: 72 KiB After Width: | Height: | Size: 72 KiB |
Before Width: | Height: | Size: 72 KiB After Width: | Height: | Size: 72 KiB |
Before Width: | Height: | Size: 69 KiB After Width: | Height: | Size: 69 KiB |
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 26 KiB |
Before Width: | Height: | Size: 72 KiB After Width: | Height: | Size: 72 KiB |
Before Width: | Height: | Size: 78 KiB After Width: | Height: | Size: 78 KiB |
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 26 KiB |
Before Width: | Height: | Size: 72 KiB After Width: | Height: | Size: 72 KiB |
Before Width: | Height: | Size: 80 KiB After Width: | Height: | Size: 80 KiB |
Before Width: | Height: | Size: 27 KiB After Width: | Height: | Size: 27 KiB |
Before Width: | Height: | Size: 74 KiB After Width: | Height: | Size: 74 KiB |
Before Width: | Height: | Size: 676 KiB After Width: | Height: | Size: 676 KiB |
Before Width: | Height: | Size: 51 KiB After Width: | Height: | Size: 51 KiB |
Before Width: | Height: | Size: 55 KiB After Width: | Height: | Size: 55 KiB |
Before Width: | Height: | Size: 55 KiB After Width: | Height: | Size: 55 KiB |
Before Width: | Height: | Size: 55 KiB After Width: | Height: | Size: 55 KiB |
Before Width: | Height: | Size: 56 KiB After Width: | Height: | Size: 56 KiB |
Before Width: | Height: | Size: 54 KiB After Width: | Height: | Size: 54 KiB |
Before Width: | Height: | Size: 56 KiB After Width: | Height: | Size: 56 KiB |
Before Width: | Height: | Size: 48 KiB After Width: | Height: | Size: 48 KiB |
Before Width: | Height: | Size: 48 KiB After Width: | Height: | Size: 48 KiB |
Before Width: | Height: | Size: 100 KiB After Width: | Height: | Size: 100 KiB |
Before Width: | Height: | Size: 116 KiB After Width: | Height: | Size: 116 KiB |
Before Width: | Height: | Size: 99 KiB After Width: | Height: | Size: 99 KiB |
Before Width: | Height: | Size: 101 KiB After Width: | Height: | Size: 101 KiB |
Before Width: | Height: | Size: 102 KiB After Width: | Height: | Size: 102 KiB |
Before Width: | Height: | Size: 65 KiB After Width: | Height: | Size: 65 KiB |
Before Width: | Height: | Size: 104 KiB After Width: | Height: | Size: 104 KiB |
Before Width: | Height: | Size: 114 KiB After Width: | Height: | Size: 114 KiB |
Before Width: | Height: | Size: 105 KiB After Width: | Height: | Size: 105 KiB |
Before Width: | Height: | Size: 102 KiB After Width: | Height: | Size: 102 KiB |
Before Width: | Height: | Size: 64 KiB After Width: | Height: | Size: 64 KiB |
Before Width: | Height: | Size: 84 KiB After Width: | Height: | Size: 84 KiB |
Before Width: | Height: | Size: 93 KiB After Width: | Height: | Size: 93 KiB |
Before Width: | Height: | Size: 109 KiB After Width: | Height: | Size: 109 KiB |
Before Width: | Height: | Size: 106 KiB After Width: | Height: | Size: 106 KiB |
Before Width: | Height: | Size: 105 KiB After Width: | Height: | Size: 105 KiB |
Before Width: | Height: | Size: 104 KiB After Width: | Height: | Size: 104 KiB |
Before Width: | Height: | Size: 110 KiB After Width: | Height: | Size: 110 KiB |
Before Width: | Height: | Size: 66 KiB After Width: | Height: | Size: 66 KiB |
Before Width: | Height: | Size: 94 KiB After Width: | Height: | Size: 94 KiB |
Before Width: | Height: | Size: 94 KiB After Width: | Height: | Size: 94 KiB |
Before Width: | Height: | Size: 93 KiB After Width: | Height: | Size: 93 KiB |
Before Width: | Height: | Size: 78 KiB After Width: | Height: | Size: 78 KiB |
Before Width: | Height: | Size: 84 KiB After Width: | Height: | Size: 84 KiB |