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

Prefeito de Niterói diz que vai processar Daniel Silveira por ameaças

Axel Grael (PDT), prefeito de Niterói  - Divulgação
Axel Grael (PDT), prefeito de Niterói Imagem: Divulgação

Do UOL, em São Paulo

18/02/2021 17h58

Depois de ser ameaçado pelo deputado federal Daniel Silveira (PSL-RJ), o prefeito de Niterói Axel Grael (PDT) disse que vai processar o parlamentar, preso anteontem em "flagrante delito" por incitar atos violentos contra ministros do STF (Supremo Tribunal Federal) e ameaçar o Estado Democrático de Direito, segundo decisão do ministro Alexandre de Moraes.

Na semana ada, o deputado Silveira usou as redes sociais para criticar uma decisão de Grael de dissolver a Secretaria de Políticas de Drogas, usando o espaço para a criação da Secretaria do Clima. "Toma vergonha na sua cara! Filhote de João Doria [governador de São Paulo]. Vocês têm que levar uma surra de gato morto", escreveu ele.

Com a prisão do deputado, o prefeito Axel Grael compartilhou que também recebeu ameaças de Silveira "com conteúdo quase igual" ao direcionado aos ministros do STF e disse que já acionou seu advogado para processar o parlamentar. "Esse tipo de comportamento é inissível", afirmou.

"Precisamos trazer a reflexão para a sociedade sobre esse tipo de postura violenta de pessoas que ameaçam a integridade física daqueles que divergem de seus pensamentos. Isso precisa acabar".

Mais cedo, o juiz Aírton Vieira, que atua em auxílio ao ministro Alexandre de Moraes, decidiu manter a prisão do deputado federal Daniel Silveira, de acordo com termo de audiência de custódia ao qual o UOL teve o.

A audiência de custódia —que avalia eventuais ilegalidades na prisão— foi realizada na Delegacia de Dia da SRRJ (Superintendência Regional no Rio de Janeiro), e presidida pelo juiz instrutor por meio de videoconferência. O Ministério Público também participou.

Durante a audiência, a defesa de Daniel Silveira questionou "o estado de flagrância, bem como se crime houve, que não seria inafiançável, mas sim afiançável". Tanto o juiz que conduziu a audiência quanto o Ministério Público entenderam que não houve irregularidades ou abuso em sua prisão e, por isso, decidiu pela manutenção da prisão do deputado bolsonarista.

Daniel Silveira permanece na Polícia Federal, no Rio de Janeiro, mas deve ser transferido agora para um batalhão da Polícia Militar, que tem mais condições carcerárias. Anteontem, Silveira divulgou um vídeo com ataques a ministros da Corte — em especial, a Edson Fachin, Gilmar Mendes e ao próprio Moraes. Ele foi preso em Petrópolis, cidade da região serrana do Rio, pela Polícia Federal.