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

Briga generalizada acaba com PM espancado em Ceasa de MG

Em briga generalizada, mulher desfere golpes contra PM em Contagem (MG) - Reprodução/Twitter
Em briga generalizada, mulher desfere golpes contra PM em Contagem (MG) Imagem: Reprodução/Twitter

Colaboração para o UOL, em São Paulo

19/05/2021 16h23Atualizada em 19/05/2021 20h42

Uma discussão no Ceasa de Contagem, a cerca de 20 km de Belo Horizonte (MG), causou uma briga generalizada que acabou com um policial militar ferido.

De acordo com informações da Polícia Militar do estado à TV Globo, o cabo atuava sozinho na fiscalização de trânsito nos arredores do empreendimento, um local de abastecimento de alimentos no qual há intenso movimento popular diário.

Durante o plantão, uma mulher ficou irritada com o PM após ter o carro multado e partiu para cima do militar. Segundo a a Capitão Layla Brunnela, que concedeu declaração à TV local, o veículo estava estacionado de maneira irregular.

Em seguida, ele deu voz de prisão a moça em razão de desacato a autoridade, o que serviu de estopim para a confusão.

O PM teve documentos rasgados e começou a lutar contra a mulher e o marido dela, chegando a ficar desacordado por duas vezes em virtude dos golpes.

"Uma situação grave, em que é agredido não só um militar, mas um estado democrático de direito. Um militar que estava na condição de trabalhador, exercendo seu papel, cuidando do cidadão de bem, sendo rechaçado pela população que ali deveria apoiar o policial militar", argumentou a Capitão Brunnela durante a entrevista.

As imagens abaixo mostram o policial — de farda bege — sendo golpeado no chão, enquanto alguns guardas municipais e seguranças da Ceasa tentam apartar a confusão.

Brunnela também menciona que frutas e outros objetos foram arremessados contra a guarnição.

A briga só acabou quando viaturas do Ger (Grupo Especial de Reação) chegaram ao local. Ao todo, seis pessoas foram detidas em flagrante, mas outras que incentivaram a violência ainda devem ser identificadas pela PM, destacou a Capitão.

Entre os seis detidos estão um homem que chegou a dar um golpe de artes marciais conhecido como mata-leão no PM, sua esposa e o filho do casal. Eles responderão por lesão a um agente de segurança, além de crimes secundários como desacato a autoridade e desobediência.

Com escoriações na cabeça e nas pernas, o cabo a bem, mas ainda segue em observação.