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

Mulheres iranianas são atacadas em estádio, e uma delas tem celular tomado

Do UOL, em Doha (Qatar)

29/11/2022 19h00

Classificação e Jogos

Três mulheres iranianas foram agredidas por homens, também iranianos, na saída do estádio Al Thumama, onde o Irã perdeu para os EUA hoje (29). Elas protestavam pelos direitos femininos no Irã. A reportagem do UOL testemunhou quando uma das mulheres foi cercada por vários homens que usavam camiseta da torcida do Irã e teve o celular tomado por um deles. O aparelho foi atirado de um lado para o outro no meio da multidão, enquanto a torcedora corria atrás dele e pedia ajuda dos seguranças do estádio.

Interpelada pela reportagem, a mulher disse que foi atacada por protestar contra a ditadura do Irã. "Eles pegaram meu celular e nos atacaram", afirmou ela. Homens vestidos com camisetas da torcida iraniana tentaram impedir a reportagem do UOL de fazer imagens da cena, tentando tomar o celular do repórter, assim como os seguranças do estádio.

No tumulto uma segunda iraniana foi atingida na costela. Uma terceira, que tentava ajudar um amigo que acompanhava duas crianças quando a confusão começou, também disse que foi agredida.

Depois de serem cercadas pelos homens iranianos, as mulheres foram levadas para uma parte interna do estádio, onde foram atendidas por membros da organização da Copa. A equipe de segurança pediu então para que elas trocassem de roupa para que não fossem identificadas como manifestantes pelos demais.

"Desde que viemos no primeiro jogo, eles tentam nos intimidar e a segurança não faz nada, eu não entendo o motivo", disse a iraniana que se apresentou como Maria. As manifestantes afirmaram que os homens que as atacaram foram pagos pelo governo iraniano para virem a Doha e intimidarem quem criticar o governo durante a Copa. Os agressores das iranianas se dispersaram antes que puderem ser identificados pelos seguranças do estádio.

A Fifa proíbe manifestações políticas durante o Mundial, mas as iranianas e os simpatizantes de sua causa têm conseguido driblar as restrições. No final de Irã x EUA, um grupo de feministas russas também protestou pelo direito das mulheres no país persa. Mas no caso delas, não houve represálias.

Irã sob protestos

Os protestos contra a morte de Mahsa Amini, no Irã, têm sido frequentes na Copa do Qatar. Na segunda-feira (28), o jogo entre Portugal e Uruguai foi paralisado após um torcedor invadir o campo com a bandeira do movimento LGBTQIA+ e vestindo uma camisa com os dizeres "respeito às mulheres iranianas".

Na sexta-feira (25) na vitória iraniana em cima de País de Gales por 2 a 0, uma torcedora exibiu o nome Mahsa Amini em sua camisa e foi abordada pela segurança do Estádio Ahmad Bin Ali.

Mahsa tinha 22 anos quando foi detida pela polícia da moralidade em Teerã por não estar usando o hijab, o lenço branco que cobre a cabeça das mulheres. Foi presa e morta. A população fala que Mahsa teria sido atingida na cabeça, já a polícia diz ter sido infarto a causa da morte, situação que revoltou a população do Irã.