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

Esse conteúdo é antigo

Governo dos EUA aposta em regulamentação de armas 'fantasmas'

Departamento de Justiça dos Estados Unidos apresentou novas regulamentações destinadas a combater a proliferação das chamadas armas "fantasmas" - Getty Images
Departamento de Justiça dos Estados Unidos apresentou novas regulamentações destinadas a combater a proliferação das chamadas armas "fantasmas" Imagem: Getty Images

07/05/2021 19h48Atualizada em 07/05/2021 20h42

O Departamento de Justiça dos Estados Unidos apresentou nesta sexta-feira (7) novas regulamentações destinadas a combater a proliferação das chamadas armas "fantasmas", feitas artesanalmente e sem um número de série.

O presidente democrata Joe Biden revelou em 9 de abril um plano de enfrentamento à "epidemia" de violência armada, que inclui medidas contra armas "fantasmas", apreciadas por criminosos porque são fáceis de obter e difíceis de rastrear.

A nova regra prevê, em primeiro lugar, exigir que os fabricantes incluam um número de série na parte externa dos kits vendidos para montar esse tipo de arma.

Os fornecedores de armas, por sua vez, terão que verificar os antecedentes dos possíveis compradores desses kits, como já fazem com as armas de fogo, e acrescentar um número de série às armas fabricadas com impressoras 3D que entrarem em seu estoque.

"A regra proposta manterá as armas longe das mãos erradas e tornará mais fácil rastrear as armas usadas em crimes violentos", informou em comunicado o procurador-geral, Merrick Garland.

De acordo com seu gabinete, foram apreendidas pela polícia em cenas de crime mais de 23.000 armas de fogo sem número de série entre 2016 e 2020.

A nova regra estará sujeita a comentários públicos por 30 dias antes da publicação de sua versão final.

Joe Biden, que há muito defende uma maior regulamentação da venda de armas, prometeu durante sua campanha agir nesse sentido.

Uma série recente de tiroteios - incluindo assassinatos na Geórgia e, posteriormente, no Colorado - aumentou a pressão para tomar essa iniciativa.

Porém o presidente democrata precisa de uma maioria forte o suficiente no Congresso para a aprovação de leis radicais, e os republicanos se opõem veementemente a qualquer tentativa de regulamentar a venda e porte de armas.

Mais de 43.000 pessoas morreram no ano ado nos Estados Unidos por causa do uso de armas, incluindo casos de suicídio, de acordo com o site Gun Violence Archive.