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

Brasileirão - 2021

Árbitros organizam protesto contra violência após agressão em jogo no RS

Rodrigo Crivellaro, árbitro agredido por jogador na Série A2 do Campeonato Gaúcho - Divulgação/Guarani de Venâncio Aires
Rodrigo Crivellaro, árbitro agredido por jogador na Série A2 do Campeonato Gaúcho Imagem: Divulgação/Guarani de Venâncio Aires

Do UOL, em Porto Alegre

09/10/2021 14h31

Os árbitros vinculados à CBF realização, neste final de semana, um protesto em repúdio à agressão contra Rodrigo Crivellaro durante jogo da Série A2 do Gauchão. Antes de todas as partidas do Brasileirão, de todas as divisões, os juízes, auxiliares e árbitros do VAR se ajoelharão e erguerão os apitos.

O ato dá sequência a uma manifestação programada pelo Sindicato dos Árbitros de Futebol do Rio Grande do Sul (SAFERGS). Agora, a ação se estende a todo país e ocorrerá durante o respeito ao minuto de silêncio.

"Como sinal de apoio a ele, repúdio ao agressor e alerta a sociedade acreditamos que precisamos mostrar que não há mais espaço no futebol brasileiro para cenas deprimentes como estas. Com apoio total do presidente da CBF estamos nos juntando ao protesto que será realizado no RS. Em todos os jogos desta rodada em competições coordenadas pela CBF mostraremos a união de nossa classe marcando posicionamento firme em todos os gramados brasileiros", diz nota assinada pelo presidente da Comissão de Arbitragem da CBF, Leonardo Gaciba.

Rodrigo Crivellaro foi agredido por Willian Ribeiro, que defendia o São Paulo de Rio Grande, durante jogo contra o Guarani de Venâncio Aires, na última segunda-feira. O árbitro relatou, em entrevista ao UOL Esporte, que não se recorda exatamente do instante da agressão, mas disse que espera o banimento do atleta do convívio esportivo.

Willian acertou um soco em Rodrigo, que caiu no gramado. Em seguida, o jogador chutou o árbitro, que desmaiou. Ainda na noite da agressão, atleta foi desligado do clube.

Crivellaro foi encaminhado ao hospital e teve alta no dia seguinte. Ele ficará afastado da arbitragem até o fim da temporada e poderá ar por cirurgia. Willian chegou a ser detido, mas recebeu liberdade provisória na última terça-feira.