!function(){"use strict";var e;!function(e){e[e.Debug=0]="Debug",e[e.Info=1]="Info",e[e.Warning=2]="Warning",e[e.Error=3]="Error"}(e||(e={}));class t{constructor(e,t=null){this.isDev=e,this.filter=t,this.timersMap=new Map}debug(t,...r){this.isDev&&this.write(e.Debug,t,...r)}info(t,...r){this.write(e.Info,t,...r)}warning(t,...r){this.write(e.Warning,t,...r)}error(t,...r){this.write(e.Error,t,...r)}write(t,r,...i){if(null==this.filter||!this.filter(t))switch(t){case e.Debug:case e.Info:console.log(r,...i);break;case e.Warning:console.warn(r,...i);break;case e.Error:console.error(r,...i)}}measure(e,t,r,i,n){const o=`[${r}]: ${i}`,a=performance.measure(o,{start:e,detail:{devtools:{dataType:"track-entry",track:r,trackGroup:t,properties:n}}});return this.info(`${o} took ${a.duration}`,n),a}mark(e){const t=performance.mark(e,{detail:{devtools:{dataType:"marker"}}});return this.info(t.name,(new Date).toISOString()),t}}var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])},r(e,t)};function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function i(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(i.prototype=t.prototype,new i)}Object.create;function n(e){var t="function"==typeof Symbol&&Symbol.iterator,r=t&&e[t],i=0;if(r)return r.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&i>=e.length&&(e=void 0),{value:e&&e[i++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function o(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var i,n,o=r.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(i=o.next()).done;)a.push(i.value)}catch(e){n={error:e}}finally{try{i&&!i.done&&(r=o.return)&&r.call(o)}finally{if(n)throw n.error}}return a}function a(e,t,r){if(r||2===arguments.length)for(var i,n=0,o=t.length;n{const i=(new Date).getTime().toString()+"_"+Math.floor(Math.random()*Number.MAX_SAFE_INTEGER);browser.runtime.sendNativeMessage("com.bitwarden.desktop",{id:i,command:e,data:t,responseData:null},e=>{r(e)})}):Promise.resolve(null)}}var Q=function(e,t,r,i){return new(r||(r=Promise))(function(n,o){function a(e){try{c(i.next(e))}catch(e){o(e)}}function s(e){try{c(i.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?n(e.value):(t=e.value,t instanceof r?t:new r(function(e){e(t)})).then(a,s)}c((i=i.apply(e,t||[])).next())})};class Y{static copy(e,t){return Q(this,void 0,void 0,function*(){if(Y.isClipboardApiSupported(e,"writeText"))try{yield e.navigator.clipboard.writeText(t)}catch(r){Y.consoleLogService.debug(`Error copying to clipboard using the clipboard API, attempting legacy method: ${r}`),this.useLegacyCopyMethod(e,t)}else this.useLegacyCopyMethod(e,t)})}static read(e){return Q(this,void 0,void 0,function*(){if(!Y.isClipboardApiSupported(e,"readText"))return this.useLegacyReadMethod(e);try{return yield e.navigator.clipboard.readText()}catch(t){return Y.consoleLogService.debug(`Error reading from clipboard using the clipboard API, attempting legacy method: ${t}`),this.useLegacyReadMethod(e)}})}static useLegacyCopyMethod(e,t){if(!Y.isLegacyClipboardMethodSupported(e,"copy"))return void Y.consoleLogService.warning("Legacy copy method not supported");const r=e.document.createElement("textarea");r.textContent=t||" ",r.style.position="fixed",e.document.body.appendChild(r),r.select();try{e.document.execCommand("copy")}catch(e){Y.consoleLogService.warning(`Error writing to clipboard: ${e}`)}finally{e.document.body.removeChild(r)}}static useLegacyReadMethod(e){if(!Y.isLegacyClipboardMethodSupported(e,"paste"))return Y.consoleLogService.warning("Legacy paste method not supported"),"";const t=e.document.createElement("textarea");t.style.position="fixed",e.document.body.appendChild(t),t.focus();try{return e.document.execCommand("paste")?t.value:""}catch(e){Y.consoleLogService.warning(`Error reading from clipboard: ${e}`)}finally{e.document.body.removeChild(t)}return""}static isClipboardApiSupported(e,t){return"clipboard"in e.navigator&&t in e.navigator.clipboard}static isLegacyClipboardMethodSupported(e,t){return"queryCommandSupported"in e.document&&e.document.queryCommandSupported(t)}}Y.consoleLogService=new t(!1);var X=Y,J=function(e,t,r,i){return new(r||(r=Promise))(function(n,o){function a(e){try{c(i.next(e))}catch(e){o(e)}}function s(e){try{c(i.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?n(e.value):(t=e.value,t instanceof r?t:new r(function(e){e(t)})).then(a,s)}c((i=i.apply(e,t||[])).next())})};class Z{constructor(e,t,r){this.clipboardWriteCallback=e,this.globalContext=t,this.offscreenDocumentService=r}static getDevice(e){return this.deviceCache||(Z.isFirefox()?this.deviceCache=N.FirefoxExtension:Z.isOpera(e)?this.deviceCache=N.OperaExtension:Z.isEdge()?this.deviceCache=N.EdgeExtension:Z.isVivaldi()?this.deviceCache=N.VivaldiExtension:Z.isChrome(e)?this.deviceCache=N.ChromeExtension:Z.isSafari(e)&&(this.deviceCache=N.SafariExtension)),this.deviceCache}getDevice(){return Z.getDevice(this.globalContext)}getDeviceString(){return N[this.getDevice()].toLowerCase().replace("extension","")}getClientType(){return B.Browser}static isFirefox(){return-1!==navigator.userAgent.indexOf(" Firefox/")||-1!==navigator.userAgent.indexOf(" Gecko/")}isFirefox(){return this.getDevice()===N.FirefoxExtension}static isChrome(e){return e.chrome&&-1!==navigator.userAgent.indexOf(" Chrome/")}isChrome(){return this.getDevice()===N.ChromeExtension}static isEdge(){return-1!==navigator.userAgent.indexOf(" Edg/")}isEdge(){return this.getDevice()===N.EdgeExtension}static isOpera(e){var t;return!!(null===(t=e.opr)||void 0===t?void 0:t.addons)||!!e.opera||navigator.userAgent.indexOf(" OPR/")>=0}isOpera(){return this.getDevice()===N.OperaExtension}static isVivaldi(){return-1!==navigator.userAgent.indexOf(" Vivaldi/")}isVivaldi(){return this.getDevice()===N.VivaldiExtension}static isSafari(e){return!Z.isOpera(e)&&-1!==navigator.userAgent.indexOf(" Safari/")}static safariVersion(){var e;return null===(e=navigator.userAgent.match("Version/([0-9.]*)"))||void 0===e?void 0:e[1]}isSafari(){return this.getDevice()===N.SafariExtension}isChromium(){return this.isChrome()||this.isEdge()||this.isOpera()||this.isVivaldi()}static shouldApplySafariHeightFix(e){var t;if(Z.getDevice(e)!==N.SafariExtension)return!1;const r=Z.safariVersion(),i=null===(t=null==r?void 0:r.split("."))||void 0===t?void 0:t.map(e=>Number(e));return(null==i?void 0:i[0])<16||16===(null==i?void 0:i[0])&&0===(null==i?void 0:i[1])}isIE(){return!1}isMacAppStore(){return!1}isPopupOpen(){return J(this,void 0,void 0,function*(){return this.isSafari()?ne.isPopupOpen():new Promise((e,t)=>{chrome.runtime.sendMessage({command:"checkVaultPopupHeartbeat"},r=>{if(null!=chrome.runtime.lastError)return"Could not establish connection. Receiving end does not exist."===chrome.runtime.lastError.message?void e(!1):void t(chrome.runtime.lastError);e(Boolean(r))})})})}lockTimeout(){return null}launchUri(e,t){ne.createNewTab(e,t&&!0===t.extensionPage)}getApplicationVersion(){var e;const t=chrome.runtime.getManifest();return Promise.resolve(null!==(e=t.version_name)&&void 0!==e?e:t.version)}getApplicationVersionNumber(){const e=chrome.runtime.getManifest();return Promise.resolve(e.version.split(RegExp("[+|-]"))[0].trim())}supportsWebAuthn(e){return"undefined"!=typeof PublicKeyCredential}supportsDuo(){return!0}supportsAutofill(){return!0}supportsFileDownloads(){return!1}isDev(){return!1}isSelfHost(){return!1}copyToClipboard(e,t){const r=(null==t?void 0:t.window)||this.globalContext,i=Boolean(null==t?void 0:t.clearing),n=(null==t?void 0:t.clearMs)||null,o=()=>{i||null==this.clipboardWriteCallback||this.clipboardWriteCallback(e,n)};this.isSafari()?K.sendMessageToApp("copyToClipboard",e).then(o):(this.isChrome()&&""===e&&(e="\0"),ne.isManifestVersion(3)&&this.offscreenDocumentService.offscreenApiSupported()?this.triggerOffscreenCopyToClipboard(e).then(o):X.copy(r,e).then(o))}readFromClipboard(e){return J(this,void 0,void 0,function*(){const t=(null==e?void 0:e.window)||this.globalContext;return this.isSafari()?yield K.sendMessageToApp("readFromClipboard"):ne.isManifestVersion(3)&&this.offscreenDocumentService.offscreenApiSupported()?yield this.triggerOffscreenReadFromClipboard():yield X.read(t)})}supportsSecureStorage(){return!1}getAutofillKeyboardShortcut(){return J(this,void 0,void 0,function*(){let e;return this.isSafari()?e="Cmd+Shift+L":this.isFirefox()?(e=(yield browser.commands.getAll()).find(e=>e.name===V).shortcut,"mac"===(yield browser.runtime.getPlatformInfo()).os&&"Ctrl+Shift+L"===e&&(e="Cmd+Shift+L")):yield new Promise(t=>chrome.commands.getAll(r=>t(e=r.find(e=>e.name===V).shortcut))),e})}packageType(){return J(this,void 0,void 0,function*(){switch(this.getDevice()){case N.ChromeExtension:return"Chrome Extension";case N.FirefoxExtension:return"Firefox Extension";case N.OperaExtension:return"Opera Extension";case N.EdgeExtension:return"Edge Extension";case N.VivaldiExtension:return"Vivaldi Extension";case N.SafariExtension:return"Safari Extension";default:return"Unknown Browser Extension"}})}triggerOffscreenCopyToClipboard(e){return J(this,void 0,void 0,function*(){yield this.offscreenDocumentService.withDocument([chrome.offscreen.Reason.CLIPBOARD],"Write text to the clipboard.",()=>J(this,void 0,void 0,function*(){yield ne.sendMessageWithResponse("offscreenCopyToClipboard",{text:e})}))})}triggerOffscreenReadFromClipboard(){return J(this,void 0,void 0,function*(){const e=yield this.offscreenDocumentService.withDocument([chrome.offscreen.Reason.CLIPBOARD],"Read text from the clipboard.",()=>J(this,void 0,void 0,function*(){return yield ne.sendMessageWithResponse("offscreenReadFromClipboard")}));return"string"==typeof e?e:""})}}Z.deviceCache=null;var ee=function(e,t,r,i){return new(r||(r=Promise))(function(n,o){function a(e){try{c(i.next(e))}catch(e){o(e)}}function s(e){try{c(i.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?n(e.value):(t=e.value,t instanceof r?t:new r(function(e){e(t)})).then(a,s)}c((i=i.apply(e,t||[])).next())})};let te;function re(e,r){return ee(this,void 0,void 0,function*(){return te||(te=function(){var e,r;const i=new t(!1),n=globalThis.chrome&&d(globalThis.chrome),o=/^(https?|wss?|file|ftp|\*):\/\/(\*|\*\.[^*/]+|[^*/]+)\/.*$|^file:\/\/\/.*$|^resource:\/\/(\*|\*\.[^*/]+|[^*/]+)\/.*$|^about:/,a=null===(e=globalThis.navigator)||void 0===e?void 0:e.userAgent.includes("Firefox/"),s=Boolean(null===(r=globalThis.chrome)||void 0===r?void 0:r.scripting),c="object"==typeof chrome&&"webNavigation"in chrome;function d(e){return new Proxy(e,{get(e,t){if(e[t])return"function"!=typeof e[t]?d(e[t]):(...r)=>new Promise((i,n)=>{e[t](...r,e=>{chrome.runtime.lastError?n(new Error(chrome.runtime.lastError.message)):i(e)})})}})}function l(e){if(!u(e))throw new Error(`${e} is an invalid pattern, it must match ${String(o)}`)}function u(e){return""===e||o.test(e)}function p(e){l(e);let[,t,r="",i]=e.split(/(^[^:]+:[/][/])([^/]+)?/);return t=t.replace("*",a?"(https?|wss?)":"https?").replaceAll(/[/]/g,"[/]"),"*"===r?r="[^/]+":r&&(r=r.replace(/^[*][.]/,"([^/]+.)*").replaceAll(/[.]/g,"[.]").replace(/[*]$/,"[^.]+")),i=i.replaceAll(/[/]/g,"[/]").replaceAll(/[.]/g,"[.]").replaceAll(/[*]/g,".*"),"^"+t+r+"("+i+")?$"}function f(...e){return 0===e.length?/$./:e.includes("")?/^(https?|file|ftp):[/]+/:e.includes("*://*/*")?a?/^(https?|wss?):[/][/][^/]+([/].*)?$/:/^https?:[/][/][^/]+([/].*)?$/:new RegExp(e.map(e=>p(e)).join("|"))}function h(e){return"object"==typeof e?Object.assign(Object.assign({},e),{allFrames:!1}):{tabId:e,frameId:void 0,allFrames:!0}}function g(e){return Array.isArray(e)?e:[e]}function m(e,t,r){return void 0===t?{tabId:e,frameIds:void 0,allFrames:r}:{tabId:e,frameIds:[t],allFrames:void 0}}function v(e){return ee(this,arguments,void 0,function*({tabId:e,frameId:t,files:r,allFrames:i,matchAboutBlank:o,runAt:a},{ignoreTargetErrors:c}={}){const d=Promise.all(r.map(r=>ee(this,void 0,void 0,function*(){return"string"==typeof r&&(r={file:r}),s?"file"in r?chrome.scripting.insertCSS({target:m(e,t,i),files:[r.file]}):chrome.scripting.insertCSS({target:m(e,t,i),css:r.code}):n.tabs.insertCSS(e,Object.assign(Object.assign({},r),{matchAboutBlank:o,allFrames:i,frameId:t,runAt:null!=a?a:"document_start"}))})));c?yield _(d):yield d})}function y(e){if(e.some(e=>"code"in e))throw new Error("chrome.scripting does not support injecting strings of `code`")}function b(e){return ee(this,arguments,void 0,function*({tabId:e,frameId:t,files:r,allFrames:i,matchAboutBlank:o,runAt:a},{ignoreTargetErrors:c}={}){const d=r.map(e=>"string"==typeof e?{file:e}:e);if(s){y(d);const r=chrome.scripting.executeScript({target:m(e,t,i),files:d.map(({file:e})=>e)});return void(c?yield _(r):yield r)}const l=[];for(const r of d)"code"in r&&(yield l.at(-1)),l.push(n.tabs.executeScript(e,Object.assign(Object.assign({},r),{matchAboutBlank:o,allFrames:i,frameId:t,runAt:a})));c?yield _(Promise.all(l)):yield Promise.all(l)})}function C(e,t){return ee(this,arguments,void 0,function*(e,t,r={}){const i=g(e);yield Promise.all(i.map(e=>ee(this,void 0,void 0,function*(){return w(h(e),t,r)})))})}function w(e,t){return ee(this,arguments,void 0,function*({frameId:e,tabId:t,allFrames:r},i,n={}){const o=g(i).flatMap(i=>{var o,a,s,c,d,l;return[v({tabId:t,frameId:e,allFrames:r,files:null!==(o=i.css)&&void 0!==o?o:[],matchAboutBlank:null!==(a=i.matchAboutBlank)&&void 0!==a?a:i.match_about_blank,runAt:null!==(s=i.runAt)&&void 0!==s?s:i.run_at},n),b({tabId:t,frameId:e,allFrames:r,files:null!==(c=i.js)&&void 0!==c?c:[],matchAboutBlank:null!==(d=i.matchAboutBlank)&&void 0!==d?d:i.match_about_blank,runAt:null!==(l=i.runAt)&&void 0!==l?l:i.run_at},n)]});yield Promise.all(o)})}function _(e){return ee(this,void 0,void 0,function*(){try{yield e}catch(e){if(!/^No frame with id \d+ in tab \d+.$|^No tab with id: \d+.$|^The tab was closed.$|^The frame was removed.$/.test(null==e?void 0:e.message))throw e}})}function S(e){return ee(this,void 0,void 0,function*(){return n.permissions.contains({origins:[new URL(e).origin+"/*"]})})}return(e,t)=>ee(this,void 0,void 0,function*(){const{js:r=[],css:o=[],matchAboutBlank:a,matches:s=[],excludeMatches:d,runAt:l}=e;let{allFrames:u}=e;if(c?u=!1:u&&i.warning("`allFrames: true` requires the `webNavigation` permission to work correctly: https://github.com/fregante/content-scripts-register-polyfill#permissions"),0===s.length)throw new Error("Type error for parameter contentScriptOptions (Error processing matches: Array requires at least 1 items; you have 0) for contentScripts.register.");yield Promise.all(s.map(e=>ee(this,void 0,void 0,function*(){if(!(yield n.permissions.contains({origins:[e]})))throw new Error(`Permission denied to register a content script for ${e}`)})));const p=f(...s),h=f(...null!=d?d:[]),g=(e,t,...i)=>ee(this,[e,t,...i],void 0,function*(e,t,i=0){p.test(e)&&!h.test(e)&&(yield S(e))&&(yield C({tabId:t,frameId:i},{css:o,js:r,matchAboutBlank:a,runAt:l},{ignoreTargetErrors:!0}))}),m=(e,t,r)=>ee(this,[e,t,r],void 0,function*(e,{status:t},{url:r}){"loading"===t&&r&&g(r,e)}),v=e=>ee(this,[e],void 0,function*({tabId:e,frameId:t,url:r}){g(r,e,t)});c?ne.addListener(chrome.webNavigation.onCommitted,v):ne.addListener(chrome.tabs.onUpdated,m);const y={unregister(){return ee(this,void 0,void 0,function*(){c?chrome.webNavigation.onCommitted.removeListener(v):chrome.tabs.onUpdated.removeListener(m)})}};return"function"==typeof t&&t(y),y})}()),te(e,r)})}var ie=function(e,t,r,i){return new(r||(r=Promise))(function(n,o){function a(e){try{c(i.next(e))}catch(e){o(e)}}function s(e){try{c(i.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?n(e.value):(t=e.value,t instanceof r?t:new r(function(e){e(t)})).then(a,s)}c((i=i.apply(e,t||[])).next())})};class ne{static get manifestVersion(){return chrome.runtime.getManifest().manifest_version}static isManifestVersion(e){return ne.manifestVersion===e}static senderIsInternal(e,t){var r,i;if(!(null==e?void 0:e.origin))return null==t||t.warning("[BrowserApi] Message sender has no origin"),!1;const n="undefined"!=typeof chrome&&(null===(r=chrome.runtime)||void 0===r?void 0:r.getURL(""))||"undefined"!=typeof browser&&(null===(i=browser.runtime)||void 0===i?void 0:i.getURL(""))||"";if(!n)return null==t||t.warning("[BrowserApi] Unable to determine extension URL"),!1;const o=e.origin.replace(/\/$/,"").toLowerCase(),a=n.replace(/\/$/,"").toLowerCase();return o.startsWith(a)?"frameId"in e&&0!==e.frameId?(null==t||t.warning("[BrowserApi] Message sender is not from the top-level frame"),!1):(null==t||t.info("[BrowserApi] Message sender appears to be internal"),!0):(null==t||t.warning(`[BrowserApi] Message sender origin (${o}) does not match extension URL (${a})`),!1)}static getWindows(){return ie(this,void 0,void 0,function*(){return new Promise(e=>chrome.windows.getAll({populate:!0},e))})}static getWindow(e){return ie(this,void 0,void 0,function*(){return e?yield ne.getWindowById(e):ne.getCurrentWindow()})}static getCurrentWindow(){return ie(this,void 0,void 0,function*(){return new Promise(e=>chrome.windows.getCurrent({populate:!0},e))})}static getWindowById(e){return ie(this,void 0,void 0,function*(){return new Promise(t=>chrome.windows.get(e,{populate:!0},t))})}static createWindow(e){return ie(this,void 0,void 0,function*(){return new Promise(t=>{chrome.windows.create(e,e=>ie(this,void 0,void 0,function*(){if(!ne.isSafariApi)return t(e);const r=yield new Promise(e=>{chrome.windows.getAll({windowTypes:["normal"]},t=>e(t))}),i=r.find(t=>t.id!==e.id);if(null==i||!i.id)return t(e);chrome.windows.update(i.id,{focused:!0},()=>{chrome.windows.update(e.id,{focused:!0},()=>{t(e)})})}))})})}static removeWindow(e){return ie(this,void 0,void 0,function*(){return new Promise(t=>chrome.windows.remove(e,()=>t()))})}static updateWindowProperties(e,t){return ie(this,void 0,void 0,function*(){return new Promise(r=>chrome.windows.update(e,t,()=>{r()}))})}static focusWindow(e){return ie(this,void 0,void 0,function*(){yield ne.updateWindowProperties(e,{focused:!0})})}static getTabFromCurrentWindowId(){return ie(this,void 0,void 0,function*(){return yield ne.tabsQueryFirstCurrentWindowForSafari({active:!0,windowId:chrome.windows.WINDOW_ID_CURRENT})})}static getBrowserClientVendor(e){switch(Z.getDevice(e)){case N.ChromeExtension:case N.ChromeBrowser:return z;case N.OperaExtension:case N.OperaBrowser:return T;case N.EdgeExtension:case N.EdgeBrowser:return M;case N.VivaldiExtension:case N.VivaldiBrowser:return F;default:return k}}static getTab(e){return ie(this,void 0,void 0,function*(){return e?ne.isManifestVersion(3)?yield chrome.tabs.get(e):new Promise(t=>chrome.tabs.get(e,e=>{t(e)})):null})}static getTabFromCurrentWindow(){return ie(this,void 0,void 0,function*(){return yield ne.tabsQueryFirstCurrentWindowForSafari({active:!0,currentWindow:!0})})}static getActiveTabs(){return ie(this,void 0,void 0,function*(){return yield ne.tabsQuery({active:!0})})}static getCurrentTab(){return ie(this,void 0,void 0,function*(){return ne.isManifestVersion(3)?yield chrome.tabs.getCurrent():new Promise(e=>chrome.tabs.getCurrent(t=>{e(t)}))})}static closeTab(e){return ie(this,void 0,void 0,function*(){e&&(ne.isWebExtensionsApi?yield browser.tabs.remove(e).catch(e=>{throw new Error("[BrowserApi] Failed to remove current tab: "+e.message)}):ne.isChromeApi&&(yield chrome.tabs.remove(e).catch(e=>{throw new Error("[BrowserApi] Failed to remove current tab: "+e.message)})))})}static navigateTabToUrl(e,t){return ie(this,void 0,void 0,function*(){e&&(ne.isWebExtensionsApi?yield browser.tabs.update(e,{url:t.href}).catch(e=>{throw new Error("Failed to navigate tab to URL: "+e.message)}):ne.isChromeApi&&chrome.tabs.update(e,{url:t.href},()=>{if(chrome.runtime.lastError)throw new Error("Failed to navigate tab to URL: "+chrome.runtime.lastError.message)}))})}static tabsQuery(e){return ie(this,void 0,void 0,function*(){return new Promise(t=>{chrome.tabs.query(e,e=>{t(e)})})})}static tabsQueryFirst(e){return ie(this,void 0,void 0,function*(){const t=yield ne.tabsQuery(e);return t.length>0?t[0]:null})}static tabsQueryFirstCurrentWindowForSafari(e){return ie(this,void 0,void 0,function*(){var t;if(!ne.isSafariApi)return yield ne.tabsQueryFirst(e);const r=(yield ne.getCurrentWindow()).id,i=yield ne.tabsQuery(e);return i.length<=1||null==r?i[0]:null!==(t=i.find(e=>e.windowId===r))&&void 0!==t?t:i[0]})}static tabSendMessageData(e,t,r=null){const i={command:t};return null!=r&&(i.data=r),ne.tabSendMessage(e,i)}static tabSendMessage(e,t){return ie(this,arguments,void 0,function*(e,t,r=null,i=!1){if(e&&e.id)return new Promise((n,o)=>{chrome.tabs.sendMessage(e.id,t,r,e=>{chrome.runtime.lastError&&i&&o(),n(e)})})})}static sendTabsMessage(e,t,r,i){chrome.tabs.sendMessage(e,t,r,i)}static getRuntimeURL(e){return ne.isWebExtensionsApi?browser.runtime.getURL(e):ne.isChromeApi?chrome.runtime.getURL(e):void 0}static onWindowCreated(e){return ie(this,void 0,void 0,function*(){return chrome.windows.onCreated.addListener(e)})}static getBackgroundPage(){return void 0===chrome.extension.getBackgroundPage?null:chrome.extension.getBackgroundPage()}static isBackgroundPage(e){return void 0!==e&&e===ne.getBackgroundPage()}static getExtensionViews(e){return void 0===chrome.extension.getViews?[]:chrome.extension.getViews(e)}static isPopupOpen(){return ie(this,void 0,void 0,function*(){return Promise.resolve(ne.getExtensionViews({type:"popup"}).length>0)})}static createNewTab(e,t=!0){return new Promise(r=>chrome.tabs.create({url:e,active:t},e=>r(e)))}static getFrameDetails(e){return ie(this,void 0,void 0,function*(){return new Promise(t=>chrome.webNavigation.getFrame(e,t))})}static getAllFrameDetails(e){return ie(this,void 0,void 0,function*(){return new Promise(t=>chrome.webNavigation.getAllFrames({tabId:e},t))})}static messageListener(e,t){ne.addListener(chrome.runtime.onMessage,t)}static messageListener$(){return new L(e=>{const t=t=>{e.next(t)};return ne.addListener(chrome.runtime.onMessage,t),()=>ne.removeListener(chrome.runtime.onMessage,t)})}static storageChangeListener(e){ne.addListener(chrome.storage.onChanged,e)}static addListener(e,t){e.addListener(t),ne.isSafariApi&&!ne.isBackgroundPage(self)&&(ne.trackedChromeEventListeners.push([e,t]),ne.setupUnloadListeners())}static removeListener(e,t){if(e.removeListener(t),ne.isSafariApi&&!ne.isBackgroundPage(self)){const e=ne.trackedChromeEventListeners.findIndex(([e,r])=>r==t);-1!==e&&ne.trackedChromeEventListeners.splice(e,1)}}static setupUnloadListeners(){self.addEventListener("pagehide",()=>{for(const[e,t]of ne.trackedChromeEventListeners)e.removeListener(t)})}static sendMessage(e,t={}){const r=Object.assign({},{command:e},t);return chrome.runtime.sendMessage(r)}static sendMessageWithResponse(e,t={}){const r=Object.assign({},{command:e},t);return new Promise(e=>chrome.runtime.sendMessage(r,e))}static focusTab(e){return ie(this,void 0,void 0,function*(){chrome.tabs.update(e,{active:!0,highlighted:!0})})}static closePopup(e){ne.isWebExtensionsApi&&ne.isFirefoxOnAndroid?browser.tabs.update({active:!0}).finally(e.close):e.close()}static gaFilter(){return!1}static getUILanguage(){return chrome.i18n.getUILanguage()}static reloadExtension(){return this.isSafariApi?self.location.reload():chrome.runtime.reload()}static reloadOpenWindows(e=!1){const t=ne.getExtensionViews();if(!t.length)return;const r=self.location.href;t.filter(e=>null!=e.location.href&&!e.location.href.includes("background.html")).filter(t=>!e||t.location.href!==r).forEach(e=>e.location.reload())}static connectNative(e){return ne.isWebExtensionsApi?browser.runtime.connectNative(e):ne.isChromeApi?chrome.runtime.connectNative(e):void 0}static requestPermission(e){return ne.isWebExtensionsApi?browser.permissions.request(e):new Promise(t=>{chrome.permissions.request(e,t)})}static permissionsGranted(e){return ie(this,void 0,void 0,function*(){return new Promise(t=>chrome.permissions.contains({permissions:e},e=>t(e)))})}static getPlatformInfo(){return ne.isWebExtensionsApi?browser.runtime.getPlatformInfo():new Promise(e=>{chrome.runtime.getPlatformInfo(e)})}static getBrowserAction(){return ne.isManifestVersion(3)?chrome.action:chrome.browserAction}static getSidebarAction(e){var t;const r=Z.getDevice(e);return r===N.FirefoxExtension?browser.sidebarAction:r===N.OperaExtension?null===(t=e.opr)||void 0===t?void 0:t.sidebarAction:null}static captureVisibleTab(){return new Promise(e=>{chrome.tabs.captureVisibleTab(null,{format:"png"},e)})}static executeScriptInTab(e,t,r){if(ne.isManifestVersion(3)){let i;return i="number"==typeof t.frameId?{tabId:e,frameIds:[t.frameId]}:t.allFrames?{tabId:e,allFrames:!0}:{tabId:e},chrome.scripting.executeScript({target:i,files:t.file?[t.file]:null,injectImmediately:"document_start"===t.runAt,world:(null==r?void 0:r.world)||chrome.scripting.ExecutionWorld.ISOLATED})}return new Promise(r=>{chrome.tabs.executeScript(e,t,e=>{r(e)})})}static browserAutofillSettingsOverridden(){return ie(this,void 0,void 0,function*(){if(!(yield ne.permissionsGranted(["privacy"])))return!1;const e=e=>"controlled_by_this_extension"===e.levelOfControl&&!e.value,t=yield new Promise(t=>chrome.privacy.services.autofillAddressEnabled.get({},r=>t(e(r)))),r=yield new Promise(t=>chrome.privacy.services.autofillCreditCardEnabled.get({},r=>t(e(r)))),i=yield new Promise(t=>chrome.privacy.services.passwordSavingEnabled.get({},r=>t(e(r))));return t&&r&&i})}static updateDefaultBrowserAutofillSettings(e){return ie(this,void 0,void 0,function*(){yield chrome.privacy.services.autofillAddressEnabled.set({value:e}),yield chrome.privacy.services.autofillCreditCardEnabled.set({value:e}),yield chrome.privacy.services.passwordSavingEnabled.set({value:e})})}static registerContentScriptsMv2(e){return ie(this,void 0,void 0,function*(){var t;return"undefined"!=typeof browser&&(null===(t=browser.contentScripts)||void 0===t?void 0:t.register)?yield browser.contentScripts.register(e):yield re(e)})}static registerContentScriptsMv3(e){return ie(this,void 0,void 0,function*(){yield chrome.scripting.registerContentScripts(e)})}static unregisterContentScriptsMv3(e){return ie(this,void 0,void 0,function*(){yield chrome.scripting.unregisterContentScripts(e)})}}ne.isWebExtensionsApi="undefined"!=typeof browser,ne.isSafariApi=-1!==navigator.userAgent.indexOf(" Safari/")&&-1===navigator.userAgent.indexOf(" Chrome/")&&-1===navigator.userAgent.indexOf(" Chromium/"),ne.isChromeApi=!ne.isSafariApi&&"undefined"!=typeof chrome,ne.isFirefoxOnAndroid=-1!==navigator.userAgent.indexOf("Firefox/")&&-1!==navigator.userAgent.indexOf("Android"),ne.trackedChromeEventListeners=[];var oe=function(e,t,r,i){return new(r||(r=Promise))(function(n,o){function a(e){try{c(i.next(e))}catch(e){o(e)}}function s(e){try{c(i.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?n(e.value):(t=e.value,t instanceof r?t:new r(function(e){e(t)})).then(a,s)}c((i=i.apply(e,t||[])).next())})};class ae{constructor(){this.consoleLogService=new t(!1),this.extensionMessageHandlers={offscreenCopyToClipboard:({message:e})=>this.handleOffscreenCopyToClipboard(e),offscreenReadFromClipboard:()=>this.handleOffscreenReadFromClipboard(),localStorageGet:({message:e})=>this.handleLocalStorageGet(e.key),localStorageSave:({message:e})=>this.handleLocalStorageSave(e.key,e.value),localStorageRemove:({message:e})=>this.handleLocalStorageRemove(e.key)},this.handleExtensionMessage=(e,t,r)=>{const i=this.extensionMessageHandlers[null==e?void 0:e.command];if(!i)return;const n=i({message:e,sender:t});return n?(Promise.resolve(n).then(e=>r(e)).catch(e=>this.consoleLogService.error("Error resolving extension message response",e)),!0):void 0}}init(){this.setupExtensionMessageListener()}handleOffscreenCopyToClipboard(e){return oe(this,void 0,void 0,function*(){yield X.copy(self,e.text)})}handleOffscreenReadFromClipboard(){return oe(this,void 0,void 0,function*(){return yield X.read(self)})}handleLocalStorageGet(e){return self.localStorage.getItem(e)}handleLocalStorageSave(e,t){self.localStorage.setItem(e,t)}handleLocalStorageRemove(e){self.localStorage.removeItem(e)}setupExtensionMessageListener(){ne.messageListener("offscreen-document",this.handleExtensionMessage)}}(new ae).init()}(); //# sourceMappingURL=offscreen-document.js.map