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

NY pagará indenização milionária por violência policial em protestos antirracistas

Uma mulher aparece presa pela polícia durante protesto "Black Lives Matter" na cidade de Nova York - Angela Weiss/AFP
Uma mulher aparece presa pela polícia durante protesto "Black Lives Matter" na cidade de Nova York Imagem: Angela Weiss/AFP

01/03/2023 18h32Atualizada em 01/03/2023 19h45

A cidade de Nova York irá indenizar cerca de 300 manifestantes vítimas de uma operação policial polêmica no Bronx em junho de 2020, durante as manifestações contra o racismo que se seguiram à morte de George Floyd, marcadas pela violência, segundo um documento da Justiça.

Os manifestantes esperam receber US$ 21.500 (cerca de R$ 111,6 mil) cada um, se o juiz aprovar um acordo extrajudicial fechado após uma ação movida por cinco pessoas afetadas. O acordo, que contempla as maiores indenizações já pagas no país relacionadas a prisões em massa, pode custar US$ 6 milhões (R$ 31,6 milhões) aos cofres da cidade.

Movida em outubro de 2020, a ação acusa a polícia de Nova York de dar "uma resposta brutal" às manifestações que ocorreram após a morte de George Floyd pela polícia de Minneapolis. O processo diz respeito à detenção de cerca de 300 pessoas na área de Mott Haven, no Bronx, em 4 de junho de 2020.

Os denunciantes alegaram que a polícia encurralou os manifestantes, pacíficos, impedindo que os mesmos deixassem o cerco, usaram spray de pimenta contra eles e os agrediram com golpes de cassetete.

Alguns manifestantes perderam a consciência e tiveram convulsões, segundo o processo. Os detidos tiveram as mãos atadas com algemas de plástico bastante apertadas, que "causaram dor, hematomas e, em alguns casos, ferimentos duradouros", acrescenta o texto.

A ação policial causou indignação na época, mas foi defendida pelo então prefeito Bill de Blasio, que havia imposto um toque de recolher às 20h para tentar evitar alguns distúrbios.

Um porta-voz do Departamento da Polícia de Nova York disse que foi "um momento desafiador" para os policiais, que "enfrentavam a tensão da pandemia" ao mesmo tempo em que precisavam "lidar com distúrbios em larga escala, um caos em massa, violência e destruição".

"A polícia de Nova York segue comprometida com a melhora de suas práticas da melhor forma possível", acrescentou o porta-voz à AFP.