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

Subcomandante de UPP da Vila Cruzeiro será enterrado hoje no Rio

O policiamento em todo o complexo da Penha foi reforçado após a morte do tenente - Márcia Foletto / Agência O Globo
O policiamento em todo o complexo da Penha foi reforçado após a morte do tenente Imagem: Márcia Foletto / Agência O Globo

Douglas Corrêa

Da Agência Brasil, no Rio de Janeiro

14/03/2014 14h21

O corpo do tenente da Polícia Militar, Leidson Acácio Alves Silva, 27 anos, vai ser enterrado nesta sexta-feira (14) às 15h30, no Cemitério Parque Jardim da Saudade, na Sulacap, zona oeste do Rio, numa área destinada a policiais militares mortos em serviço. O oficial foi ferido ontem (13) à noite com um tiro na testa, na divisa entre as comunidades do Parque Proletário e Vila Cruzeiro, no Complexo da Penha, após perseguir, com oito comandados, dezenas de criminosos que momentos antes fizeram disparos contra à base da UPP. O confronto ocorreu  na Rua 10, no alto da comunidade.

O tenente Alves Silva foi levado para o Hospital Getúlio Vargas, na Penha, e morreu no início da madrugada. Ele chegou a ser operado às pressas, mas não resistiu ao ferimento. O corpo do militar já foi liberado do Instituto Médico Legal (IML) e deve chegar ao cemitério por volta das 13h, para ser velado na Capela A.

A ação dos criminosos teve início por volta das 20h40 da noite ada, quando tiros foram disparados na direção do contêiner que serve como base da UPP Vila Cruzeiro na
Rua José Rucas. Durante a ação ninguém se feriu e a base da UPP não chegou a ser atingida pelos tiros.

O Batalhão de Operações Especiais (Bope) foi acionado e foi à comunidade fazer ações de varredura durante a madrugada, mas os criminosos não foram localizados. O policiamento está reforçado em todo o Complexo da Penha com efetivo de diversas UPPs. O tenente Acácio estava na corporação há pouco mais de três anos e na UPP Vila Cruzeiro há três meses.