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

Apoiado por artistas, Molon abre vaquinha para manter candidatura ao Senado

O deputado federal Alessandro Molon (PSB-RJ) anunciou a sua campanha de financiamento coletivo - Reprodução/YouTube/Alessandro Molon
O deputado federal Alessandro Molon (PSB-RJ) anunciou a sua campanha de financiamento coletivo Imagem: Reprodução/YouTube/Alessandro Molon

Do UOL, em São Paulo*

05/08/2022 18h09Atualizada em 05/08/2022 18h56

O deputado federal Alessandro Molon (PSB-RJ) anunciou hoje a sua campanha de financiamento coletivo, com a meta de R$ 100 mil, para manter sua candidatura ao Senado Federal após o ime entre a sua sigla e o PT no Rio de Janeiro. Ele chegou a divulgar o apoio de artistas como Anitta e Marcos Palmeira ao seu nome nas redes sociais. Nesta semana, o PSB anunciou que, caso Molon siga com a candidatura, não terá o ao fundo partidário.

Quase uma hora após ter publicado a abertura do financiamento coletivo no Twitter, a reportagem constatou, às 18h35 (horário de Brasília), que o político já havia conseguido R$ 7.282 da meta de R$ 100 mil através de 60 doações.

Segundo petistas, havia um acordo firmado previamente que, para Lula endossar o nome de Marcelo Freixo (PSB-RJ) ao governo do estado, o candidato ao Senado seria indicado pelo PT, no caso, o deputado estadual André Ceciliano (PT-RJ). Molon, por sua vez, disse não ter combinado nada e sustenta que manterá a candidatura. Procurado hoje pelo UOL, ele não comentou a decisão do PT, mas convocou uma entrevista coletiva para o fim da tarde.

"As pesquisas mostram que a nossa pré-candidatura é a mais forte do campo democrático para derrotar o bolsonarismo na disputa para o Senado, mas a gente está sofrendo uma forte pressão. Querem que a gente desista da pré-candidatura. Só que as ruas e as redes dizem ao contrário", disse em vídeo compartilhado para divulgar o financiamento coletivo.

No vídeo, de pouco mais de um minuto, Molon questionou onde estavam os senadores do estado em diversas situações, como na I (Comissão Parlamentar de Inquérito) da Covid e durante "as ameaças" do presidente Jair Bolsonaro (PL) à democracia brasileira.

Porque o povo está dizendo para a gente não desistir, eu vou seguir adiante nesta luta pelo Senado. (...) Eu estou com o Rio de Janeiro e para seguir forte nesta luta, eu preciso de você. Só vamos fazer isso acontecer, se formos juntos. Por isso estou lançando essa campanha de financiamento coletivo. Deputado federal Alessandro Molon (PSB-RJ)

Por fim, Molon pediu a divulgação da campanha entre as pessoas que querem "um senador de verdade para o Rio de Janeiro". "Faça sua contribuição, vamos juntos até a vitória", concluiu.

Molon aparece em 2º lugar nas pesquisas, empatado com outros dois

Pesquisa realizada pelo Instituto Quaest, contratada pelo Banco Genial e divulgada em 14 de julho, mostrou o senador Romário (PL-RJ) à frente na disputa pela vaga única para o Senado pelo Rio de Janeiro, com 32% das intenções de voto no cenário estimulado — quando o entrevistado recebe uma lista com os nomes.

Molon aparece com 11% empatado, em segundo lugar, dentro da margem de erro, com Clarissa Garotinho (União Brasil-RJ), com 9%, e Daniel Silveira (PTB-RJ), com 7%. Ceciliano alcança apenas 5% das intenções. Como a margem de erro é de 2.8 pontos percentuais para mais ou menos, os parlamentares encontram-se empatados tecnicamente.

*Com Giovanna Galvani, Leonardo Martins e Lucas Borges Teixeira, do UOL, em São Paulo