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

Sobrevivente de tragédia da Chape relembra novo acidente: "Outro pesadelo"

"Quando o avião caiu, eu fiquei em choque, mas agora pensei: "Outra vez esse pesadelo"", relembra Erwin Tumiri - Reprodução/TV Globo
"Quando o avião caiu, eu fiquei em choque, mas agora pensei: 'Outra vez esse pesadelo'", relembra Erwin Tumiri Imagem: Reprodução/TV Globo

Do UOL, em São Paulo

14/03/2021 22h05Atualizada em 14/03/2021 23h05

Um dos sobreviventes da tragédia que vitimou parte da delegação da Chapecoense, em 2016, Erwin Tumiri, 30, foi uma das 31 pessoas que escaparam com vida de um acidente de ônibus na Bolívia, no último dia 2. O técnico de aviação sofreu uma fissura na omoplata e ou por uma reconstrução dos tendões no joelho, mas ficou apenas três dias internado e logo voltou para casa, em Cochabamba, onde já pensa em "recomeçar".

Ao "Fantástico", da TV Globo, Tumiri contou que estava dormindo pouco antes do acidente de ônibus, na altura do quilômetro 72 da rodovia que liga Cochabamba a Santa Cruz de La Sierra. Ele acordou com os gritos dos demais ageiros, que pediam ao motorista que freasse —o que não aconteceu.

"Eu estava dormindo. Ouvi pessoas gritando e tirei os fones de ouvido. O ônibus estava correndo muito, parecia que tinha perdido o freio. As pessoas batiam na cabine do motorista gritando: 'Para! Para! Freia!'. Me segurei no assento porque já esperava o pior. Nessa hora, eu dizia para mim mesmo: "Eu não vou morrer aqui'", lembra.

Os assentos do ônibus não tinham cintos de segurança, ainda segundo Tumiri. O acidente deixou 22 mortos.

Após a queda do veículo, que rolou barranco abaixo e foi parar em um riacho, a mais de 100 metros da pista, o técnico de aviação engatinhou até uma janela do lado oposto ao que estava —ainda tonto, por ter batido a cabeça. Fazendo um paralelo com o acidente com o avião da Chape, Tumiri disse ter se sentido diferente, já que desta vez ele sabia o que estava acontecendo.

"A única coisa que disseram da cabine de comando foi que íamos aterrissar. Estava todo mundo esperando isso. Ninguém falou que tínhamos que ficar em posição de impacto ou que íamos fazer um pouso de emergência", afirmou. "Quando o avião caiu, eu fiquei em choque, mas agora eu pensei: 'Outra vez isso, outra vez esse pesadelo'".

Não acho que eu seja sortudo ou azarado, e olha que eu já tive dois acidentes graves de moto. Me sinto abençoado por Deus por essas oportunidades de vida. Erwin Tumiri, sobrevivente da tragédia do avião da Chapecoense

Questionado sobre os aprendizados depois dos dois acidentes, o técnico de aviação se mostrou grato às pessoas próximas e disse estar ansioso para "recomeçar" e voltar a trabalhar —afinal, era o que estava indo fazer ao pegar a estrada.

"Aprendi a valorizar as pessoas queridas, é o mais importante. E também não se sentir perdedor. Percebi que ficava fazendo perguntas bobas sobre o sentido da vida quando podia estar com a minha mãe, meus amigos. Esses momentos não voltam, então, é melhor fazer agora", finaliza.