{"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\/en_us\/justification-for-extension-permissions\/","title":{"rendered":"Extension Permission Justification"},"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\">Extension Permission Justification<\/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 Important: NOTAMSpot is an independent browser extension. The permissions listed below are required to analyze publicly accessible aviation portals. This extension is not affiliated with, endorsed by, or certified by FAA, NOAA, DECEA, Nav Canada, or any government agency.<\/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>Document date:<\/strong> January 2, 2026<br \/>\n<strong>Recipient:<\/strong>\u00a0Review Teams \u2014 Chrome Web Store, Mozilla Add-ons, Microsoft Edge Add-ons<br \/>\n<strong>Developer:<\/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\">Overview<\/h2>\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">This document provides detailed technical justification for each permission declared in the NOTAMSpot manifest.json. Each permission is linked to one or more specific extension features and is used only to the extent necessary to fulfill the avionics safety analysis function (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 translation-block\"><strong>Guiding principle: :<\/strong> minimum necessary scope. No permission is used for secondary purposes, non-consented telemetry, or broad browsing data collection.<\/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>Learn more about data handling:<\/strong><br \/>\n<a style=\"color: #2563eb; font-weight: 600;\" href=\"\/en_us\/privacy-policy\/\">Privacy Policy<\/a> |<br \/>\n<a style=\"color: #2563eb; font-weight: 600;\" href=\"\/en_us\/data-transparency\/\">Data Transparency<\/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\">Declared Permissions<\/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>Description<\/strong><\/p>\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">Allows the extension to access the content of the browser\u2019s active tab to automatically analyze critical aeronautical information (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>Automated Operation<\/strong><\/p>\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2 translation-block\">NOTAMSpot operates in a proactive and automated way to reduce the cognitive load on the aircraft operator:<\/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>Automatic Domain Detection<\/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\">User opens an official aeronautical portal page (e.g., 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\">The system automatically verifies whether the domain is in the approved whitelist.<\/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\">It identifies the expected content type (NOTAM or Weather).<\/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>Real-Time Analysis<\/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\">The extension monitors page loading.<\/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\">As soon as the DOM is ready, it starts scanning for critical terms.<\/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\">It automatically highlights operational safety keywords.<\/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>Continuous Processing<\/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\">The system continues monitoring dynamic updates (new NOTAMs, updated METARs).<\/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\">It applies visual highlighting without manual intervention.<\/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\">It updates tooltips and warnings as the content changes.<\/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>Typical Use Cases<\/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>Automatic Analysis (Default Mode)<\/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 translation-block\">User opens <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\">The system detects: whitelisted domain + NOTAM profile.<\/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\">It automatically highlights critical terms: CLSD, INOP, EMERGENCY.\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>No manual action is required.<\/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>On-Demand Analysis (Optional)<\/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\">User hovers over the lateral floating widget and opens the 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\">User selects text and uses the context menu \u201c\ud83d\udd0d Forced Search\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\">Therefore, the analysis will be forced onto the current page and the active search profile in the settings.<\/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>Justification for Automatic Mode<\/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>Workload Reduction<\/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 translation-block\">Aeronautical operators handle dozens of NOTAMs and METARs per shift.<\/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\">Manually analyzing each document is operationally impractical.<\/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 translation-block\">Automation enables instant <strong>identification of critical risks.<\/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\">\u26a1\u00a0<strong>Operational Safety<\/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\">Critical information (runway closed, equipment inoperative) cannot be missed.<\/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 translation-block\">Automatic highlighting ensures the operator immediately sees risk terms.<\/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 translation-block\">Supports ICAO Annex 15 principles for effective dissemination of aeronautical information.<\/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>Controlled Scope<\/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 translation-block\">Automation is restricted to whitelisted domains (official aeronautical portals).<\/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 translation-block\">Analysis does not run on banking sites, social networks, or generic pages.<\/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 translation-block\"><code>SecurityWhitelist <\/code> silently disables itself in non-approved contexts.<\/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>Technical Details<\/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 translation-block\"><pre><code><span class=\"token token\">\/\/ Automatic activation flow<\/span>\n<span class=\"token token\">1.<\/span> Content script loads on <span class=\"token token\">page<\/span> <span class=\"token token punctuation\">(<\/span>manifest content_scripts<span class=\"token token punctuation\">)<\/span>\n<span class=\"token token\">2.<\/span> security-whitelist.js checks hostname\n<span class=\"token token\">3.<\/span> If hostname \u2208 <span class=\"token token constant\">APPROVED_DOMAINS<\/span><span class=\"token token operator\">:<\/span> \na<span class=\"token token punctuation\">.<\/span> Identifies <span class=\"token token\">profile<\/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> \nb<span class=\"token token punctuation\">.<\/span> Load dictionary of critical terms \nc<span class=\"token token punctuation\">.<\/span> Starts automatic <span class=\"token token constant\">DOM<\/span> parsing \nd<span class=\"token token punctuation\">.<\/span> Applies visual highlighting\n<span class=\"token token\">4.<\/span> If hostname \u2209 <span class=\"token token constant\">APPROVED_DOMAINS<\/span><span class=\"token token operator\">:<\/span> \na<span class=\"token token punctuation\">.<\/span> Disables silently \nb<span class=\"token token punctuation\">.<\/span> No processing performed\n<\/code><\/pre><\/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>Data Accessed<\/strong><\/p>\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">\u2705 Page textual content (only on whitelisted domains)<br \/>\n\u2705 DOM structure to apply visual highlighting<br \/>\n\u274c Forms, password fields, or login data<br \/>\n\u274c Cookies or authentication tokens<br \/>\n\u274c Browsing history or background tabs<\/p>\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\"><strong>Why It Is Necessary<\/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 translation-block\">Risk identification: Detecting critical terms without manual analysis.<\/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 translation-block\">Operational efficiency: Processing multiple documents simultaneously.<\/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 translation-block\">Regulatory compliance: Meeting ICAO requirements for effective information processing.<\/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>Security Impact<\/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>Low risk<\/strong>\u00a0with multiple layers of mitigation:<\/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 translation-block\"><strong>Mitigation 1: <\/strong> Restrictive whitelist<\/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 translation-block\"><strong>Mitigation 2: <\/strong> Mandatory HTTPS validation<\/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 translation-block\"><strong> Mitigation 3:<\/strong>  Secure context verification (<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 translation-block\"><strong> Mitigation 4: <\/strong> Manifest V3 isolated content scripts (no access to the page\u2019s global <code>window<\/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 translation-block\"><strong> Mitigation 5: <\/strong>  No transmission of analyzed data to external servers<\/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\">Description<\/h2>\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2 translation-block\">Allows the extension to read and write local data using the <code>chrome.storage.local<\/code> and <code>chrome.storage.sync<\/code> APIs (where applicable).<\/p>\n<h2 class=\"mb-2 mt-4 font-display font-semimedium text-base first:mt-0\">Data Stored<\/h2>\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">Stored data includes:<\/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 translation-block\"><strong>UI preferences: <\/strong> selected language (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 translation-block\"><strong>Analysis profiles: <\/strong> which aeronautical authorities are enabled<\/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 translation-block\"><strong>Visual options: <\/strong> highlight preferences (colors, styles), light\/dark mode<\/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 translation-block\"><strong>Validation cache: <\/strong> previously verified domains to optimize future checks<\/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 translation-block\"><strong>Session state: <\/strong> extension state across reloads<\/p>\n<\/li>\n<\/ul>\n<h2 class=\"mb-2 mt-4 font-display font-semimedium text-base first:mt-0\">Data NOT Stored<\/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 Browsing history<\/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 Open tab data<\/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 Content of analyzed NOTAMs\/METARs\/TAFs<\/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 User identifiers or IP addresses<\/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 or authentication tokens<\/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 Any personally identifiable information (PII)<\/p>\n<\/li>\n<\/ul>\n<h2 class=\"mb-2 mt-4 font-display font-semimedium text-base first:mt-0\">Data Location<\/h2>\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2 translation-block\">All data is stored locally on the user's device. No data is transmitted to NOTAMSpot servers during storage. The data remains in the local browser profile.<\/p>\n<h2 class=\"mb-2 mt-4 font-display font-semimedium text-base first:mt-0\">Technical Details<\/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 translation-block\"><pre><code><span class=\"token token\">\/\/ Local storage example<\/span>\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> \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> \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> \n<span class=\"token token string-property property\">'highlightColor'<\/span><span class=\"token token operator\">:<\/span> <span class=\"token token\">'#FFD700'<\/span>\n<span class=\"token token punctuation\">}<\/span><span class=\"token token punctuation\">)<\/span><span class=\"token token punctuation\">;<\/span>\n\n<span class=\"token token\">\/\/ Data does not leave the device<\/span>\n<span class=\"token token\">\/\/ No calls to servers external<\/span>\n<\/code><\/pre><\/div>\n<\/div>\n<\/div>\n<h2 class=\"mb-2 mt-4 font-display font-semimedium text-base first:mt-0\">Why It Is Necessary<\/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 translation-block\"><strong>Persistence:<\/strong> Keep user preferences across sessions.<\/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 translation-block\"><strong>Offline:<\/strong> The extension works without an internet connection (local checks continue).<\/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 translation-block\"><strong>Efficiency:<\/strong> Decision caching reduces reprocessing.<\/p>\n<\/li>\n<\/ol>\n<h2 class=\"mb-2 mt-4 font-display font-semimedium text-base first:mt-0\">Security Impact<\/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>Low risk.<\/strong>\u00a0The data is non-sensitive (UI preferences) and remains on the device. Users can clear the data by accessing\u00a0<code>chrome:\/\/settings \u2192 Privacy \u2192 Clear browsing data<\/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\">Description<\/h2>\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">It allows the extension to access information about open tabs, including URLs, titles, and statuses.<\/p>\n<h2 class=\"mb-2 mt-4 font-display font-semimedium text-base first:mt-0\">Information Accessed<\/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 translation-block\"><pre><code><span class=\"token token punctuation\">{<\/span> \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> \n<span class=\"token token string-property property\">\"title\"<\/span><span class=\"token token operator\">:<\/span> <span class=\"token token\">\"AISWEB - Aeronautical Information Portal\"<\/span><span class=\"token token punctuation\">,<\/span> \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> \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> \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> \n<span class=\"token token string-property property\">\"id\"<\/span><span class=\"token token operator\">:<\/span> <span class=\"token token\">123456<\/span>\n<span class=\"token token punctuation\">}<\/span>\n<\/code><\/pre><\/div>\n<\/div>\n<\/div>\n<h2 class=\"mb-2 mt-4 font-display font-semimedium text-base first:mt-0\">Specific Usage<\/h2>\n<h2 class=\"mb-2 mt-4 font-display font-semimedium text-base first:mt-0\">1. Domain check<\/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 translation-block\"><pre><code><span class=\"token token\">\/\/ SecurityWhitelist checks the URL to decide whether to activate<\/span>\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>\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>\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>\n<\/code><\/pre><\/div>\n<\/div>\n<\/div>\n<h2 class=\"mb-2 mt-4 font-display font-semimedium text-base first:mt-0\">2. Security checks<\/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 translation-block\"><pre><code><span class=\"token token\">\/\/ HTTPS_VALIDATION<\/span>\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>\n\n<span class=\"token token\">\/\/ EXACT_DOMAIN_MATCH<\/span>\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>\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>\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>\n\n<span class=\"token token\">\/\/ SUBDOMAIN_AUTHORIZATION<\/span>\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>\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>\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>\n<\/code><\/pre><\/div>\n<\/div>\n<\/div>\n<h2 class=\"mb-2 mt-4 font-display font-semimedium text-base first:mt-0\">3. Homograph detection<\/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\">\/\/ with hyphen (fake)<\/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\">\/\/ injected domain<\/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\">\/\/ similar Unicode character<\/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\">Data NOT Accessed<\/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 Page content (access via\u00a0<code>scripting<\/code>, no\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 Past browsing history<\/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 or sessions<\/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 Information from other windows\/tabs without consent<\/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\">Why It Is Necessary<\/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 translation-block\"><strong>Identify <\/strong> if the current page is an official aviation domain.<\/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 translation-block\">Validate URLs against phishing and homograph attacks.<\/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 translation-block\">Run checks locally without external requests.<\/p>\n<\/li>\n<\/ol>\n<h2 class=\"mb-2 mt-4 font-display font-semimedium text-base first:mt-0\">Security Impact<\/h2>\n<blockquote><p>Security Impact: Requires high trust. NOTAMSpot processes data\u00a0locally in your browser only. No flight plans, NOTAMs, or browsing history are transmitted to external servers.<span style=\"color: #0000ff;\"><a style=\"color: #0000ff;\" href=\"\/en_us\/privacy-policy\/\" target=\"_blank\" rel=\"noopener\">Privacy Policy<\/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>Low risk.<\/strong>\u00a0The permission only accesses URL metadata. It does not allow reading page content. Validations increase security against 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>Description<\/strong><\/p>\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2 translation-block\">Allows the extension to automatically download embedded text documents to the system's default Downloads folder without showing a \"Save As\" dialog (via <code>saveAs: false<\/code>).<\/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\">Available File Types<\/h2>\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2 translation-block\">The extension provides exclusively static legal and regulatory files, organized by language (pt-BR, en-US, es-ES, fr-FR) and by context (general legal core).<\/p>\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\"><strong>Main categories:<\/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 translation-block\"><strong>Core \/ General (per locale)<\/strong> \u2013 directory: <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- Aviation legal notice<\/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 Extension license terms.<\/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 Legal guidance and usage instructions.<\/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 translation-block\"><code>README_LEGAL.txt<\/code> \u2013 Legal guidelines and usage instructions.<\/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\"><strong>Key characteristics:<\/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 translation-block\">100% of files are bundled inside the extension.<\/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\">No personalization with user data.<\/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\">All files are legal\/regulatory reference texts and aviation compliance documents.<\/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\">Automated Download Flow<\/h2>\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2 translation-block\">Downloads are triggered only after an explicit user action in the extension UI (for example, clicking \u201cDownload Legal Notice\u201d or \u201cExport Compliance Documents\u201d).<\/p>\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">The extension starts the download using the <code>chrome.downloads<\/code> API.<\/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 Starting 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\/...\/FILE.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\">\/\/ Simple file name<\/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\">\/\/ No dialogue; goes directly to the downloads folder<\/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\">\/\/ Prevents overwriting existing files<\/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\">Observed behavior<\/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 translation-block\">The file is saved directly to the system\u2019s default Downloads folder (for example, <code>~\/Downloads<\/code> on macOS), with no subfolders created.<\/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 translation-block\">If the filename already exists, the browser automatically generates a unique name (<code>conflictAction: \"uniquify\"<\/code>).<\/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\">Data sent<\/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  No user data is sent to any server.<\/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  No personal information is included in the downloaded files.<\/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 The download is purely\u00a0<strong>local<\/strong>: packaged resource \u2192 user's Downloads folder.<\/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\">No external HTTP requests are performed as part of downloading these files.<\/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\">Why It Is Necessary<\/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 translation-block\"><strong>Transparency: <\/strong> lets users and compliance teams download and archive locally:<\/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\">Aviation legal notices.<\/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\">Terms of use and license.<\/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 translation-block\"><strong>Offline operation: <\/strong> documents can be accessed without an internet connection from the Downloads folder.<\/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\">Security Impact<\/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>Near-zero risk:<\/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\">Downloaded content is static, non-sensitive, and not tied to user data.<\/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\">No data is transmitted to third parties.<\/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\">The action is always user-initiated (explicit UI clicks), not silent background behavior.<\/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\">Security Summary<\/h2>\n<h2 class=\"mb-2 mt-4 font-display font-semimedium text-base first:mt-0\">Risk matrix by permission<\/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\">Permission<\/th>\n<th class=\"border-subtler p-sm break-normal border-b border-r text-left align-top\">Risk<\/th>\n<th class=\"border-subtler p-sm break-normal border-b border-r text-left align-top\">Mitigation<\/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  Low<\/td>\n<td class=\"px-sm border-subtler min-w-[48px] break-normal border-b border-r\">Activation via explicit gesture<\/td>\n<td class=\"px-sm border-subtler min-w-[48px] break-normal border-b border-r\">\u2713 Accepted<\/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  Low<\/td>\n<td class=\"px-sm border-subtler min-w-[48px] break-normal border-b border-r\">Non-sensitive local data<\/td>\n<td class=\"px-sm border-subtler min-w-[48px] break-normal border-b border-r\">\u2713 Accepted<\/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  Low<\/td>\n<td class=\"px-sm border-subtler min-w-[48px] break-normal border-b border-r\">Low URL metadata only<\/td>\n<td class=\"px-sm border-subtler min-w-[48px] break-normal border-b border-r\">\u2713 Accepted<\/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 None<\/td>\n<td class=\"px-sm border-subtler min-w-[48px] break-normal border-b border-r\">Public local files<\/td>\n<td class=\"px-sm border-subtler min-w-[48px] break-normal border-b border-r\">\u2713 Accepted<\/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\">Applied Principles<\/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>Principle of Least Privilege<\/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\">Each requested permission has a clear justification.<\/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\">No permission is used for secondary purposes.<\/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>Total Transparency<\/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\">Users know exactly what each permission does.<\/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\">Complete documentation is available.<\/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>User Control<\/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\">Analysis runs only on approved domains.<\/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\">Users can disable the extension at any time.<\/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\">Local data can be cleared using the browser.<\/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>Layered Security<\/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\">Structure validation<\/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\">Content script sandboxing<\/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\">Domain\/HTTPS validations<\/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>Regulatory Compliance<\/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 (European Union)<\/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\">Typical Use Cases<\/h2>\n<h2 class=\"mb-2 mt-4 font-display font-semimedium text-base first:mt-0\">Use case 1: Operator reviews NOTAM\/METAR on 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 translation-block\">The operator opens <a href=\"https:\/\/aisweb.decea.mil.br\/\">https:\/\/aisweb.decea.mil.br<\/a> (official AISWEB portal)<\/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\">NOTAMSpot automatically detects that the domain is on the aeronautical whitelist (tabs + internal logic).<\/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\">The extension verifies HTTPS and a secure context, then initializes Resource Manager (scripting + storage).<\/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 translation-block\"><code>content-detector.js<\/code> checks whether the page contains NOTAM, weather data, or both (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\">The system runs automated analysis and highlights critical terms directly in the DOM (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\">The top bar and the floating side panel show risk counts and domain status (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\">The operator can use REFRESH \/ CLEAR \/ CONFIG to adjust analysis and display (scripting + storage).<\/p>\n<\/li>\n<\/ol>\n<h2 class=\"mb-2 mt-4 font-display font-semimedium text-base first:mt-0\">Use case 2: Operator forces a re-scan on a dynamic page<\/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\">The operator stays on a dynamic AISWEB\/REDEMET page where NOTAM\/METAR content updates in real time<\/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 translation-block\">After new content loads, the operator clicks REFRESH (top bar) or Force Scan (floating panel)<\/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 translation-block\"><code>content-detector.js<\/code> re-scans the DOM and reapplies detection\/highlighting rules (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\">Newly loaded critical terms are highlighted without reloading the page.<\/p>\n<\/li>\n<\/ol>\n<h2 class=\"mb-2 mt-4 font-display font-semimedium text-base first:mt-0\">Use case 3: Operator downloads legal documentation<\/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\">The operator opens the extension popup or settings UI<\/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\">Select an option such as \u201cDownload Legal Notice\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\">The extension selects the correct file based on the current language (pt-BR, en-US, es-ES, fr-FR) and context (core\/aviation).<\/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 translation-block\">An automatic download starts via <code>chrome.downloads.download()<\/code>, saving the text file directly to the default Downloads folder without a \u201cSave As\u201d dialog (downloads).<\/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\">No external connection is made; the content comes only from files packaged inside the extension.<\/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\">Store Policy Compliance<\/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 required: \u2713 Implemented.<\/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\">Permissions justified: \u2713 Covered in this document.<\/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\">No deception: \u2713 Features and purpose are clearly described.<\/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\">No undisclosed data collection: \u2713 Uses local storage only, no remote user tracking.<\/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 reviewed: \u2713 Limited, security\u2011oriented behavior.<\/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\">No undocumented remote communication: \u2713 Connects only to documented aviation domains if needed.<\/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\">No hidden telemetry: \u2713 No analytics; only local storage is used.<\/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 supported: \u2713 Yes.<\/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\">Transparent permissions: \u2713 Same permission model and justification as Chrome, documented here.<\/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\">Secure by default: \u2713 CSP, sandboxed content scripts, and strict whitelists are enforced.<\/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 for Reviewers (Updated)<\/h2>\n<h3 class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\"><strong><br \/>\nWhy does the extension inject content scripts on multiple domains?<\/strong><\/h3>\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2 translation-block\">A: NOTAMSpot uses <code>content-detector.js<\/code> as a central orchestrator. The content script is loaded on normal browsing pages, but the internal security logic only activates full analysis on whitelisted aeronautical domains (AISWEB, REDEMET, Aviation Weather, etc.). On other domains, the script only evaluates the hostname for domain status purposes (lateral floating) and disables any content analysis. This is necessary to handle complex aeronautical portal architectures (iframes, dynamic subdomains) without relying on extremely specific patterns that would break with infrastructure changes.<\/p>\n<h3 class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\"><strong><br \/>\nIs user data sent to servers?<\/strong><\/h3>\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2 translation-block\">A: No. The extension uses `<code>chrome.storage.local<\/code>` and, when applicable, `<code>chrome.storage.sync<\/code>` only for `<strong>local preferences<\/strong>` (language, theme, active profiles, ON\/OFF switch). No permissions are used to send NOTAM\/METAR\/TAF content, browsing history, or any personal data to NOTAMSpot or third-party servers.<\/p>\n<h3 class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\"><strong><br \/>\nHow does the extension protect against phishing and fake domains?<\/strong><\/h3>\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2 translation-block\">A: The <code>tabs<\/code> permission reads only URL metadata (protocol, hostname) to apply:<\/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\">HTTPS and secure-context validation.<\/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\">Exact domain matching against the aviation whitelist.<\/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\">Rules for detecting homographs and domains visually similar to official portals.<\/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 \/>\nWhat happens if a site is not on the whitelist?<\/strong><\/h3>\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">A: For non-whitelisted domains:<\/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\">The content analyzer is silently disabled.<\/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\">No automated DOM scanning for NOTAM\/METAR\/TAF is performed.<\/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\">No page data is collected or stored.<\/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\">Optionally, the floating side panel may display only a generic status (e.g., \"Non-aviation domain\") without inspecting content.<\/p>\n<\/li>\n<\/ul>\n<h3><strong><br \/>\nCan I review the security code?<\/strong><\/h3>\n<p class=\"translation-block\">A: Yes. All extension code (including <code>content-detector<\/code>, analyzers, and domain validations) is delivered as readable JavaScript as part of the package submitted to the store. Reviewers can directly inspect the packaged source during the review process. If additional context (diagrams, extended technical documentation) is needed, we can provide it on request via <a href=\"mailto:support@notamspot.com\">support@notamspot.com<\/a>.<\/p>\n<p>&nbsp;<\/p>\n<h3><strong>Is there telemetry or analytics?<\/strong><\/h3>\n<p class=\"translation-block\">A: No. The extension does not implement telemetry and does not use Google Analytics or tracking services.<\/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\">No usage events (clicks, visited pages, analyzed terms) are sent to servers.<\/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\">All analysis decisions happen locally in the browser.<\/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 translation-block\">The only use of <code>downloads<\/code> is to export static legal documents packaged inside the extension, triggered by explicit user action.<\/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\">Extension Test Links<\/h2>\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">To validate NOTAMSpot's functionality in real-world environments, reviewers can click directly on the links below after installing the extension. The analysis will start automatically.<\/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>Direct link:<\/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 \/>\nTest for detecting terms related to NOTES in the 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>Direct link:<\/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 \/>\nTests METAR\/TAF analysis in international format, HTTPS validation, and highlighting of critical weather conditions.<\/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\">Official website: <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\">For testing purposes, use the following sequence of ICAO codes:<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 translation-block\">This link allows you to validate the search and analysis of NOTAMs issued by the FAA; after the page loads, enter the ICAO codes in the appropriate field and click the \u201cREFRESH\u201d button at the top so that the NOTAMs are displayed and analyzed by the extension.<\/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>Direct link:<\/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 \/>\nTests for detecting Brazilian NOTAMs.<\/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\">Reviewer contact<\/h2>\n<p class=\"my-2 [&amp;+p]:mt-4 [&amp;_strong:has(+br)]:inline-block [&amp;_strong:has(+br)]:pb-2\">For technical questions or to request access to the 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>Document<\/strong> Extension Permission Justification<br \/>\n<strong>Date<\/strong> January 2, 2026<br \/>\n<strong>Responsible:<\/strong> NOTAMSpot Team<br \/>\n<strong>Status:<\/strong>\u00a0Ready for Submission to 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\/en_us\/wp-json\/wp\/v2\/pages\/2998","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/notamspot.com\/en_us\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/notamspot.com\/en_us\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/notamspot.com\/en_us\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/notamspot.com\/en_us\/wp-json\/wp\/v2\/comments?post=2998"}],"version-history":[{"count":33,"href":"https:\/\/notamspot.com\/en_us\/wp-json\/wp\/v2\/pages\/2998\/revisions"}],"predecessor-version":[{"id":3959,"href":"https:\/\/notamspot.com\/en_us\/wp-json\/wp\/v2\/pages\/2998\/revisions\/3959"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/notamspot.com\/en_us\/wp-json\/wp\/v2\/media\/3696"}],"wp:attachment":[{"href":"https:\/\/notamspot.com\/en_us\/wp-json\/wp\/v2\/media?parent=2998"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}