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

Justiça de SP condena mulher a indenizar PM em R$ 20 mil por racismo

Prédio do TJ-SP (Tribunal da Justiça de São Paulo), na praça da Sé, em São Paulo (SP) - Avener Prado/Folhapress
Prédio do TJ-SP (Tribunal da Justiça de São Paulo), na praça da Sé, em São Paulo (SP) Imagem: Avener Prado/Folhapress

Luís Adorno

Do UOL, em São Paulo

16/11/2019 16h12

A Justiça de São Paulo condenou uma mulher a pagar R$ 20 mil, em forma de indenização, a um cabo da PM (Polícia Militar) por tê-lo xingado de "macaco", "preto filho da p*", "polícia de merda", além de ter afirmado "sua família não presta, são um bando de pobres e vagabundos". A mulher negou as ofensas em juízo e disse que o PM agiu com abuso de autoridade antes de terem um desentendimento.

O caso ocorreu em fevereiro de 2012 dentro da delegacia de Campinas, no interior. Na última terça-feira (12), a 18ª Câmara de Direito Privado do Tribunal de Justiça fixou a reparação em R$ 20 mil, a título de danos morais.

"Consta nos autos que o pai da ré foi levado a uma delegacia após desentendimento em um estabelecimento comercial. Chegando ao local, a ré ofendeu racialmente um dos policiais na frente de diversas testemunhas", informou a Justiça de São Paulo.

O PM deu voz de prisão à mulher, que foi liberada após pagar fiança de R$ 8 mil. De acordo com o relator da apelação, o desembargador Helio Faria, "é evidente que as injúrias raciais narradas provocaram danos morais à vítima, os quais independem de consideração acerca do contexto em que foram proferidas".

"Eventual abuso de autoridade, despreparo ou injusta agressão por parte do autor, assim como violenta emoção por parte da requerida não possuem relação com o teor das ofensas proferidas pela ré, que visam a diminuir a dignidade humana do autor", completou o magistrado.

Os desembargadores Carlos Alberto Lopes e Israel Góes dos Anjos concordaram com o desembargador e seguiram seu voto. A decisão foi unânime.

Mulher diz que PM pisou na cabeça de seu pai

De acordo com os autos do processo, o cabo da PM foi até o estabelecimento comercial do pai da mulher condenada tentar controlar um desentendimento. Segundo ela, o policial a chamou de "loira vagabunda" depois de ela ter reclamado das algemas que haviam sido postas.

Segundo uma testemunha, que depôs na delegacia, o policial pisou na cabeça do pai da mulher já imobilizado, "acarretando grande nervosismo e descontrole momentâneo". Diz, também, que os policial agrediram o dono do comércio verbalmente e fisicamente, chegando a quebrar um de seus dentes.

Havia no local cerca de 15 PMs. Todos negam que tenha ocorrido as agressões narradas pela mulher. A mulher, então, apresentou as filmagens que mostrariam as agressões. Depois disso, ela afirmou que um coronel da PM foi até o local pedir desculpas em nome da corporação e garantindo que os PMs seriam advertidos.

Segurança vítima de racismo no Mineirão fala sobre o caso

Band Notí­cias