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

OPINIÃO

'Tudo em o Todo Lugar ao Mesmo Tempo' é multiverso que Marvel sempre quis

"Tudo em Todo o Lugar ao Mesmo Tempo" introduz um novo multiverso - Divulgação
"Tudo em Todo o Lugar ao Mesmo Tempo" introduz um novo multiverso Imagem: Divulgação

Fernanda Talarico

De Splash, em São Paulo

23/06/2022 04h00

Já faz um bom tempo que a Marvel vem tentando criar de maneira lógica um "multiverso" para chamar de seu. Foram diversos anos, com diferentes filmes e séries que tentavam ao máximo expandir a ideia de que este universo em que vivemos - e em que assistimos nas produções - não é o único que existe. Este conceito acredita que o universo é composto por incontáveis mundos, dimensões e linhas do tempo.

Na série "Loki" (2021), a ideia das diversas realidades foi exposta e mostrou como os variados universos funcionam e podem se influenciar. O mesmo aconteceu com "Homem-Aranha Sem Volta Para Casa" (2021) e recentemente com "Doutor Estranho No Multiverso da Loucura" (2022), quando a viagem entre realidades foi consagrada como o centro da narrativa.

A discussão sobre o multiverso vem se aprimorando dentro da Marvel, com explicações, exposições e hipóteses, sempre tentando criar algo concreto para o público. Até que "Tudo em Todo o Lugar ao Mesmo Tempo" chega aos cinemas. Um filme quase que autoral, dirigido por Daniel Kwan e Daniel Scheinert, e mostra, ao longo de suas duas horas e vinte minutos, o que a produtora dos filmes de super-heróis vem tentando fazer há muito tempo.

De maneira didática e até mesmo simples, o novo longa explica e desenvolve o seu multiverso por meio da história de Evelyn Wang (Michelle Yeoh), uma mulher de meia-idade que lida com os problemas normais da vida, como impostos, divergências familiares e trabalho. Tudo parece normal, até que uma série de eventos fantásticos mostram a ela que a sua realidade não é a única e está correndo perigo.

"Tudo em o Todo Lugar ao Mesmo Tempo" mistura explicações com cenas de ação de maneira que entretém e intriga o espectador. O roteiro ensaia uma espécie de linearidade, mas não a segue, o que pede uma atenção o tempo todo de quem está assistindo. No entanto, é fácil se manter imerso na história, uma vez que a todo momento são introduzidos novos detalhes e reviravoltas.

Ao abordar o Multiverso, a Marvel foca muito mais na questão de existirem inúmeros vilões do que em questões mais pessoais de personagens, por mais que elas surjam algumas vezes. E tudo bem, estamos falando de uma empresa de produções de super-heróis. Já "Tudo em Todo o Lugar ao Mesmo Tempo" se aprofunda em discussões mais filosóficas, com que todos nós mortais lidamos, por exemplo: "Como seria a minha vida caso eu tivesse feito outra escolha?".

Para tentar salvar todos os universos de uma grande ameaça, Evelyn Wang tem o a diferentes versões suas de outras realidades: uma é atriz famosa, a outra é uma mulher apaixonada, uma terceira é cantora, e por aí vai. Todas parecem muito mais felizes do que ela se encontra. Não à toa, em dado momento um personagem revela à protagonista: "Você é a mais fracassada de todas", e é este o motivo de ela se esforçar para seguir em frente e lutar para vencer.

Com uma edição de encher os olhos - e digna de um Oscar -, "Tudo em Todo o Lugar ao Mesmo Tempo" é um daqueles filmes que dá vontade de assistir diversas vezes para poder conferir os mínimos detalhes dos universos paralelos, como em um que todas pessoas têm dedos de salsichas ou no que a humanidade não existe como a conhecemos e o planeta é habitado por pedras.

Ao final, é de se esperar que o espectador vá para casa se questionando sobre o que assistiu e, assim como a personagem principal, filosofando sobre a própria vida. Mas, diferente de um filme da Marvel, não há cenas pós-créditos que tentem introduzir a um novo multiverso. Tudo o que você precisa saber já foi apresentado.