;(function() { window.createMeasureObserver = (measureName) => { var markPrefix = `_uol-measure-${measureName}-${new Date().getTime()}`; performance.mark(`${markPrefix}-start`); return { end: function() { performance.mark(`${markPrefix}-end`); performance.measure(`uol-measure-${measureName}`, `${markPrefix}-start`, `${markPrefix}-end`); performance.clearMarks(`${markPrefix}-start`); performance.clearMarks(`${markPrefix}-end`); } } }; /** * Gerenciador de eventos */ window.gevent = { stack: [], RUN_ONCE: true, on: function(name, callback, once) { this.stack.push([name, callback, !!once]); }, emit: function(name, args) { for (var i = this.stack.length, item; i--;) { item = this.stack[i]; if (item[0] === name) { item[1](args); if (item[2]) { this.stack.splice(i, 1); } } } } }; var runningSearch = false; var hadAnEvent = true; var elementsToWatch = window.elementsToWatch = new Map(); var innerHeight = window.innerHeight; // timestamp da última rodada do requestAnimationFrame // É usado para limitar a procura por elementos visíveis. var lastAnimationTS = 0; // verifica se elemento está no viewport do usuário var isElementInViewport = function(el) { var rect = el.getBoundingClientRect(); var clientHeight = window.innerHeight || document.documentElement.clientHeight; // renderizando antes, evitando troca de conteúdo visível no chartbeat-related-content if(el.className.includes('related-content-front')) return true; // garante que usa ao mínimo 280px de margem para fazer o lazyload var margin = clientHeight + Math.max(280, clientHeight * 0.2); // se a base do componente está acima da altura da tela do usuário, está oculto if(rect.bottom < 0 && rect.bottom > margin * -1) { return false; } // se o topo do elemento está abaixo da altura da tela do usuário, está oculto if(rect.top > margin) { return false; } // se a posição do topo é negativa, verifica se a altura dele ainda // compensa o que já foi scrollado if(rect.top < 0 && rect.height + rect.top < 0) { return false; } return true; }; var asynxNextFreeTime = () => { return new Promise((resolve) => { if(window.requestIdleCallback) { window.requestIdleCallback(resolve, { timeout: 5000, }); } else { window.requestAnimationFrame(resolve); } }); }; var asyncValidateIfElIsInViewPort = function(promise, el) { return promise.then(() => { if(el) { if(isElementInViewport(el) == true) { const cb = elementsToWatch.get(el); // remove da lista para não ser disparado novamente elementsToWatch.delete(el); cb(); } } }).then(asynxNextFreeTime); }; // inicia o fluxo de procura de elementos procurados var look = function() { if(window.requestIdleCallback) { window.requestIdleCallback(findByVisibleElements, { timeout: 5000, }); } else { window.requestAnimationFrame(findByVisibleElements); } }; var findByVisibleElements = function(ts) { var elapsedSinceLast = ts - lastAnimationTS; // se não teve nenhum evento que possa alterar a página if(hadAnEvent == false) { return look(); } if(elementsToWatch.size == 0) { return look(); } if(runningSearch == true) { return look(); } // procura por elementos visíveis apenas 5x/seg if(elapsedSinceLast < 1000/5) { return look(); } // atualiza o último ts lastAnimationTS = ts; // reseta status de scroll para não entrar novamente aqui hadAnEvent = false; // indica que está rodando a procura por elementos no viewport runningSearch = true; const done = Array.from(elementsToWatch.keys()).reduce(asyncValidateIfElIsInViewPort, Promise.resolve()); // obtém todos os elementos que podem ter view contabilizados //elementsToWatch.forEach(function(cb, el) { // if(isElementInViewport(el) == true) { // // remove da lista para não ser disparado novamente // elementsToWatch.delete(el); // cb(el); // } //}); done.then(function() { runningSearch = false; }); // reinicia o fluxo de procura look(); }; /** * Quando o elemento `el` entrar no viewport (-20%), cb será disparado. */ window.lazyload = function(el, cb) { if(el.nodeType != Node.ELEMENT_NODE) { throw new Error("element parameter should be a Element Node"); } if(typeof cb !== 'function') { throw new Error("callback parameter should be a Function"); } elementsToWatch.set(el, cb); } var setEvent = function() { hadAnEvent = true; }; window.addEventListener('scroll', setEvent, { capture: true, ive: true }); window.addEventListener('click', setEvent, { ive: true }); window.addEventListener('resize', setEvent, { ive: true }); window.addEventListener('load', setEvent, { once: true, ive: true }); window.addEventListener('DOMContentLoaded', setEvent, { once: true, ive: true }); window.gevent.on('allJSLoadedAndCreated', setEvent, window.gevent.RUN_ONCE); // inicia a validação look(); })();
  • AssineUOL
Topo

Modelo é assassinada em 'jogo erótico' na Itália; homem confessa crime

Carol Maltesi morreu durante participação em "jogo erótico" na Itália - Reprodução/Instagram
Carol Maltesi morreu durante participação em 'jogo erótico' na Itália Imagem: Reprodução/Instagram

Em Brescia, Itália

29/03/2022 16h34

Um homem de 43 anos confessou o assassinato e esquartejamento de uma modelo erótica, Carol Maltesi, 25, em mais um caso de feminicídio que chocou a Itália.

O homicídio ocorreu em janeiro ado, na cidade de Rescaldina, província de Milão, e o autor do crime, Davide Fontana, foi preso hoje após ter comparecido espontaneamente a uma delegacia para denunciar o desaparecimento da vítima, de quem era amigo e vizinho.

Maltesi também era conhecida pelo nome artístico "Charlotte Angie" e, segundo o relato de Fontana, foi assassinada com um martelo durante um suposto "jogo erótico" realizado em seu próprio apartamento em Rescaldina. "Depois não entendi mais nada", disse o italiano em um depoimento de mais de três horas à polícia.

Fontana contou ter comprado um congelador para guardar o corpo da vítima, que mais tarde seria esquartejado e atirado em um penhasco no município de Borno, cerca de 150 quilômetros a nordeste de Rescaldina.

A verdade só veio à tona após o próprio assassino ter procurado uma delegacia em Milão para denunciar o desaparecimento da modelo. No entanto, os investigadores detectaram uma série de inconsistências em seu relato e o convocaram para um novo depoimento, mas em uma delegacia da província de Brescia, onde acabou preso e confessando o crime.

Os restos mortais foram encontrados em 21 de março, escondidos dentro de sacos pretos no território de Borno, mas ainda não se sabia sua identidade, já que ninguém havia dado conta do desaparecimento de Maltesi.

De acordo com Fontana, ninguém procurou pela vítima ao longo dos últimos dois meses. "Apenas sua mãe, com algumas mensagens no WhatsApp, e um ex-namorado, também com mensagens. Por telefone, ninguém", disse o homem, que chegou a pagar o aluguel da casa de Maltesi para não levantar suspeitas.

A vítima

Carol Maltesi vivia em Milão, onde trabalhou como vendedora até abrir um perfil na rede social de conteúdo adulto OnlyFans, que serviu para aproximá-la do pornô profissional.

Mãe de um menino pequeno, ela se apresentava no Instagram como "artista" e "modelo" e, em 2020, publicou um vídeo por ocasião do Dia Mundial para a Eliminação da Violência Contra as Mulheres pedindo sororidade.

"Para combater determinados preconceitos, nós mulheres precisamos ser as primeiras a nos apoiar. Não sou boa para falar de mim, mas é um tema que me é muito caro, e não apenas porque o vivi na minha vida pessoal. Fala-se muito de violência física contra as mulheres, mas também é importante falar daquela psicológica", disse.

"Aquilo que me vem na cabeça é que, em primeiro lugar, falta sobretudo respeito entre as mulheres. E isso também é uma forma de violência psicológica", acrescentou.

Colegas de Maltesi afirmaram que ela mantinha uma relação de confiança com Fontana, que tinha até as chaves de seu apartamento. "Eles tinham um bom relacionamento, ele inclusive a acompanhou em algumas filmagens", contou uma conhecida da vítima no mundo do entretenimento adulto.

Já Fontana tem um blog de gastronomia e um perfil de fotografia no Instagram, onde postava imagens de mulheres em poses sensuais. Em 13 de março, ele chegou a publicar uma foto da própria Maltesi, que já estava morta havia dois meses.