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

Operação de cerco a terroristas termina com 2 suspeitos mortos e 8 detidos em Paris

Do UOL, em São Paulo

18/11/2015 04h11Atualizada em 18/11/2015 19h24

Um intenso tiroteio e explosões foram registrados na madrugada desta quarta-feira (18) durante uma grande operação da polícia em Saint-Denis, município ao norte de Paris.

Morreram dois suspeitos de envolvimento com os atentados em Paris na última sexta-feira (13) e outras oito pessoas foram presas na operação antiterrorista, que terminou por volta de 8h30 (horário de Brasília), segundo François Molins, procurador da República em Paris. Os mortos e os detidos ainda não foram identificados, de acordo com Molins.

Uma mulher que estava no imóvel se suicidou ao detonar explosivos que carregava junto ao corpo. O outro morto na ação foi atingido por projéteis e granadas, segundo a procuradoria. Mais tarde, o ministro do Interior francês, Bernard Cazeneuve, afirmou a parlamentares que a operação pode ter mais mortos além dos dois confirmados. 

De acordo com a polícia sa, cinco policiais tiveram ferimentos leves. Uma cadela chamada Diesel, de sete anos, integrante da Raid, unidade especial da Polícia Nacional da França, foi morta no confronto com os supostos terroristas.

Segundo Cazeneuve, os serviços de inteligência ses receberam a informação de que o belga Abdelhamid Abaaoudsuspeito de ser o mentor dos atentados de sexta-feira, estaria em um prédio de Saint-Denis, o que motivou o cerco. Até então, acreditava-se que Abaaoud estivesse na Síria. Não há confirmação de que ele tenha sido morto ou detido na operação nem que estivesse dentro de um dos apartamentos. 

Cerca de 15 pessoas, incluindo crianças, foram removidas pela polícia do prédio no início da operação.

Dos oito detidos, pelo menos três estavam no apartamento. Entre os outros quatro detidos está o proprietário do apartamento onde os suspeitos foram localizados. À AFP, ele teria alegado, antes de ser preso, que não sabia que os homens eram terroristas e que estava apenas atendendo ao pedido de um amigo.

Explosões começaram de madrugada

Testemunhas disseram que os disparos e as explosões começaram por volta das 4h30 no horário local (1h30 de Brasília). O dispositivo policial foi reforçado por militares, que chegaram em caminhões do Exército e se posicionaram nas esquinas ao redor do prédio. 

A troca de tiros aconteceu nos arredores da Praça Jean Jaurès, muito perto da histórica basílica gótica de Saint-Denis, onde estão enterrados vários dos reis da França. A cidade foi alvo de explosões na sexta-feira no entorno do estádio nacional Stade de . 

60 detidos no total

As operações da polícia sa desde a noite de terça detiveram 29 pessoas, com 118 buscas realizadas e 34 armas apreendidas. No total, foram realizadas 414 ações policiais em reação aos ataques da semana ada, totalizando 60 pessoas sob custódia, 118 em prisão domiciliar e 75 armas apreendidas, disse Cazeneuve em comunicado, acrescentando que as operações vão continuar pelos próximos dias.

Nesta quarta, o governo francês anunciou que os 129 mortos nos atentados de sexta-feira foram identificados. (Com agências de notícias)

Tiroteio em operação policial em Paris deixa ao menos dois mortos

Efe