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

Disputa em São Luís expõe racha na base de Flávio Dino

Governador do Maranhão, Flávio Dino (PCdoB), vota no estado no primeiro turno das eleições municipais - Reprodução/Twitter/@FlavioDino
Governador do Maranhão, Flávio Dino (PCdoB), vota no estado no primeiro turno das eleições municipais Imagem: Reprodução/Twitter/@FlavioDino

Ernesto Batista, especial para AE

São Luís

28/11/2020 11h31

O 2º turno das eleições municipais de 2020 em São Luís evidencia um racha na base do governador do Maranhão Flávio Dino (PCdoB). Isso porque parte dos seus ex-secretários que saíram candidatos nesta eleição anunciaram apoio e estão participando da campanha para o deputado federal Eduardo Braide (Podemos), que foi o candidato mais votado do primeiro turno e que lidera as pesquisas eleitorais para o segundo turno, contra o deputado estadual Duarte Junior (Republicanos), que recebeu apoio explícito de Dino para a segunda fase da eleição na capital maranhense.

A lista de apoiadores de Braide incluem o 3º colocado do 1º turno, o deputado estadual Neto Evangelista (DEM), que foi secretário de Dino e os também deputados estaduais Yglésio Moyses (PROS), que ficou em oitavo lugar na 1º etapa da votação e que está na base governista na Assembleia Legislativa do Maranhão, e Carlinhos Florêncio, que é do mesmo partido do governador. O racha ainda inclui aliados históricos como o ex-governador e deputado federal José Reinaldo Tavares (PSB) e a viúva do ex-governador e ex-prefeito da capital Jackson Kepler Lago, Clay Lago, cujo apoio tem um peso político significativo no Maranhão.

O cenário político da capital reforça o que aconteceu nos principais colégios eleitorais do Estado: a fala de Flávio Dino não foi decisiva para eleger prefeitos aliados, como foi o caso de Imperatriz, onde o deputado estadual Marco Aurélio (PCdoB) foi derrotado pelo atual prefeito Assis Ramos (DEM), que se reelegeu. Além disso, seu partido encolheu, saindo de 46 prefeituras conquistadas na eleição de 2016 para 22 neste ano.

A campanha do segundo turno deixou propostas de lado e girou em torno de troca de acusações entre os candidatos. Na mais recente pesquisa do Ibope, divulgada nesta sexta-feira, 27, Eduardo Braide tem 54% dos votos válidos ante 46% de Duarte Júnior - o levantamento, encomendado pela TV Mirante, foi registrado no Tribunal Regional Eleitoral sob o protocolo MA-05555/2020. A margem de erro é de três pontos porcentuais.