{
    "id": 2998,
    "date": "2025-12-05T01:29:58",
    "date_gmt": "2025-12-05T01:29:58",
    "guid": {
        "rendered": "https:\/\/notamspot.com\/?page_id=2998"
    },
    "modified": "2026-01-03T21:09:18",
    "modified_gmt": "2026-01-03T21:09:18",
    "slug": "justification-for-extension-permissions",
    "status": "publish",
    "type": "page",
    "link": "https:\/\/notamspot.com\/pt-br\/justification-for-extension-permissions\/",
    "title": {
        "rendered": "Justificativa de Permiss\u00f5es da Extens\u00e3o"
    },
    "content": {
        "rendered": "<h1 id=\"justificativa-de-permisses-da-extenso\" class=\"font-display first:mt-xs mb-2 mt-4 font-semimedium text-lg leading-[1.5em] lg:text-xl\">Justificativa de Permiss\u00f5es da Extens\u00e3o<\/h1>\n<p><!-- Logo ap\u00f3s o t\u00edtulo \"Extension Permission Justification\", ANTES de \"Overview\" --><\/p>\n<div style=\"background: linear-gradient(135deg, #FEF3C7 0%, #FDE68A 100%); border-left: 4px solid #F59E0B; padding: 14px 18px; margin: 20px 0 28px 0; border-radius: 6px; box-shadow: 0 2px 4px rgba(0,0,0,0.08);\">\n<p style=\"margin: 0; font-size: 14px; font-weight: 600; color: #92400e; line-height: 1.6;\">\u26a0\ufe0f Importante: NOTAMSpot \u00e9 uma extens\u00e3o de navegador independente. As permiss\u00f5es listadas abaixo s\u00e3o necess\u00e1rias para analisar portais de avia\u00e7\u00e3o publicamente acess\u00edveis. Esta extens\u00e3o n\u00e3o \u00e9 afiliada, endossada ou certificada pela FAA, NOAA, DECEA, Nav Canada ou qualquer \u00f3rg\u00e3o governamental.<\/p>\n<\/div>\n<h2 id=\"smartcontentguard-browser-extension-v310\" class=\"mb-2 mt-4 font-display font-semimedium text-base first:mt-0 md:text-lg [hr+&amp;]:mt-4\">NOTAMSpot Browser Extension (Beta)<\/h2>\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\"><strong>Data do documento:<\/strong> 2 de janeiro de 2026<br \/>\n<strong>Destinat\u00e1rio:<\/strong>\u00a0Equipes de Revis\u00e3o \u2014 Chrome Web Store, Mozilla Add-ons, Microsoft Edge Add-ons<br \/>\n<strong>Desenvolvedor:<\/strong> NOTAMSpot Team<\/p>\n<hr class=\"bg-subtle h-px border-0\" \/>\n<h2 id=\"viso-geral\" class=\"mb-2 mt-4 font-display font-semimedium text-base first:mt-0 md:text-lg [hr+&amp;]:mt-4\">Vis\u00e3o Geral<\/h2>\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">Este documento fornece justificativa t\u00e9cnica detalhada para cada permiss\u00e3o declarada no manifest.json do NOTAMSpot. Cada permiss\u00e3o est\u00e1 vinculada a um ou mais recursos espec\u00edficos da extens\u00e3o e \u00e9 utilizada apenas na medida necess\u00e1ria para cumprir a fun\u00e7\u00e3o de an\u00e1lise de seguran\u00e7a avi\u00f4nica (NOTAM, METAR, TAF ).<\/p>\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\"><strong>Princ\u00edpio orientador:<\/strong>\u00a0Escopo m\u00ednimo necess\u00e1rio. Nenhuma permiss\u00e3o \u00e9 usada para fins secund\u00e1rios, telemetria n\u00e3o consentida ou coleta de dados de navega\u00e7\u00e3o ampla.<\/p>\n<p>&nbsp;<\/p>\n<p><!-- No final da se\u00e7\u00e3o \"Overview\", adicionar: --><\/p>\n<p style=\"margin-top: 16px; padding: 12px; background: #F3F4F6; border-radius: 4px;\">\ud83d\udcc4 <strong>Saiba mais sobre tratamento de dados:<\/strong><br \/>\n<a style=\"color: #2563eb; font-weight: 600;\" href=\"\/pt-br\/privacy-policy\/\">Pol\u00edtica de Privacidade<\/a> |<br \/>\n<a style=\"color: #2563eb; font-weight: 600;\" href=\"\/pt-br\/data-transparency\/\">Transpar\u00eancia de Dados<\/a><\/p>\n<hr class=\"bg-subtle h-px border-0\" \/>\n<h2 id=\"permisses-declaradas\" class=\"mb-2 mt-4 font-display font-semimedium text-base first:mt-0 md:text-lg [hr+&amp;]:mt-4\">Permiss\u00f5es Declaradas<\/h2>\n<p><strong>json<\/strong><\/p>\n<div class=\"w-full md:max-w-[90vw]\">\n<div class=\"codeWrapper text-light selection:text-super selection:bg-super\/10 my-md relative flex flex-col rounded-lg font-mono text-sm font-normal bg-subtler\">\n<div class=\"-mt-xl\">\n<pre>{\r\n\"permissions\": [\r\n\"activeTab\",\r\n\"storage\",\r\n\"tabs\",\r\n\"downloads\"\r\n]\r\n}<\/pre>\n<\/div>\n<\/div>\n<\/div>\n<hr class=\"bg-subtle h-px border-0\" \/>\n<h2 id=\"\" class=\"mb-2 mt-4 font-display font-semimedium text-base first:mt-0 md:text-lg [hr+&amp;]:mt-4\">1. <code>activeTab<\/code><\/h2>\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\"><strong>Descri\u00e7\u00e3o<\/strong><\/p>\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">Permite que a extens\u00e3o acesse o conte\u00fado da aba ativa do navegador para realizar an\u00e1lise autom\u00e1tica de informa\u00e7\u00f5es aeron\u00e1uticas cr\u00edticas (NOTAM, METAR, TAF).<\/p>\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\"><strong>Funcionamento Automatizado<\/strong><\/p>\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">O NOTAMSpot opera de forma <strong>proativa e automatizada<\/strong>\u00a0para reduzir a carga cognitiva do operador aeron\u00e1utico:<\/p>\n<ol class=\"marker:text-quiet list-decimal\">\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\"><strong>Detec\u00e7\u00e3o Autom\u00e1tica de Dom\u00ednio<\/strong><\/p>\n<ul class=\"marker:text-quiet list-disc\">\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">Usu\u00e1rio acessa p\u00e1gina de portal aeron\u00e1utico oficial (ex: AISWEB, REDEMET)<\/p>\n<\/li>\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">Sistema verifica automaticamente se o dom\u00ednio est\u00e1 na whitelist aprovada<\/p>\n<\/li>\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">Identifica o tipo de conte\u00fado esperado (NOTAM ou Meteorologia)<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\"><strong>An\u00e1lise em Tempo Real<\/strong><\/p>\n<ul class=\"marker:text-quiet list-disc\">\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">Extens\u00e3o monitora carregamento da p\u00e1gina<\/p>\n<\/li>\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">Assim que DOM estiver pronto, inicia varredura de termos cr\u00edticos<\/p>\n<\/li>\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">Real\u00e7a automaticamente palavras-chave de seguran\u00e7a operacional<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\"><strong>Processamento Cont\u00ednuo<\/strong><\/p>\n<ul class=\"marker:text-quiet list-disc\">\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">Sistema continua monitorando atualiza\u00e7\u00f5es din\u00e2micas (NOTAMs novos, METARs atualizados)<\/p>\n<\/li>\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">Aplica destacamento visual sem interven\u00e7\u00e3o manual<\/p>\n<\/li>\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">Atualiza tooltips e avisos conforme conte\u00fado muda<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\"><strong>Casos de Uso T\u00edpicos<\/strong><\/p>\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">\u2705\u00a0<strong>An\u00e1lise Autom\u00e1tica (Modo Padr\u00e3o)<\/strong><\/p>\n<ul class=\"marker:text-quiet list-disc\">\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">Usu\u00e1rio abre <code>https:\/\/aisweb.decea.mil.br\/?i=aerodromos&amp;codigo=SBBR<\/code><\/p>\n<\/li>\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">Sistema detecta dom\u00ednio whitelist + perfil NOTAM<\/p>\n<\/li>\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">Real\u00e7a automaticamente termos cr\u00edticos:\u00a0<code>CLSD<\/code>,\u00a0<code>INOP<\/code>,\u00a0<code>EMERGENCY<\/code><\/p>\n<\/li>\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\"><strong>Nenhuma a\u00e7\u00e3o manual necess\u00e1ria<\/strong><\/p>\n<\/li>\n<\/ul>\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">\u2705\u00a0<strong>An\u00e1lise sob Demanda (Opcional)<\/strong><\/p>\n<ul class=\"marker:text-quiet list-disc\">\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">Usu\u00e1rio passa o mouse sobre o floating lateral e acessa popup<\/p>\n<\/li>\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">Usu\u00e1rio seleciona texto e usa menu de contexto &#8220;\ud83d\udd0d Busca For\u00e7ada&#8221;<\/p>\n<\/li>\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">Assim a analise sera for\u00e7ada sobre a pagina atual e perfil de pesquisa ativo em configura\u00e7\u00f5es.<\/p>\n<\/li>\n<\/ul>\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\"><strong>Justificativa do Modo Autom\u00e1tico<\/strong><\/p>\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">\ud83c\udfaf\u00a0<strong>Redu\u00e7\u00e3o de Carga de Trabalho<\/strong><\/p>\n<ul class=\"marker:text-quiet list-disc\">\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">Operadores aeron\u00e1uticos lidam com\u00a0<strong>dezenas de NOTAMs e METARs por turno<\/strong><\/p>\n<\/li>\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">An\u00e1lise manual de cada documento \u00e9 invi\u00e1vel operacionalmente<\/p>\n<\/li>\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">Sistema automatizado permite\u00a0<strong>identifica\u00e7\u00e3o instant\u00e2nea<\/strong>\u00a0de riscos cr\u00edticos<\/p>\n<\/li>\n<\/ul>\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">\u26a1\u00a0<strong>Seguran\u00e7a Operacional<\/strong><\/p>\n<ul class=\"marker:text-quiet list-disc\">\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">Informa\u00e7\u00f5es cr\u00edticas (pista fechada, equipamento inoperante) n\u00e3o podem ser perdidas<\/p>\n<\/li>\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">Destacamento autom\u00e1tico garante que operador\u00a0<strong>veja imediatamente<\/strong>\u00a0termos de risco<\/p>\n<\/li>\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">Conformidade com\u00a0<strong>ICAO Annex 15<\/strong>\u00a0(dissemina\u00e7\u00e3o eficaz de informa\u00e7\u00f5es aeron\u00e1uticas)<\/p>\n<\/li>\n<\/ul>\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">\ud83d\udd12\u00a0<strong>Escopo Controlado<\/strong><\/p>\n<ul class=\"marker:text-quiet list-disc\">\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">Automa\u00e7\u00e3o\u00a0<strong>restrita a dom\u00ednios whitelist<\/strong>\u00a0(portais aeron\u00e1uticos oficiais)<\/p>\n<\/li>\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">An\u00e1lise\u00a0<strong>n\u00e3o ocorre<\/strong>\u00a0em sites banc\u00e1rios, redes sociais ou p\u00e1ginas gen\u00e9ricas<\/p>\n<\/li>\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\"><code>SecurityWhitelist<\/code>\u00a0desativa silenciosamente em contextos n\u00e3o aprovados<\/p>\n<\/li>\n<\/ul>\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\"><strong>Detalhes T\u00e9cnicos<\/strong><\/p>\n<div class=\"w-full md:max-w-[90vw]\">\n<div class=\"codeWrapper text-light selection:text-super selection:bg-super\/10 my-md relative flex flex-col rounded-lg font-mono text-sm font-normal bg-subtler\">\n<div class=\"-mt-xl\">\n<pre><code><span class=\"token token\">\/\/ Fluxo de ativa\u00e7\u00e3o autom\u00e1tica<\/span>\r\n<span class=\"token token\">1.<\/span> Content script carrega na <span class=\"token token\">p\u00e1gina<\/span> <span class=\"token token punctuation\">(<\/span>manifest content_scripts<span class=\"token token punctuation\">)<\/span>\r\n<span class=\"token token\">2.<\/span> security-whitelist.js verifica hostname\r\n<span class=\"token token\">3.<\/span> Se hostname \u2208 <span class=\"token token constant\">APPROVED_DOMAINS<\/span><span class=\"token token operator\">:<\/span>\r\n   a<span class=\"token token punctuation\">.<\/span> Identifica <span class=\"token token\">perfil<\/span> <span class=\"token token punctuation\">(<\/span><span class=\"token token constant\">NOTAM<\/span> vs <span class=\"token token constant\">METAR<\/span> vs <span class=\"token token constant\">TAF<\/span><span class=\"token token punctuation\">)<\/span>\r\n   b<span class=\"token token punctuation\">.<\/span> Carrega dicion\u00e1rio de termos cr\u00edticos\r\n   c<span class=\"token token punctuation\">.<\/span> Inicia an\u00e1lise <span class=\"token token constant\">DOM<\/span> autom\u00e1tica\r\n   d<span class=\"token token punctuation\">.<\/span> Aplica realce visual\r\n<span class=\"token token\">4.<\/span> Se hostname \u2209 <span class=\"token token constant\">APPROVED_DOMAINS<\/span><span class=\"token token operator\">:<\/span>\r\n   a<span class=\"token token punctuation\">.<\/span> Desativa silenciosamente\r\n   b<span class=\"token token punctuation\">.<\/span> Nenhum processamento executado\r\n<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\"><strong>Dados Acessados<\/strong><\/p>\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">\u2705 Conte\u00fado textual da p\u00e1gina (apenas em dom\u00ednios whitelist)<br \/>\n\u2705 Estrutura DOM para aplica\u00e7\u00e3o de realce visual<br \/>\n\u274c Formul\u00e1rios, campos de senha ou dados de login<br \/>\n\u274c Cookies ou tokens de autentica\u00e7\u00e3o<br \/>\n\u274c Hist\u00f3rico de navega\u00e7\u00e3o ou abas em background<\/p>\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\"><strong>Por Que \u00c9 Necess\u00e1ria<\/strong><\/p>\n<ul class=\"marker:text-quiet list-disc\">\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\"><strong>Identifica\u00e7\u00e3o de risco<\/strong>: Detectar termos cr\u00edticos sem an\u00e1lise manual<\/p>\n<\/li>\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\"><strong>Efici\u00eancia operacional<\/strong>: Processar m\u00faltiplos documentos simultaneamente<\/p>\n<\/li>\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\"><strong>Conformidade regulat\u00f3ria<\/strong>: Cumprir requisitos ICAO de processamento eficaz de informa\u00e7\u00f5es<\/p>\n<\/li>\n<\/ul>\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\"><strong>Impacto de Seguran\u00e7a<\/strong><\/p>\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">\u2705\u00a0<strong>Baixo risco<\/strong>\u00a0com m\u00faltiplas camadas de mitiga\u00e7\u00e3o:<\/p>\n<ul class=\"marker:text-quiet list-disc\">\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\"><strong>Mitiga\u00e7\u00e3o 1<\/strong>: Whitelist restritiva<\/p>\n<\/li>\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\"><strong>Mitiga\u00e7\u00e3o 2<\/strong>: Valida\u00e7\u00e3o HTTPS obrigat\u00f3ria<\/p>\n<\/li>\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\"><strong>Mitiga\u00e7\u00e3o 3<\/strong>: Contexto seguro verificado (<code>window.isSecureContext<\/code>)<\/p>\n<\/li>\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\"><strong>Mitiga\u00e7\u00e3o 4<\/strong>: Content scripts Manifest V3 isolados (sem acesso a\u00a0<code>window<\/code>\u00a0global da p\u00e1gina)<\/p>\n<\/li>\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\"><strong>Mitiga\u00e7\u00e3o 5<\/strong>: Nenhuma transmiss\u00e3o de dados analisados para servidores externos<\/p>\n<\/li>\n<\/ul>\n<hr class=\"bg-subtle h-px border-0\" \/>\n<h2 id=\"\" class=\"mb-2 mt-4 font-display font-semimedium text-base first:mt-0 md:text-lg [hr+&amp;]:mt-4\">2.\u00a0<code>storage<\/code><\/h2>\n<h2 class=\"mb-2 mt-4 font-display font-semimedium text-base first:mt-0\">Descri\u00e7\u00e3o<\/h2>\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">Permite que a extens\u00e3o leia e escreva dados localmente usando as APIs\u00a0<code>chrome.storage.local<\/code>\u00a0e\u00a0<code>chrome.storage.sync<\/code>\u00a0(se aplic\u00e1vel).<\/p>\n<h2 class=\"mb-2 mt-4 font-display font-semimedium text-base first:mt-0\">Dados Armazenados<\/h2>\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">Os dados armazenados incluem:<\/p>\n<ul class=\"marker:text-quiet list-disc\">\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\"><strong>Prefer\u00eancias de interface:<\/strong> Idioma selecionado (pt-BR, en-US, es-ES, fr-FR)<\/p>\n<\/li>\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\"><strong>Perfis de an\u00e1lise:<\/strong>\u00a0Configura\u00e7\u00e3o de quais \u00f3rg\u00e3os aeron\u00e1uticos est\u00e3o ativos<\/p>\n<\/li>\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\"><strong>Op\u00e7\u00f5es visuais:<\/strong>\u00a0Prefer\u00eancias de realce (cores, estilos), modo claro\/escuro<\/p>\n<\/li>\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\"><strong>Cache de valida\u00e7\u00e3o:<\/strong>\u00a0Dom\u00ednios j\u00e1 verificados, para otimizar verifica\u00e7\u00f5es futuras<\/p>\n<\/li>\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\"><strong>Hist\u00f3rico de sess\u00e3o:<\/strong>\u00a0Estado da extens\u00e3o entre recarregamentos<\/p>\n<\/li>\n<\/ul>\n<h2 class=\"mb-2 mt-4 font-display font-semimedium text-base first:mt-0\">Dados N\u00c3O Armazenados<\/h2>\n<ul class=\"marker:text-quiet list-disc\">\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">\u274c Hist\u00f3rico de navega\u00e7\u00e3o<\/p>\n<\/li>\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">\u274c Dados de abas abertas<\/p>\n<\/li>\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">\u274c Conte\u00fado de NOTAMs\/METARs\/TAFs analisados<\/p>\n<\/li>\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">\u274c Identificadores de usu\u00e1rio ou endere\u00e7os IP<\/p>\n<\/li>\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">\u274c Cookies ou tokens de autentica\u00e7\u00e3o<\/p>\n<\/li>\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">\u274c Qualquer informa\u00e7\u00e3o pessoal identific\u00e1vel (PII)<\/p>\n<\/li>\n<\/ul>\n<h2 class=\"mb-2 mt-4 font-display font-semimedium text-base first:mt-0\">Localiza\u00e7\u00e3o dos Dados<\/h2>\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\"><strong>Todos os dados s\u00e3o armazenados localmente no dispositivo do usu\u00e1rio.<\/strong> Nenhum dado \u00e9 transmitido a servidores NOTAMSpot durante armazenamento. Os dados permanecem no perfil local do navegador.<\/p>\n<h2 class=\"mb-2 mt-4 font-display font-semimedium text-base first:mt-0\">Detalhes T\u00e9cnicos<\/h2>\n<p><strong>javascript<\/strong><\/p>\n<div class=\"w-full md:max-w-[90vw]\">\n<div class=\"codeWrapper text-light selection:text-super selection:bg-super\/10 my-md relative flex flex-col rounded-lg font-mono text-sm font-normal bg-subtler\">\n<div class=\"-mt-xl\">\n<pre><code><span class=\"token token\">\/\/ Exemplo de armazenamento local<\/span>\r\nchrome<span class=\"token token punctuation\">.<\/span>storage<span class=\"token token punctuation\">.<\/span>local<span class=\"token token punctuation\">.<\/span><span class=\"token token\">set<\/span><span class=\"token token punctuation\">(<\/span><span class=\"token token punctuation\">{<\/span>\r\n  <span class=\"token token string-property property\">'language'<\/span><span class=\"token token operator\">:<\/span> <span class=\"token token\">'pt-BR'<\/span><span class=\"token token punctuation\">,<\/span>\r\n  <span class=\"token token string-property property\">'activeProfiles'<\/span><span class=\"token token operator\">:<\/span> <span class=\"token token punctuation\">[<\/span><span class=\"token token\">'NOTAM'<\/span><span class=\"token token punctuation\">,<\/span> <span class=\"token token\">'METAR'<\/span><span class=\"token token punctuation\">]<\/span><span class=\"token token punctuation\">,<\/span>\r\n  <span class=\"token token string-property property\">'highlightColor'<\/span><span class=\"token token operator\">:<\/span> <span class=\"token token\">'#FFD700'<\/span>\r\n<span class=\"token token punctuation\">}<\/span><span class=\"token token punctuation\">)<\/span><span class=\"token token punctuation\">;<\/span>\r\n\r\n<span class=\"token token\">\/\/ Os dados n\u00e3o saem do dispositivo<\/span>\r\n<span class=\"token token\">\/\/ Nenhuma chamada para servidores externos<\/span>\r\n<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<h2 class=\"mb-2 mt-4 font-display font-semimedium text-base first:mt-0\">Por Que \u00c9 Necess\u00e1ria<\/h2>\n<ol class=\"marker:text-quiet list-decimal\">\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\"><strong>Persist\u00eancia:<\/strong>\u00a0Manter prefer\u00eancias do usu\u00e1rio entre sess\u00f5es<\/p>\n<\/li>\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\"><strong>Offline:<\/strong>\u00a0Extens\u00e3o funciona sem conex\u00e3o (verifica\u00e7\u00f5es locais continuam)<\/p>\n<\/li>\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\"><strong>Efici\u00eancia:<\/strong>\u00a0Cache de decis\u00f5es reduz reprocessamento<\/p>\n<\/li>\n<\/ol>\n<h2 class=\"mb-2 mt-4 font-display font-semimedium text-base first:mt-0\">Impacto de Seguran\u00e7a<\/h2>\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">\u2705\u00a0<strong>Baixo risco.<\/strong>\u00a0Os dados s\u00e3o n\u00e3o-sens\u00edveis (prefer\u00eancias UI) e permanecem no dispositivo. Usu\u00e1rios podem limpar dados acessando\u00a0<code>chrome:\/\/settings \u2192 Privacidade \u2192 Limpar dados de navega\u00e7\u00e3o<\/code>.<\/p>\n<hr class=\"bg-subtle h-px border-0\" \/>\n<h2 id=\"\" class=\"mb-2 mt-4 font-display font-semimedium text-base first:mt-0 md:text-lg [hr+&amp;]:mt-4\">3. <code>tabs<\/code><\/h2>\n<h2 class=\"mb-2 mt-4 font-display font-semimedium text-base first:mt-0\">Descri\u00e7\u00e3o<\/h2>\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">Permite que a extens\u00e3o acesse informa\u00e7\u00f5es sobre abas abertas, incluindo URLs, t\u00edtulos e status.<\/p>\n<h2 class=\"mb-2 mt-4 font-display font-semimedium text-base first:mt-0\">Informa\u00e7\u00f5es Acessadas<\/h2>\n<p><strong>json<\/strong><\/p>\n<div class=\"w-full md:max-w-[90vw]\">\n<div class=\"codeWrapper text-light selection:text-super selection:bg-super\/10 my-md relative flex flex-col rounded-lg font-mono text-sm font-normal bg-subtler\">\n<div class=\"-mt-xl\">\n<pre><code><span class=\"token token punctuation\">{<\/span>\r\n  <span class=\"token token string-property property\">\"url\"<\/span><span class=\"token token operator\">:<\/span> <span class=\"token token\">\"https:\/\/aisweb.decea.mil.br\/AIS\/\"<\/span><span class=\"token token punctuation\">,<\/span>\r\n  <span class=\"token token string-property property\">\"title\"<\/span><span class=\"token token operator\">:<\/span> <span class=\"token token\">\"AISWEB - Portal de Informa\u00e7\u00f5es Aeron\u00e1uticas\"<\/span><span class=\"token token punctuation\">,<\/span>\r\n  <span class=\"token token string-property property\">\"status\"<\/span><span class=\"token token operator\">:<\/span> <span class=\"token token\">\"complete\"<\/span><span class=\"token token punctuation\">,<\/span>\r\n  <span class=\"token token string-property property\">\"active\"<\/span><span class=\"token token operator\">:<\/span> <span class=\"token token boolean\">true<\/span><span class=\"token token punctuation\">,<\/span>\r\n  <span class=\"token token string-property property\">\"windowId\"<\/span><span class=\"token token operator\">:<\/span> <span class=\"token token\">1<\/span><span class=\"token token punctuation\">,<\/span>\r\n  <span class=\"token token string-property property\">\"id\"<\/span><span class=\"token token operator\">:<\/span> <span class=\"token token\">123456<\/span>\r\n<span class=\"token token punctuation\">}<\/span>\r\n<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<h2 class=\"mb-2 mt-4 font-display font-semimedium text-base first:mt-0\">Uso Espec\u00edfico<\/h2>\n<h2 class=\"mb-2 mt-4 font-display font-semimedium text-base first:mt-0\">1. Identifica\u00e7\u00e3o de Dom\u00ednio<\/h2>\n<p><strong>javascript<\/strong><\/p>\n<div class=\"w-full md:max-w-[90vw]\">\n<div class=\"codeWrapper text-light selection:text-super selection:bg-super\/10 my-md relative flex flex-col rounded-lg font-mono text-sm font-normal bg-subtler\">\n<div class=\"-mt-xl\">\n<pre><code><span class=\"token token\">\/\/ SecurityWhitelist verifica URL para saber se deve ativar<\/span>\r\n<span class=\"token token\">const<\/span> urlObj <span class=\"token token operator\">=<\/span> <span class=\"token token\">new<\/span> <span class=\"token token\">URL<\/span><span class=\"token token punctuation\">(<\/span>tab<span class=\"token token punctuation\">.<\/span>url<span class=\"token token punctuation\">)<\/span><span class=\"token token punctuation\">;<\/span>\r\n<span class=\"token token\">const<\/span> hostname <span class=\"token token operator\">=<\/span> urlObj<span class=\"token token punctuation\">.<\/span>hostname<span class=\"token token punctuation\">;<\/span>\r\n<span class=\"token token\">const<\/span> isApproved <span class=\"token token operator\">=<\/span> <span class=\"token token constant\">APPROVED_DOMAINS<\/span><span class=\"token token punctuation\">.<\/span><span class=\"token token\">includes<\/span><span class=\"token token punctuation\">(<\/span>hostname<span class=\"token token punctuation\">)<\/span><span class=\"token token punctuation\">;<\/span>\r\n<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<h2 class=\"mb-2 mt-4 font-display font-semimedium text-base first:mt-0\">2. Valida\u00e7\u00f5es de Seguran\u00e7a<\/h2>\n<p><strong>javascript<\/strong><\/p>\n<div class=\"w-full md:max-w-[90vw]\">\n<div class=\"codeWrapper text-light selection:text-super selection:bg-super\/10 my-md relative flex flex-col rounded-lg font-mono text-sm font-normal bg-subtler\">\n<div class=\"-mt-xl\">\n<pre><code><span class=\"token token\">\/\/ HTTPS_VALIDATION<\/span>\r\n<span class=\"token token\">const<\/span> isHTTPS <span class=\"token token operator\">=<\/span> tab<span class=\"token token punctuation\">.<\/span>url<span class=\"token token punctuation\">.<\/span><span class=\"token token\">startsWith<\/span><span class=\"token token punctuation\">(<\/span><span class=\"token token\">'https:\/\/'<\/span><span class=\"token token punctuation\">)<\/span><span class=\"token token punctuation\">;<\/span>\r\n\r\n<span class=\"token token\">\/\/ EXACT_DOMAIN_MATCH<\/span>\r\n<span class=\"token token\">const<\/span> expectedDomain <span class=\"token token operator\">=<\/span> <span class=\"token token\">'aisweb.decea.mil.br'<\/span><span class=\"token token punctuation\">;<\/span>\r\n<span class=\"token token\">const<\/span> actualDomain <span class=\"token token operator\">=<\/span> <span class=\"token token\">new<\/span> <span class=\"token token\">URL<\/span><span class=\"token token punctuation\">(<\/span>tab<span class=\"token token punctuation\">.<\/span>url<span class=\"token token punctuation\">)<\/span><span class=\"token token punctuation\">.<\/span>hostname<span class=\"token token punctuation\">;<\/span>\r\n<span class=\"token token\">const<\/span> matches <span class=\"token token operator\">=<\/span> expectedDomain <span class=\"token token operator\">===<\/span> actualDomain<span class=\"token token punctuation\">;<\/span>\r\n\r\n<span class=\"token token\">\/\/ SUBDOMAIN_AUTHORIZATION<\/span>\r\n<span class=\"token token\">const<\/span> allowedSubdomains <span class=\"token token operator\">=<\/span> <span class=\"token token punctuation\">[<\/span><span class=\"token token\">'aisweb'<\/span><span class=\"token token punctuation\">,<\/span> <span class=\"token token\">'api'<\/span><span class=\"token token punctuation\">]<\/span><span class=\"token token punctuation\">;<\/span>\r\n<span class=\"token token\">const<\/span> subdomain <span class=\"token token operator\">=<\/span> actualDomain<span class=\"token token punctuation\">.<\/span><span class=\"token token\">split<\/span><span class=\"token token punctuation\">(<\/span><span class=\"token token\">'.'<\/span><span class=\"token token punctuation\">)<\/span><span class=\"token token punctuation\">;<\/span>\r\n<span class=\"token token\">const<\/span> isSubdomainAllowed <span class=\"token token operator\">=<\/span> allowedSubdomains<span class=\"token token punctuation\">.<\/span><span class=\"token token\">includes<\/span><span class=\"token token punctuation\">(<\/span>subdomain<span class=\"token token punctuation\">)<\/span><span class=\"token token punctuation\">;<\/span>\r\n<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<h2 class=\"mb-2 mt-4 font-display font-semimedium text-base first:mt-0\">3. Detec\u00e7\u00e3o de Hom\u00f3grafos (Anti-Phishing)<\/h2>\n<p><strong>javascript<\/strong><\/p>\n<div class=\"w-full md:max-w-[90vw]\">\n<div class=\"codeWrapper text-light selection:text-super selection:bg-super\/10 my-md relative flex flex-col rounded-lg font-mono text-sm font-normal bg-subtler\">\n<div class=\"-mt-xl\">\n<div>\n<pre class=\"text-quiet bg-subtle py-xs px-sm inline-block rounded-br rounded-tl-lg text-xs font-thin\" data-testid=\"code-language-indicator\"><code><span class=\"token token\">\/\/ HOMOGRAPH_ATTACK_DETECTION<\/span>\r\n<span class=\"token token\">const<\/span> suspiciousPatterns <span class=\"token token operator\">=<\/span> <span class=\"token token punctuation\">[<\/span>\r\n  <span class=\"token token regex-delimiter\">\/<\/span><span class=\"token token regex-source language-regex\">aisweb-decea\\.mil\\.br<\/span><span class=\"token token regex-delimiter\">\/<\/span><span class=\"token token punctuation\">,<\/span> <span class=\"token token\">\/\/ com h\u00edfen (falso)<\/span>\r\n  <span class=\"token token operator\">\/<\/span>aisweb<span class=\"token token punctuation\">.<\/span>decea<span class=\"token token punctuation\">.<\/span>mil<span class=\"token token punctuation\">.<\/span>br<span class=\"token token punctuation\">.<\/span>phishing<span class=\"token token punctuation\">.<\/span>site<span class=\"token token operator\">\/<\/span><span class=\"token token punctuation\">,<\/span> <span class=\"token token\">\/\/ dom\u00ednio injetado<\/span>\r\n  <span class=\"token token operator\">\/<\/span>aiswe\u052a<span class=\"token token punctuation\">.<\/span>decea<span class=\"token token punctuation\">.<\/span>mil<span class=\"token token punctuation\">.<\/span>br<span class=\"token token operator\">\/<\/span> <span class=\"token token\">\/\/ caracter Unicode similar<\/span>\r\n<span class=\"token token punctuation\">]<\/span><span class=\"token token punctuation\">;<\/span>\r\n\r\n<span class=\"token token\">const<\/span> isSuspicious <span class=\"token token operator\">=<\/span> suspiciousPatterns<span class=\"token token punctuation\">.<\/span><span class=\"token token\">some<\/span><span class=\"token token punctuation\">(<\/span><span class=\"token token parameter\">pattern<\/span> <span class=\"token token operator\">=&gt;<\/span> \r\n  pattern<span class=\"token token punctuation\">.<\/span><span class=\"token token\">test<\/span><span class=\"token token punctuation\">(<\/span>tab<span class=\"token token punctuation\">.<\/span>url<span class=\"token token punctuation\">)<\/span>\r\n<span class=\"token token punctuation\">)<\/span><span class=\"token token punctuation\">;<\/span>\r\n<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<h2 class=\"mb-2 mt-4 font-display font-semimedium text-base first:mt-0\">Dados N\u00c3O Acessados<\/h2>\n<ul class=\"marker:text-quiet list-disc\">\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">\u274c Conte\u00fado da p\u00e1gina (acesso via\u00a0<code>scripting<\/code>, n\u00e3o\u00a0<code>tabs<\/code>)<\/p>\n<\/li>\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">\u274c Hist\u00f3rico de navega\u00e7\u00e3o passado<\/p>\n<\/li>\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">\u274c Cookies ou sess\u00f5es<\/p>\n<\/li>\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">\u274c Informa\u00e7\u00f5es de outras janelas\/abas sem consentimento<\/p>\n<\/li>\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">\u274c Download history<\/p>\n<\/li>\n<\/ul>\n<h2 class=\"mb-2 mt-4 font-display font-semimedium text-base first:mt-0\">Por Que \u00c9 Necess\u00e1ria<\/h2>\n<ol class=\"marker:text-quiet list-decimal\">\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\"><strong>Identifica\u00e7\u00e3o:<\/strong>\u00a0Saber se p\u00e1gina atual \u00e9 dom\u00ednio aeron\u00e1utico oficial<\/p>\n<\/li>\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\"><strong>Seguran\u00e7a:<\/strong>\u00a0Validar URL contra ataques de phishing e hom\u00f3grafos<\/p>\n<\/li>\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\"><strong>Escopo:<\/strong>\u00a0Executar verifica\u00e7\u00f5es sem fazer fetch externo<\/p>\n<\/li>\n<\/ol>\n<h2 class=\"mb-2 mt-4 font-display font-semimedium text-base first:mt-0\">Impacto de Seguran\u00e7a<\/h2>\n<blockquote><p>Impacto de Seguran\u00e7a: Requer alta confian\u00e7a. NOTAMSpot processa dados localmente no navegador. Planos de voo, NOTAMs e hist\u00f3rico de navega\u00e7\u00e3o nunca s\u00e3o enviados para servidores externos. [<span style=\"color: #0000ff;\"><a style=\"color: #0000ff;\" href=\"\/pt-br\/privacy-policy\/\" target=\"_blank\" rel=\"noopener\">Pol\u00edtica de Privacidade<\/a><\/span>]<\/blockquote>\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">\u2705\u00a0<strong>Baixo risco.<\/strong>\u00a0A permiss\u00e3o acessa apenas metadados da URL. N\u00e3o permite leitura de conte\u00fado da p\u00e1gina. As valida\u00e7\u00f5es aumentam seguran\u00e7a contra phishing.<\/p>\n<hr class=\"bg-subtle h-px border-0\" \/>\n<h2 id=\"\" class=\"mb-2 mt-4 font-display font-semimedium text-base first:mt-0 md:text-lg [hr+&amp;]:mt-4\">4. <code>downloads<\/code><\/h2>\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\"><strong>Descri\u00e7\u00e3o<\/strong><\/p>\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">A permiss\u00e3o\u00a0<code>downloads<\/code>\u00a0permite que a extens\u00e3o inicie downloads autom\u00e1ticos de documentos de texto embarcados na pr\u00f3pria extens\u00e3o para a pasta padr\u00e3o de downloads do sistema operacional, sem exibir di\u00e1logo \u201cSalvar como&#8230;\u201d.\u200b<\/p>\n<hr class=\"bg-subtle h-px border-0\" \/>\n<h2 class=\"mb-2 mt-4 font-display font-semimedium text-base first:mt-0\">Tipos de Arquivos Disponibilizados<\/h2>\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">A extens\u00e3o disponibiliza exclusivamente\u00a0<strong>arquivos legais e regulat\u00f3rios est\u00e1ticos<\/strong>, organizados por idioma (<code>pt-BR<\/code>,\u00a0<code>en-US<\/code>,\u00a0<code>es-ES<\/code>,\u00a0<code>fr-FR<\/code>) e por contexto (n\u00facleo legal geral).\u200b<\/p>\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">Principais categorias:<\/p>\n<ul class=\"marker:text-quiet list-disc\">\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\"><strong>Core \/ Geral (por locale)<\/strong>\u00a0\u2013 diret\u00f3rio:\u00a0<code>src\/legal\/core\/&lt;locale&gt;\/<\/code><\/p>\n<ul class=\"marker:text-quiet list-disc\">\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\"><code>AVIATION_DISCLAIMER.txt<\/code>\u00a0\u2013 Aviso legal aeron\u00e1utico.<\/p>\n<\/li>\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\"><code>LICENSE.txt<\/code>\u00a0\u2013 Termos de licen\u00e7a da extens\u00e3o.<\/p>\n<\/li>\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\"><code>QUICK_TERMS.txt<\/code>\u00a0\u2013 Termos resumidos \/ vis\u00e3o r\u00e1pida.<\/p>\n<\/li>\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\"><code>README_LEGAL.txt<\/code>\u00a0\u2013 Orienta\u00e7\u00f5es legais e explica\u00e7\u00f5es de uso.<code><\/code><\/p>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">Caracter\u00edsticas importantes:<\/p>\n<ul class=\"marker:text-quiet list-disc\">\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">100% dos arquivos s\u00e3o\u00a0<strong>empacotados dentro da extens\u00e3o<\/strong>.<\/p>\n<\/li>\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">N\u00e3o h\u00e1 qualquer personaliza\u00e7\u00e3o com dados do usu\u00e1rio.<\/p>\n<\/li>\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">S\u00e3o textos de refer\u00eancia legal\/regulat\u00f3ria e compliance aeron\u00e1utico.<\/p>\n<\/li>\n<\/ul>\n<hr class=\"bg-subtle h-px border-0\" \/>\n<h2 class=\"mb-2 mt-4 font-display font-semimedium text-base first:mt-0\">Fluxo de Download Automatizado<\/h2>\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">Os downloads s\u00e3o disparados\u00a0<strong>somente ap\u00f3s a\u00e7\u00e3o expl\u00edcita do usu\u00e1rio<\/strong>\u00a0na UI da extens\u00e3o (por exemplo, clicar em \u201cBaixar Aviso Legal\u201d ou \u201cExportar Documentos de Conformidade\u201d).\u200b<\/p>\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">Exemplo simplificado de implementa\u00e7\u00e3o atual:<\/p>\n<p><strong>javascript<\/strong><\/p>\n<div class=\"w-full md:max-w-[90vw]\">\n<div class=\"codeWrapper text-light selection:text-super selection:bg-super\/10 my-md relative flex flex-col rounded-lg font-mono text-sm font-normal bg-subtler\">\n<div class=\"-mt-xl\">\n<pre><code><span class=\"token token\">async<\/span> <span class=\"token token\">initiateDownload<\/span><span class=\"token token punctuation\">(<\/span><span class=\"token token parameter\">url<\/span><span class=\"token token parameter punctuation\">,<\/span><span class=\"token token parameter\"> fileName<\/span><span class=\"token token punctuation\">)<\/span> <span class=\"token token punctuation\">{<\/span>\r\n  console<span class=\"token token punctuation\">.<\/span><span class=\"token token\">log<\/span><span class=\"token token punctuation\">(<\/span><span class=\"token token template-string template-punctuation\">`<\/span><span class=\"token token template-string\">\ud83d\udcc1 Iniciando download via Chrome API: <\/span><span class=\"token token template-string interpolation interpolation-punctuation punctuation\">${<\/span><span class=\"token token template-string interpolation\">url<\/span><span class=\"token token template-string interpolation interpolation-punctuation punctuation\">}<\/span><span class=\"token token template-string template-punctuation\">`<\/span><span class=\"token token punctuation\">)<\/span><span class=\"token token punctuation\">;<\/span>\r\n\r\n  <span class=\"token token\">return<\/span> <span class=\"token token\">new<\/span> <span class=\"token token\">Promise<\/span><span class=\"token token punctuation\">(<\/span><span class=\"token token punctuation\">(<\/span><span class=\"token token parameter\">resolve<\/span><span class=\"token token parameter punctuation\">,<\/span><span class=\"token token parameter\"> reject<\/span><span class=\"token token punctuation\">)<\/span> <span class=\"token token operator\">=&gt;<\/span> <span class=\"token token punctuation\">{<\/span>\r\n    <span class=\"token token\">const<\/span> downloadOptions <span class=\"token token operator\">=<\/span> <span class=\"token token punctuation\">{<\/span>\r\n      <span class=\"token token literal-property property\">url<\/span><span class=\"token token operator\">:<\/span> url<span class=\"token token punctuation\">,<\/span>              <span class=\"token token\">\/\/ chrome.runtime.getURL('src\/legal\/...\/ARQUIVO.txt')<\/span>\r\n      <span class=\"token token literal-property property\">filename<\/span><span class=\"token token operator\">:<\/span> fileName<span class=\"token token punctuation\">,<\/span>    <span class=\"token token\">\/\/ Nome simples do arquivo<\/span>\r\n      <span class=\"token token literal-property property\">saveAs<\/span><span class=\"token token operator\">:<\/span> <span class=\"token token boolean\">false<\/span><span class=\"token token punctuation\">,<\/span>         <span class=\"token token\">\/\/ Sem di\u00e1logo; vai direto para a pasta de downloads<\/span>\r\n      <span class=\"token token literal-property property\">conflictAction<\/span><span class=\"token token operator\">:<\/span> <span class=\"token token\">'uniquify'<\/span><span class=\"token token punctuation\">,<\/span> <span class=\"token token\">\/\/ Evita sobrescrever arquivos existentes<\/span>\r\n    <span class=\"token token punctuation\">}<\/span><span class=\"token token punctuation\">;<\/span>\r\n\r\n    chrome<span class=\"token token punctuation\">.<\/span>downloads<span class=\"token token punctuation\">.<\/span><span class=\"token token\">download<\/span><span class=\"token token punctuation\">(<\/span>downloadOptions<span class=\"token token punctuation\">,<\/span> <span class=\"token token parameter\">downloadId<\/span> <span class=\"token token operator\">=&gt;<\/span> <span class=\"token token punctuation\">{<\/span>\r\n      <span class=\"token token\">if<\/span> <span class=\"token token punctuation\">(<\/span>chrome<span class=\"token token punctuation\">.<\/span>runtime<span class=\"token token punctuation\">.<\/span>lastError<span class=\"token token punctuation\">)<\/span> <span class=\"token token punctuation\">{<\/span>\r\n        <span class=\"token token\">reject<\/span><span class=\"token token punctuation\">(<\/span><span class=\"token token\">new<\/span> <span class=\"token token\">Error<\/span><span class=\"token token punctuation\">(<\/span>chrome<span class=\"token token punctuation\">.<\/span>runtime<span class=\"token token punctuation\">.<\/span>lastError<span class=\"token token punctuation\">.<\/span>message<span class=\"token token punctuation\">)<\/span><span class=\"token token punctuation\">)<\/span><span class=\"token token punctuation\">;<\/span>\r\n      <span class=\"token token punctuation\">}<\/span> <span class=\"token token\">else<\/span> <span class=\"token token punctuation\">{<\/span>\r\n        <span class=\"token token\">resolve<\/span><span class=\"token token punctuation\">(<\/span>downloadId<span class=\"token token punctuation\">)<\/span><span class=\"token token punctuation\">;<\/span>\r\n      <span class=\"token token punctuation\">}<\/span>\r\n    <span class=\"token token punctuation\">}<\/span><span class=\"token token punctuation\">)<\/span><span class=\"token token punctuation\">;<\/span>\r\n  <span class=\"token token punctuation\">}<\/span><span class=\"token token punctuation\">)<\/span><span class=\"token token punctuation\">;<\/span>\r\n<span class=\"token token punctuation\">}<\/span>\r\n<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">Comportamento observado:<\/p>\n<ul class=\"marker:text-quiet list-disc\">\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">O arquivo \u00e9 gravado\u00a0<strong>diretamente<\/strong>\u00a0na pasta padr\u00e3o de downloads do sistema (por exemplo,\u00a0<code>~\/Downloads<\/code>\u00a0no macOS), sem cria\u00e7\u00e3o de subdiret\u00f3rios.<\/p>\n<\/li>\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">Em caso de nomes repetidos, o navegador gera automaticamente um nome \u00fanico (<code>conflictAction: 'uniquify'<\/code>).\u200b<\/p>\n<\/li>\n<\/ul>\n<hr class=\"bg-subtle h-px border-0\" \/>\n<h2 class=\"mb-2 mt-4 font-display font-semimedium text-base first:mt-0\">Dados Transmitidos<\/h2>\n<ul class=\"marker:text-quiet list-disc\">\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">\u274c Nenhum dado do usu\u00e1rio \u00e9 enviado a qualquer servidor.<\/p>\n<\/li>\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">\u274c Nenhuma informa\u00e7\u00e3o pessoal \u00e9 inclu\u00edda nos arquivos baixados.<\/p>\n<\/li>\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">\u2705 O download \u00e9 puramente\u00a0<strong>local<\/strong>: recurso empacotado \u2192 pasta de Downloads do usu\u00e1rio.<\/p>\n<\/li>\n<\/ul>\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">N\u00e3o h\u00e1 chamadas HTTP externas associadas ao ato de baixar esses arquivos.<\/p>\n<hr class=\"bg-subtle h-px border-0\" \/>\n<h2 class=\"mb-2 mt-4 font-display font-semimedium text-base first:mt-0\">Por Que \u00c9 Necess\u00e1ria<\/h2>\n<ul class=\"marker:text-quiet list-disc\">\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\"><strong>Transpar\u00eancia<\/strong>: garante que o usu\u00e1rio e equipes de compliance possam baixar e arquivar localmente:<\/p>\n<ul class=\"marker:text-quiet list-disc\">\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">Avisos legais aeron\u00e1uticos.<\/p>\n<\/li>\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">Termos de uso e licen\u00e7a.<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\"><strong>Opera\u00e7\u00e3o offline<\/strong>: os arquivos podem ser consultados sem conex\u00e3o, diretamente a partir da pasta de downloads.<\/p>\n<\/li>\n<\/ul>\n<hr class=\"bg-subtle h-px border-0\" \/>\n<h2 class=\"mb-2 mt-4 font-display font-semimedium text-base first:mt-0\">Impacto de Seguran\u00e7a<\/h2>\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">\u2705\u00a0<strong>Risco praticamente nulo<\/strong>:\u200b<\/p>\n<ul class=\"marker:text-quiet list-disc\">\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">Conte\u00fado baixado \u00e9 est\u00e1tico, n\u00e3o sens\u00edvel e independente de dados do usu\u00e1rio.<\/p>\n<\/li>\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">N\u00e3o h\u00e1 transmiss\u00e3o de informa\u00e7\u00f5es para terceiros.<\/p>\n<\/li>\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">A a\u00e7\u00e3o \u00e9 sempre iniciada por intera\u00e7\u00e3o expl\u00edcita do usu\u00e1rio (cliques na UI da extens\u00e3o), n\u00e3o ocorre de forma oculta ou em background sem contexto.<\/p>\n<\/li>\n<\/ul>\n<hr class=\"bg-subtle h-px border-0\" \/>\n<h2 id=\"resumo-de-segurana\" class=\"mb-2 mt-4 font-display font-semimedium text-base first:mt-0 md:text-lg [hr+&amp;]:mt-4\">Resumo de Seguran\u00e7a<\/h2>\n<h2 class=\"mb-2 mt-4 font-display font-semimedium text-base first:mt-0\">Matriz de Risco por Permiss\u00e3o<\/h2>\n<div class=\"group relative\">\n<table class=\"border-subtler my-[1em] w-full table-auto border-separate border-spacing-0 border-l border-t\">\n<thead class=\"bg-subtler\">\n<tr>\n<th class=\"border-subtler p-sm break-normal border-b border-r text-left align-top\">Permiss\u00e3o<\/th>\n<th class=\"border-subtler p-sm break-normal border-b border-r text-left align-top\">Risco<\/th>\n<th class=\"border-subtler p-sm break-normal border-b border-r text-left align-top\">Mitiga\u00e7\u00e3o<\/th>\n<th class=\"border-subtler p-sm break-normal border-b border-r text-left align-top\">Status<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td class=\"px-sm border-subtler min-w-[48px] break-normal border-b border-r\"><code>activeTab<\/code><\/td>\n<td class=\"px-sm border-subtler min-w-[48px] break-normal border-b border-r\">\u2705 Baixo<\/td>\n<td class=\"px-sm border-subtler min-w-[48px] break-normal border-b border-r\">Ativa\u00e7\u00e3o via gesto expl\u00edcito<\/td>\n<td class=\"px-sm border-subtler min-w-[48px] break-normal border-b border-r\">\u2713 Aceito<\/td>\n<\/tr>\n<tr>\n<td class=\"px-sm border-subtler min-w-[48px] break-normal border-b border-r\"><code>storage<\/code><\/td>\n<td class=\"px-sm border-subtler min-w-[48px] break-normal border-b border-r\">\u2705 Baixo<\/td>\n<td class=\"px-sm border-subtler min-w-[48px] break-normal border-b border-r\">Dados locais n\u00e3o-sens\u00edveis<\/td>\n<td class=\"px-sm border-subtler min-w-[48px] break-normal border-b border-r\">\u2713 Aceito<\/td>\n<\/tr>\n<tr>\n<td class=\"px-sm border-subtler min-w-[48px] break-normal border-b border-r\"><code>tabs<\/code><\/td>\n<td class=\"px-sm border-subtler min-w-[48px] break-normal border-b border-r\">\u2705 Baixo<\/td>\n<td class=\"px-sm border-subtler min-w-[48px] break-normal border-b border-r\">Apenas metadados URL<\/td>\n<td class=\"px-sm border-subtler min-w-[48px] break-normal border-b border-r\">\u2713 Aceito<\/td>\n<\/tr>\n<tr>\n<td class=\"px-sm border-subtler min-w-[48px] break-normal border-b border-r\"><code>downloads<\/code><\/td>\n<td class=\"px-sm border-subtler min-w-[48px] break-normal border-b border-r\">\u2705 Nulo<\/td>\n<td class=\"px-sm border-subtler min-w-[48px] break-normal border-b border-r\">Arquivos locais p\u00fablicos<\/td>\n<td class=\"px-sm border-subtler min-w-[48px] break-normal border-b border-r\">\u2713 Aceito<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<h2 class=\"mb-2 mt-4 font-display font-semimedium text-base first:mt-0\">Princ\u00edpios Aplicados<\/h2>\n<ol class=\"marker:text-quiet list-decimal\">\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">\u2705\u00a0<strong>Princ\u00edpio do Menor Privil\u00e9gio<\/strong><\/p>\n<ul class=\"marker:text-quiet list-disc\">\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">Cada permiss\u00e3o solicitada tem justificativa clara<\/p>\n<\/li>\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">Nenhuma permiss\u00e3o \u00e9 usada para fins secund\u00e1rios<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">\u2705\u00a0<strong>Transpar\u00eancia Total<\/strong><\/p>\n<ul class=\"marker:text-quiet list-disc\">\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">Usu\u00e1rio sabe exatamente o que cada permiss\u00e3o faz<\/p>\n<\/li>\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">Documenta\u00e7\u00e3o completa dispon\u00edvel<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">\u2705\u00a0<strong>Controle do Usu\u00e1rio<\/strong><\/p>\n<ul class=\"marker:text-quiet list-disc\">\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">An\u00e1lise ocorre apenas em dom\u00ednios aprovados<\/p>\n<\/li>\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">Usu\u00e1rio pode desabilitar extens\u00e3o a qualquer momento<\/p>\n<\/li>\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">Dados locais podem ser limpos via navegador<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">\u2705\u00a0<strong>Seguran\u00e7a em Camadas<\/strong><\/p>\n<ul class=\"marker:text-quiet list-disc\">\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">ContentDetector (runtime)<\/p>\n<\/li>\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">CSP (Content Security Policy)<\/p>\n<\/li>\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">Valida\u00e7\u00e3o de estrutura<\/p>\n<\/li>\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">Sandboxing de content scripts<\/p>\n<\/li>\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">Valida\u00e7\u00f5es de dom\u00ednio\/HTTPS<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">\u2705\u00a0<strong>Conformidade Regulat\u00f3ria<\/strong><\/p>\n<ul class=\"marker:text-quiet list-disc\">\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">LGPD (Brasil)<\/p>\n<\/li>\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">GDPR (Europa)<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<hr class=\"bg-subtle h-px border-0\" \/>\n<div class=\"w-full md:max-w-[90vw]\">\n<div class=\"codeWrapper text-light selection:text-super selection:bg-super\/10 my-md relative flex flex-col rounded-lg font-mono text-sm font-normal bg-subtler\">\n<div class=\"-mt-xl\">\n<h2 id=\"casos-de-uso-tpicos\" class=\"mb-2 mt-4 font-display font-semimedium text-base first:mt-0 md:text-lg [hr+&amp;]:mt-4\">Casos de Uso T\u00edpicos<\/h2>\n<h2 class=\"mb-2 mt-4 font-display font-semimedium text-base first:mt-0\">Caso 1: Operador Analisa NOTAM\/METAR no AISWEB<\/h2>\n<ol class=\"marker:text-quiet list-decimal\">\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">Operador acessa<span style=\"color: #0000ff;\">\u00a0<a class=\"reset interactable cursor-pointer decoration-1 underline-offset-1 text-super hover:underline font-semibold\" style=\"color: #0000ff;\" href=\"https:\/\/aisweb.decea.mil.br\/\" target=\"_blank\" rel=\"nofollow noopener\" data-state=\"closed\"><span class=\"text-box-trim-both\">https:\/\/aisweb.decea.mil.br<\/span><\/a>.\u200b<\/span><\/p>\n<\/li>\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">O NOTAMSpot detecta automaticamente que o dom\u00ednio est\u00e1 na whitelist aeron\u00e1utica (tabs + l\u00f3gica interna).<\/p>\n<\/li>\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">Extens\u00e3o valida HTTPS e contexto seguro e inicializa o Resource Manager (scripting + storage).\u200b<\/p>\n<\/li>\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\"><code>content-detector.js<\/code>\u00a0identifica se a p\u00e1gina cont\u00e9m NOTAM, meteorologia ou ambos (scripting).\u200b<\/p>\n<\/li>\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">Sistema executa an\u00e1lise autom\u00e1tica e real\u00e7a termos cr\u00edticos diretamente no DOM (scripting).\u200b<\/p>\n<\/li>\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">Barra superior e floating lateral exibem contagem de riscos e status do dom\u00ednio (scripting).<\/p>\n<\/li>\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">Operador pode usar os bot\u00f5es de REFRESH \/ LIMPAR \/ CONFIG para ajustar a an\u00e1lise e visualiza\u00e7\u00e3o (scripting + storage).\u200b<\/p>\n<\/li>\n<\/ol>\n<h2 class=\"mb-2 mt-4 font-display font-semimedium text-base first:mt-0\">Caso 2: Operador For\u00e7a Nova An\u00e1lise em P\u00e1gina Din\u00e2mica<\/h2>\n<ol class=\"marker:text-quiet list-decimal\">\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">Operador permanece em uma p\u00e1gina din\u00e2mica do AISWEB\/REDEMET com NOTAM\/METAR sendo atualizados em tempo real.\u200b<\/p>\n<\/li>\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">Ap\u00f3s nova carga de conte\u00fado, clica no bot\u00e3o\u00a0<strong>REFRESH<\/strong>\u00a0da barra superior ou em\u00a0<strong>Busca For\u00e7ada<\/strong>\u00a0no floating lateral.<\/p>\n<\/li>\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\"><code>content-detector.js<\/code>\u00a0revarre o DOM, aplicando novamente as regras de detec\u00e7\u00e3o e destaque (scripting).\u200b\u200b<\/p>\n<\/li>\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">Termos cr\u00edticos rec\u00e9m-carregados s\u00e3o real\u00e7ados, sem necessidade de recarregar a p\u00e1gina.<\/p>\n<\/li>\n<\/ol>\n<h2 class=\"mb-2 mt-4 font-display font-semimedium text-base first:mt-0\">Caso 3: Operador Baixa Documenta\u00e7\u00e3o Legal<\/h2>\n<ol class=\"marker:text-quiet list-decimal\">\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">Operador abre o popup ou a UI de configura\u00e7\u00f5es da extens\u00e3o.<\/p>\n<\/li>\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">Seleciona uma op\u00e7\u00e3o como \u201cBaixar Aviso Legal\u201d.<\/p>\n<\/li>\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">A extens\u00e3o resolve o arquivo correto com base no idioma atual (pt-BR, en-US, es-ES, fr-FR) e contexto (core\/aviation).\u200b<\/p>\n<\/li>\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">\u00c9 iniciado um download autom\u00e1tico via\u00a0<code>chrome.downloads.download<\/code>, gravando o arquivo de texto diretamente na pasta padr\u00e3o de downloads do sistema, sem di\u00e1logo \u201cSalvar como&#8230;\u201d (downloads).\u200b<\/p>\n<\/li>\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">Nenhuma conex\u00e3o externa \u00e9 efetuada; o conte\u00fado vem exclusivamente de arquivos empacotados na pr\u00f3pria extens\u00e3o.<\/p>\n<\/li>\n<\/ol>\n<\/div>\n<\/div>\n<\/div>\n<hr class=\"bg-subtle h-px border-0\" \/>\n<h2 id=\"conformidade-com-polticas-de-store\" class=\"mb-2 mt-4 font-display font-semimedium text-base first:mt-0 md:text-lg [hr+&amp;]:mt-4\">Conformidade com Pol\u00edticas de Store<\/h2>\n<h2 class=\"mb-2 mt-4 font-display font-semimedium text-base first:mt-0\">Chrome Web Store \u2705<\/h2>\n<ul class=\"marker:text-quiet list-disc\">\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">Manifest V3 obrigat\u00f3rio: \u2713 Implementado<\/p>\n<\/li>\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">Permiss\u00f5es justificadas: \u2713 Este documento<\/p>\n<\/li>\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">Sem engana\u00e7\u00e3o: \u2713 Fun\u00e7\u00e3o clara<\/p>\n<\/li>\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">Sem dados coletados n\u00e3o consentidos: \u2713 Storage apenas local<\/p>\n<\/li>\n<\/ul>\n<h2 class=\"mb-2 mt-4 font-display font-semimedium text-base first:mt-0\">Mozilla Add-ons \u2705<\/h2>\n<ul class=\"marker:text-quiet list-disc\">\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">Content scripts auditados: \u2713 Seguro<\/p>\n<\/li>\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">Sem comunica\u00e7\u00e3o n\u00e3o documentada: \u2713 Apenas dom\u00ednios avi\u00f4nicos<\/p>\n<\/li>\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">Sem telemetria oculta: \u2713 Storage local apenas<\/p>\n<\/li>\n<\/ul>\n<h2 class=\"mb-2 mt-4 font-display font-semimedium text-base first:mt-0\">Microsoft Edge Add-ons \u2705<\/h2>\n<ul class=\"marker:text-quiet list-disc\">\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">Manifest V3 suportado: \u2713 Sim<\/p>\n<\/li>\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">Permiss\u00f5es transparentes: \u2713 Este documento<\/p>\n<\/li>\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">Seguran\u00e7a padr\u00e3o: \u2713 CSP, sandboxing, whitelist<\/p>\n<\/li>\n<\/ul>\n<hr class=\"bg-subtle h-px border-0\" \/>\n<h2 id=\"faq-para-reviewers-atualizado\" class=\"mb-2 mt-4 font-display font-semimedium text-base first:mt-0 md:text-lg [hr+&amp;]:mt-4\" style=\"text-align: center;\">FAQ para Reviewers (Atualizado)<\/h2>\n<h3 class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\"><strong><br \/>\nP: Por que a extens\u00e3o injeta content scripts em m\u00faltiplos dom\u00ednios?<\/strong><\/h3>\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">R: O NOTAMSpot utiliza <code>content-detector.js<\/code>\u00a0como orquestrador central. O content script \u00e9 carregado em p\u00e1ginas de navega\u00e7\u00e3o normal, mas a\u00a0<strong>l\u00f3gica de seguran\u00e7a interna s\u00f3 ativa an\u00e1lise completa em dom\u00ednios aeron\u00e1uticos whitelist<\/strong>\u00a0(AISWEB, REDEMET, Aviation Weather, etc.). Em outros dom\u00ednios, o script apenas avalia o hostname para fins de status de dom\u00ednio (floating lateral) e desativa qualquer an\u00e1lise de conte\u00fado. Isso \u00e9 necess\u00e1rio para lidar com arquiteturas complexas de portais aeron\u00e1uticos (iframes, subdom\u00ednios din\u00e2micos) sem depender de patterns extremamente espec\u00edficos que quebrariam com mudan\u00e7as de infraestrutura.\u200b<\/p>\n<h3 class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\"><strong><br \/>\nP: Dados do usu\u00e1rio s\u00e3o enviados a servidores?<\/strong><\/h3>\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">R: N\u00e3o. A extens\u00e3o usa\u00a0<code>chrome.storage.local<\/code>\u00a0e, quando aplic\u00e1vel,\u00a0<code>chrome.storage.sync<\/code>\u00a0apenas para\u00a0<strong>prefer\u00eancias locais<\/strong> (idioma, tema, perfis ativos, chave ATIVO\/DESATIVO). Nenhuma permiss\u00e3o \u00e9 utilizada para enviar conte\u00fado de NOTAM\/METAR\/TAF, hist\u00f3rico de navega\u00e7\u00e3o ou qualquer dado pessoal para servidores NOTAMSpot ou terceiros.\u200b<\/p>\n<h3 class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\"><strong><br \/>\nP: Como a extens\u00e3o protege contra phishing e dom\u00ednios falsos?<\/strong><\/h3>\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">R: A permiss\u00e3o\u00a0<code>tabs<\/code>\u00a0\u00e9 usada para ler apenas\u00a0<strong>metadados de URL<\/strong>\u00a0(protocolo, hostname) e aplicar:<\/p>\n<ul class=\"marker:text-quiet list-disc\">\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">Valida\u00e7\u00e3o de HTTPS e contexto seguro.<\/p>\n<\/li>\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">Compara\u00e7\u00e3o exata de dom\u00ednio com whitelist aeron\u00e1utica.<\/p>\n<\/li>\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">Regras de detec\u00e7\u00e3o de hom\u00f3grafos e dom\u00ednios visualmente semelhantes a portais oficiais.\u200b<\/p>\n<\/li>\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">O m\u00f3dulo de an\u00e1lise de conte\u00fado <strong>s\u00f3 \u00e9 ativado se o dom\u00ednio passar por essas valida\u00e7\u00f5es e estiver na whitelist<\/strong>.<\/p>\n<\/li>\n<\/ul>\n<h3 class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\"><strong><br \/>\nP: O que acontece se um site n\u00e3o est\u00e1 na whitelist?<\/strong><\/h3>\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">R: Para dom\u00ednios n\u00e3o whitelist:<\/p>\n<ul class=\"marker:text-quiet list-disc\">\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">O analisador de conte\u00fado \u00e9 desativado silenciosamente.<\/p>\n<\/li>\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">Nenhuma varredura autom\u00e1tica\u00a0 de DOM para NOTAM\/METAR\/TAF \u00e9 executada.<\/p>\n<\/li>\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">Nenhum dado da p\u00e1gina \u00e9 coletado ou armazenado.<\/p>\n<\/li>\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">Opcionalmente, o floating lateral pode exibir apenas um status gen\u00e9rico (por exemplo, \u201cDom\u00ednio n\u00e3o aeron\u00e1utico\u201d) sem inspecionar conte\u00fado.<\/p>\n<\/li>\n<\/ul>\n<h3><strong><br \/>\nP: Posso revisar o c\u00f3digo de seguran\u00e7a?<\/strong><\/h3>\n<p>R: Sim. Todo o c\u00f3digo da extens\u00e3o (incluindo\u00a0<code>content-detector<\/code>, analisadores e valida\u00e7\u00f5es de dom\u00ednio) \u00e9 entregue em JavaScript leg\u00edvel como parte do pacote enviado \u00e0 store. Revisores podem inspecionar diretamente o c\u00f3digo-fonte empacotado durante o processo de revis\u00e3o. Se ainda assim for necess\u00e1rio contexto adicional (diagramas, documenta\u00e7\u00e3o t\u00e9cnica estendida), podemos fornec\u00ea-lo sob demanda via\u00a0<code>support@notamspot.com<\/code>.<\/p>\n<p>&nbsp;<\/p>\n<h3><strong>P: H\u00e1 telemetria ou analytics?<\/strong><\/h3>\n<p>R: N\u00e3o. A extens\u00e3o\u00a0<strong>n\u00e3o implementa telemetria<\/strong>, n\u00e3o usa Google Analytics nem servi\u00e7os de tracking.\u200b<\/p>\n<ul class=\"marker:text-quiet list-disc\">\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">Nenhum evento de uso (cliques, p\u00e1ginas visitadas, termos analisados) \u00e9 enviado para servidores.<\/p>\n<\/li>\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">Todas as decis\u00f5es de an\u00e1lise ocorrem localmente, no navegador.<\/p>\n<\/li>\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">O \u00fanico uso de\u00a0<code>downloads<\/code>\u00a0\u00e9 exportar documentos legais est\u00e1ticos empacotados na extens\u00e3o, por a\u00e7\u00e3o expl\u00edcita do usu\u00e1rio.<\/p>\n<\/li>\n<\/ul>\n<ul class=\"marker:text-quiet list-disc\">\n<li style=\"list-style-type: none;\"><\/li>\n<\/ul>\n<hr class=\"bg-subtle h-px border-0\" \/>\n<h2 id=\"links-de-teste-da-extenso\" class=\"mb-2 mt-4 font-display font-semimedium text-base first:mt-0 md:text-lg [hr+&amp;]:mt-4\">Links de Teste da Extens\u00e3o<\/h2>\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">Para validar a funcionalidade do NOTAMSpot em ambientes reais, os revisores podem clicar diretamente nos links abaixo ap\u00f3s instalar a extens\u00e3o. A an\u00e1lise ser\u00e1 iniciada automaticamente.<\/p>\n<h2 class=\"mb-2 mt-4 font-display font-semimedium text-base first:mt-0\">1. AirNav.com<\/h2>\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\"><strong>Link direto:<\/strong> <a href=\"https:\/\/www.airnav.com\/airport\/KJFK\" target=\"_blank\" rel=\"nofollow noopener\"><span style=\"color: #0000ff;\">https:\/\/www.airnav.com\/airport\/KJFK<\/span><\/a><br \/>\nTesta detec\u00e7\u00e3o termos de\u00a0 NOTAMs nos USA.<\/p>\n<h2 class=\"mb-2 mt-4 font-display font-semimedium text-base first:mt-0\">2. Aviation Weather Center (EUA \u2014 NOAA\/NWS)<\/h2>\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\"><strong>Link direto:<\/strong> <a href=\"https:\/\/aviationweather.gov\/data\/metar\/?ids=KJFK%2CKLAX%2CKORD%2CKATL%2CKDFW%2CKDEN%2CKSFO%2CKLAS%2CKPHX%2CKIAH%2CKMIA%2CKSEA%2CKEWR%2CKMCO%2CKBOS%2CKDCA%2CKFLL%2CKBWI%2CKMDW%2CKPHL%2CKLGA%2CKDTW%2CKMSN%2CPANC%2CPHNL&amp;taf=1\" target=\"_blank\" rel=\"nofollow noopener\"><span style=\"color: #0000ff;\">https:\/\/aviationweather.gov\/data\/metar\/?ids=KJFK%2CKLAX%2CKORD%2CKATL%2CKDFW%2CKDEN%2CKSFO%2CKLAS%2CKPHX%2CKIAH%2CKMIA%2CKSEA%2CKEWR%2CKMCO%2CKBOS%2CKDCA%2CKFLL%2CKBWI%2CKMDW%2CKPHL%2CKLGA%2CKDTW%2CKMSN%2CPANC%2CPHNL&amp;taf=1<\/span><\/a><br \/>\nTesta an\u00e1lise de METARs\/TAFs em formato internacional, valida\u00e7\u00e3o HTTPS e realce de condi\u00e7\u00f5es meteorol\u00f3gicas cr\u00edticas.<\/p>\n<h2 class=\"mb-2 mt-4 font-display font-semimedium text-base first:mt-0\">3. FAA FNS NOTAM Search (EUA)<\/h2>\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">Portal oficial: <span style=\"color: #0000ff;\"><a class=\"reset interactable cursor-pointer decoration-1 underline-offset-1 text-super hover:underline font-semibold\" style=\"color: #0000ff;\" href=\"https:\/\/notams.aim.faa.gov\/notamSearch\/nsapp.html#\/\" target=\"_blank\" rel=\"nofollow noopener\"><span class=\"text-box-trim-both\">https:\/\/notams.aim.faa.gov\/notamSearch\/nsapp.html#\/<\/span><\/a><\/span><\/p>\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">Para testes, utilize a seguinte sequ\u00eancia de indicativos ICAO:<br \/>\n<strong><em>KJFK, KLAX, KORD, KATL, KDFW, KDEN, KSFO, KLAS, KPHX, KIAH, KMIA, KSEA, KEWR, KMCO, KBOS, KDCA, KFLL, KBWI, KMDW, KPHL, KLGA, KDTW, KMSN, PANC, PHNL<\/em><\/strong>.<\/p>\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">Este link permite validar a busca e a an\u00e1lise de NOTAMs emitidos pela FAA; ap\u00f3s o carregamento da p\u00e1gina, insira os c\u00f3digos ICAO no campo apropriado e clique no bot\u00e3o\u00a0<strong>\u201cREFRESH\u201d<\/strong>\u00a0na parte superior para que os NOTAMs sejam exibidos e analisados pela extens\u00e3o.<\/p>\n<h2 class=\"mb-2 mt-4 font-display font-semimedium text-base first:mt-0\">4. AISWEB (Brasil \u2014 DECEA)<\/h2>\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\"><strong>Link direto:<\/strong>\u00a0<span style=\"color: #0000ff;\"><a class=\"reset interactable cursor-pointer decoration-1 underline-offset-1 text-super hover:underline font-semibold\" style=\"color: #0000ff;\" href=\"https:\/\/aisweb.decea.mil.br\/?i=aerodromos&amp;codigo=SBGR\" target=\"_blank\" rel=\"nofollow noopener\"><span class=\"text-box-trim-both\">https:\/\/aisweb.decea.mil.br\/?i=aerodromos&amp;codigo=SBGR<\/span><\/a><\/span><br \/>\nTesta detec\u00e7\u00e3o termos de\u00a0 NOTAMs brasileiros.<\/p>\n<hr class=\"bg-subtle h-px border-0\" \/>\n<h2 id=\"contato-para-revisores\" class=\"mb-2 mt-4 font-display font-semimedium text-base first:mt-0 md:text-lg [hr+&amp;]:mt-4\">Contato para Revisores<\/h2>\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">Para d\u00favidas t\u00e9cnicas ou solicitar acesso a source code:<\/p>\n<ul class=\"marker:text-quiet list-disc\">\n<li style=\"list-style-type: none;\">\n<ul class=\"marker:text-quiet list-disc\">\n<li class=\"py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;&gt;p]:pt-0 [&amp;&gt;p]:mb-2 [&amp;&gt;p]:my-0\">\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\"><strong>E-mail:<\/strong>\u00a0<a class=\"reset interactable cursor-pointer decoration-1 underline-offset-1 text-super hover:underline font-semibold\" href=\"mailto:support@notamspot.com\" target=\"_blank\" rel=\"nofollow noopener\"><span class=\"text-box-trim-both\">support@notamspot.com<\/span><\/a><\/p>\n<\/li>\n<li><strong>Subject:<\/strong> [STORE_REVIEW] Permiss\u00f5es NOTAMSpot (Beta).<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<hr class=\"bg-subtle h-px border-0\" \/>\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\"><strong>Documento:<\/strong> Justificativa de Permiss\u00f5es da Extens\u00e3o<br \/>\n<strong>Data:<\/strong> 2 de janeiro de 2026<br \/>\n<strong>Respons\u00e1vel:<\/strong> NOTAMSpot Team<br \/>\n<strong>Status:<\/strong>\u00a0Pronto para Submiss\u00e3o \u00e0s Stores<\/p>",
        "protected": false
    },
    "excerpt": {
        "rendered": "<p>Justificativa de Permiss\u00f5es da Extens\u00e3o \u26a0\ufe0f Importante: NOTAMSpot \u00e9 uma extens\u00e3o de navegador independente. As permiss\u00f5es listadas abaixo s\u00e3o necess\u00e1rias para analisar portais de avia\u00e7\u00e3o publicamente acess\u00edveis. Esta extens\u00e3o n\u00e3o \u00e9 afiliada, endossada ou certificada pela FAA, NOAA, DECEA, Nav Canada ou qualquer \u00f3rg\u00e3o governamental. NOTAMSpot Browser Extension (Beta) Data do documento: 2 de janeiro [&hellip;]<\/p>",
        "protected": false
    },
    "author": 1,
    "featured_media": 3696,
    "parent": 0,
    "menu_order": 0,
    "comment_status": "closed",
    "ping_status": "closed",
    "template": "",
    "meta": {
        "_acf_changed": false,
        "_seopress_robots_primary_cat": "",
        "_seopress_titles_title": "Auditoria de Permiss\u00f5es e Seguran\u00e7a | NOTAMSpot",
        "_seopress_titles_desc": "Documenta\u00e7\u00e3o t\u00e9cnica detalhada das permiss\u00f5es da extens\u00e3o (Manifest V3). Entenda o uso de activeTab, storage e scripting, e como garantimos a seguran\u00e7a limitando o acesso a portais aeron\u00e1uticos.",
        "_seopress_robots_index": "",
        "footnotes": ""
    },
    "class_list": [
        "post-2998",
        "page",
        "type-page",
        "status-publish",
        "has-post-thumbnail",
        "hentry"
    ],
    "acf": [],
    "_hostinger_reach_plugin_has_subscription_block": false,
    "_hostinger_reach_plugin_is_elementor": false,
    "_links": {
        "self": [
            {
                "href": "https:\/\/notamspot.com\/pt-br\/wp-json\/wp\/v2\/pages\/2998",
                "targetHints": {
                    "allow": [
                        "GET"
                    ]
                }
            }
        ],
        "collection": [
            {
                "href": "https:\/\/notamspot.com\/pt-br\/wp-json\/wp\/v2\/pages"
            }
        ],
        "about": [
            {
                "href": "https:\/\/notamspot.com\/pt-br\/wp-json\/wp\/v2\/types\/page"
            }
        ],
        "author": [
            {
                "embeddable": true,
                "href": "https:\/\/notamspot.com\/pt-br\/wp-json\/wp\/v2\/users\/1"
            }
        ],
        "replies": [
            {
                "embeddable": true,
                "href": "https:\/\/notamspot.com\/pt-br\/wp-json\/wp\/v2\/comments?post=2998"
            }
        ],
        "version-history": [
            {
                "count": 33,
                "href": "https:\/\/notamspot.com\/pt-br\/wp-json\/wp\/v2\/pages\/2998\/revisions"
            }
        ],
        "predecessor-version": [
            {
                "id": 3959,
                "href": "https:\/\/notamspot.com\/pt-br\/wp-json\/wp\/v2\/pages\/2998\/revisions\/3959"
            }
        ],
        "wp:featuredmedia": [
            {
                "embeddable": true,
                "href": "https:\/\/notamspot.com\/pt-br\/wp-json\/wp\/v2\/media\/3696"
            }
        ],
        "wp:attachment": [
            {
                "href": "https:\/\/notamspot.com\/pt-br\/wp-json\/wp\/v2\/media?parent=2998"
            }
        ],
        "curies": [
            {
                "name": "wp",
                "href": "https:\/\/api.w.org\/{rel}",
                "templated": true
            }
        ]
    }
}