;(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

Esse conteúdo é antigo

Vídeo: Homem mata ex-cunhada, tenta atirar em ex e arma falha em SP

Simone Machado

Colaboração para o UOL, em São José do Rio Preto (SP)

28/09/2022 14h57Atualizada em 28/09/2022 14h57

Um homem de 36 anos foi preso após matar a tiros a ex-cunhada e tentar atirar contra a ex-mulher, ontem à tarde, na praça central de Pontal, interior de São Paulo. Ele ainda baleou um motorista de aplicativo para roubar o carro e usar durante os crimes, de acordo com a Polícia Civil. A ação foi gravada por câmeras de segurança, no meio de uma cruzamento entre ruas do município

José Maciel Vieira dos Santos foi preso em Planura, cidade mineira que fica na divisa entre São Paulo e Minas Gerais, após um cerco policial. Ele não reagiu à prisão.

Segundo a Polícia Civil, Dayane de Oliveira Martins, de 29 anos, ex-cunhada do suspeito, trabalhava segurando uma bandeira no cruzamento da rua Ananias da Costa Freitas com a rua José Leonel Pupo, no centro de Pontal, quando foi morta a tiros por Santos.

Toda ação foi flagrada por câmeras de segurança de estabelecimentos comerciais. Nas imagens é possível ver Santos se aproximando de Dayane, que está de costas para ele. Sem se importar com a presença de diversas pessoas, ele saca a arma da cintura e atira à queima-roupa contra a vítima.

Após matar Dayane, Santos ainda vai em direção à ex-mulher Bianca de Oliveira Martins, de 27 anos, que também trabalhava na campanha eleitoral e estava a poucos metros da irmã.

Nas imagens de outra câmera de segurança é possível ver que o suspeito tenta atirar contra Bianca, mas a arma falha e ela consegue correr. A mulher não ficou ferida.

Em seguida, Santos entrou no carro e fugiu.

Ameaças

Ainda segundo a Polícia Civil, o homem não aceitava o fim do relacionamento com Bianca e esse teria sido o motivo dos crimes. Os dois haviam terminado a relação havia cerca de um mês.

Após o término, o suspeito teria feito diversas ameaças contra Bianca e a família dela. Um Boletim de Ocorrência foi registrado por Bianca e um mandado de busca e apreensão foi cumprido na casa de Santos, mas, segundo a polícia, nenhuma arma foi encontrada na residência, na ocasião.

Ontem pela manhã, segundo depoimento de Bianca aos policiais, Santos ou de bicicleta pelo cruzamento onde as irmãs trabalhavam. Ele teria ameaçado as duas, mas elas não chegaram a comunicar à polícia.

Roubo de carro terminou em morte

Cerca de meia hora antes de matar Dayane e tentar atirar em Bianca, Santos rendeu o motorista de aplicativo Silvano de Morais Santana, de 34 anos, em Cruz das Posses, distrito de Sertãozinho, cidade vizinha.

Durante a ação, o suspeito teria atirado contra Silvano, que foi encontrado caído inconsciente na vicinal Elídio Marchesi.

O motorista chegou a ser socorrido e encaminhado para o Hospital das Clínicas, em Ribeirão Preto, em estado gravíssimo, mas não resistiu e morreu na noite de ontem.

Com a morte do motorista, o suspeito deverá responder por dois homicídios e uma tentativa de feminicídio. Ele foi encaminhado para a cadeia de Sertãozinho.

Segundo a Polícia Civil, o suspeito ainda não tem defesa constituída.